Sadržaj:
- Korak 1: Stvaranje okruženja za izgradnju
- Korak 2: Nabavite izvorni kod, konfigurirajte i sastavite
- Korak 3: Povežite hardverske komponente
- Korak 4: Bljeskajte i pokrenite
- Korak 5: Interakcija
- Korak 6: Pojedinosti implementacije
Video: WiFi LED traka + senzor temperature s ESP8266: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Ovaj vodič opisuje korake za postavljanje ESP8266 i razgovor s senzorom temperature i LED trakom, a također može primati ulaz i slati izlaz s MQTT -om putem WiFi -a. Projekt je napravljen za tečaj koji je održan u Cal Poly San Luis Obispo u jesen 2016.- CPE 439: Ugrađeni sustavi u stvarnom vremenu. Opći cilj bio je pokazati lakoću stvaranja "stvari" povezane s internetom s jeftinim hardverom.
Potrebni materijal/oprema:
- NodeMCU ESP8266 ploča za razvoj
- WS2812B LED traka
- MAX31820 Senzor temperature
- Oglasna ploča
- 4,7K ohmski otpornik
- Otpor 220 oma
- kratkospojne žice
- mikro-USB kabel
- Računalo (ili VM) s linuxom (npr. Ubuntu)
Pretpostavke/preduvjeti:
- iskustvo s korištenjem alata naredbenog retka i instaliranjem paketa na distribuciju temeljenu na debianu
- osnovno razumijevanje sintakse Makefile
- spojne žice
Korak 1: Stvaranje okruženja za izgradnju
Za izradu projekta trebat će vam esp-open-sdk instaliran na vašem računalu. Slijedite vezu i pročitajte upute za izradu. Ukratko, radit ćete neke sudo apt-get naredbe za instaliranje ovisnosti, git clone --recursive za kloniranje/preuzimanje esp-open-sdk i na kraju naredbu make za izgradnju esp-open-sdk.
Gledaj me
Korak 2: Nabavite izvorni kod, konfigurirajte i sastavite
Sada kada je esp-open-sdk izgrađen, klonirajte spremište projekata.
git klon
Promijenite se u direktorij projekta, stvorite.local mapu i kopirajte primjere postavki.
cd esp-rtos-testovi
mkdir -p.lokalne kp postavke.primjer.mk.lokalno/postavke.mk
Sada otvorite.local/settings.mk s bilo kojim uređivačem teksta i promijenite sljedeće postavke:
- OPENSDK_ROOT: Apsolutni put za lokaciju esp-open-sdk koji ste izgradili u 1. koraku
- WIFI_SSID: SSID vaše WiFi mreže
- WIFI_PASS: Zaporka vaše WiFi mreže
- PIXEL_COUNT: Broj piksela na LED traci WS2812B
Napomena: Budući da ovaj projekt koristi SPI za pogon LED -a, a za napajanje koristi NodeMCU 3.3v, vjerojatno nećete moći pogoniti više od ~ 60 LED -a.
Napomena: Ostale postavke nije potrebno mijenjati, ali se po želji mogu promijeniti. Preporuča se držati redoslijed prioriteta zadataka. Što je manji broj prioriteta, niži je prioritet zadatka.
Sada izgradite projekt:
make -C primjeri/cpe439
Ako je sve ispravno postavljeno, trebalo bi početi s sastavljanjem. Na kraju biste trebali vidjeti:
Uspješno izrađen 'firmware/cpe439.bin'
Gledaj me
Korak 3: Povežite hardverske komponente
Sada kada je kôd sastavljen, vrijeme je da povežemo naše periferne uređaje.
Najprije zalijepite NodeMCU na matičnu ploču, a zatim upotrijebite kratkospojne žice za povezivanje kako je prikazano na dijagramu.
Nekoliko stvari kojih morate biti svjesni:
- Važno: Podatkovna linija WS2812B nije dvosmjerna. Ako pomno pogledate oznake na LED strani trake, trebali biste vidjeti male strelice usmjerene u jednom smjeru. Izlaz iz D7 NodeMCU -a mora biti usmjeren u WS2812B na isti način kao i oznaka smjera, što možete vidjeti na dijagramu ako pažljivo pogledate.
- Ovisno o tome s kakvim priključcima dolazi vaš WS2812B, možda ćete morati napraviti neke izmjene kako biste ih sigurno spojili na matičnu ploču. Također možete upotrijebiti kopče od aligatora za njihovo spajanje na kratkospojne kabele koji se mogu upotrijebiti za matičnu ploču.
- Igle MAX31820 imaju manji nagib i tanje su od standardnih 0,1 "/2,54 mm kratkospojnika, što ih čini teškim za spajanje. Jedan od načina za to je korištenje žica kratkospojnika" ženski na muški ", skinuti plastično kućište sa ženske strane, zatim upotrijebite kliješta da čvrsto uvijete krajeve ženskih kratkospojnika oko manjih klinova MAX31820.
Prije uključivanja NodeMCU-a dvaput provjerite veze kako ne biste oštetili komponente.
Korak 4: Bljeskajte i pokrenite
Treperi
Kad je sav hardver spojen, priključite svoj NodeMCU i bljesnite sljedećom naredbom:
napravi flash -C primjere/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 je serijski com ispod kojeg bi se trebao pojaviti NodeMCU. Ako imate povezane druge serijske uređaje, može se prikazati kao /dev /ttyUSB1 ili neki drugi broj. Za provjeru možete pokrenuti ovu naredbu dva puta, jednom s isključenim NodeMCU -om, a jednom s uključenim, i usporedite razliku:
ls /dev /ttyUSB*
Još jedan problem na koji možete naići je nedostatak dozvole za pristup uređaju. Dva su načina da to popravite:
-
Dodajte svog korisnika u grupu za razgovor:
sudo adduser $ (whoami) dijalog
- chmod ili napunite uređaj:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Poželjna je prva metoda jer je trajno rješenje.
Trčanje
Nakon uspješnog pokretanja naredbe flash, uređaj će se odmah pokrenuti i početi izvoditi prevedeni kod. U bilo kojem trenutku nakon bljeskanja možete pokrenuti sljedeću naredbu za gledanje serijskog izlaza:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Da biste uštedjeli vrijeme, ovo možete dodati u svoju datoteku ~/.bashrc:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..koji vam omogućuje da jednostavno upišete "nodemcu" kao pseudonim za tu naredbu.
Ako je sve ispravno konfigurirano, vaša LED traka trebala bi zasvijetliti zeleno, a na serijskom dijelu trebali biste vidjeti WiFi vezu, dobiti IP adresu, spojiti se na MQTT i poslati poruku da se podaci o temperaturi istiskuju.
povezan s MyWiFiSSID -om, pokretanje klijenta 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 okRequest temp OKwifi_task: status = 5xQueTeVee4: (Ponovno) povezivanje s poslužiteljem MQTT test.mosquitto.org… xQueueReceive +25,50xQueueSend ok doneSend MQTT connect… MQTTv311donexQueueReceive +25,56 xQueueSend ok
Korak 5: Interakcija
Pod pretpostavkom da je vaš uređaj spojen na WiFi i posrednik MQTT uspješno, moći ćete slati i primati podatke iz NodeMCU -a s MQTT -om. Ako već niste, instalirajte paket klijenata komaraca:
sudo apt-get install mosquitto-clients
Sada biste trebali moći koristiti programe mosquitto_pub i mosquitto_sub iz svoje ljuske.
Primanje ažuriranja temperature
Za primanje podataka o temperaturi htjet ćemo upotrijebiti naredbu mosquitto_sub za pretplatu na temu u kojoj NodeMCU objavljuje.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Trebali biste vidjeti podatke o temperaturi (u Celzijusima) koji stižu na terminal.
+25.87+25.93+25.68…
Daljinsko podešavanje boje LED trake
Jednostavan format poruke koristi se za slanje RGB vrijednosti NodeMCU -u preko MQTT -a. Format naredbe izgleda ovako:
r: RRRg: GGGb: BBB ~
Tamo gdje RRR, GGG, BBB odgovaraju RGB vrijednostima (0-255) boje koju želite poslati. Za slanje naše naredbe upotrijebit ćemo naredbu mosquitto_pub. Evo nekoliko primjera:
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 ~ ' # plavo
Ako želite biti kreativni, pronađite na internetu birač boja poput ovog i uredite naredbu s bilo kojom RGB vrijednošću koju odaberete.
Pazi
Teme u ovom projektu postavljene su na /cpe439 /rgb i /cpe439 /temp na javnom MQTT posredniku, što znači da ne postoji ništa što sprječava nekoga drugog da objavi ili se pretplati na iste teme kao i vi. Za isprobavanje je dobro koristiti javnog posrednika, ali za ozbiljnije projekte htjet ćete se povezati s posrednikom sa zaštitom lozinkom ili pokrenuti vlastitog brokera na poslužitelju.
Korak 6: Pojedinosti implementacije
Onewire
ESP8266 ima samo 1 jezgru, pa bi tako dugi zadaci blokiranja, poput čekanja 750 ms da temperaturni senzor izvrši mjerenje temperature obično doveli do toga da WiFi ne radi dobro, pa čak i do pada. U paradigmi FreeRTOS pozivate vTaskDelay () za rješavanje ovih dugih čekanja, no potrebno je i mnogo kraćih čekanja između čitanja i pisanja koja su kraća od oznake sustava FreeRTOS, pa se stoga ne mogu izbjeći vTaskDelay (). Da bi se to također zaobišlo, upravljački program onewire u ovom projektu napisan je da radi s državnog stroja koji pokreće hardverski mjerač vremena ESP8266, koji može pokrenuti događaje na svakih 10 mikro-sekundi, što je najkraće potrebno vrijeme između operacija čitanja/pisanja jedne žice. Većina drugih implementacija koristi blokirajući poziv to delay_us () ili slično za rješavanje ovoga, ali ako stalno poduzimate ažuriranja temperature, sva se kašnjenja počinju zbrajati, što rezultira manje osjetljivom aplikacijom. Izvor za ovaj dio koda nalazi se u mapi extras/onewire.
WS2812B
ESP8266 nema standardnih hardverskih opcija za PWM dovoljno brzo za pogon LED traka na 800KHz. Da bi se to zaobišlo, ovaj projekt koristi SPI MOSI pin za pogon LED dioda. Podešavanjem takta SPI i promjenom korisnog opterećenja SPI možete postići prilično pouzdanu kontrolu svake pojedinačne LED diode. Ova metoda nije bez nedostataka- za jednu bi se LED diode trebale napajati s izvorom od 5 V, a na izlaz SPI pina treba dodati mjenjač razine. Ali 3.3V radi. Drugo, postoje greške koje se javljaju zbog nesavršenog vremena korištenjem SPI metode. I treće, sada ne možete koristiti SPI ni za što drugo. Dodatnu pozadinu ove metode možete pronaći ovdje, a izvor za ovaj dio koda nalazi se u mapi extras/ws2812.
Pouzdanija metoda za pogon LED traka je uporaba i2s. Međutim, ova metoda ima puno hakova specifičnih za čip, pa se činilo da je SPI bolji izbor kao vježba za učenje.
Preporučeni:
Senzor temperature i roštilja na ESP8266 s zaslonom: 5 koraka (sa slikama)
Senzor temperature i roštilja na ESP8266 s zaslonom: U ovom uputstvu pokazat ću vam kako napraviti vlastitu verziju alata za roštilj koji mjeri trenutnu temperaturu u vašem roštilju i uključuje ventilator kako bi ga po potrebi upalio. Osim toga, postoji i senzor za temperaturu jezgre mesa koji je priključen
Glazbeno reaktivna višebojna LED svjetla - Arduino senzor za detekciju zvuka - RGB LED traka: 4 koraka
Glazbeno reaktivna višebojna LED svjetla | Arduino senzor za detekciju zvuka | RGB LED traka: Projekt LED svjetla u više boja koji reagira na glazbu. U ovom projektu korištena je jednostavna 5050 RGB LED traka (ne adresabilna LED WS2812), Arduino senzor za otkrivanje zvuka i 12V adapter
Arduino senzor temperature i vlažnosti na solarni pogon kao 433mhz Oregonski senzor: 6 koraka
Arduino senzor temperature i vlažnosti na solarni pogon kao 433mhz Oregonski senzor: Ovo je konstrukcija senzora temperature i vlažnosti na solarnu energiju. Senzor emulira 433mhz Oregonski senzor i vidljiv je na Telldus Net gatewayu. Što vam je potrebno: 1x " 10-LED Senzor pokreta solarne energije " s Ebaya. Provjerite piše li baterija od 3,7 V
Neopixel LED traka reagira na Myoware senzor mišića: 6 koraka
Neopixel LED dioda reagira na Myoware senzor mišića: Cilj je instalirati mišićni senzor uz pomoć Arduina i obraditi dolazne podatke s Adafruit IO -om te dohvatiti izlaz pomoću okidača tako da svjetlo iz jedne minute postane bijelo u crveno. je senzor mišića senzor mišića
Arduino napajanje, senzor kontrolirano blijeđenje LED svjetlosnih traka: 6 koraka (sa slikama)
Arduino napajane LED senzorske svjetlosne trake koje blijede: Nedavno sam ažurirao svoju kuhinju i znao sam da će osvjetljenje ‘podići’ izgled ormara. Otišao sam na 'True Handless' pa imam prazninu ispod radne površine, kao i ormarić za sjedenje, ispod ormara i na vrhu ormara koji su dostupni i