Kazalo:
- 1. korak: Ustvarjanje gradbenega okolja
- 2. korak: Pridobite izvorno kodo, konfigurirajte in sestavite
- 3. korak: Povežite komponente strojne opreme
- 4. korak: Zaženite in zaženite
- 5. korak: Interakcija
- 6. korak: Podrobnosti o izvajanju
Video: WiFi LED trak + temperaturni senzor z ESP8266: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
V tej vadnici so opisani koraki za nastavitev ESP8266 in pogovor s temperaturnim senzorjem in LED trakom, hkrati pa lahko sprejemate vhodne in pošiljate izhodne podatke z MQTT prek WiFi. Projekt je bil narejen za tečaj na Cal Poly San Luis Obispo jeseni 2016- CPE 439: Vgrajeni sistemi v realnem času. Splošni cilj je bil dokazati enostavnost ustvarjanja "stvari", povezane z internetom, s poceni strojno opremo.
Potrebni material/oprema:
- Razvojna plošča NodeMCU ESP8266
- WS2812B LED trak
- MAX31820 Temperaturno tipalo
- Ogledna plošča
- 4,7K ohmski upor
- 220 ohmski upor
- mostične žice
- mikro USB kabel
- PC (ali VM) z Linuxom (npr. Ubuntu)
Predpostavke/predpogoji:
- izkušnje z uporabo orodij ukazne vrstice in nameščanjem paketov v distribucijski sistem, ki temelji na debianu
- osnovno razumevanje sintakse Makefile
- povezovalne žice
1. korak: Ustvarjanje gradbenega okolja
Za izdelavo projekta potrebujete esp-open-sdk, nameščen na vašem računalniku. Sledite povezavi in preberite navodila za izdelavo. Skratka, naredili boste nekaj ukazov sudo apt-get za namestitev odvisnosti, git clone --recursive za kloniranje/prenos esp-open-sdk in končno ukaz make za izdelavo esp-open-sdk.
Glej me
2. korak: Pridobite izvorno kodo, konfigurirajte in sestavite
Zdaj, ko je esp-open-sdk zgrajen, klonirajte skladišče projektov.
git clone
Preklopite v imenik projekta, ustvarite mapo.local in kopirajte vzorčne nastavitve.
cd esp-rtos-testi
mkdir -p.local cp settings.example.mk.local/settings.mk
Zdaj odprite.local/settings.mk s katerim koli urejevalnikom besedila in spremenite naslednje nastavitve:
- OPENSDK_ROOT: Absolutna pot za lokacijo esp-open-sdk, ki ste jo zgradili v 1. koraku
- WIFI_SSID: SSID vašega omrežja WiFi
- WIFI_PASS: Geslo vašega omrežja WiFi
- PIXEL_COUNT: Število slikovnih pik na LED traku WS2812B
Opomba: Ker ta projekt uporablja LED za pogon LED in za napajanje uporablja NodeMCU 3.3v, verjetno ne boste mogli poganjati več kot ~ 60 LED.
Opomba: drugih nastavitev ni treba spreminjati, lahko pa jih po želji spremenite. Priporočljivo je, da sledite vrstnemu redu prednostnih nalog. Nižja kot je prioritetna številka, nižja je prioriteta naloge.
Zdaj zgradite projekt:
make -C examples/cpe439
Če je vse pravilno nastavljeno, je treba začeti s sestavljanjem. Na koncu bi morali videti:
Uspešno ustvarjen 'firmware/cpe439.bin'
Glej me
3. korak: Povežite komponente strojne opreme
Zdaj, ko je koda sestavljena, je čas, da povežemo naše zunanje naprave.
Najprej prilepite NodeMCU na ploščo, nato pa uporabite mostične žice za povezavo, kot je prikazano na diagramu.
Nekaj stvari, ki se jih morate zavedati:
- Pomembno: Podatkovna linija WS2812B ni dvosmerna. Če natančno pogledate oznake na LED strani traku, bi morali videti majhne puščice, ki kažejo eno smer. Izhod iz D7 NodeMCU mora biti usmerjen v WS2812B enako kot smerna oznaka, ki jo lahko vidite na diagramu, če natančno pogledate.
- Odvisno od vrste priključkov, s katerimi je opremljen vaš WS2812B, boste morda morali narediti nekaj sprememb, da se bodo varno povezali v ploščo. Uporabite lahko tudi sponke iz aligatorja, da jih povežete s skakalnimi kabli, ki omogočajo izdelavo plošč.
- Zatiči MAX31820 imajo manjši naklon in so tanjši od standardnih 0,1 "/2,54 mm mostičkov, zato jih je težko povezati. Eden od načinov za to je uporaba žic za moške od ženskega do moškega, odstranite plastično ohišje z ženske strani, nato z nekaj klešč tesno stisnite konice skakalcev okoli manjših zatičev MAX31820.
Preden vklopite NodeMCU, dvakrat preverite povezave, da ne poškodujete komponent.
4. korak: Zaženite in zaženite
Utripa
Ko je vsa strojna oprema povezana, priključite NodeMCU in utripajte z naslednjim ukazom:
make flash -C examples/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 je serijski com, pod katerim bi se moral prikazati NodeMCU. Če imate priključene druge serijske naprave, se lahko prikaže kot /dev /ttyUSB1 ali katera druga številka. Če želite preveriti, lahko ta ukaz izvedete dvakrat, enkrat z izklopljenim NodeMCU in enkrat z vklopljenim ter primerjajte razliko:
ls /dev /ttyUSB*
Druga težava, na katero lahko naletite, je, da nimate dovoljenja za dostop do naprave. To lahko popravite na dva načina:
-
Dodajte svojega uporabnika v skupino za pogovor:
sudo adduser $ (whoami) pogovor
- chmod ali chown napravo:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Prva metoda je prednostna, saj je trajna rešitev.
Tek
Po uspešnem zagonu ukaza flash se bo naprava takoj zagnala in začela izvajati prevedeno kodo. Kadar koli po utripanju lahko za ogled serijskega izhoda zaženete naslednji ukaz:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Če želite prihraniti čas, lahko to dodate v datoteko ~/.bashrc:
vzdevek nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
.., ki vam omogoča, da preprosto vnesete "nodemcu" kot vzdevek za ta ukaz.
Če je vse pravilno konfigurirano, mora vaš LED trak zasvetleti zeleno, pri serijskem prikazovanju pa morate videti povezavo WiFi, dobiti naslov IP, vzpostaviti povezavo z MQTT in sporočati, da se podatki o temperaturi izrivajo.
povezan z odjemalcem MyWiFiSSID, odjemalec kanala 1dhcp … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maska: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init ok Zahteva temp OKwifi_task: status = 5xQueteeve4: (Ponovna povezava s strežnikom MQTT test.mosquitto.org… xQueueReceive +25,50xQueueSend ok doneSend MQTT connect… MQTTv311donexQueueReceive +25,56 xQueueSend ok
5. korak: Interakcija
Ob predpostavki, da je vaša naprava povezana z WiFi in posrednik MQTT uspešno, boste lahko pošiljali in prejemali podatke iz NodeMCU z MQTT. Če še niste, namestite paket odjemalcev mosquitto:
sudo apt-get install mosquitto-clients
Zdaj bi morali uporabljati programe mosquitto_pub in mosquitto_sub iz svoje lupine.
Prejemanje posodobitev temperature
Za prejemanje podatkov o temperaturi se bomo želeli z ukazom mosquitto_sub naročiti na temo, v kateri objavlja NodeMCU.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Videti bi morali podatke o temperaturi (v stopinjah Celzija), ki prispejo v terminal.
+25.87+25.93+25.68…
Barva LED traku na daljavo
Za pošiljanje vrednosti RGB v NodeMCU prek MQTT se uporablja preprosta oblika sporočila. Oblika ukaza je videti tako:
r: RRRg: GGGb: BBB ~
Kjer RRR, GGG, BBB ustrezajo vrednostim RGB (0-255) barve, ki jo želite poslati. Za pošiljanje našega ukaza bomo uporabili ukaz mosquitto_pub. Tu je nekaj primerov:
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 ~ ' # modra
Če želite postati ustvarjalni, poiščite izbirnik barv na spletu, kot je ta, in uredite ukaz s poljubno vrednostjo RGB.
Pazi
Teme v tem projektu so nastavljene na /cpe439 /rgb in /cpe439 /temp v javnem posredniku MQTT, kar pomeni, da ničesar ne preprečuje objavi ali naročanju na iste teme kot vi. Če poskusite stvari, je uporaba javnega posrednika v redu, za resnejše projekte pa se boste želeli povezati z posrednikom z zaščito z geslom ali pa na strežniku zagnati svojega posrednika.
6. korak: Podrobnosti o izvajanju
Onewire
ESP8266 ima samo eno jedro, tako dolge, blokirajoče naloge, kot je čakanje 750 ms, da temperaturni senzor izvede meritev temperature, bi običajno povzročilo, da WiFi ne deluje dobro, in morda celo zrušilo. V paradigmi FreeRTOS pokličete vTaskDelay () za obravnavo teh dolgih čakanj, vendar je med branji in pisanjem potrebnih tudi veliko krajših čakanj, ki so krajša od sistemske kljukice FreeRTOS, zato se jim z vTaskDelay () ni mogoče izogniti. Da bi se jih tudi izognili, je bil gonilnik onewire v tem projektu napisan tako, da je odtekel stanje-stroj, ki ga poganja strojni časovnik ESP8266, ki lahko sproži dogodke že vsakih 10 mikro-sekund, kar je najkrajše potreben čas med operacijami branja/pisanja ene žice. Večina drugih izvedb uporablja blokirni klic za delay_us () ali podobno za to, če pa nenehno posodabljate temperaturo, se vse te zamude začnejo seštevati, kar povzroči manj odzivno aplikacijo. Vir za ta del kode se nahaja v mapi extras/onewire.
WS2812B
ESP8266 nima standardnih strojnih možnosti za PWM, ki bi dovolj hitro poganjale LED trakove pri 800KHz. Da bi se temu izognili, ta projekt uporablja zatič LED za vklop SPI MOSI. S prilagajanjem časovne frekvence SPI in spreminjanjem obremenitve SPI lahko dosežete dokaj zanesljiv nadzor nad vsako posamezno LED. Ta metoda ni brez napak- za eno je treba LED diode napajati z virom 5 V, na izhodu zatiča SPI pa je treba dodati menjalnik nivoja. Toda 3.3V deluje. Drugič, obstajajo napake, ki nastanejo zaradi nepopolnega časovnega razporeda z uporabo metode SPI. Tretjič, zdaj SPI ne morete uporabljati za nič drugega. Dodatno ozadje te metode najdete tukaj, vir tega dela kode pa v mapi extras/ws2812.
Zanesljivejša metoda za zavijanje LED trakov je uporaba i2s. Vendar ima ta metoda veliko hakov, značilnih za čipe, zato se je zdelo, da je SPI boljša izbira kot učna vaja.
Priporočena:
Temperaturni senzor TMP36 in LCD zaslon z uporabo Arduina (Tinkercad): 7 korakov
TMP36 Temperaturni senzor in LCD zaslon z uporabo Arduina (Tinkercad): Pozdravljeni vsi! Smo študentje Univerze Tun Hussein Onn Malaysia (UTHM), ki izvajajo projekt, s katerim dokazujejo, kako lahko simuliramo temperaturni senzor, LCD in Arduino z uporabo Tinkercada kot del našega učnega načrta za UQD0801 (Robocon 1) (
Pametni temperaturni senzor: 6 korakov
Pametni temperaturni senzor: Moj nedavni poskus z vodotesno temperaturno sondo DS18B20 in ESP-01. Zamisel je bila, da bi oblikovali takšno napravo, ki bi lahko spremljala in beležila temperaturo mojega rezervoarja za ribe z 109 galonami, prav tako pa lahko preverjam temperaturo iz katerega koli dela sveta. S
Temperaturni senzor (Arduino): 8 korakov
Senzor temperature (Arduino): Ta projekt je kot nalašč za ljubitelje vmesnih in začetnih hobijev. Nastavitev je zelo preprosta. Obstaja čip z imenom LM35 (povezava za dodatno razlago), ki Arduinu omogoča določanje temperature okolice
IoT temperaturni senzor z ESP8266: 6 korakov (s slikami)
IoT Temperature Sensor z ESP8266: Navdihnilo me je, da sem ustvaril temperaturni senzor, ki ga lahko spremljam prek WiFi. Ta projekt ni nov, vendar mi je všeč zamisel o vmesnem sloju za varnost in ne da bi morali odpreti vrata v usmerjevalniku do naprave IoT. Osnovna ideja bo
LED temperaturni senzor: 5 korakov
LED temperaturni senzor: V tem projektu se boste naučili veliko različnih stvari. Naučili se boste, kako aktivirati TMP in kako pretvoriti njegove izhode v Fahrenheit. Nato se bodo glede na temperaturo prižgale različne luči. Na koncu boste imeli LED te