INHOUDSOPGAWE:
- Stap 1: ESP32 Pinout
- Stap 2: NodeMCU Pinout
- Stap 3: MQTT
- Stap 4: Montering
- Stap 5: Diagram
- Stap 6: Biblioteke
- Stap 7: Leesbiblioteek vir temperatuur en humiditeit
- Stap 8: MQTT -biblioteek
- Stap 9: MQTT.ino
- Stap 10: Grafies
- Stap 11: lêers
Video: IBM Watson met ESP32 as eindpunt: 11 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Ek plaas vandag die eerste video van 'n reeks oor hoe om 'n eindpunt -toestel met ESP32 te monteer en dit dan na 'n wolkdiens te stuur. In hierdie spesifieke episode sal ek u wys hoe u inligting vanaf 'n DHT22 -sensor kan stuur met behulp van die MQTT -protokol vir IBM Watson.
Ons stel eers die MQTT bekend, wat 'n masjien-tot-masjien-protokol is wat in IoT (Internet of Things) gebruik word. Ons stuur ook data van die temperatuur- en humiditeitsensor met behulp van hierdie protokol, en kyk dan na die grafiek met hierdie data op 'n webblad.
Stap 1: ESP32 Pinout
Ek het die Pinout van ESP32 hier geplaas, wat ons in ons voorbeeld gebruik. Ek wil dit egter duidelik maak dat die projek ook werk met ESP8266, en selfs met dieselfde bronkode.
Stap 2: NodeMCU Pinout
Stap 3: MQTT
MQTT is 'n masjien-tot-masjien-protokol wat in IoT gebruik word. Dit is ontwerp om lig en vinnig te wees. Dit gebruik 'n subskripsie/publiseer stelsel, waar 'n toestel 'n subskripsie het op 'n onderwerp met die spesifieke inligting van u belangstelling, en dan die inligting ontvang wanneer 'n toestel data oor hierdie onderwerp publiseer.
Soos 'n bedienerprogram, benodig MQTT sagteware. Dit word 'n makelaar genoem. In hierdie spesifieke geval gebruik ons IBM se Bluemix IoT -diens. Hierdie diens is gratis vir eindpunt toetsing.
Vervolgens moet ons 'n selfoon of tablet hê met die aansoekkant, dit wil sê as 'n MQTT -kliënt. Ons het ook die apparaatkant, die ESP -kant met 'n termometer. Dit stuur die temperatuur- en humiditeitsdata na die Bluemix, wat hierdie inligting dan na die aansoekkant stuur.
Stap 4: Montering
Ons stroombaan bestaan uit 'n weerstand van 4.7k Ohm tussen die 3.3v en die datapen, plus 'n DHT22 wat gekoppel is aan die GPIO4 van 'n ESP32 of NodeMCU. Dit is dus ons eindpunt.
Stap 5: Diagram
Ek wys hier die verskillende maniere om met die MQTT Local Broker saam te werk. Ek het twee diagrammodelle geplaas. In die video praat ek oor 'n situasie met 'n Raspberry Pi om byvoorbeeld 'n hek oop te maak.
In die bostaande prentjie het ons die eerste argitektuur wat 'n plaaslike makelaar met volharding gebruik, en 'n tweede argitektuur hieronder wat slegs met die makelaar in die wolk kommunikeer.
Soos in die diagram getoon word, stuur ons sensor dan die temperatuur- en humiditeitsdata na IBM Watson. Dit is belangrik om te beklemtoon dat IBM Watson in hierdie geval nie die data skryf nie, aangesien dit slegs in grafieke vertoon word. Dit is omdat ons geen databasisbedrywighede in die voorbeeld van vandag sal aanspreek nie, maar slegs toegang tot die Quickstart -bladsy (https://quickstart.internetofthings.ibmcloud.com/) aandui, wat die status van die eindpunt sal vertoon. Die skema is eenvoudig en gebruik WiFi om data te stuur.
Stap 6: Biblioteke
Gaan in die Arduino IDE na die Skets -kieslys -> Sluit biblioteek in -> Bestuur biblioteke …
Tik in die soektog "DHT" op die skerm wat oopmaak en installeer die lib "DHT -sensorbiblioteek"
Tik dan "PubSubClient" en installeer die "PubSubClient" lib.
Stap 7: Leesbiblioteek vir temperatuur en humiditeit
Stap 8: MQTT -biblioteek
Stap 9: MQTT.ino
Ons begin die bronkode deur te kyk watter ESP gebruik word en die ooreenstemmende biblioteek en WiFi in te voer. Ons bevat nog steeds die MQTT Libs en die temperatuur- en humiditeitsensor.
// Verifica qual ESP está sendo utilizado // e importa a lib e wifi correspondente #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
Vervolgens definieer ons die volgende: die interval tussen data -voorleggings, die MQTT -bediener wat gebruik gaan word, die drukinligting op die grafiek en die ID. Ons het ook daarop gewys hoe die string QUICK_START moet wees.
// Intervalo entre os envios #definieer INTERVAL 1000 // Vervang die SSID vir meer as #define SSID "TesteESP" // Vervang die nuwe #definieer wagwoord "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 permanecer como está const String QUICK_START = "d: quickstart: arduino:";
In hierdie stap definieer ons 'n unieke ID. In hierdie voorbeeld gebruik ons die MAC -adres van die toestel wat ons gebruik. Dit sal dien as identifikasie op die QuickStart -webwerf. Hier koppel ons ook die Quickstart ID met die ID van ons toestel.
// Geen DEVICE_ID kan vir ons 'n ID gebruik nie // Vir voorbeeld kan gebruik word van MAC -adres // om dispositivo que estamos utilizando te gebruik // Servirá como identifieraçã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;
Ons stel dan die MQTT en WiFi op, sowel as die voorwerpe en veranderlikes wat betrokke is by die waardes van temperatuur en humiditeit.
// Wifi -klante kan deur MQTT gebruik word vir die konteks van WiFiClient wifiClient; // Kliënt MQTT, slaag na 'n URL -bediener, 'n portaal // of na WiFi PubSubClient -kliënt (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objekto que realiza a leitura da temperaturea e da umidade DHT dht (4, DHT22); // Variabel vir wagarmos of valor da temperatuura float temperature = 0; // Variável para guardarmos o valor da umidade float humiditeit = 0;
MQTT.ino - opstelling
In die opset begin ons die DHT en maak ons verbinding met die WiFi -netwerk en MQTT -bediener.
ongeldige opstelling () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Verbind WiFi met WiFi (); // Verbind met die bediener MQTT connectMQTTServer (); }
MQTT.ino - lus
In die lus versamel ons die sensordata om die Json te skep wat gepubliseer sal word in die onderwerp wat IBM Watson verwag om die grafiek te genereer.
leemte lus () {// Tempos agora em milisegundos nou lank = 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 temperatura e umidade readSensor (); Serial.print ("Publiseer boodskap:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (boodskap); // Publicamos no tópico onde o servidor espera for receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - opstelWiFi
Hier het ons die funksie wat verantwoordelik is vir die verbinding met die WiFi -netwerk.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Koppel aan"); 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 gekoppel"); }
MQTT.ino - verbindMQTTServer
In hierdie stap gebruik ons die funksie wat verantwoordelik is vir die verbinding met die MQTT -bediener.
// Funksionele reaksie op die bediener van MQTTvoid connectMQTTServer () {Serial.println ("Koppel aan MQTT -bediener …"); // Sien ook die definisie as (client.connect (CLIENT_ID.c_str ())) {// Sien 'n koneksão foi bem sucedida Serial.println ("verbind"); } anders {// Sien ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - leesSensor
Die lees van die temperatuur- en humiditeitsdata word in hierdie funksie gedefinieer.
// Função responsável por realizar a leitura // da temperatuura e umidade void readSensor () {float value; // Faz a leitura da temperatuura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura temperature = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Soek waarde vir válido as (! Isnan (waarde)) {// Armazena o novo valor da umidade humiditeit = waarde; }}
MQTT.ino - createJsonString
Hier het ons die funksie wat verantwoordelik is vir die skep van 'n Json met die lees van die data.
// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" temperatuur / ":"; data+= String (temperatuur); data+= ","; data+= "\" humiditeit / ":"; data+= String (humiditeit); data+= "}"; data+= "}"; data terugstuur; }
Stap 10: Grafies
Gaan na die sensorgrafiek
na
Voer in die veld Toestel -ID die DEVICE_ID in wat u in die kode gedefinieer het.
- Dit is belangrik om hierdie toestel -ID te verander na 'n unieke ID, wat slegs gebruik word om konflik te voorkom met data wat deur 'n ander persoon gestuur word.
Aanvaar ten slotte die bepalings en klik op Gaan.
In hierdie projek het ons ons eindpunt op die IBM Watson -bediener getoets. Dit verseker dat ons Arduino -program behoorlik met die platform kommunikeer, en dat die data wat ons stuur glad deur 'n wolkdiens ontvang sal word as ons 'n rekening skep.
In 'n komende video in hierdie reeks sal ek jou wys hoe om by IBM Watson aan te meld, asook om in die databank van hierdie of 'n ander wolkdiens, soos onder andere Google, Amazon, te skryf.
Stap 11: lêers
Laai die lêers af:
EK NEE
Aanbeveel:
Skakel 'n LED aan met Watson -gesprek: 6 stappe
Skakel 'n LED aan met Watson -gesprek: wat u benodig: Zagros Artificial Intelligence Raspberry Pi Kit
Aan die gang met ESP32 - Die installering van ESP32 -borde in Arduino IDE - ESP32 Knipper -kode: 3 stappe
Aan die gang met ESP32 | Die installering van ESP32 -borde in Arduino IDE | ESP32 Blink -kode: In hierdie instruksies sal ons sien hoe om met esp32 te begin werk en hoe om esp32 -borde in Arduino IDE te installeer, en ons sal esp 32 programmeer om 'n blink kode te gebruik met behulp van arduino ide
IoT Hydroponics - Die gebruik van IBM's Watson vir PH- en EC -metings: 7 stappe (met foto's)
IoT -hidroponika - Die gebruik van IBM's Watson vir PH- en EC -metings: hierdie instruksies sal wys hoe u die EC, pH en temperatuur van 'n hidroponika -opstelling kan monitor en die data kan oplaai na IBM se Watson -diens. Watson is gratis om mee te begin. Daar is betaalde planne, maar die gratis plan is meer as genoeg vir hierdie projek
IoT Plant Monitoring System (Met IBM IoT Platform): 11 stappe (met foto's)
IoT Plant Monitoring System (Met IBM IoT Platform): Oorsig Die Plant Monitoring System (PMS) is 'n toepassing wat gebou is met individue wat in die werkersklas is met 'n groen duim in gedagte. Vandag is werkende individue besiger as ooit tevore; om hul loopbane te bevorder en hul finansies te bestuur
Bank Boss - Watson Game: 6 stappe (met foto's)
Bank Boss - Watson Game: Die Jam -span by Winchester School of Art (Southampton University) het drie dae tyd gehad om 'n hulpbronbestuurspeletjie te skep met behulp van IBM se Watson API -stelsels om 'n spel te skep wat volledig deur spraak beheer word - Ons gaan oor die stappe wat ons geneem het om hierdie speletjie te skep vir