Inhoudsopgave:

IBM Watson met ESP32 als eindpunt: 11 stappen
IBM Watson met ESP32 als eindpunt: 11 stappen

Video: IBM Watson met ESP32 als eindpunt: 11 stappen

Video: IBM Watson met ESP32 als eindpunt: 11 stappen
Video: Wokwi to IBM watson cloud - IOT 2024, Juli-
Anonim
Image
Image
ESP32 pinout
ESP32 pinout

Ik plaats hier vandaag de eerste video van een serie over het koppelen van een eindpuntapparaat met ESP32 en het vervolgens naar een cloudservice sturen. In deze specifieke aflevering laat ik je zien hoe je informatie verzendt vanaf een DHT22-sensor met behulp van het MQTT-protocol voor IBM Watson.

We introduceren eerst de MQTT, een machine-to-machine-protocol dat wordt gebruikt in IoT (Internet of Things). We sturen ook gegevens van de temperatuur- en vochtigheidssensor met behulp van dit protocol en controleren vervolgens de grafiek met deze gegevens op een webpagina.

Stap 1: ESP32 pinout

Ik plaatste hier de pinout van ESP32, die we in ons voorbeeld gebruiken. Ik wil echter duidelijk maken dat het project ook werkt met ESP8266, en zelfs met dezelfde broncode.

Stap 2: NodeMCU-pinout

NodeMCU-pinout
NodeMCU-pinout

Stap 3: MQTT

MQTT
MQTT

MQTT is een machine-to-machine-protocol dat wordt gebruikt in IoT. Het is ontworpen om licht en snel te zijn. Het maakt gebruik van een abonneren/publiceren-systeem, waarbij een apparaat zich "abonneert" op een onderwerp met de specifieke informatie van uw interesse, en vervolgens de informatie ontvangt wanneer een apparaat gegevens over dit onderwerp publiceert.

Net als een serverprogramma heeft MQTT software nodig. Dit wordt een makelaar genoemd. In dit specifieke geval zullen we IBM's Bluemix IoT Service gebruiken. Deze service is gratis voor het testen van eindpunten.

Vervolgens hebben we een mobiele telefoon of tablet nodig met de toepassingskant, dat wil zeggen als een MQTT-client. We hebben ook de kant van het apparaat, de ESP-kant met een thermometer. Deze stuurt de temperatuur- en vochtigheidsgegevens naar de Bluemix, die deze informatie vervolgens doorstuurt naar de Applicatiezijde.

Stap 4: Montage

samenkomst
samenkomst

Ons circuit bestaat uit een weerstand van 4,7k Ohm tussen de 3,3v en de datapin, plus een DHT22 die is aangesloten op de GPIO4 van een ESP32 of NodeMCU. Dit is dus ons eindpunt.

Stap 5: Schema

Diagram
Diagram
Diagram
Diagram

Ik laat hier de verschillende manieren zien om met de MQTT Local Broker te werken. Ik heb twee diagrammodellen geplaatst. In de video vertel ik over een situatie waarbij een Raspberry Pi bijvoorbeeld een poortje opent.

In de afbeelding hierboven hebben we de eerste architectuur die een lokale broker gebruikt met persistentie, en een tweede architectuur hieronder die alleen communiceert met de broker in de cloud.

