Съдържание:

IBM Watson с ESP32 като крайна точка: 11 стъпки
IBM Watson с ESP32 като крайна точка: 11 стъпки

Видео: IBM Watson с ESP32 като крайна точка: 11 стъпки

Видео: IBM Watson с ESP32 като крайна точка: 11 стъпки
Видео: ESP8266 e ESP32 com WiFiManager - Pt2 2024, Ноември
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Публикувам тук днес първия видеоклип от поредица за това как да монтирам Endpoint устройство с ESP32 и след това да го изпратя до облачна услуга. В този конкретен епизод ще ви покажа как да изпращате информация от сензор DHT22, използвайки протокола MQTT за IBM Watson.

Първо ще представим MQTT, който е протокол от машина към машина, използван в IoT (Интернет на нещата). Ние също ще изпращаме данни от сензора за температура и влажност, използвайки този протокол, и след това проверяваме графиката с тези данни на уеб страница.

Стъпка 1: ESP32 Pinout

Поставих тук Pinout на ESP32, който използваме в нашия пример. Искам обаче да изясня, че проектът работи и с ESP8266, и дори със същия изходен код.

Стъпка 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Стъпка 3: MQTT

MQTT
MQTT

MQTT е протокол от машина към машина, използван в IoT. Той е проектиран да бъде лек и бърз. Той използва система за абониране/публикуване, където устройство се „абонира“за тема с конкретната информация, която ви интересува, и след това получава информацията, когато дадено устройство публикува данни, свързани с тази тема.

Подобно на сървърна програма, MQTT се нуждае от софтуер. Това се нарича брокер. В този конкретен случай ще използваме IBM Bluemix IoT услугата. Тази услуга е безплатна за тестване на крайни точки.

След това трябва да имаме мобилен телефон или таблет от страната на приложението, тоест като MQTT клиент. Имаме и страната на устройството, която е страната на ESP с термометър. Това изпраща данните за температурата и влажността до Bluemix, който след това изпраща тази информация до страната на приложението.

Стъпка 4: Монтаж

Монтаж
Монтаж

Нашата схема се състои от резистор от 4,7 k Ohms между 3.3v и щифта за данни, плюс DHT22, свързан към GPIO4 на ESP32 или NodeMCU. По този начин това е нашата крайна точка.

Стъпка 5: Диаграма

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

Тук показвам няколко начина за работа с местния брокер на MQTT. Поставих два модела с диаграми. Във видеото говоря за ситуация, използваща Raspberry Pi за отваряне на порта, например.

На горното изображение имаме първата архитектура, която използва локален брокер с постоянство, и втора архитектура по -долу, която комуникира само с брокера в облака.

Както е показано на диаграмата, нашият сензор изпраща данните за температурата и влажността на IBM Watson. Важно е да се подчертае, че IBM Watson не записва данните в този случай, тъй като те се показват само в графики. Това е така, защото няма да разглеждаме никакви операции с база данни в днешния пример, а само посочваме достъп до страницата за бърз старт (https://quickstart.internetofthings.ibmcloud.com/), която ще показва състоянието на крайната точка. Схемата е проста и използва WiFi за изпращане на данни.

Стъпка 6: Библиотеки

В IDE на Arduino отидете в менюто Sketch -> Include Library -> Manage Libraries …

На екрана, който се отваря, въведете в търсенето "DHT" и инсталирайте lib "DHT сензорна библиотека"

След това въведете „PubSubClient“и инсталирайте „PubSubClient“lib.

Стъпка 7: Библиотека за четене на температура и влажност

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

Стъпка 8: Библиотека MQTT

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

Стъпка 9: MQTT.ino

Стартираме изходния код, като проверяваме кой ESP се използва и импортираме съответната библиотека и WiFi. Все още включваме MQTT Libs и сензора за температура и влажност.

// Проверка на качеството на ESP за изпращане на използване // e импортиране в съответствие с wifi съответствието #ако е дефинирано (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperature e umidade #include

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

// Intervalo entre os envios #define INTERVAL 1000 // Подмяна на SSID на sua за rede #дефиниране на SSID "TesteESP" // Замяна на pela senha да sua rede #дефиниране на ПАРОЛ "87654321" // Сървър MQTT que iremos utlizar #define MQTT_SERVER "бърз старт.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 deve permanentcer como está const String QUICK_START = "d: quickstart: arduino:";

В тази стъпка определяме уникален идентификатор. В този пример използваме MAC адреса на устройството, което използваме. Това ще служи като идентификация на сайта QuickStart. Тук също свързваме идентификатора на Quickstart с идентификатора на нашето устройство.

// Няма DEVICE_ID гласуване за мудар за 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 que или MQTT се използва за използване на conectarWiFiClient wifiClient; // Клиентски MQTT, преминаващ към сървър за URL адреси, портал // e или клиентски WiFi PubSubClient клиент (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realization a leitura da temperature e to umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperature float temperature = 0; // Variável para guardarmos o valor da umidade float влажност = 0;

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

В настройката ще инициализираме DHT и ще се свържем в WiFi мрежата и MQTT сървъра.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }

MQTT.ino - цикъл

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

void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; // Fazemos a leitura da temperature e umidade readSensor (); Serial.print ("Публикуване на съобщение:"); // Criamos o json que enviaremos para or server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Тук имаме функцията, отговорна за свързването към WiFi мрежата.

// Функция за реакция на връзката и повторно WiFivoid setupWiFi () {Serial.println (); Serial.print ("Свързване към"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, PASSWORD); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi свързан"); }

MQTT.ino - свържете MQTTServer

В тази стъпка използваме функцията, отговорна за свързването към MQTT сървъра.

// Функционален отговор за свързване на ao сървър MQTTvoid connectMQTTServer () {Serial.println ("Свързване към MQTT сървър …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Вижте conexão foi bem sucedida Serial.println ("свързан"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - сензор за четене

Отчитането на данните за температурата и влажността е дефинирано в тази функция.

// Функционално реагиране при реализация на датата // да температура и умдада void readSensor () {плаваща стойност; // Faz a leitura da temperature value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperature temperature = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade влажност = стойност; }}

MQTT.ino - createJsonString

Тук имаме функцията, отговорна за създаването на Json с прочетените данни.

// Функционален отговор на criar // um Json com os dados lidos String createJsonString () {String data = "{"; данни+= "\" d / ": {"; данни+= "\" температура / ":"; данни+= низ (температура); данни+= ","; данни+= "\" влажност / ":"; данни+= Низ (влажност); данни+= "}"; данни+= "}"; връщане на данни; }

Стъпка 10: Графика

Графичен
Графичен
Графичен
Графичен

За да видите графиката на сензора, отидете

на

В полето Device ID въведете DEVICE_ID, който сте дефинирали в кода.

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

Накрая приемете условията и щракнете върху Напред.

В този проект тествахме нашата Endpoint на сървъра на IBM Watson. Това гарантира, че нашата програма Arduino комуникира правилно с платформата и че данните, които изпращаме, ще бъдат получени безпроблемно от облачна услуга, ако създадем акаунт.

В предстоящо видео от тази поредица ще ви покажа как да влезете в IBM Watson, както и да напишете в банката данни на тази или друга облачна услуга, като Google, Amazon и др.

Стъпка 11: Файлове

Изтеглете файловете:

PDF

АЗ НЕ

Препоръчано: