Turinys:
- 1 veiksmas: kūrimo aplinkos kūrimas
- 2 veiksmas: gaukite šaltinio kodą, sukonfigūruokite ir sukurkite
- 3 veiksmas: prijunkite aparatūros komponentus
- 4 žingsnis: „Flash“ir „Run“
- 5 žingsnis: sąveika
- 6 veiksmas: išsami diegimo informacija
Video: „WiFi“LED juostelė + temperatūros jutiklis su ESP8266: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje pamokoje aprašomi žingsniai, kaip nustatyti ESP8266 ir priversti jį kalbėti tiek su temperatūros jutikliu, tiek su LED juosta, taip pat galima priimti įvestį ir siųsti išvestį naudojant MQTT per „WiFi“. Projektas buvo sukurtas kursui, kuris vyko 2016 m. Rudenį „Cal Poly San Luis Obispo“- CPE 439: realaus laiko įterptosios sistemos. Bendras tikslas buvo pademonstruoti, kaip lengva sukurti prie interneto prijungtą „daiktą“naudojant pigią aparatūrą.
Reikalingos medžiagos/įranga:
- „NodeMCU ESP8266 dev“plokštė
- WS2812B LED juostelė
- MAX31820 Temperatūros jutiklis
- Bandomoji Lenta
- 4,7 K omų rezistorius
- 220 omų rezistorius
- jungiamieji laidai
- mikro-usb kabelis
- Kompiuteris (arba VM), kuriame veikia „Linux“(pvz., „Ubuntu“)
Prielaidos/prielaidos:
- patirties naudojant komandinės eilutės įrankius ir diegiant paketus „debian“pagrindu veikiančiame distro
- pagrindinis „Makefile“sintaksės supratimas
- jungiamieji laidai
1 veiksmas: kūrimo aplinkos kūrimas
Norėdami sukurti projektą, kompiuteryje turėsite įdiegti esp-open-sdk. Sekite nuorodą ir perskaitykite kūrimo instrukcijas. Trumpai tariant, jūs atliksite keletą sudo apt-get komandų, kad įdiegtumėte priklausomybes, git klonas-rekursyvus, kad klonuotumėte/atsisiųstumėte esp-open-sdk, ir galiausiai atlikite komandą make sukurti esp-open-sdk.
Stebėk mane
2 veiksmas: gaukite šaltinio kodą, sukonfigūruokite ir sukurkite
Dabar, kai esp-open-sdk yra sukurtas, klonuokite projekto saugyklą.
git klonas
Pakeiskite į projekto katalogą, sukurkite.local aplanką ir nukopijuokite pavyzdinius nustatymus.
cd esp-rtos testai
mkdir -p.local cp settings.example.mk.local/settings.mk
Dabar bet kuriuo teksto redaktoriumi atidarykite.local/settings.mk ir pakeiskite šiuos nustatymus:
- OPENSDK_ROOT: absoliutus esp-open-sdk vietos, kurią sukūrėte atlikdami 1 veiksmą, kelias
- WIFI_SSID: jūsų „WiFi“tinklo SSID
- WIFI_PASS: „WiFi“tinklo slaptažodis
- PIXEL_COUNT: WS2812B LED juostos pikselių skaičius
Pastaba: kadangi šiame projekte šviesos diodams valdyti naudojamas SPI, o jiems tiekti - „NodeMCU 3.3v“, greičiausiai negalėsite įvesti daugiau nei ~ 60 šviesos diodų.
Pastaba: kitų nustatymų keisti nereikia, tačiau, jei pageidaujama, juos galima pakeisti. Rekomenduojama laikytis užduočių prioritetų tvarkos. Kuo mažesnis prioriteto skaičius, tuo mažesnis užduoties prioritetas.
Dabar kurkite projektą:
padaryti -C pavyzdžius/cpe439
Jei viskas teisingai nustatyta, ji turėtų pradėti kompiliuoti. Pabaigoje turėtumėte pamatyti:
Sėkmingai sukurta „firmware/cpe439.bin“
Stebėk mane
3 veiksmas: prijunkite aparatūros komponentus
Dabar, kai kodas yra sudarytas, atėjo laikas prijungti mūsų išorinius įrenginius.
Pirmiausia priklijuokite „NodeMCU“prie duonos lentos, tada naudokite jungiamuosius laidus, kad sujungtumėte, kaip parodyta diagramoje.
Pora dalykų, kuriuos reikia žinoti:
- Svarbu: WS2812B duomenų linija nėra dvikryptė. Jei atidžiai pažvelgsite į žymes juostos šviesos diodų pusėje, turėtumėte pamatyti mažas rodykles, nukreiptas viena kryptimi. „NodeMCU“D7 išvestis turi būti nukreipta į WS2812B taip pat, kaip ir krypties žymeklis, kurį galite pamatyti diagramoje, jei atidžiai pažvelgsite.
- Priklausomai nuo to, kokios jungtys yra jūsų „WS2812B“, gali tekti atlikti tam tikrus pakeitimus, kad jos būtų saugiai prijungtos prie duonos lentos. Taip pat galite naudoti aligatoriaus spaustukus, kad prijungtumėte juos prie maitinimo plokštės jungiamųjų kabelių.
- MAX31820 kaiščiai turi mažesnį žingsnį ir yra plonesni nei standartiniai 0,1 colio/2,54 mm džemperiai, todėl juos sunku prijungti. Vienas iš būdų yra naudoti trumpiklius nuo moterų iki vyrų, nuimti plastikinį dėklą iš patelės pusės, tada kai kuriomis replėmis sandariai užveržkite megztinio galus aplink mažesnius MAX31820 kaiščius.
Prieš įjungdami „NodeMCU“dar kartą patikrinkite jungtis, kad nepažeistumėte komponentų.
4 žingsnis: „Flash“ir „Run“
Mirksi
Prijungę visą aparatūrą, prijunkite „NodeMCU“ir mirksėkite naudodami šią komandą:
padaryti „flash“pavyzdžius/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 yra serijinis komas, kuriame turėtų būti rodomas „NodeMCU“. Jei prijungti kiti serijiniai įrenginiai, jis gali būti rodomas kaip /dev /ttyUSB1 arba kitas numeris. Norėdami patikrinti, galite paleisti šią komandą du kartus, vieną kartą atjungę „NodeMCU“ir vieną kartą prijungę, ir palyginkite skirtumą:
ls /dev /ttyUSB*
Kita problema, su kuria galite susidurti, yra leidimo pasiekti įrenginį neturėjimas. Du būdai tai išspręsti:
-
Pridėkite savo vartotoją prie skambinimo grupės:
sudo adduser $ (whoami) dialout
- chmod arba pasirinkite įrenginį:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Pirmasis metodas yra pageidautinas, nes tai yra nuolatinis sprendimas.
Bėgimas
Sėkmingai paleidus „flash“komandą, įrenginys iškart paleidžiamas ir pradeda vykdyti surinktą kodą. Bet kuriuo metu po mirksėjimo galite paleisti šią komandą, norėdami žiūrėti serijinę išvestį:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Norėdami sutaupyti laiko, galite jį pridėti prie failo ~/.bashrc:
pseudonimas nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF -Exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..kuris leidžia tiesiog įvesti „nodemcu“kaip tos komandos slapyvardį.
Jei viskas sukonfigūruota teisingai, jūsų šviesos diodų juostelė turėtų užsidegti žalia spalva, o serijoje turėtumėte matyti „WiFi“ryšį, gauti IP adresą, prisijungti prie MQTT ir gauti pranešimus apie temperatūros duomenis.
prijungtas prie „MyWiFiSSID“, kanalo 1dhcp klientas pradėti… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueueQiue: (Iš naujo) prisijungiama prie MQTT serverio test.mosquitto.org… xQueueRecept +25.50xQueueSend gerai padarytaSiųsti MQTT connect… MQTTv311donexQueueRecept +25.56 xQueueSend
5 žingsnis: sąveika
Darant prielaidą, kad jūsų įrenginys sėkmingai prijungtas prie „WiFi“ir MQTT brokerio, galėsite siųsti ir gauti duomenis iš „NodeMCU“naudodami MQTT. Jei to dar nepadarėte, įdiekite „Mosquitto“klientų paketą:
sudo apt-get install mosquitto-customers
Dabar turėtumėte turėti galimybę naudoti „mosquitto_pub“ir „mosquitto_sub“programas iš savo apvalkalo.
Gaunami temperatūros atnaujinimai
Norėdami gauti temperatūros duomenis, norime naudoti komandą mosquitto_sub, norėdami užsiprenumeruoti temą, kurią skelbia „NodeMCU“.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Atvykę į terminalą turėtumėte matyti temperatūros duomenis (Celsijaus laipsniais).
+25.87+25.93+25.68…
LED juostos spalvos nustatymas nuotoliniu būdu
Paprastas pranešimo formatas naudojamas RGB reikšmėms siųsti į „NodeMCU“per MQTT. Komandos formatas atrodo taip:
r: RRRg: GGGb: BBB ~
Kur RRR, GGG, BBB atitinka norimos siųsti spalvos RGB reikšmes (0–255). Norėdami išsiųsti komandą, naudosime komandą „mosquitto_pub“. Štai keletas pavyzdžių:
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 ~ ' # mėlyna
Jei norite būti kūrybingi, susiraskite internete spalvų rinkiklį, kaip šis, ir redaguokite komandą naudodami bet kurią pasirinktą RGB reikšmę.
Saugokis
Šio projekto temos yra nustatytos į /cpe439 /rgb ir /cpe439 /temp viešajame MQTT brokeryje, o tai reiškia, kad niekas netrukdo kitam skelbti ar užsiprenumeruoti tų pačių temų kaip jūs. Jei norite išbandyti dalykus, gerai naudoti viešąjį tarpininką, tačiau rimtesniems projektams norėsite prisijungti prie brokerio su slaptažodžio apsauga arba paleisti savo tarpininką serveryje.
6 veiksmas: išsami diegimo informacija
Onewire
ESP8266 turi tik 1 branduolį, todėl ilgai trunkančios blokavimo užduotys, tokios kaip laukimas 750 ms, kol temperatūros jutiklis atliks temperatūros matavimą, paprastai „WiFi“neveiks gerai, o gal net ir suges. Pagal „FreeRTOS“paradigmą skambinate „vTaskDelay“(), kad galėtumėte tvarkyti šiuos ilgus laukimus, tačiau taip pat reikia daug trumpesnių laukimų tarp skaitymų ir rašymų, kurie yra trumpesni už „FreeRTOS“sistemos varnelę, todėl jų negalima išvengti naudojant „vTaskDelay“(). Kad tai taip pat būtų išvengta, šio projekto „onewire“tvarkyklė buvo parašyta, kad paleistų būsenos mašiną, kurią varo ESP8266 aparatūros laikmatis, kuris gali sukelti įvykius net kas 10 mikrosekundžių, o tai yra trumpiausia reikiamas laikas tarp vieno laido skaitymo/rašymo operacijų. Dauguma kitų diegimų naudoja blokuojantį skambutį į delay_us () arba panašų, kad tai būtų galima išspręsti, tačiau jei nuolat atnaujinate temperatūrą, visi šie vėlavimai pradeda kauptis, todėl programa reaguoja mažiau. Šios kodo dalies šaltinis yra aplanke „extras/onewire“.
WS2812B
ESP8266 neturi jokių standartinių aparatinės įrangos parinkčių, skirtų PWM pakankamai greitai, kad būtų galima valdyti 800KHz šviesos diodų juosteles. Norėdami tai išspręsti, šis projektas naudoja SPI MOSI kaištį šviesos diodams valdyti. Sureguliuodami SPI laikrodžio dažnį ir pakeisdami SPI naudingąją apkrovą, galite pasiekti gana patikimą kiekvieno atskiro šviesos diodo valdymą. Šis metodas nėra be trūkumų- vienam šviesos diodai turėtų būti maitinami 5 V šaltiniu, o prie SPI kaiščio išvesties reikia pridėti lygio perjungiklį. Bet 3.3V veikia. Antra, yra trūkumų, atsirandančių dėl netobulo laiko naudojant SPI metodą. Ir trečia, dabar jūs negalite naudoti SPI niekam kitam. Daugiau informacijos apie šį metodą rasite čia, o šios kodo dalies šaltinis yra aplanke „extras/ws2812“.
Patikimesnis LED juostų varymo būdas yra naudoti „i2s“. Tačiau šis metodas turi daug mikroschemų specifinių įsilaužimų, todėl SPI atrodė geresnis pasirinkimas kaip mokymosi pratimas.
Rekomenduojamas:
BBQ temperatūros ir mėsos jutiklis ESP8266 su ekranu: 5 žingsniai (su nuotraukomis)
Kepsninės temperatūros ir mėsos jutiklis prie ESP8266 su ekranu: šioje instrukcijoje aš jums parodysiu, kaip pasidaryti savo kepsninės įrankio versiją, kuri matuoja esamą kepsninės temperatūrą ir įjungia ventiliatorių, kad prireikus jį užsidegtų. Be to, yra mėsos šerdies temperatūros jutiklis
Sąsajos DS18B20 temperatūros jutiklis su „Arduino“ir ESP8266: 8 žingsniai
Sąsajos DS18B20 temperatūros jutiklis su „Arduino“ir ESP8266: Ei, kas vyksta, vaikinai! Akarsh čia iš CETech. Šiandien mes pridėsime naują jutiklį prie savo arsenalo, žinomo kaip DS18B20 temperatūros jutiklis. Tai yra temperatūros jutiklis, panašus į DHT11, tačiau turi skirtingas programas. Mes jį lyginsime su
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: 6 žingsniai
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: tai saulės energija varomo temperatūros ir drėgmės jutiklio konstrukcija. Jutiklis imituoja 433 MHz „Oregon“jutiklį ir matomas „Telldus Net“šliuzuose. Ko jums reikia: 1x „10-LED“Saulės energijos judesio jutiklis " iš Ebay. Įsitikinkite, kad parašyta 3,7 V tešla
JUTIKLIS SUHU DENGAN LCD DAN LED (temperatūros jutiklis su LCD ir LED): 6 žingsniai (su nuotraukomis)
JUTIKLIS SUHU DENGAN LCD DAN LED (temperatūros jutiklis su skystųjų kristalų ekranu ir šviesos diodu): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Išvestis LCD ir LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini and
„WiFi IoT“temperatūros ir drėgmės jutiklis. Dalis: 8 daiktų internetas, namų automatizavimas: 9 žingsniai
„WiFi IoT“temperatūros ir drėgmės jutiklis. 8 straipsnis. Daiktų internetas, namų automatizavimas: įžanga 4 dalis. Daiktų internetas, namų automatizavimas, įskaitant visas būtinas programinės įrangos funkcijas, kad būtų galima sėkmingai