Sadržaj:
- Korak 1: Ispis ESP32
- Korak 2: NodeMCU ispis
- Korak 3: MQTT
- Korak 4: Montaža
- Korak 5: Dijagram
- Korak 6: Knjižnice
- Korak 7: Knjižnica za čitanje temperature i vlažnosti
- Korak 8: MQTT knjižnica
- Korak 9: MQTT.ino
- 10. korak: grafički
- Korak 11: Datoteke
Video: IBM Watson s ESP32 kao krajnjom točkom: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Danas objavljujem prvi video u nizu o tome kako montirati Endpoint uređaj s ESP32, a zatim ga poslati na uslugu u oblaku. U ovoj specifičnoj epizodi pokazat ću vam kako slati informacije s DHT22 senzora pomoću MQTT protokola za IBM Watson.
Prvo ćemo predstaviti MQTT, protokol stroj-stroj koji se koristi u IoT-u (Internet of Things). Pomoću ovog protokola također ćemo poslati podatke s senzora temperature i vlažnosti, a zatim provjeriti grafikon s tim podacima na web stranici.
Korak 1: Ispis ESP32
Ovdje sam postavio Pinout ESP32, koji koristimo u našem primjeru. Međutim, želim jasno staviti do znanja da projekt radi i s ESP8266, pa čak i s istim izvornim kodom.
Korak 2: NodeMCU ispis
Korak 3: MQTT
MQTT je protokol stroj-za-stroj koji se koristi u IoT-u. Dizajniran je da bude lagan i brz. Koristi sustav za pretplatu/objavljivanje, gdje se uređaj "pretplati" na temu s određenim informacijama koje vas zanimaju, a zatim prima informacije kad god uređaj objavi podatke o ovoj temi.
Poput poslužiteljskog programa, MQTT -u je potreban softver. To se zove posrednik. U ovom konkretnom slučaju koristit ćemo IBM -ovu Bluemix IoT uslugu. Ova je usluga besplatna za testiranje krajnjih točaka.
Zatim moramo imati mobitel ili tablet sa aplikacijske strane, odnosno kao MQTT klijent. Imamo i stranu uređaja, koja je ESP strana s termometrom. Ovo šalje podatke o temperaturi i vlažnosti Bluemixu, koji zatim šalje te podatke aplikacijskoj strani.
Korak 4: Montaža
Naš se krug sastoji od otpornika od 4,7 k Ohma između 3,3 V i podatkovnog pina, plus DHT22 spojen na GPIO4 ESP32 ili NodeMCU. Dakle, ovo je naša krajnja točka.
Korak 5: Dijagram
Ovdje prikazujem nekoliko načina rada s lokalnim posrednikom MQTT. Postavio sam dva modela dijagrama. U videu govorim o situaciji na primjer pomoću Raspberry Pi za otvaranje vrata.
Na gornjoj slici imamo prvu arhitekturu koja uporno koristi lokalnog posrednika, 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: Knjižnice
U Arduino IDE idite na izbornik Sketch -> Include Library -> Manage Libraries …
Na zaslonu koji se otvori unesite u pretraživanje "DHT" i instalirajte lib "DHT sensor library"
Zatim upišite "PubSubClient" i instalirajte "PubSubClient" lib.
Korak 7: Knjižnica za čitanje temperature i vlažnosti
Korak 8: MQTT knjižnica
Korak 9: MQTT.ino
Izvorni kod započinjemo provjerom koji se ESP koristi i uvozom odgovarajuće knjižnice i WiFi -a. Još uvijek uključujemo MQTT Libs i osjetnik temperature i vlažnosti.
// Verifica qual ESP está sendo utilizado // e importa a lib e wifi korespondente #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperature e umidade #include
Zatim definiramo sljedeće: interval između slanja podataka, poslužitelj MQTT koji će se koristiti, ispis informacija na grafikonu i ID. Također smo istaknuli kako bi niz QUICK_START trebao biti.
// Intervalo entre os envios #define INTERVAL 1000 // Zamjena pelo SSID -a za suede rede #define SSID "TesteESP" // Zamjena 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 deve permanentcer 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. To će poslužiti kao identifikacija na web stranici QuickStart. Ovdje također povezujemo Quickstart ID s ID -om našeg uređaja.
// 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;
Zatim konfiguriramo MQTT i WiFi, kao i objekte i varijable uključene u vrijednosti temperature i vlažnosti.
// Klijent WiFi za postavljanje MQTT -a koristi se za povezivanjeWiFiClient wifiClient; // Klijent MQTT, passamos url do poslužitelj, porta // e o klijent WiFi PubSubClient klijent (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperature e da 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 Postavi ćemo inicijalizirati 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 poslužitelj 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 a leitura da temperature e umidade readSensor (); Serial.print ("Objavi poruku:"); // Criamos o json que enviaremos za poslužitelj mqtt String msg = createJsonString (); Serial.println (poruka); // 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
Ovdje imamo funkciju odgovornu za povezivanje s WiFi mrežom.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezivanje s"); Serijski.ispis (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 povezan"); }
MQTT.ino - povežiteMQTTServer
U ovom koraku koristimo funkciju odgovornu za povezivanje s poslužiteljem MQTT.
// Funkcionalno odgovaranje na poveznicu na poslužitelju MQTTvoid connectMQTTServer () {Serial.println ("Spajanje na MQTT poslužitelj …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - senzor za čitanje
Očitavanje podataka o temperaturi i vlažnosti definirano je ovom funkcijom.
// Funçã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 = vrijednost; } // 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 = vrijednost; }}
MQTT.ino - createJsonString
Ovdje imamo funkciju odgovornu za stvaranje Jsona s pročitanim podacima.
// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; podaci+= "\" d / ": {"; podaci+= "\" temperatura / ":"; podaci+= niz (temperatura); podaci+= ","; podaci+= "\" vlažnost / ":"; podaci+= niz (vlažnost); podaci+= "}"; podaci+= "}"; vratiti podatke; }
10. korak: grafički
Idite na grafikon senzora
na
U polje ID uređaja 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 uvjete 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čne usluge nesmetano primati podatke koje šaljemo ako stvorimo račun.
U nadolazećem videu u ovoj seriji pokazat ću vam kako se prijaviti na IBM Watson, kao i upisivati u bazu podataka ove ili druge usluge u oblaku, poput Googlea, Amazona, između ostalih.
Korak 11: Datoteke
Preuzmite datoteke:
INO
Preporučeni:
Arduino Kao ISP -- Snimanje šesterokutne datoteke u AVR -u -- Osigurač u AVR -u -- Arduino kao programer: 10 koraka
Arduino Kao ISP || Snimanje šesterokutne datoteke u AVR -u || Osigurač u AVR -u || Arduino kao programer: ……………………… Pretplatite se na moj YouTube kanal za više videa …….. Ovaj članak je sve o arduinu kao isp. Ako želite učitati šesterokutnu datoteku ili želite postaviti osigurač u AVR, onda ne morate kupiti programer, možete učiniti
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Umjetni 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 Remote (Wiimote) s računalom i koristiti ga kao miš
Jeftino (kao u besplatnom [kao u pivu]) postolje s više metara: 4 koraka
Jeftino (kao u besplatnom [kao i u pivu]) postolje s više metara: Bio sam ljut zbog toga što moram iskriviti vrat ili nesigurno uravnotežiti svoj jeftini višemetar u iznosu od 4 USD negdje gdje zapravo mogu PROČITATI zaslon. Pa sam odlučio uzeti stvari u svoje ruke! Ovo je ujedno i moje prvo 'strukturiranje' pa ako netko ima korisne komentare
Kako napraviti laserski pokazivač s crvenom točkom: 9 koraka
Kako izraditi crvenu točku laserskog pokazivača: Ovo je uputstvo o tome kako napraviti laserski pokazivač s crvenom točkom za igranje video igara. Ovo je zgodan način da točno ispalite svoje oružje kada je teško nišaniti ili ne pružati nišane. Koristim