Satura rādītājs:

IBM Watson ar ESP32 kā galapunktu: 11 soļi
IBM Watson ar ESP32 kā galapunktu: 11 soļi

Video: IBM Watson ar ESP32 kā galapunktu: 11 soļi

Video: IBM Watson ar ESP32 kā galapunktu: 11 soļi
Video: Web Developer's Life be Like! 2024, Jūlijs
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Šodien es šeit ievietoju sērijas pirmo videoklipu par to, kā uzstādīt Endpoint ierīci ar ESP32 un pēc tam nosūtīt to uz mākoņpakalpojumu. Šajā konkrētajā epizodē es jums parādīšu, kā nosūtīt informāciju no DHT22 sensora, izmantojot MQTT protokolu IBM Watson.

Vispirms iepazīstināsim ar MQTT, kas ir protokols no mašīnām uz mašīnu, ko izmanto lietu internetā (lietiskais internets). Mēs arī nosūtīsim datus no temperatūras un mitruma sensora, izmantojot šo protokolu, un pēc tam pārbaudīsim grafiku ar šiem datiem tīmekļa lapā.

1. darbība: ESP32 Pinout

Es ievietoju šeit ESP32 Pinout, ko mēs izmantojam mūsu piemērā. Tomēr es vēlos paskaidrot, ka projekts darbojas arī ar ESP8266 un pat ar to pašu avota kodu.

2. solis: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

3. darbība: MQTT

MQTT
MQTT

MQTT ir protokols no mašīnas uz mašīnu, ko izmanto IoT. Tas tika izstrādāts tā, lai tas būtu viegls un ātrs. Tā izmanto abonēšanas/publicēšanas sistēmu, kurā ierīce "abonē" tēmu ar konkrētu informāciju, kas jūs interesē, un pēc tam saņem informāciju ikreiz, kad ierīce publicē datus par šo tēmu.

Tāpat kā servera programmai, arī MQTT ir nepieciešama programmatūra. To sauc par brokeri. Šajā konkrētajā gadījumā mēs izmantosim IBM Bluemix IoT pakalpojumu. Šis pakalpojums ir bezmaksas parametru pārbaudei.

Tālāk mums ir jābūt mobilajam tālrunim vai planšetdatoram ar lietojumprogrammas pusi, tas ir, kā MQTT klientam. Mums ir arī ierīces puse, kas ir ESP puse ar termometru. Tas nosūta temperatūras un mitruma datus uz Bluemix, kas pēc tam nosūta šo informāciju uz lietojumprogrammu pusi.

4. solis: montāža

Montāža
Montāža

Mūsu ķēde sastāv no 4,7 kΩ pretestības starp 3,3 V un datu tapu, kā arī DHT22, kas savienots ar ESP32 vai NodeMCU GPIO4. Tādējādi tas ir mūsu galapunkts.

5. solis: diagramma

Diagramma
Diagramma
Diagramma
Diagramma

Šeit es parādīšu vairākus veidus, kā strādāt ar MQTT vietējo brokeri. Es ievietoju divus diagrammu modeļus. Video es runāju par situāciju, piemēram, izmantojot Raspberry Pi, lai atvērtu vārtus.

Iepriekš redzamajā attēlā mums ir pirmā arhitektūra, kas ar neatlaidību izmanto vietējo starpnieku, un otra arhitektūra zemāk, kas sazinās tikai ar mākoni mākonī.

Kā parādīts diagrammā, mūsu sensors nosūta temperatūras un mitruma datus uz IBM Watson. Ir svarīgi uzsvērt, ka IBM Watson šajā gadījumā datus neraksta, jo tie tiek parādīti tikai diagrammās. Tas ir tāpēc, ka šodienas piemērā mēs nerunāsim par nevienu datu bāzes darbību, bet norādīsim tikai piekļuvi ātrā sākuma lapai (https://quickstart.internetofthings.ibmcloud.com/), kurā tiks parādīts beigu punkta statuss. Shēma ir vienkārša, un datu nosūtīšanai tiek izmantots WiFi.

6. darbība: bibliotēkas

Arduino IDE dodieties uz izvēlni Skice -> Iekļaut bibliotēku -> Pārvaldīt bibliotēkas …

Atvērtajā ekrānā ievadiet meklēšanu "DHT" un instalējiet lib "DHT sensoru bibliotēku"

Pēc tam ierakstiet "PubSubClient" un instalējiet "PubSubClient" lib.

7. solis: Temperatūras un mitruma lasīšanas bibliotēka

Temperatūras un mitruma lasīšanas bibliotēka
Temperatūras un mitruma lasīšanas bibliotēka

8. darbība: MQTT bibliotēka

MQTT bibliotēka
MQTT bibliotēka

9. solis: MQTT.ino

Mēs sākam pirmkodu, pārbaudot, kurš ESP tiek izmantots, un importējot atbilstošo bibliotēku un WiFi. Mēs joprojām iekļaujam MQTT Libs un temperatūras un mitruma sensoru.

// Verifica quality 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

Tālāk mēs definējam sekojošo: intervālu starp datu iesniegšanu, izmantoto MQTT serveri, diagrammas drukas informāciju un ID. Mēs arī norādījām, kādai jābūt virknei 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" // Servera 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:";

Šajā solī mēs definējam unikālu ID. Šajā piemērā mēs izmantojam izmantotās ierīces MAC adresi. Tas kalpos kā identifikācija QuickStart vietnē. Šeit mēs arī savienojam Quickstart ID ar mūsu ierīces 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 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;

Pēc tam mēs konfigurējam MQTT un WiFi, kā arī objektus un mainīgos, kas saistīti ar temperatūras un mitruma vērtībām.

// Cliente WiFi que o MQTT ir utilizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos url do server, porta // e vai klienta WiFi PubSubClient klients (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 pludiņa mitrums = 0;

MQTT.ino - iestatīšana

Iestatījumos mēs inicializēsim DHT un izveidosim savienojumu ar WiFi tīklu un MQTT serveri.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao serveris MQTT connectMQTTServer (); }

MQTT.ino - cilpa

Ciklā mēs apkopojam sensora datus, lai izveidotu Json, kas tiks publicēts tēmā, ko IBM Watson sagaida, lai izveidotu diagrammu.

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 ("Publicēt ziņojumu:"); // 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 - setupWiFi

Šeit mums ir funkcija, kas atbild par savienojumu ar WiFi tīklu.

// Funkciju atbilde, izmantojot WiFivoid setupWiFi () {Serial.println (); Serial.print ("Savienojuma izveide"); 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); Sērijas nospiedums ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("savienots WiFi"); }

MQTT.ino - connectMQTTServer

Šajā solī mēs izmantojam funkciju, kas atbild par savienojumu ar MQTT serveri.

// Funkciju atbilde uz servera MQTTvoid connectMQTTServer () {Serial.println ("Savienojuma izveide ar MQTT serveri …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connected"); } cits {// Skatiet ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - lasīt sensoru

Šajā funkcijā ir noteikts temperatūras un mitruma datu nolasījums.

// 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 (vērtība)) {// Armazena o novo valor da temperatura temperatūra = vērtība; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (vērtība)) {// Armazena o novo valor da umidade mitrums = vērtība; }}

MQTT.ino - createJsonString

Šeit mums ir funkcija, kas ir atbildīga par Json izveidi ar nolasītajiem datiem.

// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; dati+= "\" d / ": {"; dati+= "\" temperatūra / ":"; dati+= virkne (temperatūra); dati+= ","; dati+= "\" mitrums / ":"; dati+= Stīga (mitrums); dati+= "}"; dati+= "}"; atgriezt datus; }

10. darbība: grafika

Grafisks
Grafisks
Grafisks
Grafisks

Lai skatītu sensora diagrammu, dodieties uz

uz

Laukā Ierīces ID ievadiet DEVICE_ID, ko definējāt kodā.

- Ir svarīgi nomainīt šo ierīces ID uz unikālu ID, ko izmanto tikai, lai izvairītos no pretrunām ar citas personas nosūtītajiem datiem.

Visbeidzot, pieņemiet noteikumus un noklikšķiniet uz Sākt.

Šajā projektā mēs pārbaudījām savu parametru IBM Watson serverī. Tas nodrošina, ka mūsu Arduino programma pareizi sazinās ar platformu un ka, izveidojot kontu, mūsu nosūtītos datus vienmērīgi saņems mākoņpakalpojums.

Gaidāmajā šīs sērijas videoklipā es parādīšu, kā pieteikties IBM Watson, kā arī rakstīt šī vai cita mākoņpakalpojuma, piemēram, Google, Amazon, datu bankā.

11. darbība: faili

Lejupielādējiet failus:

PDF

ES NĒ

Ieteicams: