Innholdsfortegnelse:
- Trinn 1: ESP32 Pinout
- Trinn 2: NodeMCU Pinout
- Trinn 3: MQTT
- Trinn 4: Montering
- Trinn 5: Diagram
- Trinn 6: Biblioteker
- Trinn 7: Lesing av temperatur og fuktighet
- Trinn 8: MQTT -bibliotek
- Trinn 9: MQTT.ino
- Trinn 10: Grafisk
- Trinn 11: Filer
Video: IBM Watson med ESP32 som endepunkt: 11 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Jeg legger ut her den første videoen i en serie om hvordan du monterer en endepunktsenhet med ESP32, og deretter sender den til en skytjeneste. I denne spesifikke episoden viser jeg deg hvordan du sender informasjon fra en DHT22 -sensor ved hjelp av MQTT -protokollen for IBM Watson.
Vi skal først introdusere MQTT, som er en maskin-til-maskin-protokoll som brukes i IoT (Internet of Things). Vi vil også sende data fra temperatur- og fuktighetssensoren ved hjelp av denne protokollen, og deretter sjekke grafen med disse dataene på en webside.
Trinn 1: ESP32 Pinout
Jeg plasserte her Pinout av ESP32, som vi bruker i vårt eksempel. Jeg vil imidlertid gjøre det klart at prosjektet også fungerer med ESP8266, og til og med med den samme kildekoden.
Trinn 2: NodeMCU Pinout
Trinn 3: MQTT
MQTT er en maskin-til-maskin-protokoll som brukes i IoT. Den ble designet for å være lett og rask. Den bruker et abonnement/publiseringssystem, der en enhet "abonnerer" på et emne med spesifikk informasjon av din interesse, og mottar deretter informasjonen når en enhet publiserer data om dette emnet.
Som et serverprogram, trenger MQTT programvare. Dette kalles en megler. I dette spesifikke tilfellet vil vi bruke IBMs Bluemix IoT -tjeneste. Denne tjenesten er gratis for endepunktstesting.
Deretter må vi ha en mobiltelefon eller et nettbrett med applikasjonssiden, det vil si som en MQTT -klient. Vi har også enhetssiden, som er ESP -siden med et termometer. Dette sender data om temperatur og fuktighet til Bluemix, som deretter sender denne informasjonen til applikasjonssiden.
Trinn 4: Montering
Kretsen vår består av en 4,7k ohm motstand mellom 3.3v og datapinnen, pluss en DHT22 koblet til GPIO4 på en ESP32 eller NodeMCU. Dermed er dette vårt endepunkt.
Trinn 5: Diagram
Jeg viser her flere måter å jobbe med MQTT Local Broker. Jeg plasserte to diagrammodeller. I videoen snakker jeg om en situasjon som for eksempel bruker en Raspberry Pi for å åpne en port.
På bildet ovenfor har vi den første arkitekturen som bruker en lokal megler med utholdenhet, og en andre arkitektur nedenfor som bare kommuniserer med megleren i skyen.
Som vist i diagrammet sender vår sensor deretter temperatur- og fuktighetsdataene til IBM Watson. Det er viktig å understreke at IBM Watson ikke skriver dataene i dette tilfellet, ettersom de bare vises i grafer. Dette er fordi vi ikke vil ta opp noen databaseoperasjoner i dagens eksempel, men bare angi tilgang til Quickstart -siden (https://quickstart.internetofthings.ibmcloud.com/), som viser statusen til endepunktet. Opplegget er enkelt og bruker WiFi for å sende data.
Trinn 6: Biblioteker
I Arduino IDE, gå til Sketch -menyen -> Inkluder bibliotek -> Administrer biblioteker …
På skjermen som åpnes, skriv inn "DHT" i søket og installer lib "DHT -sensorbiblioteket"
Skriv deretter inn "PubSubClient" og installer "PubSubClient" lib.
Trinn 7: Lesing av temperatur og fuktighet
Trinn 8: MQTT -bibliotek
Trinn 9: MQTT.ino
Vi starter kildekoden med å sjekke hvilken ESP som brukes og importere det tilsvarende biblioteket og WiFi. Vi inkluderer fortsatt MQTT Libs og temperatur- og fuktighetssensoren.
// 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
Deretter definerer vi følgende: intervallet mellom datainnleveringer, MQTT -serveren som skal brukes, utskriftsinformasjonen på diagrammet og ID -en. Vi påpekte også hvordan strengen QUICK_START skal være.
// 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: quickstart: arduino:";
I dette trinnet definerer vi en unik ID. I dette eksemplet bruker vi MAC -adressen til enheten vi bruker. Dette vil fungere som identifikasjon på QuickStart -nettstedet. Her kobler vi også hurtigstart -IDen til ID -en til enheten vår.
// 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 do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Vi konfigurerer deretter MQTT og WiFi, samt objektene og variablene som er involvert i verdiene temperatur og fuktighet.
// 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; // Objekto 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 - oppsett
I oppsettet vil vi initialisere DHT og koble til WiFi -nettverket og MQTT -serveren.
ugyldig oppsett () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }
MQTT.ino - sløyfe
I Loop samler vi sensordata for å lage Json som vil bli publisert i emnet som IBM Watson forventer å generere 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 ("Publiser melding:"); // 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
Her har vi funksjonen som er ansvarlig for å koble til WiFi -nettverket.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Koble til"); 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 tilkoblet"); }
MQTT.ino - koble tilMQTTServer
I dette trinnet bruker vi funksjonen som er ansvarlig for å koble til MQTT -serveren.
// 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 ("tilkoblet"); } annet {// Se ocorreu algum erro Serial.print ("feil ="); Serial.println (client.state ()); }}
MQTT.ino - readSensor
Avlesningen av temperatur- og fuktighetsdata er definert i denne funksjonen.
// Função responsável por realizar a leitura // da temperaturena e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (verdi)) {// Armazena o novo valor da temperatura temperatur = verdi; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade fuktighet = verdi; }}
MQTT.ino - createJsonString
Her har vi funksjonen som er ansvarlig for å lage en Json med dataene som er lest.
// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" temperatur / ":"; data+= streng (temperatur); data+= ","; data+= "\" fuktighet / ":"; data+= streng (fuktighet); data+= "}"; data+= "}"; returnere data; }
Trinn 10: Grafisk
For å se sensorgrafikken, gå
til
I feltet Enhets -ID skriver du inn DEVICE_ID som du definerte i koden.
- Det er viktig å endre denne enhets -ID -en til en unik ID, bare brukt for å unngå konflikt med data sendt av en annen person.
Godta vilkårene til slutt, og klikk på Gå.
I dette prosjektet testet vi vårt endepunkt på IBM Watson -serveren. Dette sikrer at vårt Arduino -program kommuniserer ordentlig med plattformen, og at dataene vi sender vil bli mottatt jevnt av en skytjeneste hvis vi oppretter en konto.
I en kommende video i denne serien viser jeg deg hvordan du logger deg på IBM Watson, samt skriver i databanken til denne eller en annen skytjeneste, for eksempel Google, Amazon, blant andre.
Trinn 11: Filer
Last ned filene:
INO
Anbefalt:
Renegade-i (programmerbar IC-tester som føles som den virkelige tingen): 3 trinn (med bilder)
Renegade-i (programmerbar IC-tester som føles som den virkelige tingen): THE MILLION DOLLAR DREAM. Har du noen gang drømt om å ha din egen IC-tester hjemme? Ikke bare en gadget som kan teste IC, men en "programmerbar" maskin som føles som et av flaggskipsproduktene til de største aktørene i semikon -testindustrien, lykkes
En Raspberry Pi NAS som virkelig ser ut som en NAS: 13 trinn (med bilder)
En Raspberry Pi NAS som virkelig ser ut som en NAS: Hvorfor en Raspberry Pi NAS Vel, jeg har søkt etter en vakker, men plassbesparende Raspberry Pi NAS fra internett, og jeg fant ingenting. Jeg fant noen NAS -design med en Raspberry Pi som ble limt på en trebasert, men det er ikke det jeg vil. Jeg ønsker
Legg til trådløs lading på en hvilken som helst telefon: Bruk LG-V20 som eksempel: 10 trinn (med bilder)
Legg til trådløs lading på hvilken som helst telefon: Bruk LG-V20 som eksempel: Hvis du er som meg og planlegger å beholde telefonen i mer enn 2 år, må telefonen ha et utskiftbart batteri, fordi batteriet bare varer i omtrent 2 år, og Og trådløs lading slik at du ikke sliter ut ladeporten. Nå er det enkelt
Palm Os -enhet som fungerer som en LCD -statusvisning. (nå med bilder!): 4 trinn
Palm Os -enhet som fungerer som en LCD -statusvisning. (nå Med bilder!): Denne artikkelen handler om hvordan du bruker din palm OS -enhet til å etterligne en LCD -statusvisning for datamaskinen din! Du kan vise systemstatistikk (for eksempel: CPU -lastgrafer, CPU -temperaturer, ledig diskplass), nyhetsvarsler, aksjeindekser, WinAmp -grafer, etc
Hvordan lage en autonom basketballball som bruker en IRobot Lag som base: 7 trinn (med bilder)
Slik lager du en autonom basketballball som bruker en IRobot Lag som base: Dette er min oppføring for iRobot Create -utfordringen. Den vanskeligste delen av hele denne prosessen for meg var å bestemme hva roboten skulle gjøre. Jeg ønsket å demonstrere de kule funksjonene i Create, samtidig som jeg la til litt robo -teft. Alle mine