Sisukord:

WiFi LED -riba + temperatuuriandur ESP8266 -ga: 6 sammu
WiFi LED -riba + temperatuuriandur ESP8266 -ga: 6 sammu

Video: WiFi LED -riba + temperatuuriandur ESP8266 -ga: 6 sammu

Video: WiFi LED -riba + temperatuuriandur ESP8266 -ga: 6 sammu
Video: capteur de température et affiche sur l’écran lcd arduino 2024, November
Anonim
WiFi LED -riba + temperatuuriandur koos ESP8266 -ga
WiFi LED -riba + temperatuuriandur koos ESP8266 -ga

See õpetus kirjeldab samme ESP8266 seadistamiseks ja selle rääkimiseks nii temperatuurianduri kui ka LED -ribaga, samal ajal on võimalik ka WiFi kaudu MQTT -ga sisendit vastu võtta ja väljundit saata. Projekt tehti Cal Poly San Luis Obispo sügisel 2016 läbitud kursusele- CPE 439: reaalajas manustatud süsteemid. Üldine eesmärk oli demonstreerida internetiühendusega "asja" loomise lihtsust odava riistvaraga.

Vajalikud tarvikud/varustus:

  • NodeMCU ESP8266 arendusplaat
  • WS2812B LED -riba
  • MAX31820 Temperatuuriandur
  • Leivalaud
  • 4.7K oomi takisti
  • 220 oomi takisti
  • hüppaja juhtmed
  • mikro-usb kaabel
  • Arvuti (või VM), kus töötab linux (nt Ubuntu)

Eeldused/eeldused:

  • kogemus käsureatööriistade kasutamisel ja pakettide installimisel debianil põhinevasse distrosse
  • põhiteadmised Makefile'i süntaksist
  • ühendavad juhtmed

Samm: ehituskeskkonna loomine

Projekti koostamiseks peab teie arvutisse olema installitud esp-open-sdk. Järgige linki ja lugege koostamisjuhiseid. Lühidalt öeldes teete sõltuvuste installimiseks mõningaid sudo apt-get käske, git-klooni-esp-open-sdk kloonimiseks/allalaadimiseks ja lõpuks esp-open-sdk ehitamiseks käsku make.

Vaata mind

2. toiming: hankige lähtekood, seadistage ja ehitage

Nüüd, kui esp-open-sdk on ehitatud, kloonige projektihoidla.

git kloon

Muutke projekti kataloogiks, looge.local kaust ja kopeerige näitesätted.

cd esp-rtos-testid

mkdir -p.local cp settings.example.mk.local/settings.mk

Nüüd avage.local/settings.mk mis tahes tekstiredaktoriga ja muutke järgmisi seadeid:

  • OPENSDK_ROOT: absoluutne tee esp-open-sdk asukoha jaoks, mille ehitasite esimeses etapis
  • WIFI_SSID: teie WiFi -võrgu SSID
  • WIFI_PASS: teie WiFi -võrgu parool
  • PIXEL_COUNT: pikslite arv teie WS2812B LED -ribal

Märkus. Kuna see projekt kasutab valgusdioodide juhtimiseks SPI -d ja nende varustamiseks NodeMCU 3.3v, ei saa te tõenäoliselt juhtida rohkem kui ~ 60 LED -i.

Märkus. Teisi seadeid ei ole vaja muuta, kuid soovi korral saab neid muuta. Soovitatav on hoida ülesannete prioriteetide järjekorda. Mida väiksem on prioriteedi number, seda väiksem on ülesande prioriteet.

Nüüd ehitage projekt:

tehke -C näiteid/cpe439

Kui kõik on õigesti seadistatud, peaks see alustama kompileerimist. Lõpus peaksite nägema:

Püsivara/cpe439.bin on edukalt loodud

Vaata mind

Samm: ühendage riistvarakomponendid

Ühendage riistvarakomponendid
Ühendage riistvarakomponendid

Nüüd, kui kood on koostatud, on aeg ühendada meie välisseadmed.

Kõigepealt kleepige NodeMCU leivaplaadile ja seejärel kasutage ühenduste tegemiseks hüppajajuhtmeid, nagu on näidatud skeemil.

Paar asja, mida tuleb teadvustada:

  1. Tähtis: WS2812B andmeliin ei ole kahesuunaline. Kui vaatate tähelepanelikult riba LED -küljel olevaid märgistusi, peaksite nägema väikeseid nooli, mis näitavad ühte suunda. NodeMCU D7 väljund peab suunduma WS2812B -sse samamoodi nagu suunamärk, mida näete diagrammil, kui vaatate tähelepanelikult.
  2. Sõltuvalt sellest, milliste pistikutega teie WS2812B kaasas on, peate võib -olla tegema mõningaid muudatusi, et need kindlalt leivaplaadiga ühendada. Võite kasutada ka alligaatoriklambreid, et ühendada need leivaplaadiga ühendatud hüppakaablitega.
  3. MAX31820 tihvtid on väiksema sammuga ja õhemad kui tavalised 0,1 "/2,54 mm džemprid, mistõttu on neid keeruline ühendada. Üks võimalus sellest on kasutada naissoost-isasilmuga juhtmeid, eemaldada plastkorpus emaküljelt, seejärel kasutage mõningate tangide abil naissoost hüppajate otsad tihedalt ümber väiksemate MAX31820 tihvtide.

Enne NodeMCU sisselülitamist kontrollige ühendusi veel kord, et mitte kahjustada komponente.

Samm: välk ja käivitamine

Vilkuv

Kui kogu riistvara on ühendatud, ühendage oma NodeMCU ja välkuge järgmise käsuga:

tee flash -C näiteid/cpe439 ESPPORT =/dev/ttyUSB0

/dev/ttyUSB0 on jadakomplekt, mille all peaks NodeMCU ilmuma. Kui teil on ühendatud teised jadaseadmed, võib see kuvada /dev /ttyUSB1 või mõne muu numbrina. Kontrollimiseks võite seda käsku käivitada kaks korda, üks kord, kui NodeMCU on vooluvõrgust lahti ühendatud ja kord, kui see on ühendatud, ja võrrelge erinevust:

ls /dev /ttyUSB*

Teine probleem, mis teil võib tekkida, on seadmele juurdepääsu puudumine. Selle parandamiseks on kaks võimalust:

  1. Lisage oma kasutaja sissehelistamisrühma:

    sudo adduser $ (whoami) dialout

  2. chmod või seadme valimine:

sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Esimene meetod on eelistatav, kuna see on püsiv lahendus.

Jooksmine

Pärast välkukäsu edukat käivitamist käivitub seade kohe ja alustab kompileeritud koodi käivitamist. Pärast vilkumist saate igal ajal seeriaväljundi vaatamiseks käivitada järgmise käsu:

python3 -m serial.tools.miniterm --eol CRLF -Exit -char 003 /dev /ttyUSB0 500000 --raw -q

Aja säästmiseks saate selle lisada oma ~/.bashrc faili:

alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF -Exit -char 003 /dev /ttyUSB0 500000 --raw -q'

.. mis võimaldab selle käsu varjunimena lihtsalt tippida "nodemcu".

Kui kõik on õigesti konfigureeritud, peaks teie LED -riba helendama roheliselt ja seeriaviisil peaksite nägema WiFi -ühendust, hankima IP -aadressi, ühenduse MQTT -ga ja teateid, et temperatuuri andmed on välja lükatud.

ühendatud MyWiFiSSID -ga, kanal 1dhcp klient käivitada: (Uuesti) ühenduse loomine MQTT -serveriga test.mosquitto.org… xQueueReceived +25.50xQueueSend ok doneSend MQTT connect…

5. samm: suhtlemine

Eeldades, et teie seade on WiFi -ga ja MQTT -vahendajaga edukalt ühendatud, saate MQTT -ga NodeMCU -st andmeid saata ja vastu võtta. Kui te pole seda veel teinud, installige mosquitto klientide pakett:

sudo apt-get install mosquitto-kliendid

