Projekt Arduino: Kontroler oświetlenia w mieszkaniu

in #polish6 years ago (edited)

Od dawna mnie kusiło, aby zrobić sobie niezawodny system sterowania światłem w mieszkaniu. Zrobić, nie kupić gotowy, bo w tym przecież cała frajda. Długo kończyło się na planach, jednak wreszcie się udało! :)

Założenia projektu były następujące:

  • umożliwienie sterowania oświetleniem w domu w możliwie niezawodny, prosty sposób.
  • gabaryty sterownika muszą być jak najmniejsze, tak małe na ile pozwolą domowe warunki produkcji.

Wobec powyższego, po zweryfikowaniu moich wieloletnich zapasów elektronicznych podzespołów, stwierdziłem, że w pełni zadowoli mnie sterowanie przy użyciu pilota od TV. Pilot zazwyczaj leży pod ręką, jest w nim masa przycisków, których się nie używa, dlaczego więc nie wykorzystać ich do włączania światła?

Do budowy prototypu użyłem Arduino w połączeniu z odbiornikiem podczerwieni TSOP 2236 oraz scalonym układem Darlingtona ULN2003A. Schemat poniżej:

schemat.jpg

Program dla Arduino zrealizowałem w taki sposób, że po włączeniu zasilania mam ok 2s na wciśnięcie przycisku na pilocie w celu jego zapamiętania w pamięci. Potem Arduino przechodzi w tryb normalnej pracy i odebranie zaprogramowanego kodu skutkuje włączeniem światła.
Na wejście powyższego obwodu zakładam podawanie napięcia 12V DC. Takie samo napięcie pojawi się na wyjściu obwodu w momencie odebrania przez TSOP 2236 właściwego, zapamiętanego uprzednio przez Arduino kodu pilota IR.
Mikrokontroler po odebraniu właściwego kodu IR pilota, który odczytuje na porcie 9, zmienia stan portu 10 na wysoki. To z kolei powoduje wysterowanie układu ULN2003A. Na jego wyjściu pojawia się masa układu. W efekcie pomiędzy napięciem podanym na wejściu(żółty przewód na schemacie) i wyjściem ULN2003A pojawia się pożądane napięcie.
Do tak wysterowanego wyjścia 12VDC można podłączyć odbiornik o prądzie znamionowym ok 2A( w moim wypadku w taki sposób steruję listwy oświetleniowe LED). Jeśli zajdzie potrzeba włączania oświetlenia o większej mocy/większym napięciu(np lampa 230V), wystarczy do wyjścia podłączyć przekaźnik i sterować takim odbiornikiem przy użyciu jego styków.
Kolorem czerwonym zaznaczyłem przewód napięcia 5V pobieranego ze stabilizatora 7805. Napięcie takie jest wymagane dla Arduino oraz odbiornika IR. Wyższe napięcie oczywiście uszkodzi mikro-kontroler, więc nie radzę próbować ;)

Prototyp poskręcany na płycie Arduino okazał się działać jak należy, jednak nie spełniało to moich oczekiwań co do gabarytów urządzenia, dlatego zrealizowałem projekt finalny obwodu, którego owocem jest taka płytka o wymiarach 44 mm x 26 mm :

tn__IGP2394.jpg

tn__IGP2389.jpg

tn__IGP2391.jpg

tn__IGP2388.jpg

Mniejszej już się nie dało wykonać przy założeniu, że będzie to obwód lutowany techniką przewlekaną (THT).
Gabaryty takie są jednak dla mnie wystarczająco niewielkie i jestem w pełni zadowolony z efektu. Płytka z łatwością mieści się do puszki pod włącznikiem oświetlenia LED, pod moimi półkami. Dosyć długo zastanawiałem się, jak ukryć sterownik przy lampie 230V. W końcu w swoich rupieciach znalazłem zasilacz impulsowy 12V, który po otwarciu jak się okazało ma wystarczająco dużo miejsca wewnątrz, aby umieścić w nim zaizolowaną płytkę, wraz z miniaturowym przekaźnikiem:

IMG_20180709_211346509.jpg

W tym wypadku zrezygnowałem z niebieskich, śrubowych złącz ARK wejścia i wyjścia, oraz podstawek pod układy scalone, co dodatkowo zmniejszyło rozmiary płytki. Po złożeniu obudowy całość wygląda jak normalny zasilacz, tyle tylko, że wychodzi z niego przewód bezpośrednio do lampy, a w obudowie jest mały otwór przez który TSOP2236 odbiera sygnały z pilota:
IMG_20180712_153516520.jpg

Oczywiście wyprodukowałem sobie więcej płytek na zapas, bo robienie jednej sztuki mija się ekonomicznie z celem. Poza tym mam jeszcze trochę świateł w domu, które będę chciał zmodyfikować o mój sterownik :).

Tak to wygląda w czasie pracy w przypadku listew LED:

A tak w przypadku lampki 230V:

Jeśli kogoś interesuje kod Arduino, udostępniam na Github:
https://github.com/flockii/IRRemoteLight

Użyłem framworka Visual Micro dla Arduino, ale można ręcznie skopiować i użyć w normalnym Arduino IDE.
Wymagana biblioteka IRRemote, dostępna na stronie projektu Arduino.

W ten oto sposób nie ruszając się z fotela mogę pstrykać sobie wszystkie światła dokoła, za pomocą pilota do TV. Poczucie autorskiego rozwiązania - bezcenne, frajda podczas konstruowania niesamowita. Polecam każdemu, kto lubi się bawić elektroniką.

Co można tu jeszcze dodać?

Myślę nad centralnym nadajnikiem IR, z którego mógłbym wysyłać sygnały do wszystkich urządzeń np z sufitu. Jeśli się za to zabiorę, będzie on wyposażony w tani moduł WIFI, któych teraz pełno. Otworzy to cały wachlarz możliwości, jak np sterowanie z aplikacji w telefonie, albo przez stronę WWW. Będzie z tym cała masa ciekawej zabawy.
Inna modyfikacja, to implementacja 2 kierunkowej transmisji IR nadajnik-odbiornik. Mógłbym wówczas przesyłać zwrotnie informacje o różnych parametrach zależnie od potrzeb np:

  • temperaturze,
  • napięciu
  • wilgotności
  • zapyleniu

Wtedy nie będzie to już jedynie sterownik oświetlenia, ale zalążek bazującego na IR systemu typu "inteligentny budynek home made" :). Czas pokaże czy uda mi się zrealizować te plany. Jeśli tak, na pewno się nimi tutaj podzielę.

Rozwiązanie na pewno nie jest przełomowe, ani "high end", ale dostarczyło mi masę radości. Musiałem zagłębić się w ciekawe rozwiązania dotyczące nadawania IR, zaprojektować płytkę, wreszcie napisać kawałek kodu i poświęcić trochę czasu na przetestowanie i poprawki. Polecam każdemu kto lubi elektronikę i programowanie, bo na końcu jest prezent w postaci działającego, własnego urządzenia i większej wiedzy. Życzę wszystkim powodzenia!

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70733.96
ETH 3563.16
USDT 1.00
SBD 4.76