Radiowe sterowanie diodami

Radiowe sterowanie diodami

Witam,

dzisiaj postaram się opisać sterowanie diodami ws2812b za pomocą modułów radiowych. Aby móc odbierać i nadawać informacje potrzebujemy jakiegoś mikrokontrolera do sterowania. Ja wykorzystałem arduino nano i pro mini (ze względu na małe rozmiary), ale to jakie arduino się użyje nie ma znaczenia.

Piszę diody ws2812 jednak producent podaje, że są to inteligentne sterowniki LED z wbudowanym źródłem światła. Czyli jest to sterownik umieszczony w obudowie diody RGB. Możemy spotkać te diody jako taśmy, pojedyncze tht lub smd. Zaletą jest to, że diody łączymy szeregowo i do sterowania całym “sznurem” diod wystarczy nam pojedynczy pinu cyfrowy mikrokontrolera. Diody są zasilane napięciem od 3.5V. do 5.3V. Należy uważać, aby nie przekroczyć tego napięcia, bo grozi to spaleniem diody. Do sterowania diod będzie potrzebna biblioteka NeoPixel Library.

 

Potrzebne elementy:

Moduł radiowy nadajnik FS100A + odbiornik 433 MHz

-2 x Arduino(każdy wybiera jakie mu pasuje)

Tact Switch

WS2811/WS2812

Kondensator ceramiczny 100nF

 

I coś, aby zrobić prototyp i sprawdzić czy działa:

Przewody połączeniowe męsko-męskie

Płytka stykowa 830 otworów

 

 

Zaczniemy od hardwar’u:

 

WS2812b:

Ja użyłem pojedynczych diod ws2812b smd. Każda dioda posiada 4 piny(Vcc,Gnd,DOUT,DIN). Diody łączymy poprzez podłączenie pinu “DOUT” pierwszej diody do pinu “DIN” drugiej diody(połączenie szeregowe). Gnd i Vcc podłączamy do każdej kolejnej diody. Robimy to tyle razy ile chcemy podłączyć diod. W razie jakich kolwiek wątpliwości zawsze możemy zajrzeć do noty katalogowej.

Tak wygląda schemat podłączenia z noty katalogowej:

Przechwytywanie

Nie możemy zapominać też to podłączeniu kondensatorów(na schemacie oznaczone C1,C2).

 21

Moduł radiowy nadajnik i odbiornik:

Odbiornik i nadajnik komunikują się ze sobą na częstotliwości 433 MHz. Urządzenia zasilane są napięciem  od 2,5 V do 12 V.  Z mikrokontrolerem komunikują się pomocą interfejsu jednoprzewodowego. Do obsługi modułów użyjemy biblioteki  VirtualWire.

Podłączenie nadajnika:

Nadajnik posiada 3 piny pierwszy z lewej to szyna danych, pierwszy z prawej to Gnd a środkowy to Vcc.

nadajnik_bb

4

Podłączenie odbiornika:

Odbiornik posiada 4 piny pierwszy z lewej to Vcc a pierwszy z prawej to Gnd, piny 2 i 3 są zmostkowane (jeśli przyjrzymy się na ścieżki w płytce możemy zobaczyć, że są zmostkowane) i jest to szyna danych.

odbiornik_bb

3

Software:

Biblioteka NeoPixel Library:

Definiujemy liczbę diod i na którym pinie jest wyjście sygnału do sterowania diodami. Trzeba pamiętać, że pin sterujący musi być PWM.

 

begin() – Inicjalizacja biblioteki

 

setPixelColor(poz , R, G, B) – ustawienie na pozycji (poz) diody i ustawienie jasności świecenia każdego z poszczególnych składowych (R-czerwony,G-zielony,B-niebieski)

poz – numer pozycji diody liczymy od zera, czyli pierwsza dioda ma wartość “0”

R,G,B- wartości każdego z kolorów zawierają się w zakresie <0:255>

show() – wysyła dane do diod

 


 

Biblioteka VirtualWire:

Nadajnik:

Ustawienie do którego pinu jest podpięta szyna danych ( vw_set_tx_pin(10) ) i z jaką prędkością pracuje moduł (  vw_setup(2000) ).


 

Odbiornik:

Dodatkowo w odbiorniku dochodzi opcja inicjalizacji odbierania danych ( vw_rx_start().

Definiowanie zmiennych potrzebnych do poprawnego działania programu.

 

 Cały kod do nadajnika:


 

Cały kod do odbiornika:

Działanie:

Jeśli przycisk nie jest wciśnięty wysyłane jest “nie” podłączając mikrokontroler z odbiornikiem do komputera możemy zobaczyć przez monitor szeregowy co jest w danej chwili odbierane. jeśli wciśniemy przycisk odbiornik odbiera “dziala” w tym momencie diody zapalają się w danym kolorze, ponowne kliknięcie powoduje, że kolor się zmienia na taki jaki jest ustawiony po nim w programie. Jeśli klikniemy tyle razy, że wszystkie opcje będą wykorzystane diody gasną i ponownie zaczyna się pętla kolorów.

k3

k4

k2

Na zakończenie chciałbym powiedzieć, że opcje jakie dałem w kodzie czyli zmiana kolorów są dość proste, ale i też fajne w swojej prostocie, lecz zachęcam do pokombinowania z rożnymi sposobami zapalenia diod np. do połowy jeden kolor i od połowy drugi ipt. ;)

Ocena: 4.63/5 (głosów: 52)

Podobne posty

6 komentarzy do “Radiowe sterowanie diodami

    • Powoli powstaje projekt związany z esp8266 i sterowaniem z poziomu telefonu lub komputera różnego rodzaju elementami(w tym przypadku patrz diodami ws2812b). Jak coś wyjdzie i będzie działało postaram się umieścić ten projekt na stronie ;)

      Odpowiedz
  • Sterowanie z telefonu można by zrealizować na kilka sposobów. Część z nich niestety wiąże się jednak z dość sporą ingerencją w kod, a przede wszystkim w hardware.

    Ja bym tutaj polecał jedno z trzech rozwiązań:
    – zamiast radia na 433MHz, dać ESP8266 i zaimplementować REST na arduino (czasochłonne, mało przystępna opcja wiążąca się z przepisaniem kodu)
    – jeśli radio na 433 jest konieczne, to napisać prosty interfejs w nodeJS (lub zwykłym PHP), rozpakować na RPi, które wszystko obsłuży (minus to posiadanie RPI, albo konieczność posiadania komputera działającego jako serwer, który byłby podpięty do nadajnika poprzez USB)
    – zastąpić radio na 433 odbiornikiem bluetooth i bawić się z pisaniem apki na andka (jak wspomniałem, spora zmiana w kodzie, zmiana hardware’u plus czas potrzebny na naukę SDK androida).

    W swoim projekcie wykorzystałem tę pierwszą opcję. Początkowo ESP8266 odpowiadał tylko za komunikację, ale ostatecznie skończył jako serce systemu. Plus to to, że może być w prosty sposób sterowany z androida, strony www hostowanej na moim serwerze domowym, a nawet z terminala poprzez curl.

    Zamiast WS2812 dałem zwykłą taśmę ledów rgb 5050, 6 mosfetów do sterowania 3-strefowego (ważniejsza była kontrola z zewnątrz i możliwość załączenia każdej strefy z osobna z poziomu jednego sterownika niż bajery z adresowaniem każdej diody z osobna. W końcu to nie jest duży problem gdy wszystkie strefy mają ten sam kolor). Całość zasilana na 9V zamiast 12V, żeby nie upalić za szybko diód (Jest ciemniej, ale służy o wiele dłużej). Żeby sterownik i mosfety się nie przegrzały, dodałem sterowanie wentylatorem na 5V. Samo sterowanie chłodzeniem nie jest już sterowane z kontrolera. Za kontrolę obrotów odpowiada mały, 100K termistor, potencjometr do ustawienia czułości i kilka śmieci, które mają to trzymać w kupie.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?