Innehållsförteckning:

IBM Watson med ESP32 som slutpunkt: 11 steg
IBM Watson med ESP32 som slutpunkt: 11 steg

Video: IBM Watson med ESP32 som slutpunkt: 11 steg

Video: IBM Watson med ESP32 som slutpunkt: 11 steg
Video: Ken Jennings: Watson, Jeopardy and me, the obsolete know-it-all 2024, Juli
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Jag publicerar här den första videon i en serie om hur man monterar en slutpunktsenhet med ESP32 och sedan skickar den till en molntjänst. I detta specifika avsnitt visar jag dig hur du skickar information från en DHT22 -sensor med MQTT -protokollet för IBM Watson.

Vi introducerar först MQTT, som är ett maskin-till-maskin-protokoll som används i IoT (Internet of Things). Vi kommer också att skicka data från temperatur- och luftfuktighetssensorn med detta protokoll och sedan kontrollera diagrammet med dessa data på en webbsida.

Steg 1: ESP32 Pinout

Jag placerade här Pinout av ESP32, som vi använder i vårt exempel. Jag vill dock göra det klart att projektet också fungerar med ESP8266, och även med samma källkod.

Steg 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Steg 3: MQTT

MQTT
MQTT

MQTT är ett maskin-till-maskin-protokoll som används i IoT. Den var utformad för att vara lätt och snabb. Den använder ett prenumerations-/publiceringssystem, där en enhet "prenumererar" på ett ämne med den specifika informationen av ditt intresse, och tar sedan emot informationen när en enhet publicerar data om detta ämne.

Precis som ett serverprogram behöver MQTT programvara. Detta kallas en mäklare. I detta specifika fall kommer vi att använda IBMs Bluemix IoT -tjänst. Denna tjänst är gratis för slutpunktstestning.

Därefter måste vi ha en mobiltelefon eller surfplatta med applikationssidan, det vill säga som en MQTT -klient. Vi har också enhetssidan, som är ESP -sidan med en termometer. Detta skickar data om temperatur och luftfuktighet till Bluemix, som sedan skickar denna information till applikationssidan.

Steg 4: Montering

hopsättning
hopsättning

Vår krets består av ett 4,7k ohm motstånd mellan 3,3v och datapinnen, plus en DHT22 ansluten till GPIO4 på en ESP32 eller NodeMCU. Således är detta vår slutpunkt.

Steg 5: Diagram

Diagram
Diagram
Diagram
Diagram

Jag visar här flera sätt att arbeta med MQTT Local Broker. Jag placerade två diagrammodeller. I videon talar jag om en situation med att exempelvis använda en Raspberry Pi för att öppna en grind.

I bilden ovan har vi den första arkitekturen som använder en lokal mäklare med uthållighet och en andra arkitektur nedan som bara kommunicerar med mäklaren i molnet.

Som visas i diagrammet skickar vår sensor sedan temperatur- och luftfuktighetsdata till IBM Watson. Det är viktigt att betona att IBM Watson inte skriver data i det här fallet, eftersom det bara visas i grafer. Detta beror på att vi inte kommer att ta itu med några databasoperationer i dagens exempel, utan bara ange åtkomst till snabbstartssidan (https://quickstart.internetofthings.ibmcloud.com/), som visar status för slutpunkten. Schemat är enkelt och använder WiFi för att skicka data.

Steg 6: Bibliotek

I Arduino IDE, gå till skissmenyn -> Inkludera bibliotek -> Hantera bibliotek …

På skärmen som öppnas, sök in "DHT" och installera lib "DHT -sensorbibliotek"

Skriv sedan "PubSubClient" och installera "PubSubClient" lib.

Steg 7: Temperatur- och luftfuktighetsbibliotek

Temperatur- och luftfuktighetsbibliotek
Temperatur- och luftfuktighetsbibliotek

Steg 8: MQTT -bibliotek

MQTT -bibliotek
MQTT -bibliotek

Steg 9: MQTT.ino

Vi startar källkoden genom att kontrollera vilken ESP som används och importera motsvarande bibliotek och WiFi. Vi inkluderar fortfarande MQTT Libs och temperatur- och fuktsensorn.

// Verifica qual ESP kan användas

Därefter definierar vi följande: intervallet mellan datainsändningar, MQTT -servern som ska användas, utskriftsinformationen på diagrammet och ID: t. Vi påpekade också hur strängen QUICK_START ska vara.

// 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 eles apareçam nos gráficos #define TOPIC_NAME" iot-2/evt/status/fmt/json "// ID que usaremos para conectar // QUICK_START deve permanentecer como está const String QUICK_START = "d: snabbstart: arduino:";

I detta steg definierar vi ett unikt ID. I det här exemplet använder vi MAC -adressen för den enhet vi använder. Detta fungerar som identifiering på QuickStart -webbplatsen. Här ansluter vi också Quickstart ID med ID för vår enhet.

// No DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como identifieração 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;

Vi konfigurerar sedan MQTT och WiFi, samt objekt och variabler som är inblandade i värdena för temperatur och luftfuktighet.

// Cliente WiFi que o MQTT irá utilizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, a porta // e o cliente WiFi PubSubClient client (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 float fuktighet = 0;

MQTT.ino - installation

I installationen kommer vi att initiera DHT och ansluta till WiFi -nätverket och MQTT -servern.

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

MQTT.ino - loop

I Loop samlar vi in sensordata för att skapa Json som kommer att publiceras i ämnet som IBM Watson förväntar sig att generera grafen.

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 ("Publicera meddelande:"); // 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

Här har vi den funktion som är ansvarig för anslutning till WiFi -nätverket.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Ansluter till"); 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); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi ansluten"); }

MQTT.ino - anslut MQTTServer

I detta steg använder vi funktionen som är ansvarig för anslutning till MQTT -servern.

// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Ansluter till MQTT -server …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("ansluten"); } annat {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Avläsningen av temperatur- och luftfuktighetsdata definieras i denna funktion.

// 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 (värde)) {// Armazena o novo valor da temperatura temperatur = värde; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade fukt = värde; }}

MQTT.ino - createJsonString

Här har vi den funktion som är ansvarig för att skapa en Json med data läst.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" temperatur / ":"; data+= Sträng (temperatur); data+= ","; data+= "\" luftfuktighet / ":"; data+= Sträng (luftfuktighet); data+= "}"; data+= "}"; returnera data; }

Steg 10: Grafisk

Grafisk
Grafisk
Grafisk
Grafisk

För att se sensordiagrammet, gå

till

I fältet Enhets -ID anger du DEVICE_ID som du har definierat i koden.

- Det är viktigt att ändra detta enhets -ID till ett unikt ID, som endast används för att undvika konflikt med data som skickas av en annan person.

Slutligen, acceptera villkoren och klicka på Kör.

I detta projekt testade vi vår slutpunkt på IBM Watson -servern. Detta säkerställer att vårt Arduino -program kommunicerar korrekt med plattformen och att data vi skickar kommer att tas emot smidigt av en molntjänst om vi skapar ett konto.

I en kommande video i den här serien visar jag dig hur du loggar in på IBM Watson, samt skriver i databanken för denna eller en annan molntjänst, till exempel Google, Amazon, bland andra.

Steg 11: Filer

Ladda ner filerna:

PDF

INO

Rekommenderad: