Innehållsförteckning:
- Steg 1: ESP32 Pinout
- Steg 2: NodeMCU Pinout
- Steg 3: MQTT
- Steg 4: Montering
- Steg 5: Diagram
- Steg 6: Bibliotek
- Steg 7: Temperatur- och luftfuktighetsbibliotek
- Steg 8: MQTT -bibliotek
- Steg 9: MQTT.ino
- Steg 10: Grafisk
- Steg 11: Filer
Video: IBM Watson med ESP32 som slutpunkt: 11 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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
Steg 3: 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
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
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
Steg 8: 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
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:
INO
Rekommenderad:
Renegade-i (programmerbar IC-testare som känns som den riktiga saken): 3 steg (med bilder)
Renegade-i (programmerbar IC-testare som känns som den verkliga saken): MILLIONS DOLLAR DREAM. Har du någonsin drömt om att ha din egen IC-testare hemma? Inte bara en pryl som kan testa IC, utan en "programmerbar" maskin som känns som en av flaggskeppsprodukterna för de största aktörerna i semikon -testindustrin, lyckas
En Raspberry Pi NAS som verkligen ser ut som en NAS: 13 steg (med bilder)
En Raspberry Pi NAS som verkligen ser ut som en NAS: Varför en Raspberry Pi NAS Tja, jag har letat efter en vacker men ändå platsbesparande Raspberry Pi NAS från internet och jag hittade ingenting. Jag hittade någon NAS -design med en Raspberry Pi som limmades på en träbaserad men det är inte vad jag vill. Jag vill
Lägg till trådlös laddning till vilken telefon som helst: Använd LG-V20 som exempel: 10 steg (med bilder)
Lägg till trådlös laddning till vilken telefon som helst: Använd LG-V20 som exempel: Om du är som jag och planerar att behålla din telefon i mer än 2 år måste telefonen ha ett utbytbart batteri, eftersom batteriet bara räcker i cirka 2 år, och Och trådlös laddning så att du inte sliter ut laddningsporten. Nu är det enkelt
Hur man använder Wiimote som en datormus med ljus som sensor !!: 3 steg
Så här använder du Wiimote som en datormus Använda ljus som en sensor !!: Den här guiden visar hur du kopplar din Wii -fjärrkontroll (Wiimote) till din dator och använder den som en mus
Hur man gör en autonom basketboll som spelar robot med hjälp av en IRobot Skapa som bas: 7 steg (med bilder)
Hur man gör en autonom basketboll som spelar robot med hjälp av en IRobot Skapa som bas: Detta är min post för iRobot Create -utmaningen. Den svåraste delen av hela processen för mig var att bestämma vad roboten skulle göra. Jag ville demonstrera de häftiga funktionerna i Create, samtidigt som jag lade till lite robo -stil. Alla mina