Lampki choinkowe sterowane z Raspberry Pi

Lampki choinkowe sterowane z Raspberry Pi

Święta to ten okres, w którym każdy elektronik tęsknie spogląda w kierunku wszystkich układów mrugających diodami. Postęp w elektronice zawitał i do tej grupy układów elektronicznych. Tak jak kiedyś do sterowania lampkami na świątecznym drzewku używano prostych multiwibratorów czy układów opartych na klasycznym NE555, tak teraz do sterowania nimi stosuje się moduły takie jak komputer jednopłytkowy Raspberry Pi.

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.

Fotografia 1. Zmontowany układ 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.

Tabela 1. Lista połączeń zasilacza z Raspberry Pi
Sygnał Pin Raspberry Pi
Zasilanie 5 V 2
Masa (GND) zasilacza 6
Fotografia 2. Podłączenie modułu z przekaźnikami

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.

Tabela 2. Lista połączeń modułu przekaźników z Raspberry Pi
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:

Fotografia 3. Przygotowanie przewodów od przedłużaczy
Fotografia 4. Listwa łącząca wiele przewodów
Fotografia 5. Instalacja łącząca moduł przekaźnikowy
Fotografia 6. Dołączone lampki testowe

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.

Fotografia 7. Dioda LED RGB ze sterownikiem WS2801
Fotografia 8. Diody RGB w obudowie gwiazdy

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.

Tabela 3. Lista połączeń łańcucha diod w gwieździe RGB LED i Raspberry Pi
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

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje październik 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich październik 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów