Inhoudsopgave:
- Stap 1: ESP32 pinout
- Stap 2: NodeMCU-pinout
- Stap 3: MQTT
- Stap 4: Montage
- Stap 5: Schema
- Stap 6: Bibliotheken
- Stap 7: Leesbibliotheek voor temperatuur en vochtigheid
- Stap 8: MQTT-bibliotheek
- Stap 9: MQTT.ino
- Stap 10: Grafisch
- Stap 11: Bestanden
Video: IBM Watson met ESP32 als eindpunt: 11 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
Stap 3: 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
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
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
Stap 8: 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
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:
INO
Aanbevolen:
Arduino als ISP -- Hex-bestand branden in AVR -- Zekering in AVR -- Arduino als programmeur: 10 stappen
Arduino als ISP || Hex-bestand branden in AVR || Zekering in AVR || Arduino als programmeur:…………………….. ABONNEER aub op mijn YouTube-kanaal voor meer video's…….. Dit artikel gaat helemaal over arduino als isp. Als u een hex-bestand wilt uploaden of als u uw zekering in AVR wilt plaatsen, hoeft u geen programmeur te kopen, u kunt dit doen
IoT Hydroponics - IBM's Watson gebruiken voor PH- en EC-metingen: 7 stappen (met afbeeldingen)
IoT Hydroponics - IBM's Watson gebruiken voor PH- en EC-metingen: deze instructable laat zien hoe de EC, pH en temperatuur van een hydrocultuuropstelling kunnen worden gecontroleerd en de gegevens kunnen worden geüpload naar IBM's Watson-service. Watson is gratis om mee aan de slag te gaan. Er zijn betaalde abonnementen, maar het gratis abonnement is meer dan genoeg voor dit project
Kindle als GPS met hoog contrast (werkt voor elk e-boek): 5 stappen (met afbeeldingen)
Kindle als GPS met hoog contrast (werkt voor elk e-boek): ik laat zien hoe je je e-boek (Kindle, Kobo, Sony, ipad, tablet) als GPS kunt gebruiken. Alle software draait op je telefoon (Android is nodig), dus het e-boek is ongewijzigd. Je hoeft alleen maar een paar apps op je telefoon te installeren. Het e-boek gebruikt alleen de interne
IoT Plant Monitoring System (met IBM IoT Platform): 11 stappen (met afbeeldingen)
IoT Plant Monitoring System (met IBM IoT Platform): Overzicht Het Plant Monitoring System (PMS) is een applicatie die is gebouwd met mensen die in de arbeidersklasse zitten met groene vingers in het achterhoofd. Tegenwoordig hebben werkende mensen het drukker dan ooit tevoren; het bevorderen van hun loopbaan en het beheren van hun financiën
Hoe de Wiimote als computermuis te gebruiken Kaarsen als sensor gebruiken!! - Ajarnpa
De Wiimote als computermuis gebruiken Kaarsen als sensor gebruiken!!: Deze gids laat je zien hoe je je Wii-afstandsbediening (Wiimote) op je pc aansluit en als muis gebruikt