Nüüd peaksite saama kasutada oma kestast programme mosquitto_pub ja mosquitto_sub.

Temperatuuri värskenduste saamine

Temperatuuri andmete saamiseks tahame käsuga mosquitto_sub tellida teema, mille NodeMCU avaldab.

mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp

Te peaksite terminali saabuma temperatuuriandmed (Celsiuse järgi).

+25.87+25.93+25.68…

LED -riba värvi kaugjuhtimine

RGB väärtuste saatmiseks NodeMCU -le MQTT kaudu kasutatakse lihtsat sõnumivormingut. Käsu vorming näeb välja selline:

r: RRRg: GGGb: BBB ~

Kui RRR, GGG, BBB vastavad saadetava värvi RGB väärtustele (0–255). Oma käsu saatmiseks kasutame käsku mosquitto_pub. siin on mõned näidised:

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 ~ ' # sinine

Kui soovite olla loominguline, leidke veebist selline värvivalija nagu see ja muutke käsku mis tahes valitud RGB väärtusega.

Vaata ette

Selle projekti teemad on avalikul MQTT maakleril seatud väärtustele /cpe439 /rgb ja /cpe439 /temp, mis tähendab, et miski ei takista kellelgi teisel teiega samu teemasid avaldamast või tellimast. Asjade proovimiseks sobib avaliku maakleri kasutamine, kuid tõsisemate projektide puhul soovite luua ühenduse parooliga kaitstud maakleriga või käivitada oma vahendaja serveris.

6. toiming: rakendamise üksikasjad

Onewire

ESP8266 -l on ainult 1 tuum, nii et pikad blokeerimisülesanded, näiteks temperatuurianduri temperatuuri mõõtmise 750 ms ootamine, tooksid WiFi tavaliselt halvasti kaasa ja võib -olla isegi krahhi. FreeRTOS -i paradigmas kutsute nende pikkade ootuste tegemiseks vTaskDelay (), kuid lugemiste ja kirjutamiste vahel on vaja ka palju lühemaid ooteid, mis on lühemad kui FreeRTOS -süsteemi puugid ja seega ei saa neid vTaskDelay () abil vältida. Nende probleemide lahendamiseks kirjutati selle projekti ühe juhtme draiverist välja olekumasin, mida juhib ESP8266 riistvara taimer, mis võib käivitada sündmusi nii madalalt kui iga 10 mikrosekundi järel, mis on kõige lühem nõutav aeg ühe juhtme lugemis-/kirjutamistoimingute vahel. Enamik teisi rakendusi kasutab selle käsitlemiseks blokeerivat kutset delay_us () või sarnast, kuid kui te pidevalt värskendate temperatuuri, hakkavad kõik need viivitused kokku tulema, mille tulemuseks on vähem reageeriv rakendus. Selle koodiosa allikas asub kaustas Lisad/onewire.

WS2812B

ESP8266 -l pole standardseid riistvaravalikuid PWM -i jaoks piisavalt kiiresti, et juhtida LED -ribasid sagedusel 800KHz. Sellest mööda pääsemiseks kasutab see projekt LED -ide juhtimiseks SPI MOSI tihvti. Reguleerides SPI taktsagedust ja muutes SPI kasulikku koormust, saate saavutada iga LED -i üsna usaldusväärse juhtimise. See meetod ei ole ilma puudusteta- ühe puhul tuleks LED-e toita 5 V toiteallikaga ja SPI-tihvti väljundisse tuleks lisada taseme nihutaja. Aga 3.3V töötab. Teiseks on tõrkeid, mis ilmnevad ebatäiusliku ajastuse tõttu, kasutades SPI meetodit. Ja kolmas on see, et nüüd ei saa te SPI -d kasutada millekski muuks. Selle meetodi kohta leiate lisateavet siit ja selle koodi osa allikas asub kaustas extras/ws2812.

Usaldusväärsem meetod LED -ribade juhtimiseks on kasutada i2 -sid. Sellel meetodil on aga palju kiibispetsiifilisi häkke, nii et SPI tundus õppimisharjutusena parem valik.

Soovitan: