В этой статье описывается, как построить систему IoT с использованием Arduino / ESP8266 mydevices Cayenne и MQTT. Более подробно, это руководство по IoT раскрывает, как использовать Arduino (или ESP8266) для отправки данных в Cayenne с использованием протокола MQTT. Кроме того, этот проект Arduino / ESP8266 MQTT исследует, как использовать MQTT для управления удаленным периферийным устройством с помощью веб-интерфейса. Это полное пошаговое руководство по созданию системы IoT с использованием Cayenne и Arduino.
Более подробно, в этом руководстве по IoT показано, как использовать MQTT с Arduino или ESP8266 с двух разных точек зрения:
- первое, где есть необходимость отправлять данные из Arduino на облачную платформу IoT (например, Cayenne)
- второй, где мы должны дистанционно управлять нашим Arduino или ESP8266
Первый сценарий имеет место, когда мы должны отправить в облако данные, полученные от датчика, подключенного к Arduino (или ESP8266). Это распространенный сценарий, и, вообще говоря, это происходит каждый раз, когда необходимо получить и отправить данные с использованием MQTT. Другой сценарий возникает, когда необходимо удаленно управлять устройством с помощью MQTT, в этом случае мы будем управлять Arduino (или ESP8266) с использованием протокола MQTT.
Все мы знаем важность IoT в настоящее время и тот факт, что в ближайшем будущем всегда будет больше подключенных устройств. Бытовая техника, умные устройства, носимые и так далее будут частью нашей жизни. Понятно тогда значение IoT (интернета вещей) и тот факт, что мы должны быть готовы к следующему будущему. Используя это руководство по MQTT, вы приобретете несколько важных концепций, лежащих в основе системы IoT. В этом контексте широко используется протокол MQTT, который играет жизненно важную роль в обеспечении обмена данными между устройствами.
Мы уже подробно рассмотрели, как использовать протокол MQTT, и, если вы новичок, вы должны прочитать перед началом этого урока, что такое MQTT и как его использовать .
С другой стороны, Cayenne — это облачная платформа IoT, которая предоставляет несколько облачных сервисов:
- Визуализация данных
- Интернет вещей
- Оповещения
Мы сосредоточим наше внимание на визуализации данных и на облачных сервисах IoT.
Как отправить данные из Arduino / ESP8266 в Cayenne с помощью MQTT
В этой первой части этого проекта мы рассмотрим, как отправлять данные из Arduino / ESP8266 в Cayenne с помощью MQTT. Для простоты в этом проекте IoT используется простой датчик BMP280. Этот датчик способен измерять:
- температура
- влажность
- давление
Основная цель этого IoT-проекта — сфокусироваться на том, как использовать MQTT для отправки данных из Arduino в Cayenne, и мы хотим, чтобы другие вещи были простыми. Прежде чем углубляться в описание того, как подключить датчик BMP280 к Arduino, полезно настроить платформу IoT Cayenne, чтобы она принимала данные от нашего устройства IoT.
Как подключить Arduino к Cayenne
Первым шагом является настройка устройства на платформе Cayenne. Для этого необходимо создать бесплатный аккаунт по этой ссылке.
Когда вы будете готовы, перейдите на платформу Cayenne mydevices и нажмите кнопку «Добавить новый…». Выберите «Устройство / Виджет», а затем выберите свою доску IoT. В этом примере мы используем ESP8266. В конце Cayenne должен показать веб-страницу, содержащую все детали о том, как подключить Arduino к Cayenne с помощью MQTT:
На схеме выше показано, как подключить Wemos D1 к BMP / BME280. В любом случае, если вы используете Arduino, схема очень похожа.
Как только соединения будут готовы, мы можем сосредоточить наше внимание на настройке Cayenne для приема данных из Arduino / ESP8266.
Конфигурирование Cayenne для MQTT
Первым шагом является создание нового устройства, как показано на рисунке ниже:
Это все. Настало время подключить наше устройство IoT. Для этого вы можете импортировать библиотеку Cayenne в вашу Arduino IDE:
Как только библиотека установлена, вы можете перейти к File-> examples-> CayenneMQTT-> Connections и получить код, соответствующий вашему IoT-устройству. Код ниже для ESP8266:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//#define CAYENNE_DEBUG #define CAYENNE_PRINT Serial #include <CayenneMQTTESP8266.h> // WiFi network info. char ssid[] = "ssid" ; char wifiPassword[] = "wifi_pwd" ; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = "your usename" ; char password[] = "your pwd" ; char clientID[] = "your client_id" ; void setup() { Serial.begin( 9600 ); Cayenne.begin(username, password, clientID, ssid, wifiPassword); } void loop() { Cayenne.loop(); } CAYENNE_OUT_DEFAULT() { // Here the data we want to send } |
Теперь замените в приведенном выше коде параметры на те, которые показаны на первом рисунке (имя пользователя MQTT, пароль MQTT, идентификатор клиента) и попробуйте подключить ваше устройство IoT к CQQ. Результат ниже:
Последний шаг перед отправкой данных — это настройка каналов, напоминающих виртуальный канал, где Arduino отправляет данные в Cayenne, используя MQTT. Обычно каждая физическая величина, которую мы хотим измерить, должна быть связана с каналом.
В этом примере мы добавляем три разных канала, потому что Arduino отправляет в Cayenne температуру, влажность и давление. Каналы полезны, когда мы хотим создать информационную панель со всеми данными, поступающими с датчиков. На рисунке ниже показано, как добавить канал давления:
Наконец, пришло время отправлять данные с использованием MQTT в Cayenne. Мы должны изменить исходный код, чтобы Arduino / ESP8266 считывал данные с датчиков и отправлял эти значения в Cayenne. Исходный код довольно прост:
1
2
3
4
5
6
7
|
.... CAYENNE_OUT_DEFAULT() { Cayenne.virtualWrite( 0 , millis() / 1000 ); Cayenne.celsiusWrite( 1 , temp); Cayenne.virtualWrite( 2 , press); Cayenne.virtualWrite( 3 , hum); } |
Вот и все, теперь мы можем видеть живые данные или, другими словами, данные, поступающие с датчиков, подключенных к Arduino:
Вы можете заметить виртуальные каналы, используемые в исходном коде Arduino.
Как управлять Arduino / ESP8266 из Кайенны с помощью MQTT
Во второй части этого проекта IoT, основанного на Arduino и Cayenne, мы используем MQTT для удаленного управления ESP8266 (или Arduino). В этом примере панель Neopixel подключена к ESP8266. Целью является управление цветами с помощью MQTT через веб-интерфейс (интерфейс Cayenne). Этот пример может быть дополнительно расширен и возможно подключение других видов периферийных устройств. Изображение ниже показывает приборную панель Cayenne, которая будет управлять светодиодами RGB на панели Neopixel:
Как вы можете заметить, есть три ползунка, которые контролируют красный, зеленый и синий цветовые компоненты.
Как подключить ESP8266 к светодиодам RGB
Первым шагом является подключение Neopixels к ESP8266. Обратите внимание, что если вы используете плату Arduino, соединения практически одинаковы. На рисунке ниже показана схема:
Есть только три провода:
- Vcc (5 В)
- GND (Земля)
- Сигнал (ESP8266 D1 контакт)
Для управления светодиодами RGB необходимо импортировать библиотеку неопикселей и добавить в эскиз следующий код:
01
02
03
04
05
06
07
08
09
10
11
12
|
#include <Adafruit_NeoPixel.h> #define PIN D1 #define NUMPIXELS 8 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN,</pre> <pre> NEO_GRB + NEO_KHZ800); void updateLeds() { for ( int i= 0 ; i < NUMPIXELS;i++ pixels.setPixelColor(i, pixels.Color(red,green,blue)); pixels.show(); } |
Код очень прост, необходимо определить вывод данных (в данном примере D1) и количество пикселей, поддерживаемых полосой неопикселя.
Как настроить панель управления Cayenne с помощью MQTT
Это последний шаг этого проекта IoT. На этом шаге мы создадим панель управления Cayenne, которая отправляет данные в ESP8266 с помощью MQTT. Панель инструментов IoT Cayenne должна содержать три различных ползунка, которые представляют три цветовых компонента. На рисунке ниже показано, как добавить ползунок на панель инструментов Cayenne:
Важно отметить, чтобы выбрать правильный канал для каждого цветового компонента:
- Красный (канал 1)
- Зеленый (канал 2)
- Синий (канал 3)
Вы должны повторить этот шаг для всех трех цветовых компонентов. В конце вы получите панель инструментов Cayenne, показанную выше.
С точки зрения кода, мы можем повторно использовать код, показанный в предыдущих шагах, и изменить его:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
void setup() { Serial.begin( 9600 ); Cayenne.begin(username, password, clientID, ssid, wifiPassword); pixels.begin(); } void loop() { Cayenne.loop(); } CAYENNE_OUT_DEFAULT() { } CAYENNE_IN(RED_CHANNEL) { red = getValue.asInt(); // 0 to 255 CAYENNE_LOG( "Channel %d, value %d" , RED_CHANNEL, red); updateLeds(); } CAYENNE_IN(BLUE_CHANNEL) { blue = getValue.asInt(); // 0 to 255 CAYENNE_LOG( "Channel %d, value %d" , BLUE_CHANNEL, blue); updateLeds(); } CAYENNE_IN(GREEN_CHANNEL) { green = getValue.asInt(); // 0 to 255 CAYENNE_LOG( "Channel %d, value %d" , GREEN_CHANNEL, green); updateLeds(); } |
Есть три разных CAYENNE_IN
одному для каждого канала. В каждом канале эскиз обрабатывает новое значение, отправленное с использованием MQTT. Каждый раз, когда ESP8266 получает новое значение от приборной панели Cayenne IoT через MQTT, он обновляет светодиоды RGB для отражения новых цветовых компонентов.
Резюме
В конце этой статьи вы, надеюсь, получили знания о том, как интегрировать Arduino / ESP822 и Cayenne с помощью MQTT. Вы создали систему IoT, в которой используются датчики, которые измеряют физические величины и отправляют данные в облако по протоколу MQTT. Во второй части мы рассмотрели, как управлять периферийными устройствами, подключенными к ESP8266 (или Arduino), используя MQTT. С помощью панели инструментов IoT Cayenne ESP8266 выбирает цвет светодиодов RGB, используя данные, отправленные с использованием MQTT. Этот проект IoT может быть дополнительно расширен, и вы можете применять одни и те же принципы к различным сценариям и работать с различными датчиками или периферийными устройствами.
Опубликовано на Java Code Geeks с разрешения Франческо Аццолы, партнера по нашей программе JCG. См. Оригинальную статью здесь: Как построить систему IoT с использованием Arduino / ESP8266 mydevices Cayenne и MQTT
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |