Turinys:

„IBM Watson“su galiniu tašku ESP32: 11 žingsnių
„IBM Watson“su galiniu tašku ESP32: 11 žingsnių

Video: „IBM Watson“su galiniu tašku ESP32: 11 žingsnių

Video: „IBM Watson“su galiniu tašku ESP32: 11 žingsnių
Video: Seizures & Syncope: What’s the Relationship? - Robert Sheldon, MD, PhD 2024, Liepa
Anonim
Image
Image
ESP32 kištukas
ESP32 kištukas

Š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“

„NodeMCU Pinout“
„NodeMCU Pinout“

3 žingsnis: MQTT

MQTT
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

Surinkimas
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

Diagrama
Diagrama
Diagrama
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

Temperatūros ir drėgmės skaitymo biblioteka
Temperatūros ir drėgmės skaitymo biblioteka

8 žingsnis: MQTT biblioteka

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

Grafinis
Grafinis
Grafinis
Grafinis

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:

PDF

AŠ NE

Rekomenduojamas: