WiFi LED indikátor s hlasovým výstupem

WiFi LED indikátor s hlasovým výstupem

You are here:
< Zpět

Úvod

Před časem jsem řešil problém s indikací jednotlivých stavů Loxone, kdy jsem nechtěl používat tablet nebo telefon pro zjišťování, zda je vše v pořádku, ale chtěl jsem využít optické signalizace pomocí LED s hlasovým výstupem. Z tohoto důvodu jsem zvolil LED indikátor, který je viditelný z větší vzdálenosti a je možno jej umístit ve více kopiích různě po domě. Protože byl dům stavěný bez záměru centrálního řízení a tedy bez kabeláže, je jediným řešením bezdrátový přenos. Vzhledem k tomu, že je po celém domě a okolí dostupný Wifi signál, zvolil jsem jako základ WiFi modul NodeMcu. Pro signalizaci RGB LED modul s procesorem WS2812 a pro zvukový výstup modul DFMiniMP3Player. Všechno z Aliexpressu.

WiFi NodeMcu

Parádní zařízení pro komunikaci přes WiFi s možností programování pomocí jazyka pro Arduino. Napájení je řešeno standardním 5 voltovým zdrojem pro mobilní telefony. Programování se provádí prostřednictvím USB portu, který lze namapovat ve vývojovém prostředí.

 

Odkaz na produkt www.aliexpress.com/NodeMcu

Odkaz na schéma zapojení produktu https://github.com/nodemcu/nodemcu-devkit

DF Mini MP3 Player

Snad nejjednodušší a nejmenší zařízení, co jsem našel pro přehrávání MP3. Výkon na výstupu sice nic moc, ale pro moje účely, kdy jsem v místnosti a je tam připojený reproduktor s výkonem až 3W, to bohatě stačí. Kdyby to někomu nestačilo, tak si to může samozřejmě napojit k nějakému pořádnému zesilovači a to, že vám přetekla vana, bude slyšet i u sousedů, kdy vám soused před noční přijde tu vodu zastavit. Nepoužívám vanu…nepotřebuji zesilovač.

Dokumentace DFPlayer

Odkaz na produkt www.aliexpress.com/DFPlayerMP3

RGB LED modul WS2812

Modul je řízen pomocí sériové linky, na kterou se vysílá hodnota každé barvy v packetu za sebou. Úžasné na tom je to, že je možno řadit více modulů za sebou a ty pak fungují tak, že si první modul zpracuje první packet pro sebe a zbytek pošle dál. Je tak možno řídit v řadě i několik desítek modulů za sebou. Tady jsem to ovšem nechtěl vymýšlet, protože bych to skládání na LoxoNe musel udělat v PicoC nebo to pak skládat do packetů v Arduinu a to se mi jednoduše nechtělo. Nakonec to ovládám tak, že je každý modul na samostatné lince a řídím je separátně.

Dokumentace WS2812

Odkaz na produkt www.aliexpress.com/WS2812B

Zapojení

Zapojení je vcelku jednoduché. Vše jsou v podstatě moduly s již napájenými stabilizátory a blokovacími kondenzátory, tak je stačí pouze poskládat za sebe a propojit. Jedinými třemi externími součástkami jsou dva odpory a fotoodpor, který slouží k úpravě svitu LED podle okolního osvětlení. Nachystal jsem si desku v Eagle, ale ještě jsem ji nezkoušel.

Schéma zapojení

V zapojení jsou tři konektory. Jeden na připojení LED, druhý na připojení reproduktoru a třetí rezervní, kdy se nepoužívá, ale mohl by být využitelný pro další připojené zařízení. Třeba LCD nebo relé s optickou závorou.

Deska

Deska je jednostranná. Pro domácí podmínky je to jednodušší na výrobu a vzhledem k počtu spojů dostačující.

Deska i schéma pro Eagle jsou v tomto souboru: WifiRGB5

Zapojení LED modulu

Je to trochu prodrátované, ale jinak to nešlo udělat. Nechápu, proč ty moduly neotočili o 90 stupňů. Pak by to bylo mnohem jednodušší.

Vývojové prostředí

Do vývojového prostředí Arduina je potřeba doinstalovat modul NodeMCU. Návod pro instalaci je zde.

Dále pak je potřeba doinstalovat knihovny:

ESP8266WiFi.h (https://github.com/ThingPulse/esp8266-weather-station )

Adafruit_NeoPixel.h ( https://github.com/adafruit/Adafruit_NeoPixel )

DFMiniMp3.h ( https://github.com/Makuna/DFMiniMp3 )

Ostatní knihovny by měly být ve standardu Arduina.

Program v Arduinu

V podstatě se nejedná o nic složitého. Program provede základní nastavení a čeká na příkazy z Loxone. Mezitím si na analogovém vstupu A0 měří intenzitu osvětlení a podle ní snižuje nebo zvyšuje intenzitu LED diod. Moc jsem se s tím programováním nezdržoval, takže je to napsáno tak, aby to fungovalo a jestli budete mít někdo čas a chuť, tak ho můžete samozřejmě předělat.

Zde je odkaz na program v Arduinu: WiFiRGB5_Arduino

Příkazy pro ovládání LED – intenzita

PříkazPočet znakůRozsahPopis
*LED4Příkaz pro zobrazení na LED diodě
111 - 5LED pozice. Textová hodnota.
S1Pouze SSet – nastav barvu.
010 - 255Hodnota červené barvy. Numerická hodnota.
010 - 255Hodnota zelené barvy. Numerická hodnota.
010 - 255Hodnota modré barvy. Numerická hodnota.
\r1CRUkončení řádku
\n1LFUkončení řádku

Příklad: *LED3S\x0F\x0F\x0F\r\n

Příkazy pro ovládání LED – blikání

PříkazPočet znakůRozsahPopis
*LED4Příkaz pro zobrazení na LED diodě
111 – 5LED pozice
B1Pouze BBlink – blikej
110 – 1Zapíná (1) a vypíná (0) blikání. Znaková hodnota.
\r1CRUkončení řádku
\n1LFUkončení řádku

Příklad: *LED3B1\r\n

Příkazy pro ovládání MP3 – výběr skladby

PříkazPočet znakůRozsahPopis
*MP34Přehraj soubor
111 - 255Přehraje /mp3/001.mp3. Numerická hodnota.
\r1CRUkončení řádku
\n1LFUkončení řádku

Příklad: *MP3\x01\r\n

Příkazy pro ovládání MP3 – hlasitost

PříkazPočet znakůRozsahPopis
*VOL4Nastav hlasitost
110 - 30Hlasitost. Numerická hodnota.
\r1CRUkončení řádku
\n1LFUkončení řádku

Příklad: *VOL\x0F\r\n

Programování v Loxone

Programování je také vcelku jednoduché. Jako první je potřeba přidat virtuální výstup. V mém případě WiFiMP3.

Pak je potřeba jej nastavit. Zde se zadá IP adresa a Port, které jsou přednastavené v programu pro NodeMCU. Používám pevnou IP adresu, aby případně nedošlo k její změně po výměně DHCP serveru.

Po nastavení je potřeba přidat virtuální příkazy pro ovládání jednotlivých LED. Tady se nastavuje RGB barva, kdy se jeden příkaz pošle při sepnutí výstupu (červená) a jeden při vypnutí (zelená). Doma to mám trochu složitější, kdy si na WiFi modul posílám jednou za minutu stav všech vstupů, aby po odpojení napětí z WiFi modulu došlo k zobrazení aktuálního stavu vstupů a nečekalo se, až dojde ke změně. Původně jsem to řešil v PicoC, ale z nějakého mi neznámého důvodu se odesílaly všechny výstupy na WiFi modul a to programování bez debugeru v PicoC mi taky vhání slzy do očí, tak jsem to udělal pomocí bloků v Loxone.

Příkaz pro ovládání MP3 přehrávače v Loxone. Zde je možno nastavit číslo skladby.

Příkaz pro ovládání hlasitosti v Loxone. V noci méně hlasitá, protože je od všech klid a přes den hlasitější, protože se děti hádají, žena po nich řve a do toho se vám Loxone snaží říct, že vám přetekla vana.

Zapojení v Loxonu pak může vypadat třeba takto:

Nejedná se o nic složitého, ale svou úlohu to plní a to je důležité. Prozatím to mám bez krabičky, kdy čekám na dlouhé zimní večery a z toho důvodu to mám zatím v pracovně na stole (esteticky to ženě zatím nesedí do konceptu), ale v nejbližší době to dodělám. Pro inspiraci přikládám pár informativních hlášek ze zařízení. Jsou vytvořeny v programu Acapela

Poslední úprava článku January 16, 2019

4 thoughts on “WiFi LED indikátor s hlasovým výstupem

  1. zprovozněno na desce podle návodu, takže ta je OK, sériový monitor ukazuje přihlášení na WiFi a příkazy z Loxone se vypisují taky že jdou dovnitř, jen mi při napájení z PC-USB nejedou LEDky, na JP1 pin 1 ,2 je sotva 1,6 V. Tak nevím co mám špatně .. 🙁 ?

    1. Podle napětí to vypadá na napájení LEDky, ale to by se nemělo na těch LED modulech projevovat. Přidám tam obrázek, jak mám prodrátované ty moduly z Aliexpressu.

  2. díky za fotku LED mám naprosto stejně prodrátovaný 🙂
    Takže “ blbá otázka “ provozní napájení stačí přes USB a nebo se připojuje na NODEMCU piny VIN a G natvrdo 5V jak píšou v dokumentaci ?

  3. Mám to doma zapojené na napětí z VIN, protože to napájím z USB. Na NODEMCU je dioda, která na VIN propouští napětí z USB. Kdyby to mělo napájení z VIN, tak by to muselo být připojené na napětí ze stabilizátoru.
    Jediný rozdíl, který tam je v zapojení je zapojení G, které mám doma připojené na G vedle VIN, ale to by nemělo mít vliv, protože ty G jsou na celé NODEMCU propojené. Netuším, v čem by mohl být problém. Schéma NODEMCU připojím k článku.

Leave a Reply

Your email address will not be published. Required fields are marked *