Cov txheej txheem:
- Kauj ruam 1: ESP32 Pinout
- Kauj Ruam 2: NodeMCU Pinout
- Kauj ruam 3: MQTT
- Kauj ruam 4: Sib dhos
- Kauj ruam 5: Daim duab
- Kauj Ruam 6: Cov tsev qiv ntawv
- Kauj Ruam 7: Kev Nyeem Ntawv Kub thiab Vaum
- Kauj Ruam 8: MQTT Library
- Kauj Ruam 9: MQTT.ino
- Kauj ruam 10: Duab
- Kauj ruam 11: Cov ntaub ntawv
Video: IBM Watson Nrog ESP32 Raws Li Qhov Taw Qhia: 11 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Kuv tshaj tawm hnub no thawj daim vis dis aus ntawm koob yuav ua li cas txhawm rau txhim kho Endpoint ntaus ntawv nrog ESP32, thiab tom qab ntawd xa nws mus rau huab kev pabcuam. Hauv ntu tshwj xeeb no, Kuv yuav qhia koj li cas xa cov ntaub ntawv los ntawm DHT22 sensor siv MQTT raws tu qauv rau IBM Watson.
Peb yuav xub xub qhia MQTT, uas yog lub tshuab-rau-tshuab raws tu qauv siv hauv IoT (Internet ntawm Yam). Peb tseem yuav xa cov ntaub ntawv los ntawm qhov ntsuas kub thiab qhov av noo siv qhov txheej txheem no, thiab tom qab ntawd txheeb xyuas daim duab nrog cov ntaub ntawv no ntawm nplooj ntawv web.
Kauj ruam 1: ESP32 Pinout
Kuv tso ntawm no Pinout ntawm ESP32, uas peb siv hauv peb qhov piv txwv. Txawm li cas los xij, Kuv xav ua kom pom tseeb tias txoj haujlwm tseem ua haujlwm nrog ESP8266, thiab txawm tias muaj tib lub hauv paus chaws.
Kauj Ruam 2: NodeMCU Pinout
Kauj ruam 3: MQTT
MQTT yog lub tshuab-rau-tshuab raws tu qauv siv hauv IoT. Nws tau tsim los kom hnyav thiab nrawm. Nws siv cov txheej txheem sau npe/tshaj tawm, qhov twg ntaus ntawv "ua npe" rau cov ncauj lus nrog cov ntaub ntawv tshwj xeeb ntawm koj qhov kev txaus siab, thiab tom qab ntawd tau txais cov ntaub ntawv thaum twg cov cuab yeej tshaj tawm cov ntaub ntawv hais txog cov ncauj lus no.
Zoo li lub program server, MQTT xav tau software. Qhov no yog hu ua Tus broker. Hauv qhov xwm txheej tshwj xeeb no, peb yuav siv IBM's Bluemix IoT Service. Qhov kev pabcuam no yog pub dawb rau qhov ntsuas kawg.
Ntxiv mus, peb yuav tsum muaj lub xov tooj ntawm tes lossis ntsiav tshuaj nrog Daim Ntawv Thov sab, uas yog, raws li MQTT cov neeg siv khoom. Peb kuj tseem muaj Cov Khoom Sab, uas yog ESP sab nrog tus pas ntsuas kub. Qhov no xa cov ntaub ntawv ntsuas kub thiab av noo mus rau Bluemix, uas tom qab ntawd xa cov ntaub ntawv no mus rau Daim Ntawv Thov Sab.
Kauj ruam 4: Sib dhos
Peb lub Circuit Court suav nrog 4.7k Ohms resistor ntawm 3.3v thiab cov ntaub ntawv tus lej, ntxiv rau DHT22 txuas nrog GPIO4 ntawm ESP32 lossis NodeMCU. Yog li, qhov no yog peb qhov kawg.
Kauj ruam 5: Daim duab
Kuv qhia ntawm no ntau txoj hauv kev los ua haujlwm nrog MQTT Local Broker. Kuv tso ob daim duab qauv. Hauv cov vis dis aus, kuv tham txog qhov xwm txheej siv Raspberry Pi qhib lub qhov rooj, piv txwv.
Hauv daim duab saum toj no, peb muaj thawj lub tsev tsim khoom uas siv tus tswv lag luam hauv zos nrog kev nyob ruaj khov, thiab tus qauv thib ob hauv qab no uas tsuas yog sib tham nrog tus tswv lag luam hauv huab.
Raws li tau qhia hauv daim duab, peb lub ntsuas hluav taws xob xa cov ntsuas kub thiab cov av noo mus rau IBM Watson. Nws yog qhov tseem ceeb los hais qhia tias IBM Watson tsis tau sau cov ntaub ntawv hauv qhov no, vim nws tsuas yog nthuav tawm hauv kab duab. Qhov no vim tias peb yuav tsis hais txog kev ua haujlwm database hauv qhov piv txwv niaj hnub no, tab sis tsuas yog qhia nkag mus rau nplooj ntawv Quickstart (https://quickstart.internetofthings.ibmcloud.com/), uas yuav qhia txog qhov xwm txheej ntawm Endpoint. Cov txheej txheem yog yooj yim thiab siv WiFi xa cov ntaub ntawv.
Kauj Ruam 6: Cov tsev qiv ntawv
Hauv Arduino IDE, mus rau Sketch menu -> Xws li Lub Tsev Qiv Ntawv -> Tswj Cov Tsev Qiv Ntawv …
Ntawm qhov screen uas qhib, nkag mus rau hauv kev tshawb nrhiav "DHT" thiab teeb tsa lib "DHT sensor library"
Tom qab ntawd, ntaus "PubSubClient" thiab nruab "PubSubClient" lib.
Kauj Ruam 7: Kev Nyeem Ntawv Kub thiab Vaum
Kauj Ruam 8: MQTT Library
Kauj Ruam 9: MQTT.ino
Peb pib qhov chaws los ntawm kev tshuaj xyuas uas ESP tau siv thiab ntshuam lub tsev qiv ntawv sib xws thiab WiFi. Peb tseem suav nrog MQTT Libs thiab Kub thiab Vaum Sensor.
// 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
Tom ntej no, peb txhais cov hauv qab no: lub sijhawm sib nrug ntawm cov ntaub ntawv xa mus, MQTT server uas yuav siv, luam cov ntaub ntawv ntawm kab ntawv, thiab tus lej ID. Peb kuj tau taw qhia tias txoj hlua QUICK_START yuav tsum yog li cas.
// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_Sart.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 permanentecer como está const String QUICK_START = "d: quickstart: arduino:";
Hauv cov kauj ruam no, peb txhais tus ID tshwj xeeb. Hauv qhov piv txwv no, peb siv MAC Chaw Nyob ntawm lub cuab yeej peb siv. Qhov no yuav ua pov thawj ntawm qhov chaw QuickStart. Ntawm no, peb tseem txuas tus Quickstart ID nrog tus lej ntawm peb lub cuab yeej.
// 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;
Peb tom qab teeb tsa MQTT thiab WiFi, nrog rau cov khoom thiab cov hloov pauv cuam tshuam nrog qhov ntsuas kub thiab av noo.
// Cliente WiFi que o MQTT irá utilizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, porta // e o cliente WiFi PubSubClient tus thov kev pab (MQTT_SERVER, 1883, wifiClient); // Tempo em que o imoltimo envio foi feito longPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura ntab kub = 0; // Variável para guardarmos o valor da umidade float humidity = 0;
MQTT.ino - teeb tsa
Hauv Kev Teeb, peb yuav pib DHT, thiab txuas hauv WiFi network thiab MQTT server.
teeb tsa tsis muaj dab tsi () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi teeb tsaWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }
MQTT.ino - voj
Hauv Loop, peb sau cov ntaub ntawv ntsuas los tsim Json uas yuav tshaj tawm hauv cov ncauj lus uas IBM Watson xav kom tsim cov duab.
void loop () {// Tempos agora em milisegundos ntev tam sim no = 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 = tam sim no; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Tshaj tawm cov lus:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos tsis muaj tus pabcuam lossis tus pabcuam rau tus neeg siv khoom // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - teeb tsa WiFi
Ntawm no, peb muaj txoj haujlwm lav ris txuas rau WiFi network.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Txuas rau"); 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 buildelecida thaum (WiFi.status ()! = WL_CONNECTED) {ncua (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("Txuas nrog WiFi"); }
MQTT.ino - txuas MQTTServer
Hauv theem no, peb siv lub luag haujlwm muaj feem cuam tshuam rau txuas rau MQTT server.
// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Txuas rau MQTT Server …"); // Se conecta ao id que definimos yog (client.connect (CLIENT_ID.c_str ())) {// Se conexão foi bem sucedida Serial.println ("txuas"); } lwm tus {// Se ocorreu algum erro Serial.print ("yuam kev ="); Serial.println (client.state ()); }}
MQTT.ino - nyeemSensor
Kev nyeem cov ntaub ntawv ntsuas kub thiab av noo tau hais tseg hauv txoj haujlwm no.
// Função responsável por realizar leitura // da temperatura e umidade void readSensor () {ntab tus nqi; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura kub = tus nqi; } // Ua raws li tus nqi ntawm tus nqi = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade humidity = tus nqi; }}
MQTT.ino - tsimJsonString
Ntawm no, peb muaj lub luag haujlwm lav paub tsim Json nrog cov ntaub ntawv nyeem.
// Função responsável por criar // um Json com os dados lidos Txoj hlua createJsonString () {String data = "{"; cov ntaub ntawv+= "\" d / ": {"; data+= "\" kub / ":"; cov ntaub ntawv+= Txoj hlua (ntsuas kub); cov ntaub ntawv+= ","; cov ntaub ntawv+= "\" humidity / ":"; cov ntaub ntawv+= Txoj hlua (av noo); cov ntaub ntawv+= "}"; cov ntaub ntawv+= "}"; xa cov ntaub ntawv; }
Kauj ruam 10: Duab
Txhawm rau saib lub teeb duab sensor, mus
rau
Hauv Device ID teb, nkag mus rau DEVICE_ID uas koj tau hais tseg hauv txoj cai.
- Nws yog ib qho tseem ceeb kom hloov Tus Ntaus ID no mus rau tus lej tshwj xeeb, siv tsuas yog txhawm rau zam kev tsis sib haum nrog cov ntaub ntawv xa los ntawm lwm tus neeg.
Thaum kawg, lees txais cov lus thiab nyem mus.
Hauv txoj haujlwm no, peb tau sim peb qhov kawg ntawm IBM Watson server. Qhov no ua kom ntseeg tau tias peb txoj haujlwm Arduino tau sib txuas lus zoo nrog lub platform, thiab cov ntaub ntawv peb xa yuav tau txais los ntawm kev pabcuam huab yog tias peb tsim tus as khauj.
Hauv cov vis dis aus uas yuav los tom ntej no, kuv yuav qhia koj li cas nkag mus rau IBM Watson, ntxiv rau sau rau hauv lub txhab nyiaj khaws cia ntawm no lossis lwm qhov kev pabcuam huab, xws li Google, Amazon, thiab lwm yam.
Kauj ruam 11: Cov ntaub ntawv
Rub tawm cov ntawv:
INO
Pom zoo:
LED Qhov Taw Qhia Qhov Taw Qhia Tus Menyuam: 5 Kauj Ruam (nrog Duab)
LED Qhov Taw Qhia Qhov Taw Qhia Tus dev: Kuv ib txwm coj kuv tus dev Rusio mus taug kev thaum lub hnub poob qis kom nws tuaj yeem ua si yam tsis tau kub heev. Qhov teeb meem yog tias thaum nws tawm ntawm txoj hlua qee zaum nws tau zoo siab heev thiab ua haujlwm ntau dua li nws yuav tsum thiab nrog lub teeb qis thiab lwm tus dev
Hnub Ci Charger, GSM, MP3, Roj teeb Go-Pro, Nrog Roj Teeb Qhia Qhov Taw Qhia!: 4 Cov Kauj Ruam
Hnub Ci Charger, GSM, MP3, Roj teeb Go-Pro, Nrog Lub Roj Teeb Qhia Qhov Taw Qhia!: Ntawm no txhua yam pom nyob hauv cov thoob khib nyiab.-1 usb txhawb DC 0.9v/5v (lossis tshem tawm USB Tsheb Cigarette Charger Teeb 5v,+ thaum kawg thiab-ntawm ib sab ntawm lub ntsiab lus) -1 Cov roj teeb (cov menyuam yaus ua si) -1 lub hnub ci vaj huam sib luag (ntawm no 12 V) tab sis 5v yog qhov zoo tshaj plaws! -1 GO-Pro Ba
Yuav Ua Li Cas Thiaj Li Taw Qhia Qhov Taw Qhia: 6 Kauj Ruam
Yuav Ua Li Cas Thiaj Li Qhia Tus Kheej: Lub hom phiaj tseem ceeb ntawm daim ntawv thov no yog txhawm rau ntsuas qhov hnyav ntawm ib yam khoom tom qab ntawd qhia nrog lub tswb nrov thaum muaj qhov hnyav dhau. Cov tswv yim ntawm lub kaw lus los ntawm lub xov tooj ntawm tes. Kev tawm tswv yim yog lub teeb liab sib piv uas tau nthuav dav los ntawm qhov sib txawv
Suab/Suab Qhia Qhov Taw Qhia: 10 Kauj Ruam
Qhov Taw Qhia/Suab Qib Suab: Hauv qhov haujlwm no, kuv yuav qhia koj li cas los tsim lub suab qhia yooj yim-qib qhia siv lub tshuab ua haujlwm ua haujlwm. Nco tseg: Txhawm rau nug cov lus nug, thov mus ntsib kuv tus xaib ntawm Nug Tus Kws Tshaj Lij Muab Kev Pab Ntxiv Cov vis dis aus: Simulated Circuit Set Up On A Bread Board (Proto
Kev Taw Taw Taw Tswj 5 Gallon Dej Dispenser: 3 Kauj Ruam
Tus Kheej Tus Kheej Tus Kheej 5 Gallon Dej Tso Dej: Hauv qee lub tebchaws zoo li qhov kuv nyob (Qaib ntxhw), peb muaj teeb meem nrog lub twj tso kua mis kom xa dej tawm ntawm lub ntim. Qee lub twj tso kua mis yog qhov nyuaj thiab cov menyuam yaus muaj teeb meem nrog kev muab lub zog xav tau. Yog li kuv xav txog kev siv ko taw