Tartalomjegyzék:

WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal: 6 lépés
WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal: 6 lépés

Videó: WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal: 6 lépés

Videó: WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal: 6 lépés
Videó: ÉVI Hangvezérlés magyarul BÉTA 2024, November
Anonim
WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal
WiFi LED szalag + hőmérséklet -érzékelő ESP8266 -tal

Ez az oktatóanyag leírja az ESP8266 beállításának lépéseit, és a hőmérséklet -érzékelővel és a LED -szalaggal való beszélgetést, miközben képes bemenetet fogadni és kimenetet küldeni MQTT -vel WiFi -n keresztül. A projekt a Cal Poly San Luis Obispo-ban 2016 őszén tartott tanfolyamra készült- CPE 439: Valós idejű beágyazott rendszerek. Az általános cél az volt, hogy bemutassák az internethez csatlakoztatott "dolog" egyszerű létrehozását olcsó hardverrel.

Szükséges kellékek/felszerelések:

  • NodeMCU ESP8266 dev tábla
  • WS2812B LED szalag
  • MAX31820 Hőmérséklet -érzékelő
  • Kenyeretábla
  • 4.7K ohmos ellenállás
  • 220 ohmos ellenállás
  • jumper vezetékek
  • mikro-usb kábel
  • Linuxot futtató számítógép (vagy virtuális gép) (pl. Ubuntu)

Feltételezések/előfeltételek:

  • tapasztalat a parancssori eszközök használatában és a csomagok telepítésében egy debian alapú disztróban
  • a Makefile szintaxisának alapvető megértése
  • összekötő vezetékek

1. lépés: Építési környezet létrehozása

A projekt felépítéséhez az esp-open-sdk telepítése szükséges a gépre. Kövesse a linket, és olvassa el az építési utasításokat. Röviden, néhány sudo apt-get parancsot kell végrehajtania a függőségek telepítéséhez, egy git klónt-az esp-open-sdk klónozásához/letöltéséhez, végül egy make parancsot az esp-open-sdk létrehozásához.

Nézz engem

2. lépés: Forráskód beszerzése, konfigurálása és létrehozása

Most, hogy az esp-open-sdk felépült, klónozza a projekt lerakatát.

git klón

Váltson át a projektkönyvtárba, hozzon létre egy.local mappát, és másolja a példa beállításait.

cd esp-rtos-tesztek

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

Most nyissa meg a.local/settings.mk fájlt bármilyen szövegszerkesztővel, és módosítsa a következő beállításokat:

  • OPENSDK_ROOT: Az 1. lépésben felépített abszolút útvonal az esp-open-sdk helyéhez
  • WIFI_SSID: A WiFi hálózat SSID -je
  • WIFI_PASS: A WiFi hálózat jelszava
  • PIXEL_COUNT: A képpontok száma a WS2812B LED szalagon

Megjegyzés: Mivel ez a projekt SPI -t használ a LED -ek meghajtására, és a NodeMCU 3.3v -t használja azok ellátására, valószínűleg nem lesz képes ~ 60 LED -nél többet meghajtani.

Megjegyzés: A többi beállítást nem kell megváltoztatni, de szükség esetén megteheti. Ajánlott a feladat prioritások sorrendjének betartása. Minél alacsonyabb a prioritási szám, annál alacsonyabb a feladat prioritása.

Most építse fel a projektet:

készíts -C példákat/cpe439

Ha minden megfelelően van beállítva, akkor el kell kezdeni a fordítást. A végén látni kell:

Sikeresen létrehozta a firmware/cpe439.bin fájlt

Nézz engem

3. lépés: Csatlakoztassa a hardverkomponenseket

Csatlakoztassa a hardverkomponenseket
Csatlakoztassa a hardverkomponenseket

Most, hogy a kód össze van állítva, ideje csatlakoztatni a perifériáinkat.

Először ragassza fel a NodeMCU -t a kenyértáblára, majd az áthidaló huzalokkal kösse össze a csatlakozásokat az ábrán látható módon.

Pár dolog, amit tudnia kell:

  1. Fontos: A WS2812B adatvonal nem kétirányú. Ha alaposan megnézi a szalag LED oldalán lévő jelöléseket, akkor egy kis nyilakat kell látnia, amelyek egy irányba mutatnak. A NodeMCU D7 kimenetének ugyanúgy kell a WS2812B irányába haladnia, mint az irányjelzőnek, amelyet a diagramon láthat, ha alaposan megnézi.
  2. Attól függően, hogy a WS2812B milyen csatlakozókat tartalmaz, szükség lehet bizonyos módosítások elvégzésére, hogy biztonságosan csatlakozzanak a kenyértáblához. Alligátorcsipeszeket is használhat, hogy összekapcsolja őket a kenyérlapon használható áthidaló kábelekkel.
  3. A MAX31820 csapok kisebb dőlésszögűek, és vékonyabbak, mint a szabványos 0,1 "/2,54 mm-es áthidalók, ezért bonyolult a csatlakoztatásuk. Ennek egyik módja a női-férfi áthidaló vezetékek használata, a műanyag tok eltávolítása a hüvely oldaláról, majd néhány fogó segítségével szorítsa meg szorosan a női jumper végét a kisebb MAX31820 csapok körül.

A NodeMCU bekapcsolása előtt ellenőrizze újra a csatlakozásokat, nehogy megsérüljenek az alkatrészek.

4. lépés: Villanás és futtatás

Villog

Ha minden hardver csatlakoztatva van, csatlakoztassa a NodeMCU -t és villanjon a következő paranccsal:

készíts flash -példákat/cpe439 ESPPORT =/dev/ttyUSB0

A/dev/ttyUSB0 a soros com, amely alatt a NodeMCU -nak meg kell jelennie. Ha más soros eszközt is csatlakoztatott, akkor az /dev /ttyUSB1 vagy más számként jelenik meg. Ellenőrizze, hogy kétszer futtathatja -e ezt a parancsot, egyszer a NodeMCU kihúzva, egyszer pedig csatlakoztatva, és hasonlítsa össze a különbséget:

ls /dev /ttyUSB*

Egy másik probléma, amellyel találkozhat, nem rendelkezik hozzáféréssel az eszközhöz. Ennek két módja van:

  1. Adja hozzá felhasználóját a tárcsázási csoporthoz:

    sudo adduser $ (whoami) tárcsázás

  2. chmod vagy válassza ki az eszközt:

sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Az első módszer előnyös, mivel állandó megoldás.

Futás

A flash parancs sikeres futtatása után az eszköz azonnal elindul, és elkezdi futtatni a lefordított kódot. A villogás után bármikor futtathatja a következő parancsot a soros kimenet megtekintéséhez:

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

Idő megtakarítása érdekében hozzáadhatja ezt a ~/.bashrc fájlhoz:

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

.. amely lehetővé teszi, hogy egyszerűen írja be a "nodemcu" parancsot a parancs aliasaként.

Ha minden megfelelően van konfigurálva, akkor a LED -szalagnak zölden kell világítania, és a soros képernyőn látnia kell a WiFi -csatlakozást, az IP -cím beszerzését, az MQTT -hez való csatlakozást és a hőmérséklet -adatok kiszorítását.

csatlakozik a MyWiFiSSID -hez, az 1dhcp csatornaindító elindul… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maszk: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okKéréshivatkozás: (Újra) csatlakozás az MQTT szerverhez test.mosquitto.org… xQueueReceived +25.50xQueueSend ok done

5. lépés: Interakció

Feltéve, hogy eszköze sikeresen csatlakozott a WiFi -hez és az MQTT -brókerhez, adatokat küldhet és fogadhat a NodeMCU -tól az MQTT segítségével. Ha még nem tette meg, telepítse a mosquitto client csomagot:

sudo apt-get install mosquitto-client

Most már használnia kell a mosquitto_pub és a mosquitto_sub programokat a héjából.

Hőmérséklet frissítések fogadása

A hőmérsékleti adatok fogadásához a mosquitto_sub paranccsal szeretnénk feliratkozni a témára, amelyhez a NodeMCU közzéteszi.

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

Látnia kell a terminálra érkező hőmérsékleti adatokat (Celsius -ban).

+25.87+25.93+25.68…

A LED szalag színének távoli beállítása

Egy egyszerű üzenetformátumot használnak az RGB értékek elküldésére a NodeMCU -ra MQTT -n keresztül. A parancs formátuma így néz ki:

r: RRRg: GGGb: BBB ~

Ahol az RRR, GGG, BBB a küldeni kívánt szín RGB értékeinek (0-255) felel meg. A parancs elküldéséhez a mosquitto_pub parancsot használjuk. Íme néhány példa:

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

Ha kreatív akar lenni, keressen egy online színválasztót, mint ez, és szerkessze a parancsot az Ön által választott RGB-értékkel.

Vigyázz

A projekt témái a /cpe439 /rgb és /cpe439 /temp értékre vannak állítva egy nyilvános MQTT brókeren, ami azt jelenti, hogy semmi sem akadályozza meg, hogy valaki más közzétegye vagy feliratkozzon ugyanazokra a témákra, mint te. Ha kipróbálja a dolgokat, nyilvános közvetítő használata jó, de komolyabb projektek esetén csatlakoznia kell egy jelszóvédett brókerhez, vagy saját brókerét kell futtatnia a szerveren.

6. lépés: A megvalósítás részletei

Onewire

Az ESP8266 csak 1 maggal rendelkezik, így a hosszú blokkoló feladatok, mint például a 750 ms -os várakozás a hőmérséklet -érzékelőre a hőmérsékletmérés elvégzéséhez, általában azt eredményezik, hogy a WiFi nem működik megfelelően, és esetleg összeomlik. A FreeRTOS paradigmában a vTaskDelay () hívja ezeket a hosszú várakozásokat, de sok rövidebb várakozási időre is szükség van, amelyek rövidebbek, mint a FreeRTOS rendszer kullancsai, és így nem kerülhetők el a vTaskDelay () használatával. Ezek elkerülése érdekében a projekt egyhuzalos illesztőprogramját úgy írták le, hogy lefusson egy állapot-gépről, amelyet az ESP8266 hardver időzítő hajt, amely akár 10 mikroszekundumonként is eseményeket válthat ki, ami történetesen a legrövidebb szükséges idő az egyhuzalos olvasási/írási műveletek között. A legtöbb más megvalósítás blokkoló hívást használ a delay_us () vagy hasonló kezeléséhez, de ha folyamatosan frissíti a hőmérsékletet, akkor ezek a késések összeadódnak, ami kevésbé reagáló alkalmazást eredményez. A kód ezen részének forrása az extras/onewire mappában található.

WS2812B

Az ESP8266 nem rendelkezik olyan szabványos hardver opciókkal a PWM számára, amelyek elég gyorsak ahhoz, hogy 800 kHz -es LED -csíkokat vezessenek. Ennek elkerülése érdekében ez a projekt az SPI MOSI tűt használja a LED -ek meghajtására. Az SPI órajelének beállításával és az SPI hasznos terhelésének megváltoztatásával meglehetősen megbízható vezérlést érhet el az egyes LED -ekről. Ez a módszer nem hibátlan- egy esetben a LED-eket 5 V-os áramforrásról kell táplálni, és egy szintváltót kell hozzáadni az SPI érintkező kimenetéhez. De a 3.3V működik. Másodszor, vannak hibák, amelyek az SPI módszerrel történő tökéletlen időzítés miatt következnek be. A harmadik pedig az, hogy az SPI -t semmi másra nem használhatja. A módszer további háttere itt található, és a kód ezen részének forrása az extras/ws2812 mappában található.

Megbízhatóbb módszer a LED szalagok meghajtására az i2 -k használata. Ez a módszer azonban sok chip-specifikus hack-et tartalmaz, így az SPI jobb választásnak tűnt tanulási gyakorlatként.

Ajánlott: