Съдържание:
- Стъпка 1: ESP32 Pinout
- Стъпка 2: NodeMCU Pinout
- Стъпка 3: MQTT
- Стъпка 4: Монтаж
- Стъпка 5: Диаграма
- Стъпка 6: Библиотеки
- Стъпка 7: Библиотека за четене на температура и влажност
- Стъпка 8: Библиотека MQTT
- Стъпка 9: MQTT.ino
- Стъпка 10: Графика
- Стъпка 11: Файлове
Видео: IBM Watson с ESP32 като крайна точка: 11 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Публикувам тук днес първия видеоклип от поредица за това как да монтирам Endpoint устройство с ESP32 и след това да го изпратя до облачна услуга. В този конкретен епизод ще ви покажа как да изпращате информация от сензор DHT22, използвайки протокола MQTT за IBM Watson.
Първо ще представим MQTT, който е протокол от машина към машина, използван в IoT (Интернет на нещата). Ние също ще изпращаме данни от сензора за температура и влажност, използвайки този протокол, и след това проверяваме графиката с тези данни на уеб страница.
Стъпка 1: ESP32 Pinout
Поставих тук Pinout на ESP32, който използваме в нашия пример. Искам обаче да изясня, че проектът работи и с ESP8266, и дори със същия изходен код.
Стъпка 2: NodeMCU Pinout
Стъпка 3: 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
Стъпка 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: Файлове
Изтеглете файловете:
АЗ НЕ
Препоръчано:
От точка до точка Atari Punk Console Една и половина: 19 стъпки
От точка до точка Atari Punk Console Една и половина: Какво! ?? Друга версия на Atari Punk Console? Чакайте, чакайте, хора, тази е различна, обещайте. Уаай през 1982 г. Форест Мимс, писател на брошури на Radio Shack и създател на Young Earth (емотикони с ролкови очи) публикува плановете на своя генериран стъпаловиден тон
Прост автоматизиран железопътен модел от точка до точка: 10 стъпки (със снимки)
Прост автоматизиран железопътен модел от точка до точка: Микроконтролерите Arduino са чудесни за автоматизиране на моделите на железопътни оформления. Автоматизирането на оформления е полезно за много цели, като например поставянето на оформлението ви на дисплей, където операцията по оформлението може да бъде програмирана да управлява влакове в автоматизирана последователност. Аз
Осцилатор с напрежение от точка до точка: 29 стъпки
Осцилатор, управляван от напрежение от точка до точка: Здравейте! Намерили сте проект, в който вземаме един наистина евтин микрочип, CD4069 (хубав), и залепваме някои части към него, и получаваме много полезен осцилатор, проследяващ напрежението! Версията, която ще изградим, има само форма на трион или рампа, която е
Кръстосана верига от точка до точка: 16 стъпки (със снимки)
Crossfader Circuit Point-to-Point: Това е кръстосана верига. Той приема два входа и избледнява между тях, като изходът е смесица от двата входа (или само един от входовете). Това е проста схема, много полезна и лесна за изграждане! Той инвертира сигнала, преминаващ през него
Dual Decay Eurorack верига от точка до точка: 12 стъпки
Dual Decay Eurorack схема от точка до точка: Целта на тази инструкция е да покаже как можете да направите схема DUAL DECAY за вашия модулен синтезатор. Това е схема от точка до точка, свободна от всяка печатна платка и демонстрира друг начин за изграждане на функционални синтезаторни схеми с минимални части