Cov txheej txheem:

IBM Watson Nrog ESP32 Raws Li Qhov Taw Qhia: 11 Kauj Ruam
IBM Watson Nrog ESP32 Raws Li Qhov Taw Qhia: 11 Kauj Ruam

Video: IBM Watson Nrog ESP32 Raws Li Qhov Taw Qhia: 11 Kauj Ruam

Video: IBM Watson Nrog ESP32 Raws Li Qhov Taw Qhia: 11 Kauj Ruam
Video: kuv hlub koj - hnub lauj & nraug nas lis [HmongSub] 2024, Kaum ib hlis
Anonim
Image
Image
ESP32 Pinout Cov
ESP32 Pinout Cov

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

NodeMCU Pinout
NodeMCU Pinout

Kauj ruam 3: MQTT

MQTT
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

Los ua ke
Los ua ke

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

Daim duab
Daim duab
Daim duab
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

Kub thiab Vaum Nyeem Ntawv Nyeem Ntawv
Kub thiab Vaum Nyeem Ntawv Nyeem Ntawv

Kauj Ruam 8: MQTT Library

MQTT Library
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

Duab
Duab
Duab
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:

PDF

INO

Pom zoo: