Masterpc96 Napisano Lipiec 25, 2019 Udostępnij Napisano Lipiec 25, 2019 Witam po opisaniu jak zainstalować homebridge na rpi przyszedł czas aby pokazać jak ma to wyglądać ze strony ESP8266. Jest to sterownik led RGBW, można go wykorzystać jako sterownik RGB, tylko jednej barwy lub właśnie jako RGBW (pasek led posiada dodatkowo diody czystej barwy, zimnej białej lub ciepłej). Do wykonania tego projektu potrzebowałem: ESP8266 Konwerter USB-UART (należy pamiętać że esp działa na napięciu 3.3V nie 5V) Przetwornicę która zbije nam 12V na 3.3V Mosfet a03400 rezystor 10k Ω smd rezystor 200 Ω smd Złącze ark 2.54 5 pinów ja wybrałem takie 3 pin 2 pin Kabel z gniazdem dc (około 10 cm) Gotowa płytka wygląda tak: Z racji tego że mam drukareczkę 3d nie mogłem sobie odpuścić zrobienia obudowy 🙂 Wieczko się drukuje ale będzie montowane na klika. Cała płytka trzyma się dzięki dwóm bolcą. Dzięki temu że kabel jest przylutowany do pcb zaoszczędziłem sporo miejsca na gniazdo dc 😄 Całość składa się z dwóch części konfiguracji homebridge oraz oprogramowania na ESP, żeby zacząć tworzyć kod na ESP musimy wiedzieć jakie metody musimy stworzyć aby "mostek" mógł rozmawiać z naszym kontrolerem. Aby móc sterować oświetleniem led za pomocą homebridge wybrałem plugin homebridge-better-http-rgb, z racji tego że korzystam z dodatku config-ui to pokażę jak w nim dodać nowe urządzenie i skonfigurować. Po zalogowaniu się do panelu przechodzimy do zakładki plugins, w wyszukiwarce wpisujemy homebridge-better-http-rgb i instalujemy. Po zainstalowaniu przechodzimy do zakładki config. Na stronie twórcy pluginu możemy zobaczyć podstawową konfigurację. Plugin ten możemy wykorzystać do sterowania rgb lub pojedynczej barwy "accessories": [ { "accessory": "HTTP-RGB", "name": "Single Color Light", "service": "Light", "switch": { "status": "http://localhost/api/v1/status", "powerOn": "http://localhost/api/v1/on", "powerOff": "http://localhost/api/v1/off" }, "brightness": { "status": "http://localhost/api/v1/brightness", "url": "http://localhost/api/v1/brightness/%s" } } ] Jest to przykład dla pojedynczej barwy (źródło: strona dewelopera). Za localhost podajemy oczywiście adres ip naszego ESP. Widzimy tutaj że sterowanie odbywa się za pomocą włączenia/wyłączenia, ustawienia jasności oraz otrzymania od ESP statusu oraz poziomu jasności (możemy zrobić wersję bez sterowania jasnością wtedy nie potrzebujemy bloku brightness). Przechodzimy zatem do kodu na naszym esp. Nie będę tutaj przedstawiał całego kodu gdyż mam tam również inne metody niż wymagane, skupię się tylko na tych najpotrzebniejszych 🙂 Bardzo dobrze sprawuje się u mnie w urządzeniach web server oparty o ESPAsyncWebServer #define _on 1; #define _off 0; #include <ESPAsyncWiFiManager.h> #include <ESP8266WiFi.h> #include <ESPAsyncTCP.h> #include <ESPAsyncWebServer.h> int brightness = 0; int state = _off; int gpio = 12; void setup() { Serial.begin(115200); pinMode(gpio, OUTPUT); digitalWrite(gpio, LOW); AsyncWiFiManager wifiManager(&server, &dns); wifiManager.autoConnect("led controller"); Serial.println("connected...yeey :)"); Serial.println(WiFi.softAPIP()); server.on("/on", HTTP_GET, [](AsyncWebServerRequest * request) { digitalWrite(gpio, HIGH); Serial.println("ON"); state = _on; brightness = 100; request->send(204); }); server.on("/off", HTTP_GET, [](AsyncWebServerRequest * request) { digitalWrite(gpio, LOW); Serial.println("OFF"); state = _off; brightness = 0; request->send(204); }); server.on("/brightness", HTTP_GET, [](AsyncWebServerRequest * request) { int level = atoi((request->getParam("level")->value()).c_str()); Serial.println(level); analogWrite(gpio, 10.24 * level); brightness = level; if (level == 0){ state = _off;} else {state = _on;} request->send(204); }); server.on("/status", HTTP_GET, [](AsyncWebServerRequest * request) { request->send(200, "text / plain", String(state)); }); server.on("/statusBrightness", HTTP_GET, [](AsyncWebServerRequest * request) { request->send(200, "text / plain", String(brightness)); }); server.begin(); Serial.println("HTTP server started"); } void loop() { } Aby móc podłączyć ESP do sieci korzystam z biblioteki ESPAsyncWiFiManager (zwykła biblioteka ESPWiFiManager nie współpracuje z asynchronicznym serwerem). Gdy Esp nie może się podłączyć do wcześniej wybranej sieci lub nie wie do jakiej ma się połączyć, zostanie wystawiona strona konfiguracyjna na której wprowadzimy ssid oraz hasło sieci do której ma się przyłączyć. Wszystkie metody są metodami GET (niektóre pluginy wymagają innych np. POST). Autorzy pluginów często opisują jaki kod ma zwracać nasza metoda. Dla statusu oraz poziomu jasności jest to kod 200, oraz zwracamy wartości jako zwykły tekst. Teraz czas na metody on/off to od nas zależy co tam się będzie znajdować z racji tego że ja korzystam z jasności muszę zapisać że gdy światło jest włączone to jasność wynosi 100% oraz aktualny status to ON. Gdybyśmy nie chcieli sterować jasnością to ta metoda mogła by tylko włączać światło i zmieniać aktualny status. Gdy chcemy móc sterować jasnością to należy pamiętać że homebridge wysyła wartość z zakresu 0-100% a pin w ESP działa w zakresie 0-1024 dlatego otrzymaną wartość musimy pomnożyć razy 10.24, otrzymaną wartość wysyłamy na odpowiedni pin. W przypadku metod on/off oraz brightness deweloper nie sprecyzował jaki ma być kod wykonania, ja zadecydowałem że będę zwracał kod 204. No i dobiegliśmy do końca wpisu mam nadzieję że wyjaśniłem Wam co to jest homebridge oraz jak należy stworzyć urządzenie zgodne z mostkiem 🙂 2 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 31, 2019 Udostępnij Lipiec 31, 2019 @Masterpc96, właśnie zaakceptowałem opis. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 😉 1 Link do komentarza Share on other sites More sharing options...
Leoneq Lipiec 31, 2019 Udostępnij Lipiec 31, 2019 Też robię sterownik do ledów, ale na arduino i pilota ir. Może warto zrobić to na esp i z telefonu sterować? A PCB widzę zamówiłeś chyba, czy robiłeś sam? I pytanie, czy sprawdzałeś ile metrów paska uciągnie ten sterownik (zastosowałeś małe mosfety smd, jak pamiętam to chyba do 2A) Link do komentarza Share on other sites More sharing options...
Masterpc96 Lipiec 31, 2019 Autor tematu Udostępnij Lipiec 31, 2019 @Leoneq zacznę od końca 😛 pcb sam projektowałem i zamówiłem na pcbway. Mosfety to a03400 kupowane w tme i wg. noty wytrzymują do 5.7A, ścieżki robiłem maksymalnie grube i krótkie a 12v jest jako poligon na połowie płytki. Dzięki esp projekt mogłem maksymalnie zminiaturyzować. Atmega plus kwarc plus kondensatory zajmą więcej miejsca. Musisz się zastanowić czy aby na pewno chcesz to robić na pilota. To samo co zrobisz pilotem zrobisz aplikacją na telefon i możesz zrobić o wiele więcej niż pilotem, np. planowanie włączania oświetlenia o danej porze, tak jak ja to zrobiłem dzięki podpięciu pod homekit. Nie sprawdzałem ile metrów uciągnie gdyż to zależy od tego jakiej wielkości będą diody led (5050, 3528) oraz ile diod na metr będzie. Przed podpieciem diod do mojego sterownika sprawdzam ile amper pobierają, uważam ze bezpiecznie do 4A można sterować na mosfet. 1 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Leoneq Sierpień 1, 2019 Udostępnij Sierpień 1, 2019 Hmm, filtrowanie do swoich płytek zawsze robię bez względu czy z atmegą czy nie, taka profilaktyka 🙂 Muszę faktycznie przemyśleć czy nie zrobić tego na esp, bo faktycznie jest więcej możliwości. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »