Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik

crbjsfso 04 Aug 2019 13:34 7767 19
phoenixcontact
  • 1. Wprowadzenie

    Pewnego razu postanowiłem stać się właścicielem lampki nocnej RGB, którą można sterować urządzeniem mobilnym jak smartfon czy tablet, a w niedalekiej przyszłości może i nawet asystentem takim jak Google Home, czy Alexa Amazon. Nie potrzebuje dużej mocy, aby móc czytać przy jej świetle literaturę piękną i raczej preferuję podejście proekologiczne jeśli chodzi o zużycie energii. Lampka ma pełnić funkcję głównie dekoracyjną tworząc przyjemny nastrój w pomieszczeniu. Przeglądając ofertę dostępnych na rynku rozwiązań doszedłem do wniosku, że ceny tego typu urządzeń są rozczarowująco wysokie, więc postanowiłem zbudować lampkę własnoręcznie. Moją uwagę przykuł jeden z modeli marki Xiaomi, a mianowicie Mi Bedside Lamp (cena około 250 pln). Na tym projekcie będę bazował podczas budowy. Całość planuję wykonać z materiałów ekologicznych, oczywiście w miarę moich skromnych możliwości.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    1.1. Lampka nocna Mi Bedside Lamp Silver.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    1.2. Lampka nocna Mi Bedside Lamp Silver – schemat budowy wewnętrznej.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    1.3. Lampka nocna Mi Bedside Lamp Silver – prezentacja wyglądu podświetlenia w różnych kolorach.

    2. WS2812

    Według producenta WS2812 jest on inteligentnym sterownikiem LED z wbudowanym źródłem światła. Bliższe rzeczywistości jest jednak stwierdzenie, że układ ten składa się z diody RGB z wbudowanym w nią sterownikiem WS2811.

    Ogromną zaletą takiego rozwiązania w przeciwieństwie do konwencjonalnych diod RGB jest możliwość szeregowego łączenia i sterowania niemalże dowolną liczbą diod za pomocą pojedynczego przewodu sygnałowego z cyfrowego pinu mikrokontrolera.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    2.1. Schemat szeregowego połączenia WS2812.

    Na rynku dostępne są dwie wersję WS2812 i WS2812B, standardowa wersja WS2812 posiada sześć nóżek, natomiast wersja z dopiskiem B tylko cztery. Największą różnicą między modelami jest zabezpieczenie przed odwrotnym podłączeniem zasilania diody dla wersji B, gdzie w przypadku standardowej wersji kończyło się to zniszczeniem elementu elementu.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    2.2. WS2812.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    2.3. WS2812B.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    2.4. Schemat szeregowego łączenia WS2812B.

    Podczas pracy, czy zabawy z WS2812 i WS2812B należy pamiętać, aby:

    - Nie przekraczać napięcia zasilania powyżej 5V, ponieważ uszkodzimy układ.
    - Dodać kondensator elektrolityczny o pojemności od 100µF do 1000µF (na 6.3V lub wyższy) przy zasilaniu pierwszej diody.
    - Dodać rezystor o wartości od 300Ω do 1kΩ pomiędzy mikrokontrolerem, a pierwszym pinem DIN i aby umieść go jak najbliżej diody.
    - W miarę możliwości jak najbardziej skrócić odległość pomiędzy mikrokontrolerem, a pierwszą diodą.
    - Nie podłączać diod przy włączonym zasilaniu. Jeśli nie mamy innego wyboru, to należy zachować kolejność: masa, zasilanie, linia sterująca, a odłączamy w odwrotnej kolejności.
    - Jeżeli diody zasilane są z oddzielnego źródła zasilania, to najpierw należy doprowadzić zasilanie do diod, a następnie do mikrokontrolera.

    3. Projekt i narzędzia

    Główną część lampy stanowi szklany słoik, wewnątrz są warstwy rozpraszające światło w postaci kalki technicznej i białego papieru. Całość została osadzona w kartonowej podstawie. Całość będzie składała się z:

    - Szklany słoik, najlepiej wypiaskowany aby dobrze rozpraszał światło. Ja użyłem słoika Ikea Dropper, ale nada się każdy inny podobny. Ten, którego użyłem nie jest idealny, ponieważ nie jest w całości wypiaskowany.
    - Kalka techniczna do rozpraszania światła. Pomaga uzyskać lepsze rozproszenie, zwłaszcza gdy piaskowanie nie jest całkowite.
    - Kartka białego papieru A4. Również pomocna przy rozpraszaniu, warto wąski pasek umieścić przy tuż przy diodach.
    - Karton, tektura. Do do budowy podstawy, jeśli nie umiemy sobie takiej podstawy wyrzeźbić na przykład z drewna lub nie mamy drukarki 3D.
    - Klej biurowy, przeźroczysta taśma klejąca.
    - Ładowarka z wyjściem USB 5V 1A+. Taka, jakiej używa się się do ładowania większości smartfonów.
    - Kabel USB – micro USB o długości dostosowanej do własnych potrzeb. W projekcie zastosowałem taki o długość 100 cm.
    - Kondensator elektrolityczny w przedziale od 100µF do 1000µF na 6.3V. W projekcie został użyty 1000µF 6.3V.
    - Rezystor o wartości od 300Ω do 1kΩ. W projekcie został użyty 470Ω ¼W.
    - Gniazdo wejściowe microUSB do zasilania układu. Z racji braku gniazda użyłem moduły TP4056, co daje dodatkową możliwość zastosowania w przyszłości zasilania bateryjnego z ogniw 18650.
    - Koło diod WS2812B + moduł ESP8266 (ESP-01 / ESP-01S) + łącznik ESP-01S/ESP-01 RGB LED. W tym konkretnym projekcie zostało użyte koło z 16 diodami. Cały taki zestaw można kupić w pewnym chińskim markecie online za kilka dolarów. Linka nie podam, ale wystarczy wpisać: „WS2812B ESP8266” w wyszukiwarce marketu.
    - Lutownica lub stacja lutownicza, stop lutowniczy i topnik.
    - Przewody, kilka cm.
    - Cążki do metalu.
    - Śrubokręt, nożyczki, czy inne narzędzia potrzebne do obróbki wybranego materiału.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    3.1. Zestaw składający się z WS2812B, ESP-01 i łącznika.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    3.2. Zestaw składający się z WS2812B, ESP-01 i łącznika.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    3.3. Zestaw składający się z ESP-01 i łącznika.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    3.4. Zestaw składający się z ESP-01 i łącznika.

    4. Schemat połączeń

    Jeśli korzystamy z gotowego zestawu, to schemat połączeń jest bardzo prosty.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
    4.1. Schemat połączeń wszystkich podzespołów.

    5. Kod i programowanie
    Code: c
    Log in, to see the code

    Sposób programowania ESP8266 ESP-01/ESP-01S został zaprezentowany w tym artykule (punkt 5. Arduino IDE):
    https://www.elektroda.pl/rtvforum/topic3590037.html

    6. Efekt końcowy

    Efekt końcowy prezentuje się tak, jak to widać na poniższych zdjęciach. Należy zaznaczyć, że w rzeczywistości podświetlenie jest bardziej jednolite, niż widać to na zdjęciach. Prawdopodobnie ekspozycja podczas robienia zdjęcia byłą zbyt długa, ale ciężko zrobić w inny sposób zdjęcia w nocy bez dobrego sprzętu. Obsługa lampki odbywa się przez interfejs sieciowy pod adresem 192.168.0.100.

    Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    crbjsfso
    Level 7  
    Offline 
  • phoenixcontact
  • #2
    cefaloid
    Level 33  
    Efekt końcowy fajny. Aparat zawsze potęguje nierównomierności oświetlenie niewidoczne okiem. W lampce Xiaomi też okiem jest ok a aparatem jest nierównomiernie.

    Na plus w stosunku do xiaomi:

    Przynajmniej masz normalny sposób sterowania. W Xiaomi trzeba założyć jakieś idiotyczne konto i wpisac rozmiar buta oraz członka, zaakceptować milion warunków...i wtedy sterować może jedna osoba... Druga się nie połączy tak długo, jak długo pierwsza trzyma połączenie bluetooth.

    Mam ochotę zostawić z niej tylko obudowę i wsadzić Twój projekt.
  • phoenixcontact
  • #5
    Anonymous
    Level 1  
  • #6
    khoam
    Level 42  
    o_Tadeusz wrote:
    a jeszcze bardziej
    Kod: c Rozwiń Zaznacz wszystko

     while (!client.available())
        {
          delay(10);
        }

    Po prostu czeka, aż będą dane do odczytu z klienta WiFi i sprawdza to, nie częściej niż 10ms. Nie ma się co czepiać.

    Poza tym prosty i fajny projekt. Plusik ode mnie.

    Dodano po 1 [godziny] 51 [minuty]:

    crbjsfso wrote:
    Obsługa lampki odbywa się przez interfejs sieciowy pod adresem 192.168.0.100.

    Jak jest z zasięgiem WiFi z ESP-01?
  • #7
    crbjsfso
    Level 7  
    o_Tadeusz wrote:
    Mnie zastanawia w kodzie sens
    Code: c
    Log in, to see the code

    a jeszcze bardziej
    Code: c
    Log in, to see the code



    Wzmianki o dodaniu opóźnienia pojawiały się w różnych poradnikach i komentarzach, które przeglądałem podczas realizacji projektu. Podobno zmniejsza to częstotliwość zawieszania się układu i konieczność resetowania go.

    o_Tadeusz wrote:

    crbjsfso wrote:
    sterowania niemalże dowolną liczbą diod za pomocą pojedynczego pinu cyfrowego mikrokontrolera przy użyciu magistrali 1-Wire.


    1-Wire to standard Dallasa (teraz Maxim-Dallas) a WS2812 na pewno nie komunikują się w tym standardzie.


    Dziękuję za zwrócenie uwagi, wprowadziłem poprawki.

    khoam wrote:

    crbjsfso wrote:
    Obsługa lampki odbywa się przez interfejs sieciowy pod adresem 192.168.0.100.


    Jak jest z zasięgiem WiFi z ESP-01?


    Router WiFi znajduje się około 8m od lampki, po drodze jest jedna ściana z żelbetonu, 2x drzwi i szafa z płyty chyba wiórowej. Przy tej odległości nie mam problemu z sygnałem, lampka od razu łączy się z siecią.
  • #8
    zadam1
    Level 12  
    Witam chciałem zrobić taką lampę i mam kłopot z zaprogramowaniem Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik Zaprogramowałem dla sprawdzenia wifiscan i działa jak należy , Dziękuję za pomoc
  • #10
    zadam1
    Level 12  
    Dziękuję to zrobiłem a wskoczyło coś innego Prosta lampka nocna RGB WiFi w stylu Xiaomi - WS2812B + ESP8266 ESP-01S + słoik
  • #11
    khoam
    Level 42  
    Powinno być:
    Code: c
    Log in, to see the code

    Zamiast zrzutów ekranowych, umieszczaj sam kod.
  • #12
    crbjsfso
    Level 7  
    khoam wrote:
    Powinno być:
    Kod: c Rozwiń Zaznacz wszystko
    String request = client.readStringUntil('\r');

    Właściwie to tam pierwotnie był znak prim, reversed prim, reversed prim i znowu prim, ale zaprezentowana poprawka zdaje się byłą lepsza, więc została wprowadzona do kodu.
  • #13
    zadam1
    Level 12  
    W trakcie kompilacji pokazuje błąd proszę o sprawdzenie poprawności części tego kodu

    client.println("<meta name=""viewport"" content=""width=device-width," initial-scale="1"">");
  • #14
    khoam
    Level 42  
    zadam1 wrote:
    W trakcie kompilacji pokazuje błąd

    Jaki błąd? Pokazałeś tylko linię kodu i faktycznie jest trochę dziwna.
  • #16
    crbjsfso
    Level 7  
    Nie wiem dlaczego ale coś jest rzeczywiście nie tak z tym kodem, już go poprawiłem. Część znaków \" zostało zmienionych na "".
  • #17
    zadam1
    Level 12  
    Dziękuję bardzo wgrałem ten poprawiony kod i śmiga jak trzeba

    Dodano po 2 [minuty]:

    Tylko jedna uwaga trochę kolory się nie zgadzają, zielony świeci czerwony i na odwrót , tylko niebieski świeci jak trzeba
  • #18
    crbjsfso
    Level 7  
    zadam1 wrote:
    Tylko jedna uwaga trochę kolory się nie zgadzają, zielony świeci czerwony i na odwrót , tylko niebieski świeci jak trzeba

    To też dziwne, jutro to dokładnie sprawdzę i dam znać.
  • #19
    zadam1
    Level 12  
    Znalazłem przyczynę w kodzie było NEO + GRB

    Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, 2, NEO_GRB + NEO_KHZ800);

    poprawiłem na NEO + RGB

    Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, 2, NEO_RGB + NEO_KHZ800);

    teraz kolory są ok
  • #20
    crbjsfso
    Level 7  
    Tak rzeczywiście, jak podaje https://learn.adafruit.com/adafruit-neopixel-uberguide/python-circuitpython:
    Quote:
    # The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!