pondělí 30. května 2016

Arduino: bezdrátový RGB LED a Univerzální síťový modul

Dnes bych chtěl zdokumentovat dvě zařízení, nebo spíš Arduino moduly, které jsem navrhl a vyrobil již před mnoha měsíci, v podstatě hned na začátku mé Arduino kariéry. Používám je ve více hotových  zařízeních, které chci už dlouho popsat (například elektroměr, vodoměr, dětské noční světlo či osvětlení kuchyňské linky). Dnes tedy popíšu ty moduly a příště, při popisu konkrétního zařízení, se sem na hardware jen odkážu.

Smyslem níže popsaných modulů je udělat klíčový krok od prototypu nějakého vynálezu postaveného třeba na Arduinu Uno k finálnímu výrobku vhodnému k trvalé instalaci někde v bytě, domě či dokonce venku. U hotového výrobku obvykle preferujeme co nejmenší rozměry, napájení ze sítě či baterie, kompaktní tvar a pevnou krabičku, nějakou rozumnou svorkovnici - a naopak oželíme třeba USB konektor, který by jen zabíral místo, protože do něj není nic připojeno a už nikdy nebude.

Bezdrátový RGB LED driver

Před delším časem jsem se dověděl o RGB LED páscích - tedy takové "nudli" s plochými diodami, které dokáží svítit libovolnou barvou vzniklou kombinací tří základních barev - červené, zelené a modré. Hned mi učarovaly a chtěl jsem je okamžitě připojit k Arduinu a míchat barvy podle nálady, hudby, okolního osvětlení, teploty, úrovně hluku atd. atp. Ovšem tyto pásky pracují s 12V napájením a odebírají poměrně hodně proudu (podle své délky a výkonu), takže nejdou připojit přímo k Arduino pinům. Tudíž jsem začal pracovat na RGB LED driveru - zařízení, které bude umět řídit tři kanály o velkém výkonu.


Zároveň jsem byl v té době fascinován možnostmi bezdrátové komunikace na 433 MHz, kdy přijímač v ceně pod dvacet korun je schopen přijímat signály vysílané běžně dostupnými komerčními zařízeními typu dálkově spínané zásuvky či třeba domovního zvonku. Rozhodl jsem se ho tedy rovnou zapracovat do RGB LED driveru, abych mohl barvy světel ovládat na dálku jakýmkoliv 433MHz vysílačem.

Finální verze má následující vlastnosti:
  • Arduino Pro Mini v objímce (aby šlo lehce vyměnit, kdyby umřelo)
  • napájení přes standardní jack 5,5/2,1 mm (7 - 15 V)
  • tři výstupní kanály schopné řídit PWM celkový výkon až 60 W
  • bezdrátový přijímač připojený k pinu D2 (kvůli přerušení)
  • tři analogové piny vyvedené na svorkovnici
  • příprava na osazení LDR (fotorezistoru)
  • miniaturní rozměry 48 x 42 x 22 mm
  • kvalitní a pevná standardní krabička "KM 02" z ABS
Ty tři analogové piny vyvedené na vnější svorkovnici byly míněny pro další rozšiřitelnost, aby mohla být LED světla ovládaná i na základě informací z přídavných čidel (např. připojený mikrofon a tlesknutí dlaní). Analogové piny jsou "nejlepší", protože umí fungovat jako vstupně-výstupní, digitální anebo analogové, a jde na nich i vyvolávat externí přerušení procesoru, takže prostě dokáží obsloužit všechny situace.

Schéma zapojení je následující:

Plošný spoj je dělaný přesně na míru krabičky firmou +plosnaky.cz (toto je nějaká nejstarší revize, která ani neladí s nejnovějším schématem, ale pro ilustraci postačí):



Po osazení to vypadá takto:




Naprosto nejtěžší je pro mě vyrobit otvory v krabičce tak, aby přesně seděly na svorkovnici a napájecí zdířku:



Na konci stačí plošný spoj do krabičky jen posadit a zaklapnout víčkem, které kupodivu drží jen třením, není tu žádný šroubek (který by mi uvnitř zavazel):


Tento modul používám aktuálně na třech různých místech v domě (přičemž v jednom případě spíná ventilátor místo LEDek a ve dvou případech nemá bezdrátový přijímač vůbec osazen) a dovoluji si tvrdit, že se mi za ty roky osvědčil. Kdyby někdo měl zájem, mám ještě pár plošných spojů a krabiček, takže bych ho dokázal sestavit (a případně i naprogramovat pro určitou činnost).

Univerzální síťový modul

Toto honosné označení jsem přidělil následující krabičce, na které jsem pracoval déle než rok. V první fázi jsem se snažil integrovat Arduino s ethernetovým rozhraním. Cílem bylo mít zařízení, které bude mít v sobě volně programovatelné Arduino a zvenčí RJ45 síťový konektor, plus svorkovnici s hromadou vstupů a výstupů pro čidla a další rozšíření.


Samozřejmě jsem myslel i na možnost napájení přes PoE, tedy přímo po CAT5 kabelu:


Uvnitř používám komerčně dostupný maličký převodník z Ethernetu na SPI s čipem Wiznet W5100 (tedy stejným, jaký má standardní Arduino Ethernet shield). Celá konstrukce tomu byla podřízena - deska s Arduinem má na sobě konektor 2x5 pinů, do které se "síťová karta" zasunuje:



Když bylo toto Arduino+Ethernet zařízení prakticky hotové a pracovalo mi na několika místech, objevil se WiFi sériový převodník ESP8266 a vzal svět naprostým útokem. Mnozí arduinisté zahodili všechno, co do té doby vytvořili, a vrhli se do světa ESP, kde ale platí trošku jiná pravidla (8x méně analogových vstupů, jen 3,3V úrovně, méně GPIO atd.).

Ne tak já. Místo toho jsem si doslova umanul, že využiju tuto konstrukci a do stávajícího konektoru 2x5 pinů vytvořím modul s ESP8266. Tím se tato krabička stane nejvíc univerzální síťovou platformou, protože umožní plug&play výměnu modulu Ethernetu za modul WiFi a přitom vstupy a výstupy na svorkovnici zůstanou stejné a dobře známé. O mnoho měsíců později jsem měl tohle:


Není na něj vidět, ale na té destičce je z druhé strany ESP8266-07 a na místě RJ45 ethernetového konektoru trčí z krabičky konektor na (nepovinnou) externí anténu. Ostatní vlastnosti zůstávají zachovány, jak je vidno na připojených čidlech světla a teploty, které vyčítá Arduino a přes WiFi pak komunikuje s okolním světem stejně jako přes ethernet.



Pro zajímavost jedna starší verze plošného spoje (taktéž přesně na míru krabičce od +plosnaky.cz )

Nejvyšší čas zmínit parametry tohoto Univerzálního síťového modulu:
  • srdcem je Arduino Pro Mini v objímce (rychlá výměna při smrti)
  • napájení přes standardní jack 5,5/2,1 mm (5 - 15 V)
  • SSR na spínání síťového AC napětí 230 V (až 500 W)
  • PWM výkonový výstup pro LEDové pásky či DC motory
  • 5x GPIO (z toho 3x analog)
  • tlačítko (pro nastavení WiFi atp.)
  • kompaktní rozměry 84 x 60 x 22 mm
  • kvalitní a pevná standardní krabička "KM 22" z ABS
  • příprava na přímé připojení DS18B20
  • SW pro komunikaci přes Ethernet i WiFi

Jak vidíte, tento modul umí spínat přímo síťové spotřebiče, jako jsou světla v bytech, motory v čerpadlech a další. Umí také řídit (v rozsahu 0 - 100 %) stejnosměrně napájenou zátěž (LED osvětlení, DC motory) a navíc má pět pinů pro připojení čidel či dalších výstupů řídicích cokoliv. Díky síťovým rozhraním je ovladatelný na dálku. Ladil jsem na něm celé měsíce svou knihovnu pro ESP8266. Taktéž jsem se na něm naučil používat MQTT.

Mimochodem, ani krabička KM 22 nemá žádný šroubek, který by ji držel pohromadě, ale má čtyři kolíčky, které tak pevně drží v protilehlém kusu, že na žádné fotce není krabička plně domáčklá - ono je pak kumšt ji znovu rozdělat :-) I tady mi trvá velmi dlouho, než v krabičce vytvořím všechny ty prostupy na konektory, zdířky a svorky. Vždycky při tom lituju, že jsem raději neinvestoval do opravy či koupě plně funkční 3D tiskárny.

Aktuálně tento modul pracuje na dvou místech už téměř dva roky (jeden u klienta měří teplotu krbu a odesílá ji na www.teploty.info, druhý mi doma měří spotřebu elektřiny a vody). Nebojím se prohlásit, že i tento modul se mi osvědčil. Kdyby někdo měl zájem, mám (podobně jako výše) ještě pár plošných spojů a krabiček, takže bych ho dokázal sestavit a naprogramovat pro určitou činnost. Zájemci mi mohou napsat na mail petr@pstehlik.cz - další kontakty na mě jsou na webu www.pstehlik.cz.

Žádné komentáře:

Okomentovat