Talaan ng mga Nilalaman:
- Hakbang 1: ESP32 Pinout
- Hakbang 2: NodeMCU Pinout
- Hakbang 3: MQTT
- Hakbang 4: Assembly
- Hakbang 5: Diagram
- Hakbang 6: Mga Aklatan
- Hakbang 7: Temperatura at Kalabasa ng Pagbasa ng Library
- Hakbang 8: MQTT Library
- Hakbang 9: MQTT.ino
- Hakbang 10: Grapiko
- Hakbang 11: Mga File
Video: IBM Watson Sa ESP32 Bilang Endpoint: 11 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Nai-post ko ngayon ngayon ang unang video ng isang serye sa kung paano i-mount ang isang Endpoint device gamit ang ESP32, at pagkatapos ay ipadala ito sa isang cloud service. Sa tukoy na episode na ito, ipapakita ko sa iyo kung paano magpadala ng impormasyon mula sa isang sensor ng DHT22 gamit ang MQTT protocol para sa IBM Watson.
Una naming ipakilala ang MQTT, na isang machine-to-machine na protokol na ginamit sa IoT (Internet of Things). Magpapadala din kami ng data mula sa sensor ng temperatura at halumigmig gamit ang protokol na ito, at pagkatapos ay suriin ang grap sa data na ito sa isang web page.
Hakbang 1: ESP32 Pinout
Inilagay ko dito ang Pinout ng ESP32, na ginagamit namin sa aming halimbawa. Gayunpaman, nais kong linawin na ang proyekto ay gumagana rin sa ESP8266, at kahit na may parehong source code.
Hakbang 2: NodeMCU Pinout
Hakbang 3: MQTT
Ang MQTT ay isang machine-to-machine na protokol na ginamit sa IoT. Dinisenyo ito upang maging magaan at mabilis. Gumagamit ito ng isang mag-subscribe / mag-publish ng system, kung saan ang isang aparato ay "nag-subscribe" sa isang paksa na may tukoy na impormasyon na iyong interes, at pagkatapos ay tumatanggap ng impormasyon tuwing ang isang aparato ay naglathala ng data tungkol sa paksang ito.
Tulad ng isang programa ng server, kailangan ng MQTT ng software. Ito ay tinatawag na isang Broker. Sa partikular na kaso na ito, gagamitin namin ang Serbisyo ng Bluxus IoT ng IBM. Ang serbisyong ito ay libre para sa pagsubok ng endpoint.
Susunod, kailangan nating magkaroon ng isang cell phone o tablet na may panig ng Application, iyon ay, bilang isang client ng MQTT. Mayroon din kaming panig sa Device, na kung saan ay ang panig ng ESP na may isang termometro. Ipinapadala nito ang data ng temperatura at kahalumigmigan sa Bluemix, na pagkatapos ay ipinapadala ang impormasyong ito sa Application Side.
Hakbang 4: Assembly
Ang aming circuit ay binubuo ng isang 4.7k Ohms risistor sa pagitan ng 3.3v at ang data pin, kasama ang isang DHT22 na konektado sa GPIO4 ng isang ESP32 o NodeMCU. Sa gayon, ito ang ating Endpoint.
Hakbang 5: Diagram
Ipinapakita ko rito ang maraming paraan upang magtrabaho kasama ang MQTT Local Broker. Naglagay ako ng dalawang mga modelo ng diagram. Sa video, pinag-uusapan ko ang isang sitwasyon gamit ang isang Raspberry Pi upang buksan ang isang gate, halimbawa.
Sa imahe sa itaas, mayroon kaming unang arkitektura na gumagamit ng isang lokal na Broker na may pagtitiyaga, at isang pangalawang arkitektura sa ibaba na nakikipag-usap lamang sa broker sa ulap.
Tulad ng ipinakita sa diagram, ang aming sensor pagkatapos ay nagpapadala ng data ng temperatura at halumigmig sa IBM Watson. Mahalagang bigyang-diin na ang IBM Watson ay hindi nagsusulat ng data sa kasong ito, dahil ipinapakita lamang ito sa mga graph. Ito ay dahil hindi namin tutugunan ang anumang pagpapatakbo ng database sa halimbawa ngayon, ngunit ipinapahiwatig lamang ang pag-access sa pahina ng Quickstart (https://quickstart.internetofthings.ibmcloud.com/), na magpapakita ng katayuan ng Endpoint. Ang pamamaraan ay simple at gumagamit ng WiFi upang magpadala ng data.
Hakbang 6: Mga Aklatan
Sa Arduino IDE, pumunta sa menu ng Sketch -> Isama ang Library -> Pamahalaan ang Mga Aklatan…
Sa bubukas na screen, ipasok sa paghahanap na "DHT" at i-install ang lib "DHT sensor library"
Pagkatapos, i-type ang "PubSubClient" at i-install ang "PubSubClient" lib.
Hakbang 7: Temperatura at Kalabasa ng Pagbasa ng Library
Hakbang 8: MQTT Library
Hakbang 9: MQTT.ino
Sinisimula namin ang source code sa pamamagitan ng pag-check kung aling ESP ang ginagamit at pag-import ng kaukulang library at WiFi. Isinasama pa rin namin ang MQTT Libs at ang Temperature at Humidity Sensor.
// Verifica Qual ESP está sendo utilizado // e importa a lib e wifi correspondente #if tinukoy (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
Susunod, tinukoy namin ang sumusunod: ang agwat sa pagitan ng mga pagsumite ng data, ang MQTT server na gagamitin, ang impormasyon sa pag-print sa tsart, at ang ID. Itinuro din namin kung paano dapat ang string na QUICK_START.
// 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_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:";
Sa hakbang na ito, tumutukoy kami ng isang natatanging ID. Sa halimbawang ito, ginagamit namin ang MAC Address ng aparato na ginagamit namin. Magsisilbi itong pagkakakilanlan sa site ng QuickStart. Dito, ikinonekta din namin ang Quickstart ID sa ID ng aming aparato.
// 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;
Pagkatapos ay mai-configure namin ang MQTT at WiFi, pati na rin ang mga bagay at variable na kasangkot sa mga halaga ng temperatura at halumigmig.
// Cliente WiFi que o MQTT ay magagamit para sa isang koneksyonWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, isang porta // e o cliente ng WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperatura = 0; // Variável para guardarmos o valor da umidade float halumigmig = 0;
MQTT.ino - pag-set up
Sa Pag-setup, isasimula namin ang DHT, at kumokonekta sa WiFi network at MQTT server.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }
MQTT.ino - loop
Sa Loop, kinokolekta namin ang data ng sensor upang likhain ang Json na mailathala sa paksang inaasahan ng IBM Watson na makabuo ng grap.
void loop () {// Tempos agora em milisegundos matagal na ngayon = 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 ("I-publish ang mensahe:"); // Criamos o json que enviaremos para sa server mqtt String msg = createJsonString (); Serial.println (msg); // 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
Dito, mayroon kaming tungkulin na responsable para sa pagkonekta sa WiFi network.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Kumokonekta sa"); 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 establelecida habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("Konektado sa WiFi"); }
MQTT.ino - kumonektaMQTTServer
Sa hakbang na ito, ginagamit namin ang function na responsable para sa pagkonekta sa MQTT server.
// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Kumokonekta sa MQTT Server …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("konektado"); } iba pa {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - readSensor
Ang pagbabasa ng data ng temperatura at kahalumigmigan ay tinukoy sa pagpapaandar na ito.
// 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 (halaga)) {// Armazena o novo valor da temperatura temperatura = halaga; } // Faz a leitura da umidade halaga = dht.readHumidity (); // Se o valor for válido if (! Isnan (halaga)) {// Armazena o novo valor da umidade halumigmig = halaga; }}
MQTT.ino - createJsonString
Dito, mayroon kaming tungkulin na responsable para sa paglikha ng isang Json sa nabasang data.
// Função responsável por criar // um Json com os maging lidos String createJsonString () {String data = "{"; data + = "\" d / ": {"; data + = "\" temperatura / ":"; data + = String (temperatura); data + = ","; data + = "\" halumigmig / ":"; data + = String (halumigmig); data + = "}"; data + = "}"; ibalik ang data; }
Hakbang 10: Grapiko
Upang matingnan ang sensor graph, pumunta
sa
Sa patlang ng Device ID, ipasok ang DEVICE_ID na iyong tinukoy sa code.
- Mahalagang palitan ang Device ID na ito sa isang natatanging ID, ginamit lamang upang maiwasan ang salungatan sa data na ipinadala ng ibang tao.
Panghuli, tanggapin ang mga tuntunin at i-click ang Pumunta.
Sa proyektong ito, sinubukan namin ang aming Endpoint sa server ng IBM Watson. Tinitiyak nito na ang aming programa ng Arduino ay maayos na nakikipag-usap sa platform, at ang data na ipinapadala namin ay matatanggap nang maayos ng isang cloud service kung lumikha kami ng isang account.
Sa isang paparating na video sa seryeng ito, ipapakita ko sa iyo kung paano mag-log in sa IBM Watson, pati na rin magsulat sa databank ng ito o ibang serbisyo sa cloud, tulad ng Google, Amazon, bukod sa iba pa.
Hakbang 11: Mga File
I-download ang mga file:
INO
Inirerekumendang:
Arduino Bilang ISP -- Burn Hex File sa AVR -- Fuse sa AVR -- Arduino Bilang Programmer: 10 Hakbang
Arduino Bilang ISP || Burn Hex File sa AVR || Fuse sa AVR || Arduino Bilang Programmer: …………………. Mangyaring MAG-SUBSCRIBE Sa aking channel sa YouTube para sa higit pang mga video …….. Ang artikulong ito ay tungkol sa arduino bilang isp. Kung nais mong mag-upload ng hex file o kung nais mong itakda ang iyong piyus sa AVR kung gayon hindi mo kailangang bumili ng isang programmer, magagawa mo
Gumamit ng isang Stepper Motor Bilang isang Rotary Encoder: 9 Mga Hakbang (na may Mga Larawan)
Gumamit ng isang Stepper Motor Bilang isang Rotary Encoder: Ang mga rotary encoder ay mahusay para magamit sa mga proyekto ng microcontroller bilang isang input device ngunit ang kanilang pagganap ay hindi masyadong makinis at kasiya-siya. Gayundin, pagkakaroon ng maraming ekstrang mga stepper motor sa paligid, nagpasya akong bigyan sila ng isang layunin. Kaya kung mayroong ilang stepper
IoT Hydroponics - Paggamit ng Watson ng IBM para sa Mga Sukat ng PH at EC: 7 Mga Hakbang (na may Mga Larawan)
IoT Hydroponics - Paggamit ng Watson ng IBM para sa Mga Sukat ng PH at EC: Ipapakita sa itinuturo na ito kung paano subaybayan ang EC, pH, at temperatura ng isang pag-setup ng hydroponics at i-upload ang data sa serbisyo ng Watson ng IBM. Si Watson ay malayang makapagsimula. May mga bayad na plano, ngunit ang libreng plano ay higit pa sa sapat para sa proyektong ito
Paano Gumamit ng Wiimote Bilang isang Computer Mouse Gamit ang Kandila Bilang Sensor !!: 3 Mga Hakbang
Paano Gumamit ng Wiimote Bilang isang Computer Mouse Gamit ang Kandila Bilang Sensor !!: Ipapakita sa iyo ng gabay na ito kung paano i-link ang iyong Wii Remote (Wiimote) sa iyong pc at gamitin ito bilang isang mouse
Sesame Street - Bilang ng Orasan ng Pinball na Bilang: 8 Hakbang (na may Mga Larawan)
Sesame Street - Pinball Number Count Clock: Ang itinuturo na ito ay magbabalangkas sa pagtatayo ng isang na-customize na orasan. Habang ito ay partikular na ang pagtatayo ng orasan na itinampok sa Sesame Street; ang Pinball Number Counting na animation, ang mga pangkalahatang pamamaraan ay pareho at ang itinuturo