Satura rādītājs:
- 1. darbība: būvniecības vides izveide
- 2. darbība: iegūstiet avota kodu, konfigurējiet un veidojiet
- 3. darbība: pievienojiet aparatūras komponentus
- 4. darbība: zibspuldze un palaišana
- 5. darbība. Mijiedarbība
- 6. darbība. Informācija par ieviešanu
Video: WiFi LED sloksne + temperatūras sensors ar ESP8266: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šajā apmācībā ir aprakstītas darbības, kā iestatīt ESP8266 un panākt, lai tas sarunātos gan ar temperatūras sensoru, gan ar LED sloksni, vienlaikus arī saņemot un nosūtot izeju, izmantojot MQTT, izmantojot WiFi. Projekts tika izstrādāts kursam, kas tika apgūts Cal Poly San Luis Obispo 2016. gada rudenī- CPE 439: reālā laika iegultās sistēmas. Vispārējais mērķis bija parādīt, cik viegli izveidot ar internetu savienotu "lietu" ar lētu aparatūru.
Nepieciešamie piederumi/aprīkojums:
- NodeMCU ESP8266 dev plate
- WS2812B LED sloksne
- MAX31820 Temperatūras sensors
- Maizes dēlis
- 4,7 K omu rezistors
- 220 omu rezistors
- džemperu vadi
- mikro-usb kabelis
- Dators (vai VM), kurā darbojas Linux (piemēram, Ubuntu)
Pieņēmumi/priekšnoteikumi:
- pieredze komandrindas rīku izmantošanā un pakotņu instalēšanā izplatīšanā, kuras pamatā ir debian
- pamatzināšanas par Makefile sintaksi
- savienojošie vadi
1. darbība: būvniecības vides izveide
Lai izveidotu projektu, jūsu datorā būs jāinstalē esp-open-sdk. Izpildiet saiti un izlasiet veidošanas instrukcijas. Īsāk sakot, jūs veiksit dažas sudo apt-get komandas, lai instalētu atkarības, git klons-rekursīvs, lai klonētu/lejupielādētu esp-open-sdk, un visbeidzot-komanda make, lai izveidotu esp-open-sdk.
Skaties uz mani
2. darbība: iegūstiet avota kodu, konfigurējiet un veidojiet
Tagad, kad ir izveidots esp-open-sdk, klonējiet projekta krātuvi.
git klons
Pārslēdzieties uz projektu direktoriju, izveidojiet.local mapi un nokopējiet parauga iestatījumus.
cd esp-rtos-testi
mkdir -p.local cp settings.example.mk.local/settings.mk
Tagad atveriet.local/settings.mk ar jebkuru teksta redaktoru un mainiet šādus iestatījumus:
- OPENSDK_ROOT: 1. solī izveidotā esp-open-sdk atrašanās vietas absolūtais ceļš
- WIFI_SSID: jūsu WiFi tīkla SSID
- WIFI_PASS: jūsu WiFi tīkla parole
- PIXEL_COUNT: pikseļu skaits jūsu WS2812B LED joslā
Piezīme. Tā kā šis projekts izmanto SPI, lai vadītu gaismas diodes, un to piegādei izmanto NodeMCU 3.3v, jūs, iespējams, nevarēsit vadīt vairāk nekā ~ 60 gaismas diodes.
Piezīme. Pārējie iestatījumi nav jāmaina, bet, ja vēlaties, tos var mainīt. Ieteicams ievērot uzdevumu prioritāšu secību. Jo mazāks prioritātes numurs, jo zemāka ir uzdevuma prioritāte.
Tagad izveidojiet projektu:
izveidojiet -C piemērus/cpe439
Ja viss ir pareizi iestatīts, tas jāsāk apkopot. Beigās jums vajadzētu redzēt:
Veiksmīgi izveidota programmaparatūra/cpe439.bin
Skaties uz mani
3. darbība: pievienojiet aparatūras komponentus
Tagad, kad kods ir apkopots, ir pienācis laiks savienot mūsu perifērijas ierīces.
Vispirms pielīmējiet NodeMCU uz maizes dēļa, pēc tam izmantojiet savienojuma vadus, lai izveidotu savienojumus, kā parādīts diagrammā.
Pāris lietas, kas jāapzinās:
- Svarīgi: WS2812B datu līnija nav divvirzienu. Ja uzmanīgi aplūkojat marķējumu sloksnes LED pusē, jums vajadzētu redzēt mazas bultiņas, kas norāda vienā virzienā. NodeMCU izvadam no D7 jābūt virzītam uz WS2812B tāpat kā virziena marķierim, ko jūs varat redzēt diagrammā, ja paskatās cieši.
- Atkarībā no WS2812B savienotāju veida, iespējams, būs jāveic dažas izmaiņas, lai tie droši savienotos ar maizes dēli. Varat arī izmantot aligatora skavas, lai tās savienotu ar maizes dēļa džemperkabeļiem.
- MAX31820 tapām ir mazāks solis un tie ir plānāki nekā standarta 0,1 "/2,54 mm džemperi, tāpēc tos ir grūti savienot. Viens veids, kā to novērst, ir izmantot džemperu vadus no vīriešiem un noņemt plastmasas korpusu no sievietes puses, tad izmantojiet dažas knaibles, lai cieši saspiestu džempera galus ap mazākajām MAX31820 tapām.
Pirms NodeMCU ieslēgšanas vēlreiz pārbaudiet savienojumus, lai nesabojātu komponentus.
4. darbība: zibspuldze un palaišana
Mirgo
Kad ir pievienota visa aparatūra, pievienojiet NodeMCU un mirgo ar šādu komandu:
izveidojiet flash -C piemērus/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 ir sērijas komats, kurā jānorāda NodeMCU. Ja jums ir pievienotas citas sērijas ierīces, tas var parādīties kā /dev /ttyUSB1 vai kāds cits numurs. Lai pārbaudītu, jūs varat palaist šo komandu divas reizes, vienu reizi, kad NodeMCU ir atvienots no elektrotīkla, un vienu reizi, kad tas ir pievienots, un salīdziniet atšķirību:
ls /dev /ttyUSB*
Vēl viena problēma, ar kuru varat saskarties, nav atļaujas piekļūt ierīcei. Ir divi veidi, kā to novērst:
-
Pievienojiet savu lietotāju iezvanes grupai:
sudo adduser $ (whoami) izsaukums
- chmod vai nosauciet ierīci:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Priekšroka tiek dota pirmajai metodei, jo tas ir pastāvīgs risinājums.
Skriešana
Pēc zibspuldzes komandas veiksmīgas palaišanas ierīce nekavējoties tiks sāknēta un sāks darbināt apkopoto kodu. Jebkurā brīdī pēc mirgošanas varat palaist šādu komandu, lai skatītos sērijas izvadi:
python3 -m serial.tools.miniterm --eol CRLF -exit -char 003 /dev /ttyUSB0 500000 --raw -q
Lai ietaupītu laiku, varat to pievienot savam ~/.bashrc failam:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF -exit -char 003 /dev /ttyUSB0 500000 --raw -q'
.. kas ļauj vienkārši ierakstīt "nodemcu" kā šīs komandas aizstājvārdu.
Ja viss ir pareizi konfigurēts, jūsu LED sloksnei vajadzētu iedegties zaļā krāsā, un sērijveidā jums vajadzētu redzēt WiFi savienojumu, iegūt IP adresi, izveidot savienojumu ar MQTT un ziņojumus, ka temperatūras dati tiek izstumti.
savienots ar MyWiFiSSID, kanāla 1dhcp klients start… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maska: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init ok: (Atkārtoti) tiek izveidots savienojums ar MQTT serveri test.mosquitto.org… xQueueReceived +25,50xQueueSend ok done
5. darbība. Mijiedarbība
Pieņemot, ka jūsu ierīce ir veiksmīgi izveidojusi savienojumu ar WiFi un MQTT brokeris, jūs varēsit nosūtīt un saņemt datus no NodeMCU, izmantojot MQTT. Ja vēl neesat to izdarījis, instalējiet moskītu klientu pakotni:
sudo apt-get install mosquitto-customers
Tagad jums vajadzētu būt iespējai izmantot mosquitto_pub un mosquitto_sub programmas no sava apvalka.
Temperatūras atjauninājumu saņemšana
Lai saņemtu temperatūras datus, mēs vēlamies izmantot komandu mosquitto_sub, lai abonētu tēmu, kurā NodeMCU publicē.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Jums vajadzētu redzēt temperatūras datus (pēc Celsija), ierodoties terminālī.
+25.87+25.93+25.68…
LED sloksnes krāsas iestatīšana attālināti
Lai nosūtītu RGB vērtības NodeMCU, izmantojot MQTT, tiek izmantots vienkāršs ziņojumu formāts. Komandas formāts izskatās šādi:
r: RRRg: GGGb: BBB ~
Ja RRR, GGG, BBB atbilst nosūtāmās krāsas RGB vērtībām (0–255). Lai nosūtītu savu komandu, mēs izmantosim komandu mosquitto_pub. Šeit ir daži piemēri:
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 ~ ' # zils
Ja vēlaties būt radošs, atrodiet tiešsaistē tādu krāsu atlasītāju kā šis un rediģējiet komandu ar jebkuru izvēlēto RGB vērtību.
Uzmanies
Šī projekta tēmas ir iestatītas uz /cpe439 /rgb un /cpe439 /temp publiskā MQTT brokerī, kas nozīmē, ka nekas neliedz kādam citam publicēt vai abonēt tādas pašas tēmas kā jūs. Lai izmēģinātu lietas, ir labi izmantot publisko brokeri, bet nopietnākiem projektiem vēlaties izveidot savienojumu ar brokeri ar paroles aizsardzību vai vadīt savu brokeri serverī.
6. darbība. Informācija par ieviešanu
Onewire
ESP8266 ir tikai viens kodols, tāpēc ilgstoši bloķēšanas uzdevumi, piemēram, 750 ms gaidīšana, līdz temperatūras sensors veic temperatūras mērīšanu, parasti novedīs pie tā, ka WiFi nedarbosies labi un varbūt pat avarēs. FreeRTOS paradigmā jūs izsaucat vTaskDelay (), lai apstrādātu šīs ilgās gaidīšanas, taču starp lasījumiem un rakstīšanu ir nepieciešams arī daudz īsāks gaidīšanas laiks, kas ir īsāks par FreeRTOS sistēmas atzīmi, un tāpēc to nevar izvairīties, izmantojot vTaskDelay (). Lai arī tos apiet, šī projekta onewire draiveris tika uzrakstīts, lai palaistu no valsts iekārtas, kuru darbina ESP8266 aparatūras taimeris, kas var izraisīt notikumus pat ik pēc 10 mikrosekundēm, kas ir īsākais nepieciešamais laiks starp viena stieņa lasīšanas/rakstīšanas operācijām. Lielākā daļa citu ieviešanu izmanto bloķējošu zvanu uz delay_us () vai līdzīgu, lai to apstrādātu, bet, ja jūs pastāvīgi atjaunināt temperatūru, visi šie kavējumi sāk palielināties, kā rezultātā lietojumprogramma reaģē mazāk. Šīs koda daļas avots atrodas mapē extras/onewire.
WS2812B
ESP8266 nav standarta aparatūras opciju PWM pietiekami ātri, lai vadītu LED sloksnes pie 800KHz. Lai to novērstu, šis projekts izmanto SPI MOSI tapu, lai vadītu gaismas diodes. Pielāgojot SPI pulksteņa ātrumu un mainot SPI lietderīgo slodzi, jūs varat panākt diezgan uzticamu katra atsevišķa gaismas diodes vadību. Šī metode nav bez trūkumiem- vienam gaismas diodēm jābūt barotām ar 5 V avotu un SPI tapas izejai jāpievieno līmeņa pārslēdzējs. Bet 3.3V darbojas. Otrkārt, ir traucējumi, kas rodas nepilnīga laika dēļ, izmantojot SPI metodi. Un trešais - tagad jūs nevarat izmantot SPI kaut kam citam. Papildu informāciju par šo metodi var atrast šeit, un šīs koda daļas avots atrodas mapē extras/ws2812.
Uzticamāka metode LED sloksņu virzīšanai ir i2 izmantošana. Tomēr šai metodei ir daudz mikroshēmai raksturīgu uzlaušanas, tāpēc SPI šķita labāka izvēle kā mācību uzdevums.
Ieteicams:
BBQ temperatūras un gaļas sensors uz ESP8266 ar displeju: 5 soļi (ar attēliem)
BBQ temperatūras un gaļas sensors uz ESP8266 ar displeju: šajā pamācībā es jums parādīšu, kā izveidot savu BBQ rīka versiju, kas mēra jūsu grila pašreizējo temperatūru un ieslēdz ventilatoru, lai to iedegtu, ja nepieciešams. Papildus tam ir arī gaļas kodola temperatūras sensors
Saskarnes DS18B20 temperatūras sensors ar Arduino un ESP8266: 8 soļi
Saskarnes DS18B20 temperatūras sensors ar Arduino un ESP8266: Hei, kas notiek, puiši! Akarsh šeit no CETech. Šodien mēs savam arsenālam pievienosim jaunu sensoru, kas pazīstams kā DS18B20 temperatūras sensors. Tas ir temperatūras sensors, kas līdzīgs DHT11, bet tam ir atšķirīgs pielietojums. Mēs to salīdzināsim ar
Arduino saules enerģijas temperatūras un mitruma sensors kā 433 MHz Oregon sensors: 6 soļi
Arduino saules enerģijas temperatūras un mitruma sensors kā 433 MHz Oregon sensors: tas ir saules enerģijas temperatūras un mitruma sensora konstrukcija. Sensors atdarina 433 MHz Oregon sensoru un ir redzams Telldus Net vārtejā. Kas jums nepieciešams: 1x "10-LED Saules enerģijas kustības sensors " no ebay. Pārliecinieties, ka ir rakstīts 3.7v mīkla
ESP8266 NodeMCU + LM35 + Blynk (IOT meteoroloģiskā stacija/ digitālais temperatūras sensors): 4 soļi
ESP8266 NodeMCU + LM35 + Blynk (IOT meteoroloģiskā stacija/ digitālais temperatūras sensors): Sveiki, puiši! Šajā pamācībā mēs iemācīsimies sasaistīt LM35 sensoru ar NodeMCU un parādīt šīs temperatūras informāciju internetā viedtālrunī ar lietojumprogrammu Blynk. (Arī šajā projektā mēs izmantosim SuperChart logrīku Bl
WiFi IoT temperatūras un mitruma sensors. Daļa: 8 IoT, mājas automatizācija: 9 soļi
WiFi IoT temperatūras un mitruma sensors. 8. pants. IoT, mājas automatizācija: preambula 4. daļa: IoT, mājas automatizācija, ieskaitot visu nepieciešamo programmatūras funkcionalitāti, lai gūtu panākumus