Sadržaj:
- Korak 1: ESP32 Pinout
- Korak 2: Isključivanje NodeMCU -a
- Korak 3: MQTT
- Korak 4: Montaža
- Korak 5: Dijagram
- Korak 6: Biblioteke
- Korak 7: Biblioteka za čitanje temperature i vlažnosti
- Korak 8: MQTT biblioteka
- Korak 9: MQTT.ino
- Korak 10: Grafički prikaz
- Korak 11: Datoteke
Video: IBM Watson s ESP32 kao krajnjom točkom: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Danas objavljujem prvi video u nizu o tome kako montirati Endpoint uređaj sa ESP32, a zatim ga poslati na cloud uslugu. U ovoj specifičnoj epizodi ću vam pokazati kako slati informacije sa DHT22 senzora koristeći MQTT protokol za IBM Watson.
Prvo ćemo predstaviti MQTT, protokol između mašina koji se koristi u IoT (Internet of Things). Pomoću ovog protokola ćemo također slati podatke sa senzora temperature i vlažnosti, a zatim provjeriti grafikon s tim podacima na web stranici.
Korak 1: ESP32 Pinout
Ovdje sam postavio Pinout ESP32 koji koristimo u našem primjeru. Međutim, želim jasno staviti do znanja da projekt radi i sa ESP8266, pa čak i sa istim izvornim kodom.
Korak 2: Isključivanje NodeMCU -a
Korak 3: MQTT
MQTT je protokol stroj-za-stroj koji se koristi u IoT-u. Dizajniran je da bude lagan i brz. Koristi sistem za pretplatu/objavljivanje, gdje se uređaj "pretplati" na temu sa specifičnim informacijama koje vas zanimaju, a zatim prima informacije kad god uređaj objavi podatke koji se tiču ove teme.
Kao i serverski program, MQTT -u je potreban softver. To se zove posrednik. U ovom konkretnom slučaju koristit ćemo IBM -ovu Bluemix IoT uslugu. Ova usluga je besplatna za testiranje krajnjih tačaka.
Zatim moramo imati mobilni telefon ili tablet sa aplikacijske strane, odnosno kao MQTT klijent. Imamo i stranu uređaja, koja je ESP strana sa termometrom. Ovo šalje podatke o temperaturi i vlažnosti Bluemixu, koji zatim šalje te podatke aplikacijskoj strani.
Korak 4: Montaža
Naš krug se sastoji od otpornika od 4,7 k Ohma između 3.3v i podatkovnog pina, plus DHT22 spojenog na GPIO4 ESP32 ili NodeMCU. Dakle, ovo je naša krajnja tačka.
Korak 5: Dijagram
Ovdje pokazujem nekoliko načina rada s lokalnim posrednikom MQTT. Postavio sam dva modela dijagrama. U videu govorim o situaciji na kojoj se na primjer koristi Raspberry Pi za otvaranje vrata.
Na gornjoj slici imamo prvu arhitekturu koja uporno koristi lokalnog brokera, a drugu arhitekturu ispod koja komunicira samo s posrednikom u oblaku.
Kao što je prikazano na dijagramu, naš senzor zatim šalje podatke o temperaturi i vlažnosti IBM Watsonu. Važno je naglasiti da IBM Watson u ovom slučaju ne zapisuje podatke jer se prikazuju samo u grafikonima. To je zato što se u današnjem primjeru nećemo baviti nikakvim operacijama baze podataka, već samo naznačiti pristup stranici Quickstart (https://quickstart.internetofthings.ibmcloud.com/), koja će prikazati status krajnje točke. Shema je jednostavna i koristi WiFi za slanje podataka.
Korak 6: Biblioteke
U Arduino IDE idite na meni Sketch -> Include Library -> Manage Libraries …
Na ekranu koji se otvori unesite u pretraživanje "DHT" i instalirajte lib "DHT sensor library"
Zatim upišite "PubSubClient" i instalirajte "PubSubClient" lib.
Korak 7: Biblioteka za čitanje temperature i vlažnosti
Korak 8: MQTT biblioteka
Korak 9: MQTT.ino
Izvorni kod započinjemo provjerom koji se ESP koristi i uvozom odgovarajuće biblioteke i WiFi -a. Još uvijek uključujemo MQTT Libs i senzor temperature i vlažnosti.
// Provjeri da li je ESP upotrijebljen za korištenje ESP -a // Uvezi li i wi -fi korespondenciju #ako je definirano (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do senzora temperature i umidade #include
Zatim definiramo sljedeće: interval između predaje podataka, MQTT poslužitelj koji će se koristiti, ispis informacija na grafikonu i ID. Također smo istakli kako bi niz QUICK_START trebao biti.
// Intervalo entre os envios #define INTERVAL 1000 // Zamjena pelo SSID -a za redefiniranje #define SSID "TesteESP" // Zamjena zamjene za suad rede #define PASSWORD "87654321" // MQTT servera za iremos utlizar #define MQTT_SERVER "brzi početak.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 tracer como está const String QUICK_START = "d: quickstart: arduino:";
U ovom koraku definiramo jedinstveni ID. U ovom primjeru koristimo MAC adresu uređaja koji koristimo. Ovo će poslužiti kao identifikacija na web stranici QuickStart. Ovdje također povezujemo Quickstart ID s ID -om našeg uređaja.
// Nema DEVICE_ID -a za početak rada za um id único // Aqui nesse exemplo utilizemos o MAC Address // ne raspolaže que estamos utilizando // Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos ili id do quickstart com o id do nosso // dispozitivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Zatim konfiguriramo MQTT i WiFi, kao i objekte i varijable uključene u vrijednosti temperature i vlažnosti.
// Klijentska WiFi mreža ili MQTT koriste se za povezivanjeWiFiClient wifiClient; // Klijent MQTT, prolazi do servera za url, porta // i o klijentu WiFi PubSubClient klijent (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realization a leitura to temperature and to umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura temperatura plovka = 0; // Variável para guardarmos o valor da umidade plutajuća vlažnost = 0;
MQTT.ino - postavljanje
U postavkama ćemo pokrenuti DHT i povezati se na WiFi mreži i MQTT poslužitelju.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }
MQTT.ino - petlja
U petlji prikupljamo podatke senzora kako bismo stvorili Json koji će biti objavljen u temi za koju IBM Watson očekuje generiranje grafikona.
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 puštanje temperature i umidade readSensor (); Serial.print ("Objavi poruku:"); // Criamos ili json que enviaremos za server mqtt String msg = createJsonString (); Serial.println (poruka); // Publiciranje no tópico onde ili servidor espera para receber // e grar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - setupWiFi
Ovdje imamo funkciju odgovornu za povezivanje na WiFi mrežu.
// Funkcionalno odgovaranje na povezivanje i ponovno WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezivanje sa"); Serial.print (SSID); // Manda o esp se povezuje s 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 povezan"); }
MQTT.ino - povežiteMQTTServer
U ovom koraku koristimo funkciju odgovornu za povezivanje na MQTT poslužitelj.
// Funkcionalno odgovaranje na povezivanje na poslužitelju MQTTvoid connectMQTTServer () {Serial.println ("Povezivanje na MQTT poslužitelj …"); // 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 - readSensor
Očitavanje podataka o temperaturi i vlažnosti definirano je ovom funkcijom.
// Funkcionalni odgovor za realizaciju litara // da temperatura i umidade void readSensor () {float value; // Faz a leitura da temperature value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura temperature = vrijednost; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o no valor da umidade Vlažnost = vrijednost; }}
MQTT.ino - createJsonString
Ovdje imamo funkciju odgovornu za stvaranje Json -a s pročitanim podacima.
// Funkcionalni odgovor prema criar -u // um Json sa oslobodjenim nizom String createJsonString () {String data = "{"; podaci+= "\" d / ": {"; podaci+= "\" temperatura / ":"; podaci+= niz (temperatura); podaci+= ","; podaci+= "\" vlažnost / ":"; podaci+= niz (vlažnost); podaci+= "}"; podaci+= "}"; vratiti podatke; }
Korak 10: Grafički prikaz
Idite na grafikon senzora
na
U polje Device ID unesite DEVICE_ID koji ste definirali u kodu.
- Važno je promijeniti ovaj ID uređaja u jedinstveni ID, koji se koristi samo kako bi se izbjegao sukob s podacima koje je poslala druga osoba.
Na kraju, prihvatite uslove i kliknite Idi.
U ovom projektu testirali smo našu Endpoint na IBM Watson poslužitelju. To osigurava da naš Arduino program pravilno komunicira s platformom i da će oblačni servis nesmetano primati podatke koje šaljemo ako otvorimo račun.
U nadolazećem videu u ovoj seriji pokazat ću vam kako se prijaviti na IBM Watson, kao i pisati u bazu podataka ove ili druge usluge u oblaku, poput Googlea, Amazona, između ostalih.
Korak 11: Datoteke
Preuzmite datoteke:
JA NE
Preporučuje se:
Arduino kao ISP -- Nareži šesterokutnu datoteku u AVR -- Osigurač u AVR -u -- Arduino kao programer: 10 koraka
Arduino kao ISP || Nareži šesterokutnu datoteku u AVR || Osigurač u AVR -u || Arduino kao programer: ……………………… Pretplatite se na moj YouTube kanal za više video zapisa …….. Ovaj članak radi se o arduinu kao isp. Ako želite učitati heksadecimalnu datoteku ili želite postaviti osigurač u AVR, onda ne morate kupiti programer, možete učiniti
DJI LED lampa sa zapaljivim točkom: 5 koraka
DJI Flamewheel LED lampa: Ovaj projekat je rad za svetla na vrhu krila za DJI Flamewheel.Koristili su se materijali: PCB -ovi 1 kom LED 13pcs (3mm TH) Otpornik (paket 0603) 13pcs Možete koristiti sledeće za
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: 11 koraka
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: En este Instructable aprenderemos como hacer un dispensador de alimento para sus mascotas, por lo general, o al menos en mi caso siempre he querido hacer un dispensador autom &aacugo; tico un perro y un gato. Por ende no tengo una
Kako koristiti Wiimote kao računalni miš koristeći svijeće kao senzor !!: 3 koraka
Kako koristiti Wiimote kao računalni miš koristeći svijeće kao senzor !!: Ovaj vodič će vam pokazati kako povezati Wii daljinski upravljač (Wiimote) sa računarom i koristiti ga kao miš
Jeftino (kao u besplatnom [kao u pivu]) postolje sa više metara: 4 koraka
Jeftino (kao u besplatnom [kao i u pivu]) postolje sa više metara: Bio sam iznerviran što moram da iskrivim vrat ili nesigurno izbalansiram svoj jeftini višemetar od 4 USD negdje gdje zaista mogu PROČITATI ekran. Odlučio sam uzeti stvari u svoje ruke! Ovo je ujedno i moja prva 'strukturirana', pa ako neko ima korisne komentare