IBM Watson с ESP32 в качестве конечной точки: 11 шагов
IBM Watson с ESP32 в качестве конечной точки: 11 шагов
Anonim
Image
Image
Распиновка ESP32
Распиновка ESP32

Сегодня я публикую здесь первое видео из серии о том, как смонтировать конечное устройство с ESP32, а затем отправить его в облачный сервис. В этом конкретном эпизоде я покажу вам, как отправлять информацию с датчика DHT22, используя протокол MQTT для IBM Watson.

Сначала мы представим MQTT - межмашинный протокол, используемый в IoT (Интернете вещей). Мы также отправим данные с датчика температуры и влажности, используя этот протокол, а затем сверим график с этими данными на веб-странице.

Шаг 1: Распиновка ESP32

Я разместил здесь распиновку ESP32, которую мы используем в нашем примере. Однако я хочу прояснить, что проект также работает с ESP8266, и даже с тем же исходным кодом.

Шаг 2: Распиновка NodeMCU

Распиновка NodeMCU
Распиновка NodeMCU

Шаг 3: MQTT

MQTT
MQTT

MQTT - это межмашинный протокол, используемый в IoT. Он был разработан, чтобы быть легким и быстрым. Он использует систему подписки / публикации, где устройство «подписывается» на тему с конкретной информацией, которая вас интересует, а затем получает информацию всякий раз, когда устройство публикует данные по этой теме.

Как и серверной программе, MQTT нуждается в программном обеспечении. Это называется брокером. В этом конкретном случае мы будем использовать IBM Bluemix IoT Service. Эта услуга бесплатна для тестирования конечных точек.

Далее нам понадобится сотовый телефон или планшет со стороной приложения, то есть в качестве MQTT-клиента. У нас также есть сторона устройства, то есть сторона ESP с термометром. Это отправляет данные о температуре и влажности в Bluemix, который затем отправляет эту информацию на сторону приложения.

Шаг 4: Сборка

сборка
сборка

Наша схема состоит из резистора 4,7 кОм между 3,3 В и выводом данных, а также DHT22, подключенного к GPIO4 ESP32 или NodeMCU. Таким образом, это наша конечная точка.

Шаг 5: Схема

Диаграмма
Диаграмма
Диаграмма
Диаграмма

Я покажу здесь несколько способов работы с локальным брокером MQTT. Я разместил две модели диаграмм. В видео я рассказываю, например, о ситуации с использованием Raspberry Pi для открытия ворот.

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

Как показано на схеме, наш датчик затем отправляет данные о температуре и влажности в IBM Watson. Важно подчеркнуть, что IBM Watson не записывает данные в этом случае, поскольку они отображаются только в виде графиков. Это связано с тем, что в сегодняшнем примере мы не будем рассматривать какие-либо операции с базой данных, а только укажем доступ к странице быстрого запуска (https://quickstart.internetofthings.ibmcloud.com/), на которой будет отображаться состояние конечной точки. Схема проста и использует Wi-Fi для отправки данных.

Шаг 6: библиотеки

В среде Arduino IDE перейдите в меню Sketch -> Include Library -> Manage Libraries…

На открывшемся экране введите в поиске «DHT» и установите библиотеку «Библиотека датчиков DHT».

Затем введите «PubSubClient» и установите библиотеку «PubSubClient».

Шаг 7: Библиотека чтения температуры и влажности

Библиотека для чтения по температуре и влажности
Библиотека для чтения по температуре и влажности

Шаг 8: библиотека MQTT

Библиотека MQTT
Библиотека MQTT

Шаг 9: MQTT.ino

Мы начинаем исходный код, проверяя, какой ESP используется, и импортируем соответствующую библиотеку и WiFi. Мы по-прежнему включаем библиотеки MQTT и датчик температуры и влажности.

// Проверено, что ESP используется для отправки // и импортируется библиотека, соответствующая Wi-Fi # если определена (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Затем мы определяем следующее: интервал между отправкой данных, сервер MQTT, который будет использоваться, информацию для печати на диаграмме и идентификатор. Мы также указали, какой должна быть строка QUICK_START.

// Intervalo entre os envios # define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Сервер MQTT que iremos utlizar #define MQTT_SER.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // para que eles apareçam nos gráficos #define TOPIC_NAME" iot-2 / evt / status / fmt / json "// ID que usaremos para conectar // QUICK_START разрабатывает постоянную строку с const String QUICK_START = "d: quickstart: arduino:";

На этом этапе мы определяем уникальный идентификатор. В этом примере мы используем MAC-адрес устройства, которое мы используем. Это будет служить идентификатором на сайте QuickStart. Здесь мы также связываем Quickstart ID с идентификатором нашего устройства.

// Нет DEVICE_ID voiceê deve mudar para um id único // Aqui nesse exemplo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como Identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Затем мы настраиваем MQTT и WiFi, а также объекты и переменные, связанные со значениями температуры и влажности.

// Клиент WiFi для MQTT используется для этого conectarWiFiClient wifiClient; // Клиент MQTT, используется URL-адрес сервера, порт // клиентский канал WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Задача реализации темы температуры и умения DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperature = 0; // Variável para guardarmos o valor da umidade float влажность = 0;

MQTT.ino - настройка

В настройке мы инициализируем DHT и подключимся к сети Wi-Fi и серверу MQTT.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Подключить к сети WiFi setupWiFi (); // Подключение к серверу MQTT connectMQTTServer (); }

MQTT.ino - цикл

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

void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio для maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu или último envio lastPublishTime = now; // Режим работы с температурой и умением readSensor (); Serial.print ("Опубликовать сообщение:"); // Преобразование json в enviaremos для сервера mqtt String msg = createJsonString (); Serial.println (сообщение); // Публикация не содержит описания сервера для получателя // Создание графического файла client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - настройкаWiFi

Здесь у нас есть функция, отвечающая за подключение к сети Wi-Fi.

// Функция откликается на изменение WiFivoid setupWiFi () {Serial.println (); Serial.print («Подключение к»); Serial.print (SSID); // Если нужно, чтобы восстановить настройки // сделать ssid e senha WiFi.begin (SSID, PASSWORD); // Вы можете установить соединение, пока (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Как это сделать, вы можете использовать Serial.println (""); Serial.println («WiFi подключен»); }

MQTT.ino - connectMQTTServer

На этом шаге мы используем функцию, отвечающую за подключение к серверу MQTT.

// Функция ответа сервера MQTTvoid connectMQTTServer () {Serial.println ("Подключение к серверу MQTT…"); // Укажите идентификатор, который определен if (client.connect (CLIENT_ID.c_str ())) {// Установите соединение с последовательностью Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

В этой функции определяется считывание данных о температуре и влажности.

// Функционал, отвечающий за реализацию // температуры и ограничения void readSensor () {float value; // Установить значение температуры = dht.readTemperature (); // Значение имеет значение, если (! Isnan (значение)) {// Значение, новое значение, значение температуры, температура = значение; } // Укажите значение слова = dht.readHumidity (); // Доблесть для валида if (! Isnan (value)) {// Armazena o novo valor da umidade влажность = значение; }}

MQTT.ino - createJsonString

Здесь у нас есть функция, отвечающая за создание Json с прочитанными данными.

// Função responseável por criar // Um Json com os dados lidos String createJsonString () {String data = "{"; данные + = "\" д / ": {"; data + = "\" температура / ":"; data + = String (температура); данные + = ","; data + = "\" влажность / ":"; data + = String (влажность); данные + = "}"; данные + = "}"; вернуть данные; }

Шаг 10: Графика

Графический
Графический
Графический
Графический

Чтобы просмотреть график датчика, перейдите

на

В поле Device ID введите DEVICE_ID, который вы определили в коде.

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

Наконец, примите условия и нажмите «Перейти».

В этом проекте мы протестировали нашу конечную точку на сервере IBM Watson. Это гарантирует, что наша программа Arduino правильно взаимодействует с платформой и что отправленные нами данные будут беспрепятственно получены облачной службой, если мы создадим учетную запись.

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

Шаг 11: файлы

Загрузите файлы:

PDF

Я НЕТ

Рекомендуемые: