Lampka z podświetlaniem krawędziowym oparta na  ESP8266 i diodach WS2812b

Lampka z podświetlaniem krawędziowym oparta na ESP8266 i diodach WS2812b

Cześć!

Chcę Wam dzisiaj zaprezentować projekt, który wykonałem jako prezent, a jest nim lampka sterowana przez WIFI z diodami adresowanymi WS2812b. Głównym zamysłem projektu było to, by lampka zapalała się po otrzymaniu SMS’a z danego numeru i wyświetlała animację.

Do dzieła!

Użyłem w projekcie następujących elementów:

  1. NodeMCU V2 (amica)
  2. Diody adresowane WS2812b (18 sztuk)

  3. Dioda czerwona LED (2 sztuki)

  4. Rezystory – 2x 220Ohm i 1x 330Ohm
  5. Kabel USB

  6. Ładowarka USB do telefonu

  7. Kabelki połączeniowe żeńsko-męskie

Natomiast z narzędzi i innych:

  1. Papier ścierny  500, 1000

  2. Klej dwuskładnikowy

  3. Farba w sprayu czarna

  4. Wkręty czarne

  5. Odpady z płyt PCV, Plexi, Dibond

  6. Wiertła do metalu (1,5mm, 3mm, 10mm)

  7. Frezarka CNC

  8. Szara taśma montażowa
  9. Wkrętarka


Początek

Wszystko zaczęło się od zaprojektowania ogólnego wyglądu na kartce papieru, a potem przeniosłem gotowy pomysł do programu 3D. Użyłem bezpłatnego oprogramowania Google SketchUP. Umożliwia ono dokładne i łatwe modelowanie elementów, a także podział na komponenty, co zdecydowania ułatwia późniejsze przenoszenie projektu do rzeczywistości.

sketchup
Proces projektowania w SketchUP

Po zaprojektowaniu gotowego modelu i przygotowaniu pliku, zabrałem się za eksport odpowiednich krzywych do formatu DXF. Następnie, udałem się z plikami do zaprzyjaźnionej firmy tworzącej reklamy zewnętrzne – jest to świetny sposób na zdobycie bardzo tanio materiałów takich jak PCV, Plexi i Dibond (sporo odpadów, więc jest w czym wybierać), gdzie następnie pliki trafiły na frezarkę CNC i wszystkie elementy zostały dokładnie wycięte.

export
Gotowe, wyeksportowane krzywe

Obudowa składała się z 4 elementów, ze względu na grubość płyty PCV (10mm). Dlatego poszczególne warstwy kleiłem do siebie zgodnie z instrukcjami na kleju. Co do rodzaju kleju: moim zdaniem zwykły dwuskładnikowy skleił PCV idealnie, aczkolwiek słyszałem opinie, że nie zawsze się to dobrze trzyma – pewnie kwestia indywidualna, zależna od dokładności wyczyszczenia klejonej powierzchni.

1473420795917-1
Wyfrezowana, sklejona obudowa

Po sklejeniu wszystkich elementów obudowy, wywierciłem otwory na dwie diody sygnalizujące pracę urządzenia z przodu obudowy i następnie wygładziłem papierem ściernym widoczne łączenia sklejonych płyt PCV.

Po wyczyszczeniu elementu i sprawdzeniu dobrego spasowania obudowy do płytki plexi, pomalowałem obudowę dwoma, cienkimi warstwami czarnej, błyszczącej farby w sprayu i odstawiłem do wyschnięcia


Czas na elektronikę

Z paska diód adresowanych 60szt/m wyciąłem pasek 13 diod. Jest to idealna ilość na 29,5cm szerokość plexi. Na końcu wyciętego paska dolutowałem goldpiny. Taśmy adresowane oparte na chipie WS2812b mają 4 wyprowadzenia: 5V, Data In, Data Out i GND. Ważne jest przy podłączaniu by nie pomylić Data In z Data Out (diody mają narzucony kierunek transmisji danych).

Dodałem trzy kabelki połączeniowe męsko-żeńskie, w których to kabel Data In przeciąłem i wlutowałem w niego rezystor 330Ohm (zgodny z zaleceniami producenta – bardzo dużo  informacji na temat tych diod znajdziecie wyszukując w internecie frazę „neopixel uberguide”)

Po wyschnięciu przyszedł czas na wklejenie plexi do obudowy oraz na przyklejenie paska diod adresowanych do krawędzi plexi. W tym celu użyłem zwykłej szarej taśmy z racji elastyczności i łatwej ewentualnej wymiany tych diod.

W miejscu wywierconych drobnych otworów na diody sygnalizacyjne, w środku obudowy montujemy diody LED – przez rezystory 220Ohm odpowiednio do pinu 4 i 5. Pierwsza od lewej będzie sygnalizować zasilanie lampki, a druga podłączenie się do sieci WIFI.

Diody sygnalizacyjne
Diody sygnalizujące stan lampki

Do NodeMCU podłączamy wyprowadzenia taśmy LED – 5V do Vin, masy razem oraz Data In do pinu 14(D5), diody sygnalizacyjne – katody wspólnie do masy, anody przez rezystory, odpowiednio do pinu 4(D1) i 5(D2) oraz kabel microUSB. Kabel ten będzie służył do programowania układu, jak i późniejszego zasilania lampki z ładowarki USB.

schemat
Schemat podłączenia elementów

20161001_034435-01
Elektronika podłączona we wnętrzu obudowy

Problem z wersją V3 NodeMCU
Problem z wersją V3 NodeMCU

Warto dodać, że moduł NodeMCU występuje w paru wersjach. Najczęściej spotykane są wersje: V2 (amica, m.in. sprzedawana w Botlandzie) i V3 (lolin). Zdecydowanie bardziej polecam wersję V2, która po prostu jest mniejsza i bez problemu pasuje do płytki prototypowej. W przypadku wersji V3, moduł zajmuje cała powierzchnię pinów, co powoduje konieczność skorzystania z dwóch płytek prototypowych jednocześnie.


Przyszła pora na zamknięcie lampki.

20161001_033837-01Z tyłu obudowy wycinamy otwór na wyjście kabla USB. Następnie małym wiertłem, z założoną klapką z Dibondu (materiał często wykorzystywany w reklamie, płyty o aluminiowych okładzinach z polietylenowym wypełnieniem)  wiercimy dziury na wkręty zamykające obudowę. Teraz możemy dodatkowo zfazować nieco otwór w Dibondzie wiertłem 10mm, w celu schowania w nim łebka wkrętu.

Czynność powtarzamy dla drugiego wkrętu i obudowa gotowa!


Kod

Skorzystałem z przykładu znajdującego się  w bibiliotece ESP8266 oraz strandtest z biblioteki Adafruit NeoPixel które zmodyfikowałem do swoich potrzeb.

Zadaniem programu jest obsługa serwera strony WWW, która będzie panelem kontrolnym lampki i ustawianie koloru diod wedle życzenia.

Poprzez dodanie odpowiednich przycisków i obsługi interakcji kliknięcia, możemy zaprogramować kilka kolorów świecenia diod adresowanych. Od typowych: Czerwony, zielony, niebieski, biały, po specjalne typu ‘tęcza’, przenikanie itd. Dopiero w tych ciekawszych pomysłach, diody adresowane pokazują swoją wyjątkowość :)

Obraz bez nazwy


Automatyzacja

Jako, że jest to lampka domowa, nonsensem byłoby dodawanie do niej modułu GSM. Zdecydowałem, że za zdalne, automatyczne włączanie lampki po otrzymaniu SMS’a będzie odpowiadał sam telefon. Stąd, komunikacja odbywa się w sposób: telefon→ router WIFI→ lampka. Wgrałem na telefon aplikację MacroDroid, która umożliwia, by po otrzymaniu SMS’a z danego numeru, wysyłała informację do serwera WWW na NodeMCU, by moduł włączył animację. Działa to idealnie, a dodatkowo opcji samych wyzwalaczy jest pełno – można na takiej bazie zrobić także lampkę z powiadomieniami z Twittera, Facebooka i innych.

Screenshot_2016-10-01-01-38-45-1Screenshot_2016-10-01-01-38-33-1


Uwagi końcowe

Lampka w przypadku wyświetlania białego koloru zdecydowanie przekracza pobór prądu 500mA, dlatego nie polecam jej zasilać ze złącza USB w komputerze. Najodpowiedniejsza będzie ładowarka gniazdkowa USB, o prądzie minimum 1A.


Efekt końcowy

20161001_010302-01

20161001_005617-01

Pliki załączone do artykułu:

Ocena: 4.94/5 (głosów: 16)

Podobne posty

24 komentarzy do “Lampka z podświetlaniem krawędziowym oparta na ESP8266 i diodach WS2812b

  • Ładne – masz piątkę.
    Zastosowałbym jednak ESP8266WebServer zamiast prostego WiFiServer – co prawda wymaga więcej pamięci (ale w Twoim przypadku masz jeszcze mnóstwo wolnego RAM-u), ale za to obsługuje również normalne parametry przesyłane przez GET/POST – a co najważniejsze, treść wysyłanej strony możesz umieścić bezpośrednio we flashu i wysłać przez send_P. Jakoś nie lubię całego ekranu println…

    Odpowiedz
    • ethanak: dziękuję, ogólnie tematykę serwerów muszę jeszcze dokładniej zgłebić – niestety nie byłem w technikum, więc nikt nie przekazał mi choć grama wiedzy na ten temat :) W nastepnym projekcie już postaram się to poprawić :D

      Odpowiedz
      • woysz: W technikum nikt Ci takiej wiedzy nie przekaże :) Nawet teraz w elektronicznych technikach nadal trwa walka o sprzęt, a ja w informatycznym nawet nie usłyszałem o czymś takim jak programowanie na sprzęt. Jak nie sam, to nikt nie pomoże, więc gratuluję.

        Zainspirowałeś mnie do zrobienia czegoś podobnego dla drugiej połówki :)

        Odpowiedz
  • dodaj do tego prosty serwer DNS taki tylko żeby każdą nazwę domeny zamieniał na jeden IP pod którym siedzi serwer WWW i masz captive portal, tym samym nie musisz znać adresu IP serwera WWW telefon albo sam o ni poinformuje abo wpisują cokolwiek w przeglądarkę dostaniesz zawsze to samo

    Odpowiedz
    • @828586: Czyli telefon ma się łączyć z lampką działającą w trybie SOFT AP i nie mieć dostępu do reszty świata?
      Tak się nie robi.
      ESP powinien przełączyć się w tryb SOFT AP (z ew. uruchomieniem mDNS) jeśli nie uda mu się połączenie z zaprogramowaną siecią – i uruchomić prosty serwer WWW, którego zadaniem jest wyłącznie zapisanie nowych parametrów połączenia (IP, GW, maska) i reset ustrojstwa. Dla bezpieczeństwa – jeśli w ciągu jakiegoś czasu (np. dwóch minut) od uruchomienia w tym trybie nikt nie połączy się z urządzeniem, powinna być ponowiona próba połączenia z zaprogramowaną siecią (to mógł być skutek np. zaniku zasilania – wiadomo że router wstaje nieco wolniej niż mikrokontroler).

      Odpowiedz
    • @828586: zacząłem prace na aplikacją na androida w AppInventorze i wtedy w ogóle nie trzeba tworzyć DNS, bo w przyciskach ‘Włącz’, ‘Wyłącz’ itd można ukryć komendy do sterowania przez serwer WWW

      Odpowiedz
  • ethanak a to dlaczego się nie robi ?, grozi za to kara śmieci, ja zrobiłem zamek i dzwonek do furtki na tej zasadzi i nikt ni się jeszcze nie włamał, dodałem jeszcze czytnik RFID dla innych mieszkańców, nie każdy jest taki oblatany w komórkach WIFI etc…, cała instalacja jest całkiem stabilna ale dodatkowy Arduino micro robi za wachdog-a tak na wszelki wypadek

    jak telefon zbliży się do AP i połączy, natychmiast telefon wykrywa brak dostępu do internetu i anonsuje w powiadomieniu captive portal wystarczy kliknąć na powiadomienie otwiera się strona z guzikiem itd…..

    Odpowiedz
    • @828586: Temu tak się nie robi, bo jeśli w domu (zauważ: lampka ma stać w domu) jest już router WiFi (a z kodu programu wynika że jest), telefon jest już z reguły połączony ze swoim routerem i wcale nie będzie miał zamiaru z Twoim AP się łączyć.
      No, chyba że uznałeś moje pytanie z poprzedniego komentarza (czy telefon ma się odciąć od netu i całe życie być podłączony do lampki) za retoryczne i odpowiedź twierdzącą za oczywistą ;)
      Zamek do furtki a lampka do pokoju to chyba dwa różne urządzenia i to, co pasuje do jednego (zamek do furtki) wcale nie musi być odpowiednie dla drugiego (lampka).

      Odpowiedz
    • Można próbować ręcznie dremelkiem, ale zdecydowanie jednak lepiej wykorzystać CNC. Usługi frezowania CNC są praktycznie w każdej firmie zajmującej się produkcją szyldów reklamowych. Można także podpytać np. na forum, bo często majsterkowicze robią własne frezarki CNC :)

      Odpowiedz
    • Jeżeli jesteś z Poznania, to mogę Ci podrzucić parę adresów – ogólnie wszelakie firmy reklamowe zajmujące się produkcją szyldów. Praktycznie większość posiada frezarki CNC i bez problemu zrobią to na miejscu za darmo bądź niewielką opłatą :)

      Odpowiedz

Odpowiedz

anuluj

Masz uwagi?