Создание простого регистратора данных с помощью платформы RIOT (Realtime Internet of Things)

Как сделать сайт бесплатно. Лучший конструктор сайтов - обзор и сравнение сервисов (WIX, uCoz, uKit) (June 2019).

$config[ads_text] not found
Anonim

Создание простого регистратора данных с помощью платформы RIOT (Realtime Internet of Things)


RIOT, Realtime Internet of Things, представляет собой структуру, предназначенную для простого использования ESP8266 с микроконтроллерами. В этом проекте мы продемонстрируем простоту RIOT, создав регистратор данных, который будет отображать уровни света на графике на приложении ПК-сервера.

Введение

В последнем проекте RIOT мы узнали, как создать простой сервер RIOT на ПК с ОС Windows и простой клиент RIOT, светодиод которого может быть включен и выключен сервером. Из этого проекта мы могли видеть, что RIOT потенциально позволяет любой системе с UART-портом превращаться в устройство с поддержкой Интернета.

В этом проекте мы рассмотрим взаимодействие клиент-сервер, где клиент будет считывать показания напряжения с делителя LDR / резистора, а затем строить данные на графике, который можно найти на сервере (написанном на VB.net). Настоятельно рекомендуется пройти предыдущий проект, прежде чем пытаться выполнить этот проект, потому что части кода и схематические настройки будут переработаны, но с небольшим пояснением.

Примечание: RIOT теперь называется RIOTOUS и может быть найден на //www.riotousframework.com

Предпосылки и программное обеспечение для компиляции

Для правильной работы RIOT на стороне клиента необходимо использовать определенную версию AT и SDK. Версия AT должна быть 1.1.0.0, а версия SDK должна быть 1.5.4. Более ранние версии имеют ошибки при закрытии соединений, а более поздние версии имеют либо отсутствующий, либо ошибочный код. Чтобы узнать требования к клиентской стороне RIOT, нажмите здесь.

Для компиляции проекта вам понадобятся:

  • Microchip IDE 8.92
  • Компилятор Microchip C18
  • Visual Studio Express 2012

Кроме того, ознакомьтесь с предыдущим проектом этой серии, чтобы получить полное объяснение того, что такое RIOT.

Схема

В этом проекте нам необходимо использовать модуль АЦП, найденный на микроконтроллере PIC18F25K20 (PDF). 3.3V устройство используется, потому что сам ESP8266 является устройством 3, 3 В, поэтому нам не нужно включать в себя логический уровень.

Дополнительный конденсатор был включен в линию 3.3V (C5) рядом с регулятором, чтобы помочь в устранении высокочастотных шумов на линии электропередач.

Схема проекта. нажмите, чтобы увеличить

Клиентский код

Первой задачей нашего клиентского кода является правильная настройка периферийного периферийного устройства ADC. Наше аналоговое считывание найдено на RA0, поэтому мы используем следующий код, чтобы заставить этот контакт работать как аналоговый вход, включить АЦП и настроить АЦП. Установочный код ниже также настраивает внутренний генератор для максимальной скорости (16 МГц) и x4 PLL. Этот код находится в setup.h.

Следующая часть кода, необходимая в нашем клиентском контроллере, - это конфигурация RIOT, которая включает в себя создание ISR, настройку модуля UART и передачу RIOT, как отправлять данные по UART. Этот код (который сообщает RIOT, как использовать модуль UART) кодируется вами и вставляется в IoT_ClientFramework.c.

Этот код ISR сообщает RIOT, что был получен новый байт, а также обновляет конечный автомат в структуре RIOT.

Когда клиент настроен, пришло время настроить выходы устройства, инициализировать RIOT, подключиться к сети Wi-Fi, а затем подключиться к серверу RIOT.

Теперь пришло время начать регистрацию данных! Наш клиент будет принимать показания из RA0 так часто (несколько показаний в секунду, хотя вы можете изменить это, если хотите), а затем передать показания на сервер RIOT. Сроки будут лучше выполняться с использованием одного из периферийных устройств таймера, но для простоты в этом примере будет использоваться простой цикл задержки. Здесь можно использовать цикл задержки, поскольку RIOT обновляется с использованием прерывания приема UART, которое имеет приоритет над основным запущенным кодом.

Как только задержка завершена, аналого-цифровое преобразование инициируется установкой бит GO в регистре ADCON0. Модуль ADC очистит бит GO после считывания, так что (ADCON0bits.GO) будет циклически работать до тех пор, пока результат АЦП не будет готов. Когда результат ADC готов, мы передаем верхние 8 бит результата в массив dataBuff (размер 1), а затем отправим этот единственный байт на наш сервер. Массив размера 1 используется, поскольку данные отправляются в структуру RIOT с помощью указателя на массив (это значит, что поток байтов в массиве может быть отправлен).

Ниже приведены значения конфигурации для PIC18F25K20 (неправильная аппаратная конфигурация является общим источником проблем в проектах микроконтроллеров).

Код на стороне сервера

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

Но, во-первых, быстрая заметка о VB: VB.net (вместе с Visual Studio 2012 IDE) должна быть одним из самых практичных языков, которые я когда-либо использовал. Прежде чем делать этот проект, а не быть естественным программистом, я был обеспокоен тем, как создать графическое приложение с графическими возможностями. Как оказалось, VB.net включает в себя объект диаграммы, который идеально подходит для работы. Простое перетаскивание в основную форму с двумя или тремя строками кода настройки дает вам возможности построения диаграмм, которые были бы более сложными на языке, таком как C или C ++ (однако я считаю, что это удобство может быть самой картой .net, в отличие от на язык, поскольку визуальный C # также является отличным языком при использовании в Visual Studio).

Итак, первое, что мы сделаем, это добавить диаграмму в нашу форму, которая выполняется путем перехода к toolbox> Data> Chart. Оттуда вы можете изменить размер области диаграммы, изменить цветовую схему и многое другое.

Одна интересная вещь об объектах в VB.net - они автоматически инициализируются и настраиваются в файле конфигурации, с которым нам не нужно беспокоиться. Вместо этого нам нужно только беспокоиться об очистке области, создании новой серии данных, а затем строить исходные данные по мере их появления! Прежде чем мы опередим себя и начнем манипулировать объектом диаграммы, нам нужно настроить класс сервера RIOT. Будущие версии RIOT позволят выполнить всю конфигурацию RIOT с помощью функций, но на данный момент конфигурация выполняется путем редактирования файлов VB. Только одна строка должна быть отредактирована в Server.vb, то есть в строке 114, которая требует от пользователя ввода локального IP-адреса устройства. По какой-то причине я не смог этого сделать, используя localhost.

Возвращение к объекту диаграммы, очистка графика и создание новой серии данных довольно тривиально. Это будет сделано, когда мы нажмем кнопку запуска сервера.

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

Быстрое примечание. Приложение visual studio и видео ниже показывают график как помеченный как «loggedLight», где на самом деле данные представляют «loggedDarkeness». Это связано с конфигурацией потенциометра и может быть легко устранено путем вычитания записанного показания с 256 (макс.). Это обеспечило бы регистрируемый свет вместо регистрируемой темноты.

BOM

Часть

Справочник по схемам

Количество

PIC18F25K20

IC1

1

AMS1117 3.3V Регулятор

IC2

1

ESP8266 ESP-01

ESP8266

1

1 кОм Резистор

R3, R4

2

5.6 кОм Резистор

R2

1

Резистор 10 кОм

R5

1

LDR

R1

1

СВЕТОДИОД

D1, D2

2

Конденсатор 100 нФ

C1, C2, C4, C5

4

Конденсатор 22 мкФ

C3

1

Получение проекта

Как и в предыдущем проекте, мы построим схему на макете. Вы можете заметить, что AMS1117 находится в пакете IC, который очень недружелюбен макетами. Это легко решить, отрезая большой язычок, а затем припаяйте устройство к куску стрижки. Оттуда 3-контактный прямой заголовок может быть подключен для создания TO-220-подобного пакета.

Код регистратора данных RIOT

Видео проекта в действии

Резюме

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

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

Попробуйте этот проект сами! Получить спецификацию.