Turinys:
- 1 žingsnis: ESP32 „Pinout“
- 2 žingsnis: „NodeMCU Pinout“
- 3 žingsnis: MQTT
- 4 žingsnis: Surinkimas
- 5 žingsnis: Diagrama
- 6 žingsnis: bibliotekos
- 7 žingsnis: Temperatūros ir drėgmės skaitymo biblioteka
- 8 žingsnis: MQTT biblioteka
- 9 žingsnis: MQTT.ino
- 10 žingsnis: grafika
- 11 veiksmas: failai
Video: „IBM Watson“su galiniu tašku ESP32: 11 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šiandien čia paskelbiu pirmąjį vaizdo įrašą iš serijos, kaip prijungti „Endpoint“įrenginį naudojant ESP32, o tada nusiųsti jį į debesies paslaugą. Šiame konkrečiame epizode parodysiu, kaip siųsti informaciją iš DHT22 jutiklio naudojant „IBM Watson“MQTT protokolą.
Pirmiausia pristatysime MQTT, kuris yra mašinų tarpusavio protokolas, naudojamas daiktų internete (daiktų internete). Naudodami šį protokolą taip pat atsiųsime duomenis iš temperatūros ir drėgmės jutiklio, o tada patikrinsime grafiką su šiais duomenimis tinklalapyje.
1 žingsnis: ESP32 „Pinout“
Čia įdėjau ESP32 „Pinout“, kurį naudojame savo pavyzdyje. Tačiau noriu aiškiai pasakyti, kad projektas taip pat veikia su ESP8266 ir net su tuo pačiu šaltinio kodu.
2 žingsnis: „NodeMCU Pinout“
3 žingsnis: MQTT
„MQTT“yra mašinų ir mašinų protokolas, naudojamas daiktų internete. Jis buvo suprojektuotas taip, kad būtų lengvas ir greitas. Jame naudojama prenumeratos/paskelbimo sistema, kai įrenginys „užsiprenumeruoja“temą su konkrečia jus dominančia informacija, o tada gauna informaciją, kai įrenginys skelbia su šia tema susijusius duomenis.
Kaip ir serverio programai, MQTT reikia programinės įrangos. Tai vadinama brokeriu. Šiuo konkrečiu atveju naudosime IBM „Bluemix IoT Service“. Ši paslauga yra nemokama galutinių taškų testavimui.
Be to, turime turėti mobilųjį telefoną ar planšetinį kompiuterį su programos puse, ty kaip MQTT klientas. Mes taip pat turime prietaiso pusę, kuri yra ESP pusė su termometru. Tai siunčia temperatūros ir drėgmės duomenis į „Bluemix“, o po to siunčia šią informaciją į programos pusę.
4 žingsnis: Surinkimas
Mūsų grandinę sudaro 4,7 kΩ rezistorius tarp 3,3 V ir duomenų kaiščio, taip pat DHT22, prijungtas prie ESP32 arba „NodeMCU“GPIO4. Taigi, tai yra mūsų galutinis taškas.
5 žingsnis: Diagrama
Čia parodysiu kelis būdus, kaip dirbti su „MQTT Local Broker“. Aš įdėjau du diagramų modelius. Vaizdo įraše kalbu apie situaciją, pavyzdžiui, naudojant „Raspberry Pi“vartams atidaryti.
Aukščiau esančiame paveikslėlyje turime pirmąją architektūrą, kuri atkakliai naudoja vietinį tarpininką, o žemiau esančią antrąją architektūrą, kuri tik bendrauja su tarpininku debesyje.
Kaip parodyta diagramoje, mūsų jutiklis siunčia temperatūros ir drėgmės duomenis į „IBM Watson“. Svarbu pabrėžti, kad šiuo atveju „IBM Watson“nerašo duomenų, nes jie rodomi tik grafikuose. Taip yra todėl, kad šiandieniniame pavyzdyje nenagrinėsime jokių duomenų bazės operacijų, o nurodysime tik prieigą prie „Quick Start“puslapio (https://quickstart.internetofthings.ibmcloud.com/), kuriame bus rodoma galinio taško būsena. Schema yra paprasta ir naudoja „WiFi“duomenims siųsti.
6 žingsnis: bibliotekos
„Arduino IDE“eikite į eskizų meniu -> Įtraukti biblioteką -> Tvarkyti bibliotekas…
Atsidariusiame ekrane įveskite paiešką „DHT“ir įdiekite lib „DHT jutiklių biblioteką“
Tada įveskite „PubSubClient“ir įdiekite „PubSubClient“lib.
7 žingsnis: Temperatūros ir drėgmės skaitymo biblioteka
8 žingsnis: MQTT biblioteka
9 žingsnis: MQTT.ino
Pradedame šaltinio kodą patikrindami, kuris ESP naudojamas, ir importuojame atitinkamą biblioteką bei „WiFi“. Mes vis dar įtraukiame „MQTT Libs“ir temperatūros bei drėgmės jutiklį.
// Patikrinkite ESP estą sendo utilizado // e importa a lib e wifirespondente #if define (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
Toliau mes apibrėžiame: intervalas tarp duomenų pateikimo, naudojamas MQTT serveris, spausdinimo informacija diagramoje ir ID. Mes taip pat nurodėme, kaip turėtų būti eilutė QUICK_START.
// Intervalo entre os envios #define INTERVAL 1000 // Substitual 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 ".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:";
Šiame etape mes apibrėžiame unikalų ID. Šiame pavyzdyje mes naudojame naudojamo įrenginio MAC adresą. Tai bus identifikavimas „QuickStart“svetainėje. Čia taip pat sujungiame „Quick Start“ID su mūsų įrenginio ID.
// Nr DEVICE_ID você deve mudar para um id único // Aqui nesse examplelo utilizamos o MAC Address // do dispitivo que estamos utilizando // Servirá como identification from 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;
Tada mes konfigūruojame MQTT ir „WiFi“, taip pat objektus ir kintamuosius, susijusius su temperatūros ir drėgmės vertėmis.
// „Wi -Fi“klientas arba „MQTT“, naudodamiesi šia programa „Wi -FiClient wifiClient“; // „Cliente MQTT“, „passamos“ir „url do server“, prievadas // ir „WiFi PubSubClient“klientas (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 temperature = 0; // Variável para guardarmos o valor da umidade float drėgmė = 0;
MQTT.ino - sąranka
Sąrankoje mes inicijuosime DHT ir prisijungsime prie „WiFi“tinklo ir MQTT serverio.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // „Conectamos à rede WiFi setup“„Wi -Fi“(); // „Conectamos“serveris MQTT connectMQTTServer (); }
MQTT.ino - kilpa
Cikle mes renkame jutiklio duomenis, kad sukurtume Json, kuris bus paskelbtas temoje, kurią „IBM Watson“tikisi sugeneruoti.
void loop () {// Tempos agora em milisegundos long now = 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 ("Skelbti pranešimą:"); // Criamos o json que enviaremos para o 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 - „Wi -Fi“sąranka
Čia mes turime funkciją, atsakingą už prisijungimą prie „WiFi“tinklo.
// Funkcinis atsakymas į „WiFivoid setupWiFi“() {Serial.println (); Serial.print („Prisijungimas prie“); 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); Serijinis atspaudas ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println („WiFi prijungtas“); }
MQTT.ino - connectMQTTServer
Šiame žingsnyje naudojame funkciją, atsakingą už prisijungimą prie MQTT serverio.
// Funkcinis atsakymas iš serverio MQTTvoid connectMQTTServer () {Serial.println ("Prisijungimas prie MQTT serverio …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - skaitymo jutiklis
Ši funkcija nustato temperatūros ir drėgmės duomenų nuskaitymą.
// Função responseá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 (value)) {// Armazena o novo valor da temperatura temperature = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade drėgmė = vertė; }}
MQTT.ino - createJsonString
Čia mes turime funkciją, atsakingą už Json kūrimą su nuskaitytais duomenimis.
// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; duomenys+= "\" d / ": {"; duomenys+= "\" temperatūra / ":"; duomenys+= Styga (temperatūra); duomenys+= ","; duomenys+= "\" drėgmė / ":"; duomenys+= Styga (drėgmė); duomenys+= "}"; duomenys+= "}"; grąžinti duomenis; }
10 žingsnis: grafika
Norėdami peržiūrėti jutiklio grafiką, eikite
į
Lauke „Įrenginio ID“įveskite DEVICE_ID, kurį nustatėte kode.
- Svarbu pakeisti šį įrenginio ID į unikalų ID, kuris naudojamas tik siekiant išvengti konflikto su kito asmens siunčiamais duomenimis.
Galiausiai sutikite su sąlygomis ir spustelėkite Eiti.
Šiame projekte mes išbandėme savo „Endpoint“IBM Watson serveryje. Tai užtikrina, kad mūsų „Arduino“programa tinkamai bendrauja su platforma ir kad mūsų siunčiamus duomenis sklandžiai priims debesų tarnyba, jei sukursime paskyrą.
Būsimame šios serijos vaizdo įraše parodysiu, kaip prisijungti prie „IBM Watson“, taip pat rašyti šios ar kitos debesies paslaugos, pvz., „Google“, „Amazon“, duomenų banke.
11 veiksmas: failai
Atsisiųskite failus:
AŠ NE
Rekomenduojamas:
Skaitmeninio laikrodžio LED taškų matrica - „ESP Matrix“„Android“programa: 14 žingsnių
Skaitmeninio laikrodžio LED taškinė matrica - „ESP Matrix“„Android“programa: šį straipsnį išdidžiai remia PCBWAY. PCBWAY gamina aukštos kokybės PCB prototipus žmonėms visame pasaulyje. Išbandykite tai patys ir gaukite 10 PCB tik už 5 USD už labai gerą kokybę, ačiū PCBWAY. Mano sukurta ESP matricos lenta
3 magnetinių kilpų antenų valdiklis su galiniu jungikliu: 18 žingsnių (su paveikslėliais)
3 magnetinių kilpų antenų valdiklis su galiniu jungikliu: Šis projektas skirtas tiems kumpio mėgėjams, kurie neturi komercinio. Tai lengva sukurti naudojant lituoklį, plastikinį dėklą ir šiek tiek žinių apie arduino. Valdiklis pagamintas iš biudžeto komponentų, kuriuos lengvai rasite internete (~ 20 €)
RC FPV-Trike su galiniu vairu: 9 žingsniai (su nuotraukomis)
RC FPV-Trike su galiniu vairu: Kadangi turėjau atsarginių dalių iš savo pirmojo FPV Rover, nusprendžiau sukurti RC automobilį. Tačiau tai neturėtų būti tik standartinis RC automobilis. Todėl aš sukūriau triratį su galiniu vairu. Sekite mane „Instagram“, kad gautumėte naujausias naujienashttps: //www.instagram.com
Katės vežimėlis (galinių kojų paralyžius): 5 žingsniai
Kačių vežimėlis (galinių kojų paralyžius): mūsų daugiadisciplininei RIT (Ročesterio technologijos instituto) komandai buvo pavesta sukurti vežimėlį paralyžiuotoms katėms. Mūsų tikslas buvo sukurti vežimėlį, kuris padidintų katės judrumą ir būtų saugus, patogus ir nebrangus. Mes leidžiame
„IoT Hydroponics“- IBM „Watson“naudojimas PH ir EC matavimams: 7 žingsniai (su nuotraukomis)
„IoT Hydroponics“- „IBM Watson“naudojimas PH ir EC matavimams: Ši instrukcija parodys, kaip stebėti hidroponikos sąrankos EC, pH ir temperatūrą ir įkelti duomenis į „IBM Watson“paslaugą. „Watson“gali pradėti nemokamai. Yra mokamų planų, tačiau nemokamo plano šiam projektui daugiau nei pakanka