Obsah:
- Krok 1: Vytvorenie prostredia pre zostavenie
- Krok 2: Získajte zdrojový kód, nakonfigurujte ho a vytvorte
- Krok 3: Pripojte hardvérové súčasti
- Krok 4: Blesk a spustenie
- Krok 5: Interakcia
- Krok 6: Podrobnosti o implementácii
Video: WiFi LED pásik + snímač teploty s ESP8266: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Tento tutoriál popisuje kroky na nastavenie ESP8266 a jeho uvedenie do kontaktu s teplotným senzorom a LED pásikom a zároveň dokáže prijímať a odosielať výstup pomocou MQTT cez WiFi. Projekt bol vypracovaný pre kurz absolvovaný na Cal Poly San Luis Obispo na jeseň 2016- CPE 439: Real Time Embedded Systems. Celkovým cieľom bolo demonštrovať jednoduchosť vytvárania „veci“pripojenej k internetu pomocou lacného hardvéru.
Potrebný spotrebný materiál/vybavenie:
- Doska pre vývojárov NodeMCU ESP8266
- LED pás WS2812B
- MAX31820 Snímač teploty
- Breadboard
- Rezistor 4,7K ohm
- Odpor 220 ohmov
- prepojovacie vodiče
- mikro USB kábel
- PC (alebo VM) so systémom Linux (napr. Ubuntu)
Predpoklady/predpoklady:
- skúsenosti s používaním nástrojov príkazového riadka a inštaláciou balíkov v distribúcii založenej na debian
- základné znalosti syntaxe Makefile
- spojovacie vodiče
Krok 1: Vytvorenie prostredia pre zostavenie
Na zostavenie projektu budete potrebovať esp-open-sdk nainštalovaný vo vašom počítači. Kliknite na odkaz a prečítajte si pokyny na zostavenie. Stručne povedané, budete vykonávať niekoľko príkazov sudo apt-get na inštaláciu závislostí, git clone --recursive na klonovanie/sťahovanie esp-open-sdk a nakoniec príkaz make na zostavenie esp-open-sdk.
Sleduj ma
Krok 2: Získajte zdrojový kód, nakonfigurujte ho a vytvorte
Teraz, keď je vytvorený esp-open-sdk, klonujte archív projektov.
klon git
Prejdite do adresára projektu, vytvorte priečinok.local a skopírujte vzorové nastavenia.
cd esp-rtos-testy
mkdir -p.local cp settings.example.mk.local/settings.mk
Teraz otvorte.local/settings.mk v ľubovoľnom textovom editore a zmeňte nasledujúce nastavenia:
- OPENSDK_ROOT: Absolútna cesta k umiestneniu súboru esp-open-sdk, ktorý ste vytvorili v kroku 1
- WIFI_SSID: SSID vašej siete WiFi
- WIFI_PASS: Heslo vašej siete WiFi
- PIXEL_COUNT: Počet pixelov na vašom páse LED WS2812B
Poznámka: Pretože tento projekt používa na napájanie LED diódy SPI a na ich napájanie používa NodeMCU 3.3v, pravdepodobne nebudete môcť ovládať viac ako ~ 60 diód LED.
Poznámka: Ostatné nastavenia nie je potrebné meniť, ale môžu byť podľa želania. Odporúča sa zachovať poradie priorít úloh. Čím nižšie číslo priority, tým nižšia priorita úlohy.
Teraz vytvorte projekt:
make -C examples/cpe439
Ak je všetko správne nastavené, malo by sa začať s kompiláciou. Na konci by ste mali vidieť:
Úspešne vytvorený súbor „firmware/cpe439.bin“
Sleduj ma
Krok 3: Pripojte hardvérové súčasti
Teraz, keď je kód zostavený, je čas pripojiť naše periférne zariadenia.
Najprv prilepte NodeMCU na nepájivú dosku a potom pomocou prepojovacích káblov vykonajte pripojenia podľa obrázku.
Je potrebné si uvedomiť niekoľko vecí:
- Dôležité: Dátový riadok WS2812B nie je obojsmerný. Ak sa pozriete pozorne na značky na strane LED pásika, mali by ste vidieť malé šípky smerujúce jedným smerom. Výstup z D7 NodeMCU musí smerovať do WS2812B rovnakým spôsobom ako ukazovateľ smeru, ktorý môžete vidieť na diagrame, ak sa pozriete pozorne.
- V závislosti od toho, s akým typom konektorov je váš WS2812B dodávaný, bude možno potrebné vykonať určité úpravy, aby sa zaistilo bezpečné pripojenie k doske. Aligátorové svorky môžete tiež použiť na ich prepojenie s prepojovacími káblami, ktoré možno prepojiť s chlebom.
- Kolíky MAX31820 majú menšiu rozteč a sú tenšie ako štandardné prepojky 0,1 "/2,54 mm, čo spôsobuje, že ich pripojenie je náročné. Jedným zo spôsobov, ako to obísť, je použiť prepojovacie vodiče medzi ženami a mužmi a zložiť plastové puzdro zo ženskej strany, potom pomocou klieští zvierajte konce prepojky tesne okolo menších kolíkov MAX31820.
Pred zapnutím NodeMCU dvakrát skontrolujte zapojenia, aby ste nepoškodili súčasti.
Krok 4: Blesk a spustenie
Bliká
Keď je pripojený všetok hardvér, zapojte NodeMCU a blikajte pomocou nasledujúceho príkazu:
urobiť flash -C príklady/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 je sériový kom, pod ktorým by sa mal NodeMCU zobrazovať. Ak máte pripojené ďalšie sériové zariadenia, môže sa zobraziť ako /dev /ttyUSB1 alebo iné číslo. Ak chcete skontrolovať, môžete tento príkaz spustiť dvakrát, raz s odpojeným NodeMCU a raz so zapojeným a porovnať rozdiel:
ls /dev /ttyUSB*
Ďalším problémom, s ktorým sa môžete stretnúť, je to, že nemáte povolenie na prístup k zariadeniu. Dva spôsoby, ako to vyriešiť, sú:
-
Pridajte svojho používateľa do skupiny dialógových okien:
sudo adduser $ (whoami) dialout
- chmod alebo chown zariadenia:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Uprednostňuje sa prvý spôsob, pretože je to trvalé riešenie.
Beh
Po úspešnom spustení príkazu flash sa zariadenie okamžite spustí a spustí spustený kompilovaný kód. Kedykoľvek po blikaní môžete spustiť nasledujúci príkaz na sledovanie sériového výstupu:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Aby ste ušetrili čas, môžete to pridať do svojho súboru ~/.bashrc:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..ktorý vám umožní jednoducho napísať "nodemcu" ako alias pre tento príkaz.
Ak je všetko nakonfigurované správne, váš LED pásik by sa mal rozsvietiť nazeleno a na sérii by ste mali vidieť WiFi pripojenie, získať IP adresu, pripojiť sa k MQTT a hlásiť, že sa tlačia údaje o teplote.
spojený s MyWiFiSSID, kanál 1dhcp klient … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maska: 255.255.255.0,:)
Krok 5: Interakcia
Za predpokladu, že je vaše zariadenie pripojené k WiFi a broker MQTT úspešne, budete môcť odosielať a prijímať údaje z NodeMCU pomocou MQTT. Ak ste to ešte neurobili, nainštalujte si balík klientov mosquitto:
sudo apt-get install mosquitto-clients
Teraz by ste mali mať možnosť používať programy mosquitto_pub a mosquitto_sub zo svojho shellu.
Prijímanie aktualizácií teploty
Ak chcete prijímať údaje o teplote, budeme sa chcieť prihlásiť pomocou príkazu mosquitto_sub k téme, na ktorú NodeMCU publikuje.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Mali by ste vidieť údaje o teplote (v stupňoch Celzia), prichádzajúce do terminálu.
+25.87+25.93+25.68…
Diaľkové nastavenie farby pásika LED
Na odosielanie hodnôt RGB na NodeMCU cez MQTT sa používa jednoduchý formát správy. Formát príkazu vyzerá takto:
r: RRRg: GGGb: BBB ~
Kde RRR, GGG, BBB zodpovedajú hodnotám RGB (0-255) farby, ktorú chcete odoslať. Na odoslanie nášho príkazu použijeme príkaz mosquitto_pub. Tu je niekoľko príkladov:
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 ~ ' # modrá
Ak chcete byť kreatívni, nájdite online nástroj na výber farieb, ako je tento, a upravte príkaz pomocou ľubovoľnej zvolenej hodnoty RGB.
Pozor
Témy v tomto projekte sú nastavené na /cpe439 /rgb a /cpe439 /temp na verejnom maklérovi MQTT, čo znamená, že nič nebráni tomu, aby niekto iný publikoval alebo sa prihlásil na odber rovnakých tém ako vy. Na vyskúšanie vecí je použitie verejného makléra v poriadku, ale pre serióznejšie projekty sa budete chcieť pripojiť k brokerovi s ochranou heslom alebo spustiť vlastného brokera na serveri.
Krok 6: Podrobnosti o implementácii
Onewire
ESP8266 má iba 1 jadro, takže dlhé blokovacie úlohy, ako napríklad čakanie 750 ms na teplotný snímač, aby vykonal meranie teploty, by normálne spôsobili, že WiFi nefunguje správne a môže dokonca dôjsť k zlyhaniu. V paradigme FreeRTOS voláte vTaskDelay (), aby ste zvládli tieto dlhé čakania, ale medzi čítaniami a zápismi je potrebných aj mnoho kratších čakaní, ktoré sú kratšie ako zaškrtnutie systému FreeRTOS, a preto sa im vTaskDelay () nedá vyhnúť. Aby sa to tiež dalo obísť, bol ovládač onewire v tomto projekte napísaný tak, aby bežal na stavovom počítači, ktorý je poháňaný hardvérovým časovačom ESP8266, ktorý môže spúšťať udalosti už od každých 10 mikrosekund, čo je zhoda okolností najkratšia doba. požadovaný čas medzi operáciami čítania/zápisu onewire. Väčšina ostatných implementácií na to používa blokovacie volanie delay_us () alebo podobné, ale ak neustále aktualizujete teplotu, všetky tieto oneskorenia sa začnú sčítavať, čo má za následok menej responzívnu aplikáciu. Zdroj pre túto časť kódu je umiestnený v priečinku extras/onewire.
WS2812B
ESP8266 nemá žiadne štandardné hardvérové možnosti pre PWM dostatočne rýchle na napájanie pásikov LED na frekvencii 800 kHz. Aby sme to obišli, tento projekt používa na napájanie LED diódy SPI MOSI. Úpravou taktovacej frekvencie SPI a zmenou užitočného zaťaženia SPI môžete dosiahnuť pomerne spoľahlivé ovládanie každej jednotlivej LED diódy. Táto metóda nie je bez chýb- v prvom prípade by mali byť LED diódy napájané zdrojom 5 V a na výstup pinu SPI by mal byť pridaný radič úrovne. Ale 3,3 V funguje. Za druhé, existujú chyby, ktoré sa vyskytujú v dôsledku nedokonalého načasovania pomocou metódy SPI. A po tretie, teraz nemôžete SPI používať na nič iné. Ďalšie informácie o tejto metóde nájdete tu a zdroj pre túto časť kódu sa nachádza v priečinku extras/ws2812.
Spoľahlivejšou metódou na pohon pásov LED je použitie i2s. Táto metóda má však veľa hackov špecifických pre čipy, takže sa zdá, že SPI je lepšia voľba ako učebné cvičenie.
Odporúča:
Snímač teploty a svetla: 8 krokov
Snímač teploty a svetla: Tento návod je určený pre základný snímač teploty a svetla. To je asi tak všetko
Snímač teploty IoT s ESP8266: 6 krokov (s obrázkami)
Snímač teploty IoT s ESP8266: Inšpirovalo ma vytvorenie teplotného snímača, ktorý môžem monitorovať cez wifi. Tento projekt nie je nový, ale páči sa mi myšlienka mať medzivrstvu z dôvodu zabezpečenia a nemusieť otvárať port vo svojom smerovači zariadeniu IoT. Základná myšlienka alokuje
SENZOR SUHU DENGAN LCD DAN LED (snímač teploty s LCD a LED): 6 krokov (s obrázkami)
SENZOR SUHU DENGAN LCD DAN LED (snímač teploty s LCD a LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda
LED snímač teploty: 5 krokov
LED teplotný senzor: V tomto projekte sa naučíte veľa rôznych vecí. Naučíte sa, ako aktivovať TMP a ako prevádzať jeho výstupy na Fahrenheit. Potom sa v závislosti od teploty rozsvietia rôzne svetlá. Na konci budete mať LED te
WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia: 9 krokov
WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia: Preamble Tento článok dokumentuje praktické vylepšenie a ďalší vývoj predchádzajúceho pokynu: „Pimping“vášho prvého zariadenia IoT WiFi. Časť 4: IoT, domáca automatizácia vrátane všetkých potrebných softvérových funkcií, ktoré umožňujú úspešný