Obsah:
- Krok 1: Vytvoření prostředí sestavení
- Krok 2: Získejte zdrojový kód, konfigurujte a sestavte
- Krok 3: Připojte hardwarové součásti
- Krok 4: Blesk a spuštění
- Krok 5: Interakce
- Krok 6: Podrobnosti o implementaci
Video: WiFi LED pásek + teplotní senzor s ESP8266: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Tento tutoriál popisuje kroky k nastavení ESP8266 a jeho připojení k teplotnímu senzoru a LED pásku a zároveň je schopen přijímat vstup a odesílat výstup pomocí MQTT přes WiFi. Projekt byl vytvořen pro kurz absolvovaný na Cal Poly San Luis Obispo na podzim 2016- CPE 439: Real Time Embedded Systems. Celkovým cílem bylo demonstrovat snadnost vytváření „věci“připojené k internetu pomocí levného hardwaru.
Požadované zásoby/vybavení:
- Vývojová deska NodeMCU ESP8266
- WS2812B LED pásek
- MAX31820 Teplotní senzor
- Prkénko
- Rezistor 4,7K ohm
- Rezistor 220 ohmů
- propojovací vodiče
- mikro USB kabel
- PC (nebo VM) s linuxem (např. Ubuntu)
Předpoklady/předpoklady:
- zkušenosti s používáním nástrojů příkazového řádku a instalací balíčků v distribuci založené na debianu
- základní porozumění syntaxi Makefile
- spojovací vodiče
Krok 1: Vytvoření prostředí sestavení
K sestavení projektu budete potřebovat na svém počítači nainstalovaný esp-open-sdk. Klikněte na odkaz a přečtěte si pokyny k sestavení. Stručně řečeno, budete provádět několik příkazů sudo apt-get k instalaci závislostí, klon git --recursive pro klonování/stahování esp-open-sdk a nakonec příkaz make k vytvoření esp-open-sdk.
Sleduj mě
Krok 2: Získejte zdrojový kód, konfigurujte a sestavte
Nyní, když je vytvořeno esp-open-sdk, klonujte úložiště projektu.
klon git
Přejděte do adresáře projektu, vytvořte složku.local a zkopírujte ukázková nastavení.
cd esp-rtos-testy
mkdir -p.local nastavení cp. příklad.mk.local/nastavení.mk
Nyní otevřete.local/settings.mk pomocí libovolného textového editoru a změňte následující nastavení:
- OPENSDK_ROOT: Absolutní cesta pro umístění esp-open-sdk, které jste vytvořili v kroku 1
- WIFI_SSID: SSID vaší WiFi sítě
- WIFI_PASS: Heslo vaší WiFi sítě
- PIXEL_COUNT: Počet pixelů na vašem LED pásku WS2812B
Poznámka: Vzhledem k tomu, že tento projekt využívá k napájení LED diody SPI a k jejich napájení používá NodeMCU 3.3v, pravděpodobně nebudete moci řídit více než ~ 60 LED.
Poznámka: Ostatní nastavení není třeba měnit, ale mohou být v případě potřeby. Doporučuje se zachovat pořadí priorit úkolů. Čím nižší číslo priority, tím nižší priorita úkolu.
Nyní vytvořte projekt:
make -C examples/cpe439
Pokud je vše správně nastaveno, mělo by se začít kompilovat. Na konci byste měli vidět:
Úspěšně vytvořen 'firmware/cpe439.bin'
Sleduj mě
Krok 3: Připojte hardwarové součásti
Nyní, když je kód kompilován, je čas připojit naše periferie.
Nejprve přilepte NodeMCU na prkénko a poté pomocí propojovacích vodičů proveďte připojení podle obrázku.
Je třeba si uvědomit několik věcí:
- Důležité: Datová linka WS2812B není obousměrná. Pokud se podíváte pozorně na značky na straně LED pásku, měli byste vidět malé šipky směřující jedním směrem. Výstup z D7 NodeMCU musí směřovat do WS2812B stejným způsobem jako ukazatel směru, který můžete vidět v diagramu, pokud se podíváte pozorně.
- V závislosti na tom, s jakým typem konektorů je váš WS2812B dodáván, bude možná nutné provést určité úpravy, aby se bezpečně připojily k prkénku. Aligátorové svorky můžete také použít k jejich připojení k propojovacím kabelům, které lze připojit na prkénko.
- Kolíky MAX31820 mají menší rozteč a jsou tenčí než standardní 0,1 "/2,54 mm propojky, takže je obtížné je propojit. Jedním ze způsobů, jak to obejít, je použít propojovací vodiče typu samec-samec, sundat plastové pouzdro ze ženské strany, poté pomocí kleští pevně spojte konce propojky kolem menších kolíků MAX31820.
Před zapnutím NodeMCU zkontrolujte zapojení, aby nedošlo k poškození součástí.
Krok 4: Blesk a spuštění
Bliká
Když je připojen veškerý hardware, připojte NodeMCU a flashujte pomocí následujícího příkazu:
make flash -C examples/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 je sériový kom, pod kterým by se měl NodeMCU zobrazovat. Pokud máte připojena další sériová zařízení, může se zobrazit jako /dev /ttyUSB1 nebo jiné číslo. Chcete -li zkontrolovat, můžete tento příkaz spustit dvakrát, jednou s odpojeným NodeMCU a jednou s připojeným a porovnat rozdíl:
ls /dev /ttyUSB*
Dalším problémem, se kterým se můžete setkat, je to, že nemáte oprávnění k přístupu k zařízení. Dva způsoby, jak to opravit, jsou:
-
Přidejte svého uživatele do skupiny dialoutů:
sudo adduser $ (whoami) dialout
- chmod nebo chown zařízení:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Upřednostňuje se první metoda, protože se jedná o trvalé řešení.
Běh
Po úspěšném spuštění příkazu flash se zařízení okamžitě spustí a začne spouštět kompilovaný kód. Kdykoli po blikání můžete spustit následující příkaz a sledovat sériový výstup:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Chcete -li ušetřit čas, můžete toto přidat do souboru ~/.bashrc:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
..který vám umožní jednoduše zadat "nodemcu" jako alias pro tento příkaz.
Pokud je vše správně nakonfigurováno, měl by se váš LED pásek rozsvítit zeleně a na sériovém čísle byste měli vidět připojení WiFi, získat IP adresu, připojit se k MQTT a zprávy, že jsou vytlačována data o teplotě.
propojeno s MyWiFiSSID, kanál 1dhcp klient … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maska: 255.255.255.0,: (Opětovné) připojení k serveru MQTT test.mosquitto.org… xQueueReceive +25,50xQueueSend ok donePend MQTT connect… MQTTv311donexQueueReceive +25,56 xQueueSend ok
Krok 5: Interakce
Za předpokladu, že je vaše zařízení připojeno k WiFi a broker MQTT úspěšně, budete moci odesílat a přijímat data z NodeMCU pomocí MQTT. Pokud jste to ještě neudělali, nainstalujte si balíček mosquitto clients:
sudo apt-get install mosquitto-clients
Nyní byste měli být schopni používat programy mosquitto_pub a mosquitto_sub ze svého shellu.
Příjem aktualizací teploty
Chcete -li přijímat údaje o teplotě, budeme se chtít pomocí příkazu mosquitto_sub přihlásit k odběru tématu, do kterého NodeMCU publikuje.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Měli byste vidět údaje o teplotě (ve stupních Celsia), přicházející do terminálu.
+25.87+25.93+25.68…
Vzdálené nastavení barvy LED pásku
K odeslání hodnot RGB na NodeMCU přes MQTT se používá jednoduchý formát zprávy. Formát příkazu vypadá takto:
r: RRRg: GGGb: BBB ~
Kde RRR, GGG, BBB odpovídají hodnotám RGB (0-255) barvy, kterou chcete odeslat. K odeslání našeho příkazu použijeme příkaz mosquitto_pub. Zde jsou nějaké příklady:
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
Pokud chcete být kreativní, najděte si online výběr barev, jako je tento, a upravte příkaz s libovolnou zvolenou hodnotou RGB.
Dávej si pozor
Témata v tomto projektu jsou nastavena na /cpe439 /rgb a /cpe439 /temp na veřejném makléři MQTT, což znamená, že nic nebrání tomu, aby někdo jiný publikoval nebo se přihlásil k odběru stejných témat jako vy. Pro vyzkoušení věcí je použití veřejného brokera v pořádku, ale u serióznějších projektů se budete chtít připojit k brokerovi s ochranou heslem nebo spustit vlastního brokera na serveru.
Krok 6: Podrobnosti o implementaci
Onewire
ESP8266 má pouze 1 jádro, takže dlouhé blokovací úlohy, jako je čekání 750 ms na teplotní senzor, aby provedl měření teploty, by normálně vedly k tomu, že WiFi nefunguje správně, a možná dokonce i ke zhroucení. V paradigmatu FreeRTOS voláte vTaskDelay (), abyste zvládli tato dlouhá čekání, ale mezi čteními a zápisy, které jsou kratší než zaškrtnutí systému FreeRTOS, je také zapotřebí mnoho kratších čekání, a proto se jim vTaskDelay () nelze vyhnout. Aby se také obešly, byl ovladač onewire v tomto projektu napsán tak, aby běžel ze stavového stroje, který je poháněn hardwarovým časovačem ESP8266, který může spouštět události až každých 10 mikrosekund, což je shodně nejkratší požadovaný čas mezi operacemi čtení/zápisu onewire. Většina ostatních implementací k tomu používá blokovací volání delay_us () nebo podobné, ale pokud neustále přijímáte aktualizace teploty, všechna tato zpoždění se začínají sčítat, což má za následek méně citlivou aplikaci. Zdroj pro tuto část kódu je umístěn ve složce extras/onewire.
WS2812B
ESP8266 nemá žádné standardní hardwarové možnosti pro PWM dostatečně rychlé pro napájení LED pásů na 800KHz. Chcete -li to obejít, používá tento projekt k ovládání diod SPI MOSI. Úpravou hodinové rychlosti SPI a změnou užitečného zatížení SPI můžete dosáhnout poměrně spolehlivého ovládání každé jednotlivé LED. Tato metoda není bez chyb- pro jednu by LED diody měly být napájeny zdrojem 5 V a na výstup pinu SPI by měl být přidán řadič úrovně. Ale 3,3 V funguje. Za druhé, existují závady, ke kterým dochází v důsledku nedokonalého načasování pomocí metody SPI. A za třetí, nyní nemůžete SPI použít na nic jiného. Další pozadí této metody najdete zde a zdroj pro tuto část kódu je umístěn ve složce extras/ws2812.
Spolehlivější metodou pro řízení LED pásků je použití i2s. Tato metoda má však spoustu hacků specifických pro čipy, takže se zdálo, že SPI je jako učební cvičení lepší volbou.
Doporučuje:
Teplotní senzor TMP36 a LCD displej využívající Arduino (Tinkercad): 7 kroků
Teplotní senzor TMP36 a LCD displej využívající Arduino (Tinkercad): Ahoj všichni! Jsme studenti z University Tun Hussein Onn Malajsie (UTHM), kteří provádějí projekt s cílem demonstrovat, jak můžeme simulovat teplotní čidlo, LCD a Arduino pomocí Tinkercad jako součásti našich osnov pro UQD0801 (Robocon 1) (
Teplotní senzor pro Arduino aplikován na COVID 19: 12 kroků (s obrázky)
Teplotní senzor pro Arduino aplikovaný na COVID 19: Teplotní senzor pro Arduino je základním prvkem, když chceme měřit teplotu procesoru lidského těla. Teplotní čidlo s Arduinem musí být v kontaktu nebo blízko, aby mohlo přijímat a měřit úroveň tepla. Takhle t
Inteligentní teplotní senzor: 6 kroků
Inteligentní teplotní senzor: Můj nedávný experiment s vodotěsnou sondou teplotního senzoru DS18B20 a ESP-01. Cílem bylo navrhnout takové zařízení, které dokáže monitorovat a zaznamenávat teplotu mého 109 galonového akvária, a také mohu kontrolovat teplotu z jakékoli části světa. S
Teplotní senzor (Arduino): 8 kroků
Teplotní senzor (Arduino): Tento projekt je ideální pro středně pokročilé a začátečníky. Nastavení je velmi jednoduché. Existuje čip s názvem LM35 (odkaz pro další vysvětlení), který umožňuje Arduinu určit teplotu okolí
LED teplotní senzor: 5 kroků
LED teplotní senzor: V tomto projektu se naučíte mnoho různých věcí. Naučíte se, jak aktivovat TMP a jak převést jeho výstupy na Fahrenheit. Poté se v závislosti na teplotě rozsvítí různá světla. Na konci budete mít LED te