Kazalo:
- Korak 1: ESP32 Pinout
- Korak: NodeMCU Pinout
- Korak: MQTT
- 4. korak: Montaža
- 5. korak: diagram
- 6. korak: Knjižnice
- 7. korak: Knjižnica za branje temperature in vlažnosti
- 8. korak: Knjižnica MQTT
- 9. korak: MQTT.ino
- 10. korak: grafično
- 11. korak: Datoteke
Video: IBM Watson z ESP32 kot končno točko: 11 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Danes objavljam prvi video posnetek o tem, kako namestiti napravo Endpoint z ESP32 in jo nato poslati v storitev v oblaku. V tej posebni epizodi vam bom pokazal, kako pošiljate informacije s senzorja DHT22 z uporabo protokola MQTT za IBM Watson.
Najprej bomo predstavili MQTT, protokol med stroji, ki se uporablja v IoT (Internet of Things). S tem protokolom bomo poslali tudi podatke senzorja temperature in vlažnosti, nato pa grafikon s temi podatki preverimo na spletni strani.
Korak 1: ESP32 Pinout
Tu sem postavil Pinout ESP32, ki ga uporabljamo v našem primeru. Vendar pa želim jasno povedati, da projekt deluje tudi z ESP8266 in celo z isto izvorno kodo.
Korak: NodeMCU Pinout
Korak: MQTT
MQTT je protokol med stroji, ki se uporablja v IoT. Zasnovan je bil lahek in hiter. Uporablja sistem za naročanje/objavo, kjer se naprava "naroči" na temo s posebnimi informacijami, ki vas zanimajo, nato pa informacije prejme vsakič, ko naprava objavi podatke o tej temi.
Tako kot strežniški program tudi MQTT potrebuje programsko opremo. Temu se reče posrednik. V tem posebnem primeru bomo uporabili IBM -ovo storitev Bluemix IoT. Ta storitev je brezplačna za testiranje končnih točk.
Nato moramo imeti mobilni telefon ali tablični računalnik s strani aplikacije, torej kot odjemalca MQTT. Imamo tudi stran naprave, to je stran ESP s termometrom. S tem se podatki o temperaturi in vlažnosti pošljejo v Bluemix, ki te podatke nato pošlje na stran aplikacije.
4. korak: Montaža
Naše vezje je sestavljeno iz upora 4,7 k Ohmov med 3,3 V in podatkovnim zatičem ter DHT22, priključenega na GPIO4 ESP32 ali NodeMCU. To je torej naša končna točka.
5. korak: diagram
Tukaj prikazujem več načinov sodelovanja z lokalnim posrednikom MQTT. Postavil sem dva modela diagramov. V videu govorim o situaciji, na primer z uporabo Raspberry Pi za odpiranje vrat.
Na zgornji sliki imamo prvo arhitekturo, ki vztrajno uporablja lokalnega posrednika, in drugo arhitekturo spodaj, ki komunicira samo s posrednikom v oblaku.
Kot je prikazano na diagramu, naš senzor nato pošlje podatke o temperaturi in vlažnosti v IBM Watson. Pomembno je poudariti, da IBM Watson v tem primeru ne zapisuje podatkov, saj so prikazani le v grafih. To je zato, ker v današnjem primeru ne bomo obravnavali nobenih operacij baze podatkov, ampak samo navedimo dostop do strani Quickstart (https://quickstart.internetofthings.ibmcloud.com/), ki bo prikazala stanje končne točke. Shema je preprosta in uporablja WiFi za pošiljanje podatkov.
6. korak: Knjižnice
V Arduino IDE pojdite v meni Sketch -> Include Library -> Manage Libraries …
Na zaslonu, ki se odpre, vnesite iskanje "DHT" in namestite lib "DHT sensor library"
Nato vnesite "PubSubClient" in namestite lib "PubSubClient".
7. korak: Knjižnica za branje temperature in vlažnosti
8. korak: Knjižnica MQTT
9. korak: MQTT.ino
Izvorno kodo zaženemo tako, da preverimo, kateri ESP se uporablja, in uvozimo ustrezno knjižnico in WiFi. Še vedno vključujemo MQTT Libs ter senzor temperature in vlažnosti.
// Preverjanje kakovosti ESP za pošiljanje uporabe // e uvoz in lib e wifi korespondenca #če je definirano (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperature e umidade #include
Nato določimo naslednje: interval med oddajo podatkov, strežnik MQTT, ki bo uporabljen, informacije o tiskanju na grafikonu in ID. Opozorili smo tudi, kako naj bo niz QUICK_START.
// Intervalo entre os envios #define INTERVAL 1000 // Nadomestni pelo SSID za sua rede #define SSID "TesteESP" // Zamenjava pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_SERVER "quickstart.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 razvijalci stalnega sodelovanja z nizom QUICK_START = "d: quickstart: arduino:";
V tem koraku določimo edinstven ID. V tem primeru uporabljamo naslov MAC naprave, ki jo uporabljamo. To bo služilo kot identifikacija na spletnem mestu QuickStart. Tu povežemo tudi Quickstart ID z ID -jem naše naprave.
// No DEVICE_ID você 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;
Nato konfiguriramo MQTT in WiFi ter predmete in spremenljivke, povezane z vrednostmi temperature in vlažnosti.
// Odjemalec WiFi za uporabo MQTT uporablja za parametre conectarWiFiClient wifiClient; // Odjemalec MQTT, prehod na strežnik url do, porta // e o stranko odjemalca 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 temperatura plavajoča temperatura = 0; // Variável para guardarmos o valor da umidade plavajoča vlažnost = 0;
MQTT.ino - nastavitev
V nastavitvah bomo inicializirali DHT in se povezali v omrežje WiFi in strežnik MQTT.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao strežnik MQTT connectMQTTServer (); }
MQTT.ino - zanka
V zanki zbiramo podatke senzorjev, da ustvarimo Json, ki bo objavljen v temi, za katero IBM Watson pričakuje, da bo ustvaril graf.
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 ("Objavi sporočilo:"); // Criamos o json que enviaremos za strežnik mqtt String msg = createJsonString (); Serial.println (sporočilo); // 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
Tu imamo funkcijo, ki je odgovorna za povezavo z omrežjem WiFi.
// Funkão responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezovanje z"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, GESLO); // 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 povezan"); }
MQTT.ino - povežite strežnik MQTTServer
V tem koraku uporabljamo funkcijo, ki je odgovorna za povezavo s strežnikom MQTT.
// Funkcionalni odziv na povezavi strežnika MQTTvoid connectMQTTServer () {Serial.println ("Povezovanje s strežnikom MQTT …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se conexão foi bem sucedida Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - bralni senzor
Odčitavanje podatkov o temperaturi in vlažnosti je definirano v tej funkciji.
// Funkão responsável por realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura temperature = vrednost; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade Vlažnost = vrednost; }}
MQTT.ino - createJsonString
Tu imamo funkcijo, odgovorno za ustvarjanje Jsona z odčitanimi podatki.
// Funkão responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; podatki+= "\" d / ": {"; podatki+= "\" temperatura / ":"; podatki+= niz (temperatura); podatki+= ","; podatki+= "\" vlažnost / ":"; podatki+= niz (vlažnost); podatki+= "}"; podatki+= "}"; vrniti podatke; }
10. korak: grafično
Za ogled grafa senzorja pojdite
na
V polje ID naprave vnesite DEVICE_ID, ki ste ga določili v kodi.
- Pomembno je, da ta ID naprave spremenite v edinstven ID, ki se uporablja le, da se izognete konfliktu s podatki, ki jih pošlje druga oseba.
Na koncu sprejmite pogoje in kliknite Pojdi.
V tem projektu smo preskusili našo končno točko na strežniku IBM Watson. To zagotavlja, da naš program Arduino pravilno komunicira s platformo in da storitve, ki jih pošljemo, storitev v oblaku brez težav prejema, če ustvarimo račun.
V prihajajočem videoposnetku v tej seriji vam bom pokazal, kako se prijaviti v IBM Watson, in med drugim zapisati v podatkovno banko te ali druge storitve v oblaku, kot so Google, Amazon.
11. korak: Datoteke
Prenesite datoteke:
JAZ NE
Priporočena:
Arduino kot ponudnik internetnih storitev -- Zapiši šestnajstiško datoteko v AVR -- Varovalka v AVR -- Arduino kot programer: 10 korakov
Arduino kot ponudnik internetnih storitev || Zapiši šestnajstiško datoteko v AVR || Varovalka v AVR || Arduino kot programer: ……………………… PRIJAVITE SE na moj YouTube kanal za več videov …….. Ta članek gre za arduino kot isp. Če želite naložiti šestnajstiško datoteko ali če želite nastaviti varovalko v AVR, vam ni treba kupiti programerja, lahko storite
Visuino Kako uporabljati gumb kot vhod za nadzor stvari, kot je LED: 6 korakov
Visuino Kako uporabljati gumb kot vhod za nadzor stvari, kot je LED: V tej vadnici se bomo naučili, kako vklopiti in izklopiti LED z enostavnim gumbom in Visuinom. Oglejte si predstavitveni video
Ustvarite dostopno točko WiFi in zagotovite spletni strežnik v NodeMCU V3: 4 koraki
Ustvarite dostopno točko WiFi in zagotovite spletni strežnik v NodeMCU V3: v prejšnjem članku sem že razpravljal o tem, kako uporabljati NodeMCU ESP8266. V članku pojasnjujem, kako dodati NodeMCU ESP8266 v IDE Arduinija. Obstaja več načinov komuniciranja prek interneta z uporabo NodeMCU ESP8266. Ustvarjanje NodeMCU kot
Ustvarite brezplačno dostopno točko WiFi v sistemu Windows: 7 korakov
Ustvarite brezplačno dostopno točko WiFi v sistemu Windows: Ali želite imeti brezžično dostopno točko brezplačno in brez oglasov? Preberite ta navodila, če želite izvedeti, kako
Pretvorite brezžični usmerjevalnik v brezžični podaljšek 2x dostopno točko: 5 korakov
Pretvorite brezžični usmerjevalnik v brezžični podaljšek 2x dostopno točko: V hiši sem imel slabo povezavo z brezžičnim internetom zaradi RSJ (kovinski nosilec v stropu) in sem želel povečati signal ali dodati dodaten podaljšek za preostanek hiše. V elektro sem videl podaljševalce za okoli 50 funtov