Zoals in het diagram te zien is, stuurt onze sensor vervolgens de temperatuur- en vochtigheidsgegevens naar IBM Watson. Het is belangrijk om te benadrukken dat IBM Watson de gegevens in dit geval niet schrijft, omdat deze alleen in grafieken worden weergegeven. Dit komt omdat we in het voorbeeld van vandaag geen databasebewerkingen behandelen, maar alleen toegang geven tot de Quickstart-pagina (https://quickstart.internetofthings.ibmcloud.com/), die de status van het eindpunt zal weergeven. Het schema is eenvoudig en maakt gebruik van WiFi om gegevens te verzenden.

Stap 6: Bibliotheken

Ga in de Arduino IDE naar het menu Schets -> Bibliotheek opnemen -> Bibliotheken beheren …

Voer op het scherm dat wordt geopend de zoekopdracht "DHT" in en installeer de lib "DHT-sensorbibliotheek"

Typ vervolgens "PubSubClient" en installeer de "PubSubClient"-lib.

Stap 7: Leesbibliotheek voor temperatuur en vochtigheid

Bibliotheek voor het lezen van temperatuur en vochtigheid
Bibliotheek voor het lezen van temperatuur en vochtigheid

Stap 8: MQTT-bibliotheek

MQTT-bibliotheek
MQTT-bibliotheek

Stap 9: MQTT.ino

We starten de broncode door te controleren welke ESP wordt gebruikt en de bijbehorende bibliotheek en WiFi te importeren. We nemen nog steeds de MQTT Libs en de temperatuur- en vochtigheidssensor op.

//Verifica qual ESP está sendo utilizado//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

Vervolgens definiëren we het volgende: het interval tussen het indienen van gegevens, de MQTT-server die zal worden gebruikt, de afdrukinformatie op de kaart en de ID. We hebben ook aangegeven hoe de string QUICK_START moet zijn.

//Interval entre os envios#define INTERVAL 1000 //Substitua pelo SSID da sua rede #define SSID "TesteESP" //Substitua senha da sua rede #define PASSWORD "87654321" //Server MQTT que iremos utlizar #define Mquistart_SERck.messaging.internetofthings.ibmcloud.com" //Nome do tópico que devemos andviar os dados //para que eles apareçam nos graficos #define TOPIC_NAME "iot-2/evt/status/fmt/json" //ID que usaremos para conectar //QUICK_START ontwikkel permanente como está const String QUICK_START = "d:quickstart:arduino:";

In deze stap definiëren we een unieke ID. In dit voorbeeld gebruiken we het MAC-adres van het apparaat dat we gebruiken. Dit zal dienen als identificatie op de QuickStart-site. Hier verbinden we ook de Quickstart ID met de ID van ons apparaat.

//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_com.com = "240ac40e3fd0"; //Concatemos o id do quickstart o id do nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Vervolgens configureren we de MQTT en WiFi, evenals de objecten en variabelen die betrokken zijn bij de waarden van temperatuur en vochtigheid.

// Client WiFi que o MQTT kan worden gebruikt voor het aansluiten van WiFiClient wifiClient; // Client MQTT, passamos een url do-server, een porta //e o cliente WiFi PubSubClient-client (MQTT_SERVER, 1883, wifiClient); //Tempo em que último envio foi feito long lastPublishTime = 0; //Objeto que realiza a leitura da temperatura en 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 vochtigheid = 0;

MQTT.ino - instellen

In de Setup zullen we de DHT initialiseren en verbinding maken met het WiFi-netwerk en de MQTT-server.

void setup() { Serial.begin(115200); //Incializamos of dht dht.begin(); //Verbinding maken met WiFi setupWiFi(); //Conectamos oa server MQTT connectMQTTServer(); }

MQTT.ino - loop

In de Loop verzamelen we de sensorgegevens om de Json te maken die zal worden gepubliceerd in het onderwerp dat IBM Watson verwacht de grafiek te genereren.

void loop () {// Tempos agora em milisegundos lang nu = millis (); //Se o tempo desde o último envio for maior que o intervalo de envio if (nu - lastPublishTime> INTERVAL) { //Atualizamos o tempo em que ocorreu o último envio lastPublishTime = nu; //Geen temperatuur en temperatuur readSensor(); Serial.print("Publiceer bericht: "); //Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println(msg); //Publicamos no tópico onde o servador espera para receber //e gerar of graphic client.publish(TOPIC_NAME, msg.c_str()); } }

MQTT.ino - wifi instellen

Hier hebben we de functie die verantwoordelijk is voor het verbinden met het wifi-netwerk.

//Functie voor het aansluiten van WiFivoid setupWiFi() { Serial.println(); Serial.print("Verbinding maken met "); Seriële.afdruk (SSID); //Manda o esp se conectar à rede através //do ssid e senha WiFi.begin(SSID, PASWORD); //Espera om een verbinding te maken met een rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serieel.print("."); } //Se chegou aqui é porque conectou Serial.println(""); Serial.println("WiFi verbonden"); }

MQTT.ino - connectMQTTServer

In deze stap gebruiken we de functie die verantwoordelijk is voor het verbinden met de MQTT-server.

//Funço respons op verbinding met oa server MQTTvoid connectMQTTServer() { Serial.println("Verbinding maken met MQTT Server…"); //Se conecta ao id que definimos if (client.connect(CLIENT_ID.c_str())) {//Se a conexão foi bem sucedida Serial.println("verbonden"); } else { //Se ocorreu algum erro Serial.print("error = "); Serial.println(client.state()); } }

MQTT.ino - readSensor

In deze functie wordt het uitlezen van de temperatuur- en vochtigheidsgegevens gedefinieerd.

//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 temperatuur = waarde; } //Faz a leitura da umidade waarde = dht.readHumidity(); //Se o valor for válido if(!isnan(value)){ //Armazena o novo valor da umidade vochtigheid = waarde; } }

MQTT.ino - createJsonString

Hier hebben we de functie die verantwoordelijk is voor het maken van een Json met de gelezen gegevens.

//Função responsável por criar//um Json com os dados lidos String createJsonString() { String data = "{"; data+= "\"d\": {"; data+="\"temperatuur\":"; data+=String(temperatuur); gegevens+=", "; data+="\"vochtigheid\":"; data+=String (vochtigheid); gegevens+="}"; gegevens+="}"; gegevens retourneren; }

Stap 10: Grafisch

Grafisch
Grafisch
Grafisch
Grafisch

Om de sensorgrafiek te bekijken, ga naar

naar

Voer in het veld Apparaat-ID de DEVICE_ID in die u in de code hebt gedefinieerd.

- Het is belangrijk om deze apparaat-ID te wijzigen in een unieke ID, die alleen wordt gebruikt om conflicten met gegevens die door een andere persoon zijn verzonden, te voorkomen.

Accepteer ten slotte de voorwaarden en klik op Go.

In dit project hebben we ons Endpoint getest op de IBM Watson-server. Dit zorgt ervoor dat ons Arduino-programma goed communiceert met het platform en dat de gegevens die we verzenden probleemloos door een cloudservice worden ontvangen als we een account aanmaken.

In een aankomende video in deze serie laat ik je zien hoe je inlogt op IBM Watson en hoe je kunt schrijven in de databank van deze of een andere cloudservice, zoals Google, Amazon, en andere.

Stap 11: Bestanden

Download de bestanden:

PDF

INO

Aanbevolen: