Taula de continguts:
- Pas 1: Pinout ESP32
- Pas 2: pinout de NodeMCU
- Pas 3: MQTT
- Pas 4: Muntatge
- Pas 5: diagrama
- Pas 6: Biblioteques
- Pas 7: Biblioteca de lectura de temperatura i humitat
- Pas 8: Biblioteca MQTT
- Pas 9: MQTT.ino
- Pas 10: gràfic
- Pas 11: fitxers
Vídeo: IBM Watson amb ESP32 com a punt final: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
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
Pas 3: 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
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
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
Pas 8: 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
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:
INO
Recomanat:
Punt a punt Atari Punk Console: un pas i mig: 19 passos
Punt a punt Atari Punk Console One and Half: Què! ?? Una altra versió d'Atari Punk Console? Espereu, espereu, la gent, aquesta és diferent, prometeu. Waaay el 1982, Forrest Mims, escriptor de llibres de Radio Shack i creacionista de Young Earth (emoji d'ulls rodons) va publicar els plans al seu Stepped Tone Genera
Model de ferrocarril senzill automatitzat punt a punt: 10 passos (amb imatges)
Model de ferrocarril automàtic senzill de punt a punt: els microcontroladors Arduino són ideals per automatitzar els dissenys del model de ferrocarril. L’automatització de les disposicions és útil per a molts propòsits, com ara posar la vostra disposició en una pantalla on es pot programar l’operació de distribució per fer circular els trens en una seqüència automatitzada. El jo
Circuit Crossfader punt a punt: 16 passos (amb imatges)
Circuit de crossfader punt a punt: es tracta d’un circuit de crossfader. Accepta dues entrades i s’esvaeix entre elles, sent la sortida una combinació de les dues entrades (o només una de les entrades). És un circuit senzill, molt útil i fàcil de construir. Inverteix el senyal que el travessa
Model automàtic de ferrocarril senzill de punt a punt amb dos trens: 13 passos (amb imatges)
Model de ferrocarril automàtic senzill punt a punt que funciona amb dos trens: els microcontroladors Arduino són una manera excel·lent d’automatitzar els dissenys de ferrocarrils de models a causa de la seva disponibilitat de baix cost, maquinari i programari de codi obert i una gran comunitat que us ajudarà. Per als ferrocarrils models, els microcontroladors Arduino poden demostrar ser un gran
Model de ferrocarril automatitzat punt a punt amb revestiment del pati: 10 passos (amb imatges)
Model de ferrocarril automatitzat punt a punt amb revestiment de jardí: els microcontroladors Arduino obren grans possibilitats en models de ferrocarril, especialment quan es tracta d’automatització. Aquest projecte és un exemple d’aquesta aplicació. És la continuació d’un dels projectes anteriors. Aquest projecte es compon d'un punt