Przedstawiony w poniższym artykule projekt obejmuje użycie minikomputera Raspberry Pi do sterowania ośmioma gniazdkami prądu zmiennego, które są podłączone do łańcuchów lampek choinkowych. Każdy z łańcuchów lampek jest prostym, jednokolorowym sznurem żaróweczek. Aby nadać pokazowi świateł na drzewku bardziej dynamiczny charakter, w systemie można zamontować dodatkowo gwiazdę RGB z 25 diodami LED RGB, które również będą sterowane.
Dodatkową funkcją wynikającą z zastosowania komputera jednopłytkowego Raspberry Pi zamiast prostszych kontrolerów jest to, że popularna Malina umożliwia synchronizację świateł z muzyką. Natomiast dzięki podłączeniu Raspberry Pi do bezprzewodowej sieci Wi-Fi istnieje możliwość łatwego zdalnego sterowania lampkami.
Potrzebne elementy
Poniżej znajduje się lista elementów, jakie do konstrukcji układu zastosował autor projektu. Należy jednakże pamiętać, że wiele z nich można zastąpić innymi, kompatybilnymi urządzeniami, więc konstruując własny sterownik do światełek choinkowych, nie trzeba się trzymać w 100% poniższej listy. Do budowy sterownika potrzebne będą:
- Komputer jednopłytkowy Raspberry Pi. Każdy model i każda wersja tych minikomputerów poradzi sobie w opisanej tutaj aplikacji, więc zastosujemy ten, który mamy pod ręką albo który będzie najtańszy,
- Karta microSD do zapisania systemu operacyjnego i oprogramowania sterownika. Rekomendowana jest markowa karta o pojemności co najmniej 8 GB,
- Karta sieciowa (Wi-Fi) na USB, jeżeli wybrany przez nas minikomputer nie ma zintegrowanej karty bezprzewodowej,
- Moduł przekaźników elektronicznych. Autor użył ośmiokanałowego modułu SainSmart, dostępny na Amazonie. Przekaźniki elektroniczne w układzie mają maksymalny prąd 2 A, co jest wartością wystarczającą do zasilania chyba dowolnych lampek choinkowych. Należy unikać w tym systemie sterowania przekaźnikami elektromechanicznymi, ponieważ przekaźniki takie są głośne podczas pracy (klikają w czasie przełączania),
- Zasilacz 5 V, 3 A do zasilania diod gwiazd i Raspberry Pi,
- Zasilacz 5 V, 1A do zasilania przekaźników elektronicznych,
- Okablowanie do połączenia ze sobą wszystkich modułów,
- Osiem przedłużaczy dla światełek choinkowych,
- Złączki i inne elementy łączeniowe – wedle uznania i wygody podczas montażu,
- Obudowa (może być zrobiona samodzielnie albo kupiona obudowa uniwersalna),
- Głośniki do odtwarzania muzyki z Raspberry Pi.
Do zestawienia LED-owej gwiazdy RGB są potrzebne:
- 25 sztuk 12 mm diody RGB z sterownikiem (WS2801),
- Arkusz plastiku do zamontowania w nim diod,
- Arkusz matowego leksanu/pleksiglasu itp. do zakrycia LED-ów i rozmycia ich światła,
- Materiały do zrobienia obudowy gwiazdy (np. listewki drewniane),
- Czarna i biała farba w sprayu.
Oczywiście, potrzebne będą również lampki choinkowe. Autor wybrał następujący komplet:
- Białe lampki (100 punktów) – 4 sztuki,
- Białe lampki (50 punktów) – 1 sztuka,
- Czerwone lampki (100 punktów) – 2 sztuki,
- Zielone lampki (100 punktów) – 2 sztuki,
- Niebieskie lampki (100 punktów) – 2 sztuki.
Do własnej choinki można zestawić dowolny zestaw lampek choinkowych w dowolnych kolorach.
Połączenia wewnętrzne w sterowniku
Zanim rozpoczniemy łączenie poszczególnych elementów z Raspberry Pi, należy skonfigurować komputer jednopłytkowy. Najlepiej zrobić to, zanim zamkniemy komputer w obudowie, gdyż niezbędne będzie dołączenie klawiatury i monitora lub telewizora. Celem jest takie skonfigurowanie systemu, by pracował bez kontroli z klawiatury, a jedynie przez sieć. Dodatkowo, na tym etapie powinniśmy doinstalować wszystkie wymagane biblioteki, takie jak te, które potrzebne są do obsługi diod LED WS2801.
Najprościej jest zainstalować system operacyjny Occidentalis na karcie microSD naszego komputera – ta dystrybucja Linuksa, stworzona przez Adafruit, ma wszystkie najpotrzebniejsze nam elementy. Po zainstalowaniu systemu musimy tylko skonfigurować kilka drobnych rzeczy:
- Powinniśmy wyłączyć interfejs GUI – Raspberry Pi ma bootować się bezpośrednio do linii komend,
- Edytując plik /etc/network/interfaces, wpisujemy dane do logowania do naszej sieci bezprzewodowej oraz przydzielamy komputerowi statyczny numer IP, aby zawsze można było odnaleźć go w naszej sieci,
- Instalujemy usługi Telnet oraz FTP,
- Instalujemy bibliotekę Pygame – będzie używana przez skrypty w Pythonie do odtwarzania plików MP3 i WAV.
W tym momencie odłączamy od komputera jednopłytkowego ekran, klawiaturę i mysz, i możemy połączyć się poprzez sieć (przez SSH). Teraz podłączamy Raspberry Pi do potrzebnych modułów i umieszczamy całość w obudowie.
Na fotografii 1 pokazano zmontowany układ w obudowie. Obudowę można wykonać w dowolny sposób - autor konstrukcji użył drewna do zrobienia prostej obudowy, ale system będzie działał tak samo dobrze np. w obudowie uniwersalnej. Pamiętajmy, aby była ona na tyle duża, by pomieściła wszystkie potrzebne moduły i ich zasilacze.
W obudowie wykonujemy dwa otwory o średnicy około 4 cm, przez które wyprowadzimy przewody do przedłużaczy sterowanych przez Raspberry Pi i doprowadzimy zasilanie sieciowe do znajdującego się w środku przedłużacza. Jedno z gniazd posłuży nam do zasilania Raspberry Pi (zasilacz zaznaczony na fotografii 1 na zielono). Zasilanie 5 V podłączamy do komputera jednopłytkowego zgodnie z listą połączeń z tabeli 1. Po podłączeniu zasilania możemy uruchomić Raspberry Pi i zalogować się do niego przez sieć. Po sprawdzeniu poprawności montażu zasilacza odłączamy zasilanie od sterownika i instalujemy w nim moduł z przekaźnikami elektronicznymi, jak pokazano na fotografii 2.
Sygnał | Pin Raspberry Pi |
Zasilanie 5 V | 2 |
Masa (GND) zasilacza | 6 |
Do pinów zasilania modułu podłączamy zasilacz 5 V (inny niż dla Raspberry Pi). Dzięki tranzystorom w obwodzie sterowania przekaźnikami, sygnały z Raspberry Pi o napięciu 3,3 V mogą sterować modułem wykonawczym. Komputer jednopłytkowy łączymy poprzez wyjścia GPIO0...GPIO7 z modułem przekaźników, zgodnie z danymi z tabeli 2. Jeśli zastosowaliśmy inny moduł niż Raspberry Pi Model B, upewnijmy się, że poszczególne linie GPIO są wyprowadzone w tych samych miejscach. Jeśli moduł, tak jak ten pokazany na fotografiach, ma na wejściu terminale śrubowe, dobrze jest połączenia te wykonać po zamontowaniu obu elementów w obudowie, aby można było przyciąć kable łączące do odpowiedniej długości. Na koniec upewnijmy się, że złącza są dobrze podłączone do Raspberry Pi i odpowiednio dokręcone w module z przekaźnikami elektronicznymi. Na module z przekaźnikami znajdują się także diody LED, sygnalizujące załączenie każdego z przekaźników, tj. wystawienie stanu wysokiego na odpowiednim pinie GPIO Raspberry Pi. Pozwoli nam to przetestować, czy wszystko zmontowaliśmy poprawnie.
Sygnał | Pin Raspberry Pi |
GPIO0 | 11 |
GPIO1 | 12 |
GPIO2 | 13 |
GPIO3 | 15 |
GPIO4 | 16 |
GPIO5 | 18 |
GPIO6 | 22 |
GPIO7 | 7 |
Masa (GND) | 6, 9, 14, 20 lub 25 |
Program testowy dla przekaźników
Aby przetestować poprawność montażu elementów wewnątrz sterownika, możemy uruchomić na Raspberry Pi prosty skrypt napisany w Pythonie (listing 1), który przetestuje podłączone do układu przekaźniki elektroniczne.
Listing 1. Skrypt testujący działanie przekaźników
#!/usr/bin/env python
import RPi.GPIO as GPIO, time
# Ustawienie trybu obsługi GPIO
GPIO.setmode(GPIO.BOARD)
# 10 sekund oczekiwaniua
time.sleep(10.0)
# GPIO0
# Konfiguracja pinu 11 (GPIO0) jako wyjścia
GPIO.setup(11, GPIO.OUT)
# Wystawienie na GPIO0 stanu wysokiego
# załączenie przekaźnika
GPIO.output(11, True)
# 2 sekundy oczekiwania
time.sleep(2.0)
# Wystawienie na GPIO0 stanu niskiego
# wyłączenie przekaźnika
GPIO.output(11, False)
#GPIO1
GPIO.setup(12, GPIO.OUT)
GPIO.output(12, True)
time.sleep(2.0)
GPIO.output(12, False)
#GPIO2
GPIO.setup(13, GPIO.OUT)
GPIO.output(13, True)
time.sleep(2.0)
GPIO.output(13, False)
#GPIO3
GPIO.setup(15, GPIO.OUT)
GPIO.output(15, True)
time.sleep(2.0)
GPIO.output(15, False)
#GPIO4
GPIO.setup(16, GPIO.OUT)
GPIO.output(16, True)
time.sleep(2.0)
GPIO.output(16, False)
#GPIO5
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, True)
time.sleep(2.0)
GPIO.output(18, False)
#GPIO6
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
time.sleep(2.0)
GPIO.output(22, False)
#GPIO7
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, True)
time.sleep(2.0)
GPIO.output(7, False)
Musimy wpisać (będąc w folderze, w którym znajduje się skrypt test.py) w linii poleceń terminalu następujące polecenie:
Po zamontowaniu przedłużaczy sieciowych możemy podłączyć do nich lampki. Jak pokazano na fotografii 6, mogą to być zwykłe lampki podłączane do gniazdka, a nie lampki choinkowe. Aby przetestować, czy wszystko zostało podłączone poprawnie, można uruchomić ponownie skrypt z listingu 1. Przed podłączeniem lampek choinkowych należy upewnić się, że ich całkowity pobór prądu nie przekroczy dopuszczalnego prądu przekaźników (w tym wypadku 2 A). Warto zmierzyć to multimetrem ustawionym na pomiar prądu zmiennego. Zastosowane w projekcie lampki pobierają 0,34 A na jeden łańcuch, a autor planuje podłączyć po dwa łańcuchy na przekaźnik, co daje 0,68 A – istotnie poniżej limitu dwóch amperów.
Budowa gwiazdy RGB LED
Kolejnym elementem ozdobnym, jaki wykonamy, jest gwiazda RGB. Dzięki zastosowaniu trójkolorowych diod LED możliwa jest zmiana barwy ich świecenia na niemalże dowolny kolor. Moduły WS2801, zastosowane w tym projekcie, integrują w sobie sterownik PWM dla diody RGB z interfejsem cyfrowym. Po połączeniu sterowników z dyskretnymi diodami LED RGB stanową one całość, jak pokazano na fotografii 7. Dzięki temu ich połączenie jest niezwykle proste – diody łączy się szeregowo. Po umieszczeniu wszystkich diod w przygotowanej obudowie (patrz fotografia 8) łączymy je ze sobą szeregowo. Autor projektu wykonał gwiazdę z drewna, w której umieścił 25 diod LED RGB w podstawce z ABS-u. Przykrył ją następnie fragmentem mlecznej pleksi, aby rozmyć światło – dzięki temu gwiazda świeci bardziej jednorodnie i nie są widoczne poszczególne punkty świetlne.
Ostatnim krokiem jest wykonanie odpowiedniej długości przedłużacza dla gwiazdy RGB. Musi mieć cztery kable – dwa do zasilania i dwa dla danych i zegara. Diody zasilane są napięciem 5 V, więc podłączamy dwa kable do, odpowiednio, masy i zasilacza 5 V (tego samego, do którego podłączony jest komputer jednopłytkowy Raspberry Pi). Pozostałe dwa kable podłączamy do minikomputera zgodnie z tabelą 3. Po sprawdzeniu wszystkich połączeń diod do zasilania i Raspberry Pi możemy uruchomić program, który pozwoli przetestować jej działanie.
Sygnał | Pin Raspberry Pi |
Dane (MOSI) | 19 |
Zegar (SCLK) | 23 |
Program testowy dla diod RGB
Po podłączeniu gwiazd RGB LED możemy przetestować ich działanie. W tym celu uruchomimy skrypt ledtest.py, umieszczony na listingu 2. Należy przejść do folderu, w którym znajduje się skrypt i w linii komend wpisać:
Nikodem Czechowski, EP