Inhaltsverzeichnis:

IBM Watson mit ESP32 als Endpunkt – Gunook
IBM Watson mit ESP32 als Endpunkt – Gunook

Video: IBM Watson mit ESP32 als Endpunkt – Gunook

Video: IBM Watson mit ESP32 als Endpunkt – Gunook
Video: IoT Project - Sending Sensor Readings from ESP32 to IBM Cloud/Watson 2024, Juli
Anonim
Image
Image
ESP32-Pinbelegung
ESP32-Pinbelegung

Ich poste hier heute das erste Video einer Serie zum Mounten eines Endpoint-Geräts mit ESP32 und anschließendem Senden an einen Cloud-Dienst. In dieser speziellen Episode zeige ich Ihnen, wie Sie Informationen von einem DHT22-Sensor mit dem MQTT-Protokoll für IBM Watson senden.

Wir stellen zunächst MQTT vor, ein Machine-to-Machine-Protokoll, das im IoT (Internet of Things) verwendet wird. Wir senden auch Daten vom Temperatur- und Feuchtigkeitssensor mit diesem Protokoll und überprüfen dann die Grafik mit diesen Daten auf einer Webseite.

Schritt 1: ESP32 Pinbelegung

Ich habe hier das Pinout von ESP32 platziert, das wir in unserem Beispiel verwenden. Ich möchte jedoch klarstellen, dass das Projekt auch mit ESP8266 funktioniert, und sogar mit dem gleichen Quellcode.

Schritt 2: NodeMCU-Pinbelegung

NodeMCU-Pinbelegung
NodeMCU-Pinbelegung

Schritt 3: MQTT

MQTT
MQTT

MQTT ist ein Machine-to-Machine-Protokoll, das im IoT verwendet wird. Es wurde entwickelt, um leicht und schnell zu sein. Es verwendet ein Abonnement-/Veröffentlichungssystem, bei dem ein Gerät ein Thema mit den spezifischen Informationen Ihres Interesses "abonniert" und dann die Informationen erhält, wenn ein Gerät Daten zu diesem Thema veröffentlicht.

Wie ein Serverprogramm benötigt MQTT Software. Dies wird als Broker bezeichnet. In diesem speziellen Fall verwenden wir den Bluemix IoT Service von IBM. Dieser Dienst ist für Endpunkttests kostenlos.

Als nächstes benötigen wir ein Mobiltelefon oder Tablet mit der Anwendungsseite, dh als MQTT-Client. Wir haben auch die Geräteseite, die ESP-Seite mit einem Thermometer. Dieser sendet die Temperatur- und Feuchtigkeitsdaten an den Bluemix, der diese Informationen dann an die Anwendungsseite sendet.

Schritt 4: Montage

Montage
Montage

Unsere Schaltung besteht aus einem 4,7 kOhm Widerstand zwischen dem 3,3 V und dem Daten-Pin sowie einem DHT22, der an den GPIO4 eines ESP32 oder NodeMCU angeschlossen ist. Somit ist dies unser Endpunkt.

Schritt 5: Diagramm

Diagramm
Diagramm
Diagramm
Diagramm

Ich zeige hier die verschiedenen Möglichkeiten, mit dem MQTT Local Broker zu arbeiten. Ich habe zwei Diagrammmodelle platziert. Im Video spreche ich über eine Situation, in der ich beispielsweise einen Raspberry Pi zum Öffnen eines Tors verwende.

Im obigen Bild haben wir die erste Architektur, die einen lokalen Broker mit Persistenz verwendet, und eine zweite Architektur darunter, die nur mit dem Broker in der Cloud kommuniziert.

Wie im Diagramm gezeigt, sendet unser Sensor dann die Temperatur- und Feuchtigkeitsdaten an IBM Watson. Es ist wichtig zu betonen, dass IBM Watson in diesem Fall die Daten nicht schreibt, da sie nur in Diagrammen angezeigt werden. Dies liegt daran, dass wir im heutigen Beispiel keine Datenbankoperationen behandeln, sondern nur den Zugriff auf die Quickstart-Seite (https://quickstart.internetofthings.ibmcloud.com/) angeben, die den Status des Endpunkts anzeigt. Das Schema ist einfach und verwendet WLAN zum Senden von Daten.

Schritt 6: Bibliotheken

Gehen Sie in der Arduino IDE zum Sketch-Menü -> Bibliothek einschließen -> Bibliotheken verwalten …

Geben Sie auf dem sich öffnenden Bildschirm in die Suche "DHT" ein und installieren Sie die Lib "DHT-Sensorbibliothek"

Geben Sie dann "PubSubClient" ein und installieren Sie die "PubSubClient"-Bibliothek.

Schritt 7: Bibliothek zum Lesen von Temperatur und Luftfeuchtigkeit

Bibliothek zum Lesen von Temperatur und Luftfeuchtigkeit
Bibliothek zum Lesen von Temperatur und Luftfeuchtigkeit

Schritt 8: MQTT-Bibliothek

MQTT-Bibliothek
MQTT-Bibliothek

Schritt 9: MQTT.ino

Wir starten den Quellcode, indem wir prüfen, welches ESP verwendet wird und die entsprechende Bibliothek und das WLAN importieren. Wir enthalten weiterhin die MQTT-Libs und den Temperatur- und Feuchtigkeitssensor.

//Verifica qual ESP está sendo utilizado//e importa a lib e wifi correctente #if define(ESP8266) #include #else #include #endif //Lib de MQTT #include //Lib do sensor de temperature e umidade #include

Als nächstes definieren wir Folgendes: das Intervall zwischen den Datenübermittlungen, den verwendeten MQTT-Server, die Druckinformationen auf dem Diagramm und die ID. Wir haben auch darauf hingewiesen, wie die Zeichenfolge QUICK_START sein sollte.

//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 utquickTT_. SERVER "MQSTART".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 entwickelt ständiger como está const String QUICK_START = "d:quickstart:arduino:";

In diesem Schritt definieren wir eine eindeutige ID. In diesem Beispiel verwenden wir die MAC-Adresse des von uns verwendeten Geräts. Dies dient als Identifikation auf der QuickStart-Site. Auch hier verbinden wir die Quickstart-ID mit der ID unseres Gerätes.

//No DEVICE_ID você deve mudar para um id único//Aqui nesse exemplo utilizamos o MAC Address //do dispositivo que estamos utilizando //Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; //Concatemos o id Quickstart com o id nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Anschließend konfigurieren wir MQTT und WiFi sowie die Objekte und Variablen, die mit den Werten von Temperatur und Luftfeuchtigkeit verbunden sind.

//WLAN-Client oder MQTT-Dienst für den Anschluss von WiFiClient wifiClient; //Client MQTT, passamos a URL-Do-Server, ein Porta //e o Client WiFi PubSubClient client(MQTT_SERVER, 1883, wifiClient); //Tempo em que oder último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperature 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 Luftfeuchtigkeit = 0;

MQTT.ino - Einrichtung

Im Setup initialisieren wir das DHT und verbinden uns mit dem WiFi-Netzwerk und dem MQTT-Server.

Void setup () { Serial.begin (115200); //Incializamos oder dht dht.begin(); //Conectamos à rede WiFi setupWiFi(); //Conectamos ua Server MQTT connectMQTTServer(); }

MQTT.ino - Schleife

In der Schleife sammeln wir die Sensordaten, um den Json zu erstellen, der in dem Thema veröffentlicht wird, von dem IBM Watson erwartet, das Diagramm zu generieren.

Void Schleife () {//Tempos Agora em milisegundos lange jetzt = millis (); //Se o tempo desde oder último envio for maior que o intervalo de envio if (now - lastPublishTime > INTERVAL) { //Atualizamos o tempo em que ocorreu oder último envio lastPublishTime = now; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Nachricht veröffentlichen: "); //Criamos oder json que enviaremos para o server mqtt String msg = createJsonString(); Serial.println (msg); //Publicamos no topico onde or server aspera para receber //e Gerar or gráfico client.publish(TOPIC_NAME, msg.c_str()); } }

MQTT.ino - setupWiFi

Hier haben wir die Funktion, die für die Verbindung mit dem WiFi-Netzwerk verantwortlich ist.

// Função responsável por conectar à rede Wifivoid setupWiFi () {Serial.println (); Serial.print ("Verbinden mit"); Serial.print (SSID); //Manda oder 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); Serial.print("."); } //Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi verbunden"); }

MQTT.ino - connectMQTTServer

In diesem Schritt verwenden wir die Funktion, die für die Verbindung zum MQTT-Server verantwortlich ist.

//Função responsável por conectar ao server MQTTvoid connectMQTTServer() { Serial.println("Connecting to MQTT Server…"); //Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str())) {//Se a conexão foi bem sucedida Serial.println ("connected"); aufrechtzuerhalten. Sonst {//Se ocorreu Algum erro Serial.print ("Fehler ="); Serial.println (client.state ()); } }

MQTT.ino - readSensor

In dieser Funktion wird das Auslesen der Temperatur- und Feuchtedaten definiert.

//Função responsá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 feuchtigkeit = wert; } }

MQTT.ino - createJsonString

Hier haben wir die Funktion, die für das Erstellen eines Json mit den gelesenen Daten verantwortlich ist.

//Reaktionsantwort von criar//um Json com os dados lidos String createJsonString() { String data = "{"; Daten+= "\"d\": {"; data+="\"temperatur\":"; data+=String(Temperatur); Daten+=", "; data+="\"Luftfeuchtigkeit\":"; data+=String(Luftfeuchtigkeit); Daten+="}"; Daten+="}"; Daten zurückgeben; }

Schritt 10: Grafik

Grafik
Grafik
Grafik
Grafik

Um die Sensorgrafik anzuzeigen, gehen Sie zu

zu

Geben Sie im Feld Geräte-ID die DEVICE_ID ein, die Sie im Code definiert haben.

- Es ist wichtig, diese Geräte-ID in eine eindeutige ID zu ändern, die nur verwendet wird, um Konflikte mit Daten zu vermeiden, die von einer anderen Person gesendet werden.

Akzeptieren Sie abschließend die Bedingungen und klicken Sie auf Los.

In diesem Projekt haben wir unseren Endpoint auf dem IBM Watson Server getestet. Dadurch wird sichergestellt, dass unser Arduino-Programm ordnungsgemäß mit der Plattform kommuniziert und die von uns gesendeten Daten reibungslos von einem Cloud-Dienst empfangen werden, wenn wir ein Konto erstellen.

In einem kommenden Video dieser Reihe zeige ich Ihnen, wie Sie sich bei IBM Watson einloggen und in die Datenbank dieses oder eines anderen Cloud-Dienstes, wie z. B. Google, Amazon, schreiben.

Schritt 11: Dateien

Laden Sie die Dateien herunter:

PDF

INO

Empfohlen: