Innehållsförteckning:
- Steg 1: Skapa en byggmiljö
- Steg 2: Hämta källkod, konfigurera och bygg
- Steg 3: Anslut hårdvarukomponenter
- Steg 4: Flash och kör
- Steg 5: Interagerar
- Steg 6: Implementeringsdetaljer
Video: WiFi LED -remsa + temperatursensor med ESP8266: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Denna handledning beskriver stegen för att konfigurera en ESP8266 och få den att prata med både en temperatursensor och LED -remsa, samtidigt som den kan ta emot ingång och skicka utmatning med MQTT över WiFi. Projektet gjordes för en kurs på Cal Poly San Luis Obispo hösten 2016- CPE 439: Real Time Embedded Systems. Det övergripande målet var att visa hur enkelt det är att skapa en internetansluten "sak" med billig hårdvara.
Tillbehör/utrustning som krävs:
- NodeMCU ESP8266 dev -kort
- WS2812B LED -remsa
- MAX31820 Temperaturgivare
- Bakbord
- 4,7K ohm motstånd
- 220 ohm motstånd
- bygelkablar
- mikro-usb-kabel
- PC (eller VM) som kör Linux (t.ex. Ubuntu)
Antaganden/förutsättningar:
- erfarenhet av att använda kommandoradsverktyg och installera paket på en debianbaserad distro
- grundläggande förståelse för Makefile -syntax
- anslutningskablar
Steg 1: Skapa en byggmiljö
För att bygga projektet behöver du esp-open-sdk installerat på din maskin. Följ länken och läs bygginstruktionerna. Kort sagt kommer du att göra några sudo apt-get-kommandon för att installera beroenden, en git-klon-rekursiv för att klona/ladda ner esp-open-sdk och slutligen ett make-kommando för att bygga esp-open-sdk.
Se på mig
Steg 2: Hämta källkod, konfigurera och bygg
Nu när esp-open-sdk är byggt, klona projektförvaret.
git-klon
Byt till projektkatalogen, skapa en.local mapp och kopiera exempelinställningarna.
cd esp-rtos-tester
mkdir -p.local cp settings.example.mk.local/settings.mk
Öppna nu.local/settings.mk med valfri textredigerare och ändra följande inställningar:
- OPENSDK_ROOT: Den absoluta sökvägen för platsen för esp-open-sdk som du byggde i steg 1
- WIFI_SSID: SSID för ditt WiFi -nätverk
- WIFI_PASS: Lösenordet för ditt WiFi -nätverk
- PIXEL_COUNT: Antalet pixlar på din WS2812B LED -remsa
Obs: Eftersom detta projekt använder SPI för att driva lysdioderna och använder NodeMCU 3.3v för att leverera dem, kommer du förmodligen inte att kunna köra mer än ~ 60 lysdioder.
Obs! De andra inställningarna behöver inte ändras, men kan göras om så önskas. Det rekommenderas att hålla ordningen på uppgiftsprioriteringarna. Ju lägre prioritetsnummer, desto lägre prioritet för uppgiften.
Bygg nu projektet:
gör -C -exempel/cpe439
Om allt är korrekt konfigurerat bör det börja kompilera. I slutet bör du se:
'Firmware/cpe439.bin' skapades
Se på mig
Steg 3: Anslut hårdvarukomponenter
Nu när koden är sammanställd är det dags att ansluta våra kringutrustning.
Stick först fast NodeMCU på brödbrädan, använd sedan bygelkablar för att göra anslutningarna enligt diagrammet.
Ett par saker att vara medveten om:
- Viktigt: WS2812B-datalinjen är inte dubbelriktad. Om du tittar noga på markeringarna på remsans LED -sida bör du se små pilar som pekar åt ett håll. Utsignalen från D7 i NodeMCU måste vara på väg in i WS2812B på samma sätt som riktningsmarkören, vilket du kan se i diagrammet om du tittar noga.
- Beroende på vilken typ av kontakter din WS2812B levereras med, kan du behöva göra några ändringar för att få dem att anslutas säkert till brödbrädan. Du kan också använda krokodilklämmor för att ansluta dem till brödbrädor som kan användas i bygelkablar.
- MAX31820-stiften har en mindre delning och är tunnare än vanliga 0,1 "/2,54 mm-hoppare, vilket gör dem knepiga att ansluta. En väg runt detta är att använda hona-till-man-bygeltrådar, ta av plasthöljet från kvinnans sida, använd sedan en tång för att krympa kvinnliga bygeländar tätt runt de mindre MAX31820 stiften.
Kontrollera anslutningarna innan du sätter på NodeMCU för att inte skada komponenterna.
Steg 4: Flash och kör
Blinkar
Med all hårdvara ansluten, anslut din NodeMCU och blinka med följande kommando:
gör flash -C -exempel/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 är serienumret som NodeMCU ska visas under. Om du har andra seriella enheter anslutna kan det visas som /dev /ttyUSB1 eller något annat nummer. För att kontrollera kan du köra detta kommando två gånger, en gång med NodeMCU urkopplad och en gång med den inkopplad, och jämföra skillnaden:
ls /dev /ttyUSB*
Ett annat problem som du kan stöta på är att du inte har behörighet att komma åt enheten. Två sätt att åtgärda detta är:
-
Lägg till din användare i uppringningsgruppen:
sudo adduser $ (whoami) uppringning
- chmod eller chown enheten:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Den första metoden föredras eftersom den är en permanent lösning.
Löpning
Efter att ha kört flash -kommandot framgångsrikt startar enheten omedelbart och börjar köra den kompilerade koden. När som helst efter att du blinkat kan du köra följande kommando för att titta på seriell utmatning:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
För att spara tid kan du lägga till detta i din ~/.bashrc -fil:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..som låter dig helt enkelt skriva "nodemcu" som ett alias för det kommandot.
Om allt är korrekt konfigurerat ska din LED -remsa lysa grönt, och på seriell bör du se WiFi -anslutning, få en IP -adress, ansluta till MQTT och meddelanden om att temperaturdata skjuts ut.
ansluten till MyWiFiSSID, kanal 1dhcp -klientstart … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okFörfrågan temp OKwifi_task: status = 5xQueueReceiveFi 25task_taktaQuansökmottagningskoppling: (Om) anslutning till MQTT -server test.mosquitto.org … xQueueReceive +25,50xQueueSend ok doneSend MQTT connect … MQTTv311donexQueueReceive +25,56 xQueueSend ok
Steg 5: Interagerar
Om du antar att din enhet har anslutit till WiFi och MQTT -mäklaren framgångsrikt kan du skicka och ta emot data från NodeMCU med MQTT. Om du inte redan har gjort det installerar du myggklientpaketet:
sudo apt-get install myggklienter
Du bör nu kunna använda programma mosquitto_pub och mosquitto_sub från ditt skal.
Tar emot temperaturuppdateringar
För att få temperaturdata vill vi använda kommandot mosquitto_sub för att prenumerera på ämnet som NodeMCU publicerar till.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Du bör se temperaturdata (i Celsius) som anländer till terminalen.
+25.87+25.93+25.68…
Fjärrinställning av LED -remsans färg
Ett enkelt meddelandeformat används för att skicka RGB -värden till NodeMCU över MQTT. Kommandoformatet ser ut så här:
r: RRRg: GGGb: BBB ~
Där RRR, GGG, BBB motsvarar RGB-värden (0-255) för den färg du vill skicka. För att skicka vårt kommando använder vi kommandot mosquitto_pub. Här är några exempel:
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å
Om du vill bli kreativ hittar du en färgväljare online som den här och redigerar kommandot med vilket RGB-värde du än väljer.
Se upp
Ämnena i detta projekt är inställda på /cpe439 /rgb och /cpe439 /temp på en offentlig MQTT -mäklare, vilket innebär att det inte finns något som hindrar någon annan från att publicera eller prenumerera på samma ämnen som du. För att prova saker är det bra att använda en offentlig mäklare, men för mer seriösa projekt vill du ansluta till en mäklare med lösenordsskydd, eller köra din egen mäklare på servern.
Steg 6: Implementeringsdetaljer
Onewire
ESP8266 har bara 1 kärna, så långa blockeringsuppgifter som att vänta 750 ms för temperatursensorn för att utföra en temperaturmätning skulle normalt leda till att WiFi inte fungerar bra och kanske till och med en krasch. I FreeRTOS -paradigmet ringer du vTaskDelay () för att hantera dessa långa väntetider, men det krävs också många kortare väntetider mellan läsningar och skrivningar som är kortare än FreeRTOS -systemmarkeringen, och kan därför inte undvikas med vTaskDelay (). För att också komma runt dessa skrevs onewire-drivrutinen i detta projekt för att köra iväg från en tillståndsmaskin som drivs av ESP8266s hårdvarutimer, som kan utlösa händelser så låga som var 10 mikro-sekund, vilket råkar vara den kortaste nödvändig tid mellan en -tråds läs-/skrivoperationer. De flesta andra implementeringar använder ett blockerande samtal till delay_us () eller liknande för att hantera detta, men om du ständigt tar temperaturuppdateringar börjar alla dessa förseningar lägga till, vilket resulterar i en mindre responsiv applikation. Källan för den här delen av koden finns i mappen extras/onewire.
WS2812B
ESP8266 har inga standard hårdvarualternativ för PWM tillräckligt snabbt för att driva LED -remsor vid 800KHz. För att komma runt detta använder detta projekt SPI MOSI -stiftet för att driva lysdioderna. Genom att justera klockfrekvensen för SPI och ändra SPI -nyttolasten kan du uppnå en ganska tillförlitlig kontroll av varje enskild lysdiod. Denna metod är inte utan sina brister- för en bör LED-lamporna drivas med en 5V-källa och en nivåskiftare bör läggas till utgången på SPI-stiftet. Men 3.3V fungerar. För det andra finns det fel som uppstår på grund av ofullkomlig timing med SPI -metoden. Och det tredje är nu att du inte kan använda SPI för något annat. Ytterligare bakgrund om denna metod kan hittas här, och källan för denna del av koden finns i mappen extras/ws2812.
En mer pålitlig metod för att köra LED -remsor är att använda i2: er. Men den här metoden har många chipspecifika hack, så SPI verkade vara ett bättre val som inlärningsövning.
Rekommenderad:
Gränssnitt DS18B20 temperatursensor med Arduino och ESP8266: 8 steg
Gränssnitt DS18B20 temperatursensor med Arduino och ESP8266: Hej, vad händer, killar! Akarsh här från CETech. Idag kommer vi att lägga till en ny sensor till vår arsenal som kallas DS18B20 Temperatursensor. Det är en temperatursensor som liknar DHT11 men har en annan uppsättning applikationer. Vi kommer att jämföra det med
ESP8266 NodeMCU Access Point (AP) för webbserver med DT11 temperatursensor och utskriftstemperatur och luftfuktighet i webbläsare: 5 steg
ESP8266 NodeMCU Access Point (AP) för webbserver med DT11 temperatursensor och utskriftstemperatur och luftfuktighet i webbläsare: Hej killar i de flesta projekt vi använder ESP8266 och i de flesta projekt använder vi ESP8266 som en webbserver så att data kan nås på vilken enhet som helst via wifi genom att komma åt webbservern som ESP8266 är värd för, men det enda problemet är att vi behöver en fungerande router för
Komma igång med AWS IoT Med trådlös temperatursensor med MQTT: 8 steg
Komma igång med AWS IoT med trådlös temperatursensor med MQTT: I tidigare instruktioner har vi gått igenom olika molnplattformar som Azure, Ubidots, ThingSpeak, Losant etc. Vi har använt MQTT -protokollet för att skicka sensordata till molnet i nästan hela molnplattformen. För mer information
IoT temperatursensor med ESP8266: 6 steg (med bilder)
IoT Temperatursensor Med ESP8266: Jag blev inspirerad att skapa en temperatursensor som jag kan övervaka via wifi. Det här projektet är inte nytt, men jag gillar tanken på att ha ett mellanlager för säkerhet och att inte behöva öppna porten i din router till din IoT -enhet. Grundidén kommer att
SENSOR SUHU DENGAN LCD DAN LED (gör temperatursensor med LCD och LED): 6 steg (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