Taula de continguts:

IBM Watson amb ESP32 com a punt final: 11 passos
IBM Watson amb ESP32 com a punt final: 11 passos

Vídeo: IBM Watson amb ESP32 com a punt final: 11 passos

Vídeo: IBM Watson amb ESP32 com a punt final: 11 passos
Vídeo: How to connect ESP32 with IBM Watson Cloud Platform 2024, Juliol
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Avui publico aquí el primer vídeo d’una sèrie sobre com muntar un dispositiu Endpoint amb ESP32 i després enviar-lo a un servei al núvol. En aquest episodi específic, us mostraré com enviar informació des d’un sensor DHT22 mitjançant el protocol MQTT d’IBM Watson.

Primer introduirem el MQTT, que és un protocol màquina a màquina utilitzat a IoT (Internet of Things). També enviarem dades del sensor de temperatura i humitat mitjançant aquest protocol i després comprovarem el gràfic amb aquestes dades en una pàgina web.

Pas 1: Pinout ESP32

He col·locat aquí el Pinout d'ESP32, que fem servir al nostre exemple. Tot i això, vull deixar clar que el projecte també funciona amb ESP8266, i fins i tot amb el mateix codi font.

Pas 2: pinout de NodeMCU

NoutMCU Pinout
NoutMCU Pinout

Pas 3: MQTT

MQTT
MQTT

MQTT és un protocol màquina a màquina utilitzat a IoT. Va ser dissenyat per ser lleuger i ràpid. Utilitza un sistema de subscripció / publicació, on un dispositiu "subscriu-se" a un tema amb la informació específica del vostre interès i, a continuació, rep la informació sempre que un dispositiu publica dades referents a aquest tema.

Com un programa de servidor, MQTT necessita programari. Això s’anomena corredor. En aquest cas concret, utilitzarem el servei IoT de Bluemix d’IBM. Aquest servei és gratuït per provar els punts finals.

A continuació, hem de tenir un telèfon mòbil o tauleta amb el costat de l'aplicació, és a dir, com a client MQTT. També tenim el costat del dispositiu, que és el costat ESP amb un termòmetre. Això envia les dades de temperatura i humitat al Bluemix, que després envia aquesta informació al costat de l’aplicació.

Pas 4: Muntatge

muntatge
muntatge

El nostre circuit consta d’una resistència de 4,7 k Ohms entre el 3,3 v i el pin de dades, més un DHT22 connectat al GPIO4 d’un ESP32 o NodeMCU. Per tant, aquest és el nostre punt final.

Pas 5: diagrama

Diagrama
Diagrama
Diagrama
Diagrama

Aquí mostro les diverses maneres de treballar amb el corredor local MQTT. Vaig col·locar dos models de diagrames. Al vídeo, parlo d’una situació amb un Raspberry Pi per obrir una porta, per exemple.

A la imatge superior, tenim la primera arquitectura que utilitza un broker local amb persistència i una segona arquitectura a sota que només es comunica amb el broker al núvol.

Com es mostra al diagrama, el nostre sensor envia les dades de temperatura i humitat a IBM Watson. És important destacar que IBM Watson no escriu les dades en aquest cas, ja que només es mostren en gràfics. Això es deu a que no abordarem cap operació de base de dades a l'exemple d'avui, sinó que només indicarem l'accés a la pàgina d'inici ràpid (https://quickstart.internetofthings.ibmcloud.com/), que mostrarà l'estat del punt final. L’esquema és senzill i utilitza WiFi per enviar dades.

Pas 6: Biblioteques

A l'IDE Arduino, aneu al menú Sketch -> Inclou biblioteca -> Gestiona biblioteques …

A la pantalla que s'obre, introduïu a la cerca "DHT" i instal·leu la lib "DHT sensor library"

A continuació, escriviu "PubSubClient" i instal·leu la llibreta "PubSubClient".

Pas 7: Biblioteca de lectura de temperatura i humitat

Biblioteca de lectura de temperatura i humitat
Biblioteca de lectura de temperatura i humitat

Pas 8: Biblioteca MQTT

Biblioteca MQTT
Biblioteca MQTT

Pas 9: MQTT.ino

Comencem el codi font comprovant quin ESP s’utilitza i important la biblioteca i el WiFi corresponents. Encara incloem el MQTT Libs i el sensor de temperatura i humitat.

// Verifica qual ESP està sent utilitzat // 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

A continuació, definim el següent: l'interval entre l'enviament de dades, el servidor MQTT que s'utilitzarà, la informació d'impressió del gràfic i l'identificador. També hem assenyalat com ha de ser la cadena 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 aparecen nos gráficos #define TOPIC_NAME" iot-2 / evt / status / fmt / json "// ID que usaremos para conectar // QUICK_START deu permanecer com està const String QUICK_START = "d: quickstart: arduino:";

En aquest pas, definim un identificador únic. En aquest exemple, fem servir l'adreça MAC del dispositiu que fem servir. Això servirà d’identificació al lloc d’inici ràpid. Aquí també connectem l’identificador d’inici ràpid amb l’identificador del nostre dispositiu.

// No DEVICE_ID s'ha de mudar per a un únic identificador // Aqui nesse example use us MAC Address // do device that estamos using // Servirá as identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concordem o id do quickstart com o id do nosso // dispositiu const String CLIENT_ID = QUICK_START + DEVICE_ID;

A continuació, configurem el MQTT i el WiFi, així com els objectes i variables implicats en els valors de temperatura i humitat.

// Cliente WiFi que o MQTT usarà per connectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, a porta // e o client WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o últim envio foi fet 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 moisture = 0;

MQTT.ino: configuració

A la configuració, inicialitzarem el DHT i ens connectarem a la xarxa WiFi i al servidor MQTT.

configuració nul·la () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Connecteu-vos a redefinir WiFi setupWiFi (); // Connecteu-vos al servidor MQTT connectMQTTServer (); }

MQTT.ino - bucle

Al bucle, recopilem les dades del sensor per crear el Json que es publicarà al tema que IBM Watson espera generar el gràfic.

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 ("Publica missatge:"); // Criamos o json que enviaremos para el servidor 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

Aquí tenim la funció responsable de connectar-nos a la xarxa WiFi.

// Funcionament responsable per connectar-se a WiFivoid setupWiFi () {Serial.println (); Serial.print ("Connexió a"); Serial.print (SSID); // Manda o esp connectar à 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); Serial.print ("."); } // Se chegou aqui é porque connectou Serial.println (""); Serial.println ("WiFi connectat"); }

MQTT.ino - connectMQTTServer

En aquest pas, fem servir la funció responsable de connectar-se al servidor MQTT.

// Funcionament responsable per connectar al servidor MQTTvoid connectMQTTServer () {Serial.println ("Connexió al servidor MQTT …"); // Se connecta 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 - readSensor

La lectura de les dades de temperatura i humitat es defineix en aquesta funció.

// Funcionament responsable per realitzar una 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 moist = value; }}

MQTT.ino - createJsonString

Aquí tenim la funció responsable de crear un Json amb les dades llegides.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; dades + = "\" d / ": {"; dades + = "\" temperatura / ":"; dades + = Cadena (temperatura); dades + = ","; dades + = "\" humitat / ":"; dades + = Cadena (humitat); dades + = "}"; dades + = "}"; retornar dades; }

Pas 10: gràfic

Gràfic
Gràfic
Gràfic
Gràfic

Per veure el gràfic del sensor, aneu

a

Al camp ID de dispositiu, introduïu el DEVICE_ID que heu definit al codi.

- És important canviar aquest identificador de dispositiu per un identificador únic que s'utilitzi només per evitar conflictes amb les dades enviades per una altra persona.

Finalment, accepteu els termes i feu clic a Vés.

En aquest projecte, hem provat el nostre punt final al servidor IBM Watson. Això garanteix que el nostre programa Arduino es comuniqui correctament amb la plataforma i que un servei de núvol rebi les dades que enviem sense problemes si creem un compte.

En un proper vídeo d'aquesta sèrie, us mostraré com iniciar la sessió a IBM Watson, així com escriure al banc de dades d'aquest o d'un altre servei de núvol, com Google, Amazon, entre d'altres.

Pas 11: fitxers

Descarregueu els fitxers:

PDF

INO

Recomanat: