Sisällysluettelo:

WiFi LED -nauha + lämpötila -anturi ESP8266: 6 askelta
WiFi LED -nauha + lämpötila -anturi ESP8266: 6 askelta

Video: WiFi LED -nauha + lämpötila -anturi ESP8266: 6 askelta

Video: WiFi LED -nauha + lämpötila -anturi ESP8266: 6 askelta
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Heinäkuu
Anonim
WiFi LED -nauha + lämpötila -anturi, jossa ESP8266
WiFi LED -nauha + lämpötila -anturi, jossa ESP8266

Tässä opetusohjelmassa kuvataan vaiheet ESP8266: n määrittämiseksi ja sen saamiseksi puhumaan sekä lämpötila -anturille että LED -nauhalle, samalla kun se voi myös vastaanottaa tuloja ja lähettää lähtöä MQTT: n kautta WiFi: n kautta. Hanke tehtiin Cal Poly San Luis Obispossa syksyllä 2016 pidetylle kurssille- CPE 439: Real Time Embedded Systems. Yleisenä tavoitteena oli osoittaa, kuinka helppoa on luoda Internetiin yhdistetty "asia" halvalla laitteistolla.

Tarvittavat tarvikkeet/laitteet:

  • NodeMCU ESP8266 dev -levy
  • WS2812B LED -nauha
  • MAX31820 Lämpötila -anturi
  • Leipälauta
  • 4,7 K ohmin vastus
  • 220 ohmin vastus
  • hyppyjohtimet
  • mikro-usb-kaapeli
  • PC (tai virtuaalikone), jossa on linux (esim. Ubuntu)

Oletukset/edellytykset:

  • kokemusta komentorivityökalujen käytöstä ja pakettien asentamisesta debian-pohjaiseen distroon
  • perustiedot Makefile -syntaksista
  • liitäntäjohdot

Vaihe 1: Rakennusympäristön luominen

Projektin luomiseksi sinun on asennettava koneellesi esp-open-sdk. Seuraa linkkiä ja lue asennusohjeet. Lyhyesti sanottuna teet joitain sudo apt-get -komentoja riippuvuuksien asentamiseksi, git-klooni-toistuva esp-open-sdk-kloonaukseen/lataamiseen ja lopuksi make-komento esp-open-sdk: n luomiseksi.

Katso minua

Vaihe 2: Hanki lähdekoodi, määritä ja rakenna

Nyt kun esp-open-sdk on rakennettu, kloonaa projektivarasto.

git-klooni

Vaihda projektihakemistoon, luo.local -kansio ja kopioi esimerkkiasetukset.

cd esp-rtos-testit

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

Avaa nyt.local/settings.mk millä tahansa tekstieditorilla ja muuta seuraavia asetuksia:

  • OPENSDK_ROOT: Absoluuttinen polku vaiheessa 1 rakentamasi esp-open-sdk: n sijainnille
  • WIFI_SSID: WiFi -verkon SSID
  • WIFI_PASS: WiFi -verkon salasana
  • PIXEL_COUNT: WS2812B -LED -nauhan pikselimäärä

Huomautus: Koska tässä projektissa käytetään SPI: tä LEDien ohjaamiseen ja NodeMCU 3.3v: n toimittamiseen, luultavasti et pysty käyttämään enempää kuin ~ 60 LEDiä.

Huomautus: Muita asetuksia ei tarvitse muuttaa, mutta ne voidaan haluttaessa muuttaa. On suositeltavaa pitää tehtäväprioriteettien järjestys. Mitä pienempi prioriteettinumero, sitä pienempi tehtävän prioriteetti.

Rakenna nyt projekti:

tee -C esimerkkejä/cpe439

Jos kaikki on asetettu oikein, sen pitäisi alkaa kääntää. Lopussa sinun pitäisi nähdä:

Laiteohjelmisto/cpe439.bin luotu

Katso minua

Vaihe 3: Liitä laitteistokomponentit

Liitä laitteistokomponentit
Liitä laitteistokomponentit

Nyt kun koodi on koottu, on aika yhdistää oheislaitteemme.

Kiinnitä ensin NodeMCU leipälevylle ja tee sitten liitännät kaavion mukaisesti hyppyjohtimilla.

Pari asiaa on otettava huomioon:

  1. Tärkeää: WS2812B-tietolinja ei ole kaksisuuntainen. Jos tarkastelet tarkasti nauhan LED -puolen merkintöjä, näet pieniä nuolia, jotka osoittavat yhteen suuntaan. NodeMCU: n D7: n lähdön on oltava suunnassa WS2812B: hen samalla tavalla kuin suuntamerkki, jonka näet kaaviosta tarkasti.
  2. WS2812B: n mukana tulevien liittimien mukaan saatat joutua tekemään joitain muutoksia, jotta ne voidaan liittää turvallisesti leipälevyyn. Voit myös käyttää alligaattoripidikkeitä liittääksesi ne leipälevyyn sopiviin hyppyjohtoihin.
  3. MAX31820-nastoilla on pienempi nousu ja ne ovat ohuempia kuin tavalliset 0,1 "/2,54 mm: n puserot, joten niiden yhdistäminen on hankalaa. Yksi tapa kiertää tämä on käyttää naaras-uros-hyppyjohtimia, irrota muovikotelo naaraspuolelta, purista sitten pihdeillä naarasliitinten päät tiukasti pienempien MAX31820 -nastojen ympärille.

Tarkista liitännät ennen NodeMCU: n käynnistämistä, jotta osat eivät vahingoitu.

Vaihe 4: Flash ja Run

Vilkkuu

Kun kaikki laitteistot on kytketty, kytke NodeMCU -virtalähde ja salama seuraavalla komennolla:

tee flash -C esimerkkejä/cpe439 ESPPORT =/dev/ttyUSB0

/dev/ttyUSB0 on sarjakomponentti, jonka alla NodeMCU: n pitäisi näkyä. Jos sinulla on kytketty muita sarjalaitteita, se saattaa näkyä muodossa /dev /ttyUSB1 tai jokin muu numero. Voit tarkistaa tämän komennon suorittamisen kahdesti, kerran NodeMCU: n irrotettuna ja kerran sen ollessa kytkettynä, ja vertailla eroa:

ls /dev /ttyUSB*

Toinen ongelma, jonka saatat kohdata, on se, ettei sinulla ole lupaa käyttää laitetta. Kaksi tapaa korjata tämä on:

  1. Lisää käyttäjä soittoryhmään:

    sudo adduser $ (whoami) -valinta

  2. chmod tai chown the device:

sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Ensimmäinen menetelmä on edullinen, koska se on pysyvä ratkaisu.

Juoksu

Kun flash -komento on suoritettu onnistuneesti, laite käynnistyy välittömästi ja alkaa suorittaa käännettyä koodia. Voit milloin tahansa vilkkumisen jälkeen suorittaa seuraavan komennon katsellaksesi sarjalähtöä:

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

Voit säästää aikaa lisäämällä tämän ~/.bashrc -tiedostoosi:

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

.. jonka avulla voit yksinkertaisesti kirjoittaa "nodemcu" kyseisen komennon aliakseksi.

Jos kaikki on määritetty oikein, LED -nauhan pitäisi syttyä vihreänä, ja sarjassa sinun pitäisi nähdä WiFi -yhteys, saada IP -osoite, muodostaa yhteys MQTT: hen ja viestit, että lämpötilatietoja työnnetään ulos.

yhdistetty MyWiFiSSID, kanava 1dhcp client start… 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 = 5xQueueQuet: (Uudelleen) yhdistäminen MQTT -palvelimeen test.mosquitto.org… xQueueReception +25.50xQueueSend ok done

Vaihe 5: Vuorovaikutus

Olettaen, että laitteesi on muodostanut yhteyden WiFi -verkkoon ja MQTT -välittäjään, voit lähettää ja vastaanottaa tietoja NodeMCU: sta MQTT: n avulla. Asenna mosquitto -asiakaspaketti, jos et ole jo tehnyt niin:

sudo apt-get install mosquitto-clientit

Sinun pitäisi nyt pystyä käyttämään mosquitto_pub- ja mosquitto_sub -ohjelmia kuoristasi.

Lämpötilapäivitysten vastaanottaminen

Saadaksemme lämpötilatietoja haluamme käyttää mosquitto_sub -komentoa tilataksemme aiheen, johon NodeMCU julkaisee.

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

Sinun pitäisi nähdä lämpötilatiedot (celsiusasteina), jotka saapuvat terminaaliin.

+25.87+25.93+25.68…

LED -nauhan värin asettaminen etänä

Yksinkertaista sanomamuotoa käytetään lähettämään RGB -arvot NodeMCU: lle MQTT: n kautta. Komennomuoto näyttää tältä:

r: RRRg: GGGb: BBB ~

Jos RRR, GGG, BBB vastaavat lähetettävän värin RGB-arvoja (0-255). Käytämme komennon lähettämiseen komentoa mosquitto_pub. Tässä muutamia esimerkkejä:

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

Jos haluat olla luova, etsi verkosta tällainen värinvalitsin ja muokkaa komentoa valitsemallasi RGB-arvolla.

Varo

Tämän projektin aiheiksi on asetettu /cpe439 /rgb ja /cpe439 /temp julkisessa MQTT -välittäjässä, mikä tarkoittaa, että mikään ei estä jotakuta muuta julkaisemasta tai tilaamasta samoja aiheita kuin sinä. Jos haluat kokeilla asioita, julkisen välittäjän käyttäminen on hyvä asia, mutta vakavammissa projekteissa haluat muodostaa yhteyden välittäjään salasanasuojauksella tai käyttää omaa välittäjääsi palvelimella.

Vaihe 6: Toteutustiedot

Onewire

ESP8266 -laitteessa on vain yksi ydin, joten pitkät, estävät tehtävät, kuten odottaminen 750 ms, ennen kuin lämpötila -anturi suorittaa lämpötilamittauksen, johtavat normaalisti siihen, että WiFi ei toimi kunnolla ja ehkä jopa kaatuu. FreeRTOS -paradigmassa kutsut vTaskDelay (): tä käsittelemään nämä pitkät odotukset, mutta lukemisten ja kirjoitusten välillä tarvitaan myös paljon lyhyempiä odotuksia, jotka ovat lyhyempiä kuin FreeRTOS -järjestelmän rasti, joten niitä ei voida välttää vTaskDelay (): n avulla. Näiden kiertämiseksi myös tämän projektin onewire-ohjain on kirjoitettu ajamaan pois tilakoneelta, jota ohjaa ESP8266: n laitteistoajastin, joka voi laukaista tapahtumia jopa 10 mikrosekunnin välein, mikä on lyhyin tarvittava aika yhden langan luku-/kirjoitustoimintojen välillä. Useimmat muut toteutukset käyttävät estävää kutsua delay_us () tai vastaavaa käsittelemään tätä, mutta jos käytät jatkuvasti lämpötilapäivityksiä, kaikki nämä viiveet alkavat kasvaa, mikä johtaa vähemmän reagoivaan sovellukseen. Tämän koodin osan lähde sijaitsee extras/onewire -kansiossa.

WS2812B

ESP8266 -laitteessa ei ole vakiolaitteistovaihtoehtoja PWM: lle riittävän nopeasti LED -nauhojen ajamiseen 800 kHz: n taajuudella. Tässä projektissa käytetään SPI MOSI -tappia LEDien ohjaamiseen. Säätämällä SPI: n kellotaajuutta ja muuttamalla SPI: n hyötykuormaa voit saavuttaa melko luotettavan ohjauksen jokaisesta yksittäisestä LEDistä. Tämä menetelmä ei ole ilman virheitä- yhden LED-valon tulee olla 5 V: n virtalähteellä ja tasonvaihtaja on lisättävä SPI-nastan lähtöön. Mutta 3.3V toimii. Toiseksi on virheitä, jotka johtuvat epätäydellisestä ajoituksesta SPI -menetelmän avulla. Ja kolmanneksi, nyt et voi käyttää SPI: tä mihinkään muuhun. Lisätietoja tästä menetelmästä löytyy täältä, ja tämän koodin osan lähde sijaitsee extras/ws2812 -kansiossa.

Luotettavampi tapa LED -nauhojen ajamiseen on käyttää i2: ita. Tällä menetelmällä on kuitenkin paljon sirukohtaisia hakkereita, joten SPI näytti olevan parempi vaihtoehto oppimisharjoituksena.

Suositeltava: