Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Регистратор данных GPS, пространственный анализ и Azure IoT Hub.

Компоненты и расходные материалы

Arduino UNO
× 1
Raspberry Pi 2, модель B
× 1
Adafruit Ultimate GPS Breakout
× 1
9 В для разъема Barrel Jack
× 1
Батарея 9 В (стандартная)
× 1
Фоторезистор
× 1
LED (общий)
3 прозрачных, 1 красный, 1 желтый и 1 зеленый
× 6
Кнопочный переключатель SparkFun, 12 мм
× 2
Ползунковый переключатель
× 3
Резистор 10 кОм
× 4
Резистор 221 Ом
× 3
половинный размер макетной платы без пайки
× 1
Беспаечная макетная плата, полный размер
× 1
Перемычки (общие)
× 1
Sandisk 16 ГБ MicroSD с адаптером
× 2

Приложения и онлайн-сервисы

Microsoft Windows 10 IoT Core
Microsoft Azure
IDE Arduino
Microsoft Visual Studio 2015
Google Планета Земля Профессиональный
Квантовая ГИС
Microsoft Windows 10 Enterprise

Об этом проекте

Введение

Современные мобильные технологии стали очень продвинутыми и простыми в использовании:информационные карты ГИС доступны практически на всех типах устройств. Этот проект можно превратить в классную деятельность, чтобы научить детей основам оборудования с открытым исходным кодом, мобильных вычислений, геопространственных технологий и облачных вычислений.

Этот проект состоит из 3 частей:

1) Регистратор данных GPS Arduino

С помощью маленькие дети могут построить устройство, которое записывает информацию о местоположении GPS, измерения освещенности и тип обнаруживаемых объектов. Они могли выходить на улицу и отмечать расположение заранее определенных вещей (знаков, деревьев, парковых скамеек и т. Д.). Это обеспечивает лучшее понимание мира вокруг них и лучшее понимание данных, отображаемых на картах ГИС. Низкий уровень освещенности ночью в общественных местах может быть проблемой. В сопровождении взрослого они могли выйти ночью на улицу, чтобы снять замеры освещенности для дальнейшего анализа.

2) Визуализация и анализ ГИС

Визуализируйте местоположение, полученное в поле, на карте. Оцените уровни освещенности для области, выполнив анализ интерполяции пространственных точек и отобразив результаты на карте.

3) Использование Windows 10 IoT Core и Azure IoT Hub

После выполнения визуализации и анализа ГИС используйте Windows 10 IoT Core и Azure IoT Hub для загрузки и распространения данных. Это позволяет легко масштабировать систему для поддержки управления данными на тысячах сборщиков данных и полевых устройствах.

Регистратор данных GPS Arduino

Следующее видео дает обзор устройства Arduino Uno GPS Datalogger и быструю демонстрацию. Исходный код и макетную схему можно найти ниже.

Вот дополнительная информация о компонентах.

Фоторезистор

Эти аналоговые датчики измеряют яркость света и очень просты в использовании. См. Пример с исходным кодом здесь. Аналоговые показания будут составлять 0-1023, но большинство показаний будут ниже 200, если только свет не будет очень ярким. При сборке устройства попробуйте измерить световой поток, чтобы знать, чего ожидать.

Бывший. яркого солнечного света около 1000, дневной тени на открытом воздухе около 900, а прямо под уличным фонарем ночью около 170.

Слот для Micro SD

Хороший пример можно найти в среде Arduino IDE в разделе «Файл»> «Примеры»> «SD»> «Регистратор данных».

Adafruit Ultimate GPS

Простой в использовании GPS. Следуйте приведенным здесь примерам, чтобы установить библиотеки GPS в вашу Arduino IDE.

Индикаторы состояния спутников

Снижение точности по горизонтали (HDOP) - это измерение точности позиционирования по осям X, Y, поступающее от GPS. Чем ниже значение HDOP, тем точнее будет положение. Если у GPS есть исправление, он вернет значение HDOP с координатами широты и долготы. Подробнее о снижении точности GPS здесь.

  • Красный - спутник не исправлен.
  • Желтый - исправление спутников с HDOP> 1.5.
  • Зеленый - спутник исправлен с HDOP <=1.5.

Ползунковые переключатели двоичных типов

Три ползунковых переключателя используются для двоичного представления основания 10 0–7. Крайний левый переключатель представляет 2 ^ 2 или 4. Центральный переключатель представляет 2 ^ 1 или 2. Крайний правый переключатель представляет 2 ^ 0 или 1. Добавление значений на основе в состоянии переключателя дает число от 0 до 7 по основанию 10, которое соответствует типу собираемого объекта. В идеале человек, использующий регистратор данных Arduino GPS, должен понимать, что означает этот код.

Например:

  ВЫКЛ ВЫКЛ ВЫКЛ =0 0 0 =0 =Показания датчика освещенности ВЫКЛ ВЫКЛ ВКЛ =0 0 1 =1 =Парк скамейки ВЫКЛ ВКЛ ВЫКЛ =0 1 0 =2 =RockOFF ВКЛ ВКЛ =0 1 1 =3 =Мусор CanON OFF OFF =1 0 0 =4 =TreeON OFF ON =1 0 1 =5 =Таксофон ON ON OFF =1 1 0 =6 =Фонарь ON ON =1 1 1 =7 =Фонтан  

Кнопка

Каждый раз при нажатии кнопки устройство добавляет строку со значениями, разделенными запятыми (CSV), в файл datalog.csv на карте microSD.

Данные имеют формат:

LATITUDE, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE

  • ШИРОТА и ДОЛГОДНОСТЬ приходят от GPS.
  • LIGHT_VALUE аналоговое показание фоторезистора.
  • FEATURE_TYPE - это значение от 0 до 7 в зависимости от настроек включения / выключения 3-х двоичных переключателей, описанных выше.

Пример данных CSV:

  40.77221, -73.97392,105,540.77139, -73.97394,60,140.77051, -73.97460,150,640.77225, -73.97650,25,340.77171, -73.97462,43,240.77283, -73.975033,54,1  

Нет ЖК-дисплея?

Несколько светодиодов можно было заменить ЖК-экраном 1602 и еще несколькими кнопками, но возникли проблемы.

  • Наличие кода для GPS, слота для карты microSD и ЖК-дисплея 1602 может быть скомпилировано и развернуто на Arduino Uno, но слот для карты microSD работал нестабильно. Удаление ЖК-дисплея стабилизировало слот для карты microSD, поэтому были добавлены светодиоды, обеспечивающие достаточное уведомление пользователя. Использование устройства Arduino с большим количеством ресурсов, таких как MEGA, вероятно, позволит установить ЖК-дисплей 1602 вместе с GPS и слотом для карт памяти microSD.
  • Батарея 9 В удобна для регистратора данных Arduino GPS, но ее хватает недолго при питании ЖК-дисплея 1602. Это не был критически важный компонент, поэтому его пришлось убрать.

Визуализация и анализ ГИС

Визуализация точек GPS

Наличие данных ГИС в формате CSV - это здорово, но не очень полезно, если вы не видите их на карте. Извлеките карту microSD из регистратора данных Arduino GPS и вставьте ее в компьютер с Windows 10 с установленным Google Earth Professional. Перейдите сюда для получения инструкций по установке и лицензированию. Скопируйте текстовый файл с карты microSD на компьютер и откройте его в текстовом редакторе. Добавьте следующую строку в качестве заголовка столбца вверху текстового файла и сохраните его как файл .CSV.

LATITUDE, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE

Используя Google Earth Professional, перейдите в меню «Файл» и выберите «Импорт ...». Найдите файл .CSV и импортируйте его. Просмотрите параметры, чтобы создать разные стили карты для значков, представляющих различные типы объектов, и отобразить местоположения точек в Google Планета Земля Professional. Необходимо использовать профессиональную версию Google Планета Земля. В обычной версии Google Планета Земля нет возможности импортировать файл .CSV.

Пространственный анализ с помощью Quantum GIS (QGIS)

QGIS - это популярная бесплатная ГИС с открытым исходным кодом, программа установки и учебные пособия доступны здесь. Используя QGIS, вы можете выполнить пространственный анализ атрибута датчика освещенности для местоположения GPS, чтобы определить участки с достаточным или недостаточным освещением в ночное время в общественных местах, например в парке.

Шаг 1. Загрузите границу, пешеходные тропы и другую важную информацию о районе, который оценивается на предмет недостаточного освещения.

Шаг 2 - Загрузите точки из файла .CSV, поступающие из регистратора данных GPS, в карту QGIS. Примените символы и метки точек, чтобы вы могли визуально видеть значения освещенности.

Точки будут отображать значения датчика освещенности, чтобы вы могли видеть, где ярко (синий), а где темно (красный). При попытке проанализировать большую площадь недостаточно просмотра только точечных данных.

Шаг 3 - Выполните интерполяцию данных точки, чтобы лучше понять область вокруг точек и между точками. Интерполяция используется, когда у вас есть данные для определенных местоположений и вы хотите оценить значения между известными местоположениями. Подробнее об интерполяции здесь.

Интерполяция обеспечивает лучшее изображение значений освещенности в парке. Этот анализ можно улучшить, предоставив больше показаний датчика освещенности в известных местах.

Шаг 4. Соберите больше показаний датчика освещенности и загрузите их в QGIS.

Шаг 5 - Повторите интерполяцию для большего набора данных.

Вы можете видеть, что вторая интерполяция показывает образец, аналогичный первой интерполяции, но имеет более подробную информацию из-за дополнительных точек.

Использование Windows 10 IoT Core и Azure IoT Hub.

Увеличение масштаба

Регистратор данных Arduino GPS - дешевое и простое устройство, которое может записывать информацию с датчиков на карту microSD. Эти устройства могут быть широко географически распределены для сбора информации. Управление информацией, поступающей с этих устройств, может оказаться сложной задачей, если вам потребуется разработать для этого систему.

Используя Windows 10 IoT Core и Azure IoT Hub в качестве основы системы обмена сообщениями, количество устройств можно легко увеличить до тысяч устройств, предоставляющих информацию.

Сначала попробуйте эти примеры

Прежде чем продолжить, настоятельно рекомендуется выполнить руководство по началу работы с Центром Интернета вещей Azure для .NET. В руководстве по началу работы вы пройдете этапы создания пробной учетной записи Azure, настройки центра Интернета вещей Azure и разработки основных примеров, позволяющих отправлять и получать сообщения центра Интернета вещей.

Также загрузите обозреватель устройств Центра Интернета вещей Azure, чтобы упростить администрирование устройств Windows 10 IoT Core, подключающихся к Центру Интернета вещей Azure. Загрузите исходный код и / или установщик отсюда.

Windows 10 IOT Core на Raspberry Pi 2

Используя машину для разработки Windows 10, загрузите Windows 10 IoT Core для Raspberry Pi 2 и прошейте карту памяти micoSD с помощью Windows IoT Image Helper.

Установите карту microSD в Raspberry Pi 2, подключите ее к сети Ethernet и убедитесь, что она отображается в Windows IoT Core Watcher на машине разработки при загрузке.

Подключите кнопку на макетной плате, как показано на рисунке ниже. См. Схему внизу этой страницы. Ссылки на следующий исходный код также можно найти внизу этой страницы.

Универсальное приложение Windows для загрузки данных

Запустите Visual Studio 2015 на компьютере с Windows 10 и выберите «Файл»> «Создать»> «Проект». Выберите шаблон пустого приложения для универсального приложения Windows. Назовите новый проект IoTHubClientSendEvent. Используя Nuget, введите Microsoft.Azure.Devices.Client и Newtonsoft.Json. Также добавьте ссылку на расширения Windows IoT для UWP, чтобы получить доступ к GPIO на Raspberry Pi2.

Когда Visual Studio будет готова, добавьте следующие операторы using в верхнюю часть страницы Mainpage.xaml.cs, чтобы ввести необходимые библиотеки для взаимодействия с Azure и взаимодействия с выводами GPIO:

  с использованием Windows.Devices.Gpio; с использованием Newtonsoft.Json; с использованием Microsoft.Azure.Devices.Client; с использованием System.Text;  

Добавьте следующие переменные и константы в класс MainPage. Значение deviceId должно быть именем устройства, настроенного в обозревателе устройств Azure IoT Hub.

  private const int buttonPin =6; закрытый GpioPin buttonGPIO; статический DeviceClient deviceClient; статическая строка deviceId ="MakerChallengeDevice2"; статическая строка uploadFile ="data.csv";  

Добавьте класс evData для сериализации JSON, а также добавьте его в класс MainPage.

  class evData {идентификатор общедоступной строки {get; набор; } общедоступные строковые данные {получить; набор; }}  

Добавьте эти 2 строки в функцию MainPage. Получите значение для

DEVICE_CONNECTION_STRING из обозревателя устройств Центра Интернета вещей Azure, как описано выше.

  deviceClient =DeviceClient.CreateFromConnectionString ("DEVICE_CONNECTION_STRING", TransportType.Http1); initGPIO ();  

Добавить функцию для инициализации GPIO

  private void initGPIO () {var gpio =GpioController.GetDefault (); buttonGPIO =gpio.OpenPin (buttonPin); // Проверяем, поддерживаются ли входные подтягивающие резисторы if (buttonGPIO.IsDriveModeSupported (GpioPinDriveMode.InputPullUp)) buttonGPIO.SetDriveMode (GpioPinDriveMode.InputPullUp); иначе buttonGPIO.SetDriveMode (GpioPinDriveMode.Input); // Устанавливаем таймаут противодействия, чтобы отфильтровать шум отскока переключателя от нажатия кнопки buttonGPIO.DebounceTimeout =TimeSpan.FromMilliseconds (50); // Зарегистрируйтесь для события ValueChanged, чтобы наша функция buttonPin_ValueChanged // вызывалась при нажатии кнопки buttonGPIO.ValueChanged + =buttonPin_ValueChanged; }  

Затем добавьте функцию для вызова обработчика нажатия кнопки.

  private void buttonPin_ValueChanged (GpioPin sender, GpioPinValueChangedEventArgs e) {// отправляем сообщение при нажатии кнопок if (e.Edge ==GpioPinEdge.FallingEdge) {sendMessageToIOTHub (); }}  

Добавьте фактическую функцию sendMessagetoIOTHub () для отправки сообщения в Azure IoT Hub.

  приватный статический async void sendMessageToIOTHub () {string myString; var msg =new evData (); если (File.Exists (uploadFile)) {myString =System.IO.File.ReadAllText (uploadFile); } else {myString ="Просто проверяю !!"; } msg.id =deviceId; msg.data =myString; var messageString =JsonConvert.SerializeObject (сообщение); var message =новое сообщение (Encoding.ASCII.GetBytes (messageString)); ждать deviceClient.SendEventAsync (сообщение); }  

Скомпилируйте решение для Debug x86 по умолчанию, чтобы убедиться, что оно работает. Затем измените цель на Release ARM и выберите Remote Machine.

Если устройство Windows 10 IOT Core подключено к сети, Visual Studio 2015 увидит его и позволит вам установить его в качестве цели развертывания.

Подсказка:

Перед развертыванием приложения в Windows IOT Core щелкните проект правой кнопкой мыши и выберите "Свойства". На панели «Приложение» нажмите кнопку «Манифест пакета». Щелкните вкладку Packaging и измените имя пакета на заданное имя (например, IoTHubClientSendEvent). Если вы этого не сделаете, будет сложно идентифицировать ваше приложение в веб-интерфейсе Windows 10 IOT Core.

Теперь перейдите в меню «Сборка» и выберите «Развернуть решение». После завершения развертывания найдите устройства Windows 10 IOT Core в Windows IOT Core Watcher. Щелкните строку правой кнопкой мыши и выберите «Веб-браузер здесь». Войдите в систему с локальным администратором и щелкните ссылку «Приложения» слева. Выберите имя только что развернутого приложения из раскрывающегося списка «Установленные приложения» и нажмите «Пуск».

Оставим это пока и разработаем приложение для мониторинга IoT Hub.

Универсальное приложение Windows для получения сообщений из Azure IOT Hub

Запустите Visual Studio 2015 в Windows 10 и создайте новое консольное приложение Windows C #. Назовите проект IoTEventHubReceiver . . Используя Nuget, добавьте WindowsAzure.ServiceBus и Newtonsoft.Json .

Добавьте следующие операторы using в верхнюю часть файла Program.cs:

  using System.IO; using System.Threading; using Newtonsoft.Json; using Microsoft.ServiceBus.Messaging;  

Добавьте класс в класс IoTEventHubReceiver для данных JSON, которые будут десериализованы после получения из Azure IoT Hub.

  class evData {идентификатор общедоступной строки {get; набор; } общедоступные строковые данные {получить; набор; }}  

Добавьте некоторые переменные для получения сообщений из Azure IoT Hub. Получите значение для IOT_HUB_CONNECTION_STRING из диспетчера устройств Azure IoT Hub.

  статическая строка connectionString ="IOT_HUB_CONNECTION_STRING"; статическая строка iotHubD2cEndpoint ="messages / events"; статическая EventHubClient eventHubClient;  

Добавьте эти 2 строки в функцию main (), чтобы создать EventHubClient и начать получать сообщения:

  eventHubClient =EventHubClient.CreateFromConnectionString (connectionString, iotHubD2cEndpoint); SynchMessages ();  

Наконец, добавьте функцию SynchMessages (), чтобы настроить непрерывный цикл, и ReceiveMessages, чтобы получать сообщения и сохранять их на диск.

  private static async void SynchMessages () {while (true) {var d2cPartitions =eventHubClient.GetRuntimeInformation (). PartitionIds; foreach (раздел строки в d2cPartitions) {ReceiveMessagesFromDeviceAsync (раздел); }}} частная асинхронная статическая задача ReceiveMessagesFromDeviceAsync (строковый раздел) {var eventHubReceiver =eventHubClient.GetDefaultConsumerGroup (). CreateReceiver (раздел, DateTime.UtcNow); while (true) {EventData eventData =ожидание eventHubReceiver.ReceiveAsync (); если (eventData ==null) продолжить; строковые данные =Encoding.UTF8.GetString (eventData.GetBytes ()); evData d =JsonConvert.DeserializeObject  (данные); StreamWriter writer =new StreamWriter ("c:\\ gps \\ download \\" + d.id + "." + DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now .Day + "." + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + ".csv"); писатель.Write (d.data); writer.Close (); Console.WriteLine (string.Format ("Сообщение получено от {0}. \ N {1}", d.id, d.data)); }}  

На рабочей станции разработчика создайте папку «c:\ gps \ download» для сохранения полученных сообщений.

Запуск приложений для отправки и получения сообщений Azure IoT Hub

Запустите IoTEventHubReceiver . программу на рабочей станции разработчика и дождитесь отображения экрана консоли. Затем нажмите кнопку, подключенную к GPIO на Raspberry Pi 2 под управлением Windows 10 IoT Core и IoTHubClientSendEvent программа. Нажатие на кнопку отправляет сообщение с надписью «Регистрируюсь!» текст в концентратор событий Azure IoT. После получения сообщения консоль на компьютере разработчика отобразит следующее сообщение.

  Сообщение получено от MakerChallengeDevice2. Просто проверяю!  

Отправка содержимого текстового файла в виде сообщения также возможна, если размер текста меньше 256 КБ, поскольку это текущий максимальный размер сообщения для Azure Iot Hub. См. sendMessageToIOTHub () выше, чтобы увидеть, как файл читается и сериализуется, и см. ReceiveMessagesFromDeviceAsync () выше, чтобы увидеть, как сообщение десериализуется и записывается в файл.

В настоящее время Windows 10 IoT Core не разрешает доступ к файлам по абсолютным путям через код, но после долгого устранения неполадок я обнаружил, что он может ссылаться на файл в том же каталоге, что и исполняемый файл. Как правило, это не лучшая практика, но она работает. Чтобы поместить текстовый файл в папку приложения, щелкните устройство правой кнопкой мыши в Windows 10 IoT Core Watcher и выберите «Открыть общий сетевой ресурс». Выполните аутентификацию с помощью локального администратора и перейдите к:

c $ \ Data \ Users \ DefaultAccount \ AppxLayouts

Найдите папку с именем вашего развернутого приложения и поместите в нее текстовый файл, который может быть прочитан исполняемым файлом. В этом примере текстовый файл должен называться data.csv . и должен быть меньше 256 КБ. Хорошим примером является файл CSV со списком широты, долготы, показаний датчика освещенности и типа функции. Нажмите кнопку, подключенную к Raspberry Pi2 GPIO, и на консоли отобразится следующее:

  Сообщение получено от MakerChallengeDevice2.LAT, LNG, LT, TYP45.45926, -110.57361,45,645.78546, -110.02487,156,3  

Расширение при отправке файлов - если вы следуете примерам «Начало работы с Центром Интернета вещей Azure для .NET», вы найдете пример отправки файлов в хранилище BLOB-объектов Azure в разделе «Следующие шаги».

Резюме

Этот проект демонстрирует, как вы можете создать простой регистратор данных Arduino GPS для записи информации, анализа собранных данных и использования облака для управления собранной информацией. У этого проекта есть много точек расширения, таких как:

  • Запись информации с датчиков различных типов в регистратор данных GPS Arduino.
  • Загрузите информацию прямо с устройства Arduino в Azure с помощью Wi-Fi, Bluetooth или сотовой связи.
  • Выполняйте различные типы пространственного анализа, чтобы лучше принимать решения об окружающей среде.
  • Разработайте картографическое веб-приложение для отображения необработанной или проанализированной информации.
  • Используйте обработчики событий в Azure Stream Analystics для обработки данных по мере их получения Центром Интернета вещей.

Код

Регистратор данных GPS Arduino
Эскиз и схема подключения для Arduino GPS Datalogger. Https://github.com/ShawnCruise/ArduinoGPSDataLogger
Пример Центра Интернета вещей Azure
Универсальное приложение Windows для развертывания в Windows 10 IoT Core для отправки сообщений в Azure Iot Hub. Https://github.com/ShawnCruise/AzureIotHubExample
Пакет SDK для Azure
Получите обозреватель устройств Azure IoT отсюда. Https://github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer/doc/how_to_use_device_explorer.md
Примеры Windows 10 IoT Core
Примеры для развертывания в Windows 10 IoT Core. Https://github.com/ms-iot/samples

Схема

GPSDataLogger.fzz RPi2% 20IOT% 20Core.fzz

Производственный процесс

  1. Avnet Silica демонстрирует технологии искусственного интеллекта и Интернета вещей во встроенном мире 2019
  2. Windows 10 IoT Core и SHT15
  3. Регистратор данных температуры и влажности
  4. IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
  5. С Днем Рождения:свет и звук
  6. u-blox LEA-6H 02 GPS-модуль с Arduino и Python
  7. Полный контроль над вашим телевизором с помощью Alexa и Arduino IoT Cloud
  8. Гитарный медиатор и педаль Stomp!
  9. Бассейн Azure IoT
  10. Руководство по печатным платам и IoT