Innholdsfortegnelse:
- Trinn 1: Opprette et bygningsmiljø
- Trinn 2: Få kildekoden, konfigurer og bygg
- Trinn 3: Koble til maskinvarekomponenter
- Trinn 4: Flash og Run
- Trinn 5: Samhandling
- Trinn 6: Implementeringsdetaljer
Video: WiFi LED -stripe + temperatursensor med ESP8266: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Denne opplæringen beskriver trinnene for å sette opp en ESP8266 og få den til å snakke med både en temperatursensor og LED -stripe, samtidig som den kan motta inngang og sende utgang med MQTT over WiFi. Prosjektet ble laget for et kurs tatt på Cal Poly San Luis Obispo høsten 2016- CPE 439: Real Time Embedded Systems. Det overordnede målet var å demonstrere det enkle å lage en internett-tilkoblet "ting" med billig maskinvare.
Rekvisita/utstyr som kreves:
- NodeMCU ESP8266 dev -kort
- WS2812B LED -stripe
- MAX31820 Temperatursensor
- Brødbrett
- 4,7K ohm motstand
- 220 ohm motstand
- jumper ledninger
- mikro-usb-kabel
- PC (eller VM) som kjører Linux (f.eks. Ubuntu)
Forutsetninger/forutsetninger:
- erfaring med bruk av kommandolinjeverktøy og installering av pakker på en debianbasert distro
- grunnleggende forståelse av Makefile -syntaks
- tilkobling av ledninger
Trinn 1: Opprette et bygningsmiljø
For å bygge prosjektet trenger du esp-open-sdk installert på maskinen. Følg lenken og les byggeinstruksjonene. Kort sagt, du gjør noen sudo apt-get-kommandoer for å installere avhengigheter, en git-klon-rekursiv for å klone/laste ned esp-open-sdk, og til slutt en kommando for å bygge esp-open-sdk.
Se på meg
Trinn 2: Få kildekoden, konfigurer og bygg
Nå som esp-open-sdk er bygget, klon prosjektdatabasen.
git-klon
Bytt til prosjektkatalogen, opprett en.local mappe og kopier eksempelinnstillingene.
cd esp-rtos-tester
mkdir -p.local cp settings.example.mk.local/settings.mk
Åpne nå.local/settings.mk med hvilken som helst tekstredigerer og endre følgende innstillinger:
- OPENSDK_ROOT: Den absolutte banen for plasseringen av esp-open-sdk du bygde i trinn 1
- WIFI_SSID: SSID for WiFi -nettverket ditt
- WIFI_PASS: Passordet til WiFi -nettverket ditt
- PIXEL_COUNT: Antall piksler på WS2812B LED -stripen
Merk: Siden dette prosjektet bruker SPI til å drive lysdiodene og bruker NodeMCU 3.3v for å levere dem, vil du sannsynligvis ikke kunne kjøre mer enn ~ 60 lysdioder.
Merk: De andre innstillingene trenger ikke endres, men kan gjøres om ønskelig. Det anbefales å holde rekkefølgen på oppgaveprioritetene. Jo lavere prioritetsnummer, desto lavere prioritet er oppgaven.
Bygg nå prosjektet:
lage -C eksempler/cpe439
Hvis alt er konfigurert riktig, bør det begynne å kompilere. På slutten bør du se:
Oppretting av firmware/cpe439.bin
Se på meg
Trinn 3: Koble til maskinvarekomponenter
Nå som koden er kompilert, er det på tide å koble til eksterne enheter.
Fest først NodeMCU på brødbrettet, og bruk deretter jumperkabler for å lage tilkoblingene som vist i diagrammet.
Et par ting å være oppmerksom på:
- Viktig: WS2812B-datalinjen er ikke toveis. Hvis du ser nøye på markeringene på LED -siden av stripen, bør du se små piler som peker i en retning. Utgangen fra D7 til NodeMCU må være på vei inn i WS2812B på samme måte som retningsmarkøren, som du kan se i diagrammet hvis du ser nøye etter.
- Avhengig av hva slags kontakter WS2812B kommer med, må du kanskje gjøre noen endringer for å få dem til å koble seg sikkert til brødbrettet. Du kan også bruke krokodilleklips for å koble dem til brødkabel-kompatible hoppekabler.
- MAX31820-pinnene har en mindre tonehøyde og er tynnere enn vanlige 0,1 "/2,54 mm-hoppere, noe som gjør dem vanskelige å koble til. En vei rundt dette er å bruke hun-til-mann-hoppetråder, ta av plasthuset fra kvinnesiden, bruk deretter noen tang for å krympe den kvinnelige jumperendene tett rundt de mindre MAX31820 -pinnene.
Dobbeltsjekk tilkoblingene før du slår på NodeMCU for ikke å skade komponentene.
Trinn 4: Flash og Run
Blinker
Når all maskinvare er tilkoblet, kobler du til NodeMCU og blinker med følgende kommando:
lag flash -C eksempler/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 er serienummeret NodeMCU skal vises under. Hvis du har andre serielle enheter tilkoblet, kan det vises som /dev /ttyUSB1 eller et annet nummer. For å kontrollere kan du kjøre denne kommandoen to ganger, en gang med NodeMCU frakoblet, og en gang med den plugget inn, og sammenligne forskjellen:
ls /dev /ttyUSB*
Et annet problem du kan støte på er ikke å ha tillatelse til å få tilgang til enheten. To måter å fikse dette på er:
-
Legg til brukeren din i oppringingsgruppen:
sudo adduser $ (whoami) dialout
- chmod eller chown enheten:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Den første metoden foretrekkes da den er en permanent løsning.
Løping
Etter å ha kjørt flash -kommandoen vellykket, starter enheten umiddelbart og begynner å kjøre den kompilerte koden. Når som helst etter at du har blinket, kan du kjøre følgende kommando for å se seriell utgang:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
For å spare tid kan du legge dette til i ~/.bashrc -filen:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..som lar deg ganske enkelt skrive "nodemcu" som et alias for den kommandoen.
Hvis alt er konfigurert riktig, skal LED -stripen lyse grønt, og på seriell bør du se WiFi -tilkobling, få en IP -adresse, koble til MQTT og meldinger om at temperaturdata skyves ut.
koblet til MyWiFiSSID, start av kanal 1dhcp -klient … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okForespørsel temp OKwifi_task: status = 5xQueueReceiveFi: (Re) koble til MQTT -server test.mosquitto.org … xQueueReceive +25,50xQueueSend ok doneSend MQTT connect … MQTTv311donexQueueReceive +25,56 xQueueSend ok
Trinn 5: Samhandling
Forutsatt at enheten din har koblet seg til WiFi og MQTT -megleren med hell, vil du kunne sende og motta data fra NodeMCU med MQTT. Hvis du ikke allerede har gjort det, kan du installere pakken med myggklienter:
sudo apt-get install mosquitto-klienter
Du bør nå kunne bruke programmene mosquitto_pub og mosquitto_sub fra skallet ditt.
Mottar temperaturoppdateringer
For å motta temperaturdata vil vi bruke kommandoen mosquitto_sub til å abonnere på emnet som NodeMCU publiserer til.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Du bør se temperaturdata (i Celsius) som ankommer terminalen.
+25.87+25.93+25.68…
Innstilling av fargen på LED -stripen eksternt
Et enkelt meldingsformat brukes til å sende RGB -verdier til NodeMCU over MQTT. Kommandoformatet ser slik ut:
r: RRRg: GGGb: BBB ~
Hvor RRR, GGG, BBB tilsvarer RGB-verdier (0-255) for fargen du vil sende. For å sende kommandoen vår bruker vi kommandoen mosquitto_pub. Her er noen eksempler:
mosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 0g: 255b: 0 ~ ' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m' r: 0g: 0b: 255 ~ ' # blå
Hvis du vil bli kreativ, finn en fargevelger på nettet som denne, og rediger kommandoen med hvilken RGB-verdi du enn velger.
Pass på
Emnene i dette prosjektet er satt til /cpe439 /rgb og /cpe439 /temp på en offentlig MQTT -megler, noe som betyr at det ikke er noe som hindrer noen andre i å publisere eller abonnere på de samme emnene som deg. For å prøve ting, er det greit å bruke en offentlig megler, men for mer seriøse prosjekter vil du koble til en megler med passordbeskyttelse, eller kjøre din egen megler på serveren.
Trinn 6: Implementeringsdetaljer
Onewire
ESP8266 har bare 1 kjerne, så lange blokkeringsoppgaver som å vente 750 ms på at temperatursensoren skal utføre en temperaturmåling, vil normalt føre til at WiFi ikke fungerer godt, og kanskje til og med et krasj. I FreeRTOS -paradigmet ringer du vTaskDelay () for å håndtere disse lange ventene, men det kreves også mange kortere ventetider mellom lesing og skriving som er kortere enn FreeRTOS -systemmerke, og dermed ikke kan unngås med vTaskDelay (). For å også komme rundt disse ble onewire-driveren i dette prosjektet skrevet for å kjøre ut av en statsmaskin som drives av ESP8266s maskinvaretimer, som kan utløse hendelser så lave som hvert 10 mikro-sekund, noe som tilfeldigvis er den korteste nødvendig tid mellom en -lese lese-/skriveoperasjoner. De fleste andre implementeringer bruker et blokkerende anrop til delay_us () eller lignende for å håndtere dette, men hvis du stadig tar temperaturoppdateringer, begynner alle forsinkelsene å legge seg opp, noe som resulterer i en mindre responsiv applikasjon. Kilden for denne delen av koden er plassert i mappen extras/onewire.
WS2812B
ESP8266 har ingen standard maskinvarealternativer for PWM raskt nok til å drive LED -strips på 800KHz. For å komme rundt dette bruker dette prosjektet SPI MOSI -pinnen til å drive lysdiodene. Ved å justere klokkefrekvensen til SPI, og endre SPI -nyttelasten rundt, kan du oppnå ganske pålitelig kontroll av hver enkelt LED. Denne metoden er ikke uten feil- for en bør lysdiodene drives med en 5V-kilde og en nivåskifter bør legges til utgangen på SPI-pinnen. Men 3.3V fungerer. For det andre er det feil som oppstår på grunn av ufullkommen timing ved bruk av SPI -metoden. Og det tredje er at nå kan du ikke bruke SPI til noe annet. Ytterligere bakgrunn på denne metoden finner du her, og kilden for denne delen av koden er plassert i mappen extras/ws2812.
En mer pålitelig metode for å kjøre LED -strips er å bruke i2s. Imidlertid har denne metoden mange chipspesifikke hack, så SPI syntes å være et bedre valg som en læringsøvelse.
Anbefalt:
Grensesnitt DS18B20 temperatursensor med Arduino og ESP8266: 8 trinn
Grensesnitt DS18B20 temperatursensor med Arduino og ESP8266: Hei, hva skjer, gutter! Akarsh her fra CETech. I dag skal vi legge til en ny sensor i vårt arsenal kjent som DS18B20 temperatursensor. Det er en temperatursensor som ligner på DHT11, men har et annet sett med applikasjoner. Vi vil sammenligne det med
ESP8266 NodeMCU Access Point (AP) for webserver med DT11 temperatursensor og utskriftstemperatur og fuktighet i nettleseren: 5 trinn
ESP8266 NodeMCU Access Point (AP) for webserver med DT11 temperatursensor og utskriftstemperatur og fuktighet i nettleser: Hei folkens i de fleste prosjektene vi bruker ESP8266 og i de fleste prosjektene bruker vi ESP8266 som webserver, slik at data kan nås på hvilken som helst enhet over wifi ved å få tilgang til webserveren som er hostet av ESP8266, men det eneste problemet er at vi trenger en fungerende ruter for
Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn
Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: I tidligere instrukser har vi gått gjennom forskjellige skyplattformer som Azure, Ubidots, ThingSpeak, Losant etc. Vi har brukt MQTT -protokollen for å sende sensordata til skyen i nesten hele skyplattformen. For mer informasjon
IoT temperatursensor med ESP8266: 6 trinn (med bilder)
IoT Temperatursensor Med ESP8266: Jeg ble inspirert til å lage en temperatursensor som jeg kan overvåke over wifi. Dette prosjektet er ikke nytt, men jeg liker ideen om å ha et mellomlag for sikkerhet og ikke å måtte åpne porten i ruteren til IoT -enheten din. Grunnideen vil allo
SENSOR SUHU DENGAN LCD DAN LED (lager temperatursensor med LCD og LED): 6 trinn (med bilder)
SENSOR SUHU DENGAN LCD DAN LED (Making Temperature Sensor With LCD and LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino den Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda