Përmbajtje:

IBM Watson Me ESP32 si pikë përfundimi: 11 hapa
IBM Watson Me ESP32 si pikë përfundimi: 11 hapa

Video: IBM Watson Me ESP32 si pikë përfundimi: 11 hapa

Video: IBM Watson Me ESP32 si pikë përfundimi: 11 hapa
Video: IBM Watson com ESP32 como Endpoint - Pt1 2024, Nëntor
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Unë po postoj sot këtu videon e parë të një serie se si të montoni një pajisje Endpoint me ESP32, dhe pastaj ta dërgoni atë në një shërbim cloud. Në këtë episod të veçantë, unë do t'ju tregoj se si të dërgoni informacion nga një sensor DHT22 duke përdorur protokollin MQTT për IBM Watson.

Së pari do të prezantojmë MQTT, i cili është një protokoll makinë nga makina e përdorur në IoT (Internet of Things). Ne gjithashtu do të dërgojmë të dhëna nga sensori i temperaturës dhe lagështisë duke përdorur këtë protokoll, dhe pastaj do të kontrollojmë grafikun me këto të dhëna në një faqe në internet.

Hapi 1: ESP32 Pinout

Vendosa këtu Pinout -in e ESP32, të cilin e përdorim në shembullin tonë. Sidoqoftë, dua ta bëj të qartë se projekti gjithashtu punon me ESP8266, dhe madje edhe me të njëjtin kod burim.

Hapi 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Hapi 3: MQTT

MQTT
MQTT

MQTT është një protokoll makinë nga makina e përdorur në IoT. Shtë projektuar të jetë i lehtë dhe i shpejtë. Ai përdor një sistem abonimi/publikimi, ku një pajisje "pajtohet" në një temë me informacionin specifik të interesit tuaj, dhe pastaj merr informacionin sa herë që një pajisje publikon të dhëna në lidhje me këtë temë.

Ashtu si një program serveri, MQTT ka nevojë për softuer. Ky quhet ndërmjetës. Në këtë rast specifik, ne do të përdorim Shërbimin IoM Bluemix IBM. Ky shërbim është falas për testimin e pikës përfundimtare.

Tjetra, ne duhet të kemi një celular ose tabletë me anën e Aplikimit, domethënë si një klient MQTT. Ne gjithashtu kemi anën e Pajisjes, e cila është ana ESP me një termometër. Kjo dërgon të dhënat e temperaturës dhe lagështisë në Bluemix, e cila më pas e dërgon këtë informacion në Anën e Aplikimit.

Hapi 4: Asambleja

Kuvendi
Kuvendi

Qarku ynë përbëhet nga një rezistencë 4.7k Ohms midis 3.3v dhe pinit të të dhënave, plus një DHT22 të lidhur me GPIO4 të një ESP32 ose NodeMCU. Kështu, kjo është pika jonë përfundimtare.

Hapi 5: Diagrami

Diagramë
Diagramë
Diagramë
Diagramë

Unë tregoj këtu disa mënyra për të punuar me ndërmjetësin lokal MQTT. Vendosa dy modele diagramesh. Në video, unë flas për një situatë duke përdorur një Raspberry Pi për të hapur një portë, për shembull.

Në imazhin e mësipërm, ne kemi arkitekturën e parë që përdor një ndërmjetës lokal me këmbëngulje, dhe një arkitekturë të dytë më poshtë që komunikon vetëm me ndërmjetësin në re.

Siç tregohet në diagram, sensori ynë pastaj dërgon të dhënat e temperaturës dhe lagështisë në IBM Watson. Importantshtë e rëndësishme të theksohet se IBM Watson nuk po i shkruan të dhënat në këtë rast, pasi ato shfaqen vetëm në grafikë. Kjo ndodh sepse ne nuk do të trajtojmë asnjë operacion të bazës së të dhënave në shembullin e sotëm, por vetëm do të tregojmë qasje në faqen Quickstart (https://quickstart.internetofthings.ibmcloud.com/), e cila do të shfaq statusin e Endpoint. Skema është e thjeshtë dhe përdor WiFi për të dërguar të dhëna.

Hapi 6: Bibliotekat

Në Arduino IDE, shkoni te menyja Sketch -> Përfshi Bibliotekën -> Menaxho Bibliotekat …

Në ekranin që hapet, futni në kërkimin "DHT" dhe instaloni lib "bibliotekën e sensorit DHT"

Pastaj, shtypni "PubSubClient" dhe instaloni librin "PubSubClient".

Hapi 7: Biblioteka e leximit të temperaturës dhe lagështisë

Biblioteka e leximit të temperaturës dhe lagështisë
Biblioteka e leximit të temperaturës dhe lagështisë

Hapi 8: Biblioteka MQTT

Biblioteka MQTT
Biblioteka MQTT

Hapi 9: MQTT.ino

Ne e fillojmë kodin burimor duke kontrolluar se cili ESP po përdoret dhe duke importuar bibliotekën përkatëse dhe WiFi. Ne ende përfshijmë Librat MQTT dhe Sensorin e Temperaturës dhe Lagështisë.

// Verifica qual ESP está sendo utilizado // e importon një lib e wifi korrespondente #nëse është përcaktuar (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Tjetra, ne përcaktojmë sa vijon: intervalin midis paraqitjeve të të dhënave, serverit MQTT që do të përdoret, informacionit të printuar në tabelë dhe ID. Ne gjithashtu vumë në dukje se si duhet të jetë vargu QUICK_START.

// Intervalo entre os envios #define INTERVAL 1000 // Zëvendësoni SSID -in tuaj për të përcaktuar #define SSID "TesteESP" // Zëvendësoni të dhënat tuaja për të rivendosur #define PASSWORD "87654321" // Serveri MQTT dhe iremos utlizar #define MQTT_SER.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 zhvillimi i përgjithshëm i este const String QUICK_START = "d: quickstart: arduino:";

Në këtë hap, ne përcaktojmë një ID unike. Në këtë shembull, ne përdorim adresën MAC të pajisjes që po përdorim. Kjo do të shërbejë si identifikim në faqen e QuickStart. Këtu, ne gjithashtu lidhim ID -në e Quickstart me ID -në e pajisjes sonë.

// Asnjë DEVICE_ID nuk do të thotë për idenë tuaj Aqunico // Ju mund të përdorni një adresë MAC // bëni disponueshmërinë e përdorimit të shërbimeve // Shërbimet për identifikim pa faqe //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Konkluzionet ose id do të filloni me shpejtësi ose do të filloni // dispozitivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Ne pastaj konfigurojmë MQTT dhe WiFi, si dhe objektet dhe ndryshoret e përfshira me vlerat e temperaturës dhe lagështisë.

// WiFi i Klientit që është përdorur nga MQTT duke përdorur wi WiiClient ConnectarWiFiClient; // Cliente MQTT, kalon një url do server, një porta // e o klientë WiFi PubSubClient klient (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito longPublishTime = 0; // Objekti që ka realizuar një temperaturë të temperaturës së një umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura temperatura e notimit = 0; // Variável para guardarmos o valor da umidade lagështia e notit = 0;

MQTT.ino - konfigurimi

Në Setup, ne do të fillojmë DHT dhe do të lidhemi në rrjetin WiFi dhe serverin MQTT.

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

MQTT.ino - lak

Në Loop, ne mbledhim të dhënat e sensorit për të krijuar Json që do të publikohet në temën që IBM Watson pret të krijojë grafikun.

void loop () {// Tempos agora em milisegundos tani tani = 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 = tani; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Publiko mesazhin:"); // Criamos ose json për zili për serverin mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos nuk ka nevojë të shërbejë për shërbimin e espera për pranuesin // dhe të dhënat e klientit.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Këtu, ne kemi funksionin përgjegjës për t'u lidhur me rrjetin WiFi.

// Përgjigje Funksionale për konektorin dhe rregullimin e WiFivoid setupWiFi () {Serial.println (); Serial.print ("Lidhu me"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.filloj (SSID, Fjalëkalimi); // Espera është një përfundim që mund të bëhet duke krijuar (WiFi.status ()! = WL_CONNECTED) {vonesë (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi i lidhur"); }

MQTT.ino - lidh MQTTServer

Në këtë hap, ne përdorim funksionin përgjegjës për t'u lidhur me serverin MQTT.

// Funksioni i përgjigjes për serverin konektor MQTTvoid connectMQTTServer () {Serial.println ("Lidhja me serverin MQTT …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("lidhur"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - lexoSensor

Leximi i të dhënave të temperaturës dhe lagështisë përcaktohet në këtë funksion.

// Funksioni i përgjigjes për realizimin e një leiture // temperatura e umidade void readSensor () {vlera e notës; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (vlera)) {// Armazena o novo valor da temperatura temperature = vlera; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor për válido nëse (! Isnan (vlera)) {// Armazena o novo valor da umidade lagështia = vlera; }}

MQTT.ino - krijoJsonString

Këtu, ne kemi funksionin përgjegjës për krijimin e një Json me të dhënat e lexuara.

// Funksioni i përgjigjes për criar // um Json com os dados lidos String createJsonString () {String data = "{"; të dhëna+= "\" d / ": {"; të dhëna+= "\" temperatura / ":"; të dhëna+= Vargu (temperatura); të dhëna+= ","; të dhëna+= "\" lagështia / ":"; të dhëna+= Vargu (lagështia); të dhëna+= "}"; të dhëna+= "}"; ktheni të dhënat; }

Hapi 10: Grafik

Grafike
Grafike
Grafike
Grafike

Për të parë grafikun e sensorit, shkoni

Në fushën ID e pajisjes, futni DEVICE_ID që keni përcaktuar në kod.

- importantshtë e rëndësishme të ndryshoni këtë ID të Pajisjes në një ID unike, e përdorur vetëm për të shmangur konfliktin me të dhënat e dërguara nga një person tjetër.

Më në fund, pranoni kushtet dhe klikoni Shko.

Në këtë projekt, ne testuam Endpoint -in tonë në serverin IBM Watson. Kjo siguron që programi ynë Arduino po komunikon siç duhet me platformën dhe se të dhënat që dërgojmë do të merren pa probleme nga një shërbim cloud nëse krijojmë një llogari.

Në një video të ardhshme në këtë seri, unë do t'ju tregoj se si të regjistroheni në IBM Watson, si dhe të shkruani në bankën e të dhënave të këtij ose një shërbimi tjetër cloud, si Google, Amazon, ndër të tjera.

Hapi 11: Skedarët

Shkarkoni skedarët:

PDF

INO

Recommended: