Słowem wstępu:
Zawsze chciałem mieć inteligentny pokój – oglądając projekty w końcu zabrałem się do wykonania własnego. Zacząłem od sterowania światła przez internet i ten projekt dzisiaj zostanie opisany. Postawiłem na układ Wemos D1 mini (ESP8266) oraz własną aplikację do sterowania światłem.
UWAGA
230VAC jest napięciem niebezpiecznym dla zdrowia i życia.
W wykonywaniu projektu występuje napięcie 230V. Jeżeli nie masz doświadczenia i wiedzy nie podejmuj się montażu. Nie ponoszę żadnej odpowiedzialności za wyrządzone szkody.
Wykaz części:
- Wemos D1 Mini
- Zasilacz HLK-PM01
- 2 rezystory SMD0805 10-20 kOhm
- 1 rezystor SMD0805 odpowiedni dla diody LED.
- Dioda LED SMD1206
- Kondensator 220 – 470 uF
- goldpiny i złącza ARK
- Kabelki :)
- Płytka PCB
- Obudowa
Schemat i PCB:
Projektowanie płytki zostało przeprowadzone w programie Eagle. Wykonaniem płytki zająłem się ja wraz z kolegami B327 i żelazkiem :)
Całość zasilana z 230VAC, zasilacz obniża to napięcie do 5V i 600mA. O zasileniu sygnalizuje dioda LED1.
Podłączenie:
Do WYJ-1/2 podłączamy wejście włącznika 2-kanałowego naściennego. Do WEJ-1/2 podłączamy wyjście włącznika naściennego. Do złącza PRZEKAZNIK zasilanie i sterowanie modułu przekaźnika. I do modułu przekaźnika odpowiednio okablowanie oświetlenia zgodnie ze schematem modułu.
Program:
Program został napisany w środowisku Arduino i został dokładnie opisany, więc mam nadzieję iż całość jest czytelna :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
/* Sterownik swiatla program: Mateusz GG Urzadenie: Wemos D1 mini w celu spawdzenia poprawnosci programu odtagować oblusge serialu */ #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "SSID"; //nazwa sieci wifi const char* password = "HASLO"; //haslo wifi boolean Lampa; //zmienne wymagane do dzialania programu boolean Samoloty; boolean swLampa; boolean swSamoloty; #define inLampa D6 //definiowanie pinow wyjsciowych #define inSamoloty D5 ESP8266WebServer server(80); //ustawienie serwera na porcie 80 void setup() { // Serial.begin(115200); ESP.wdtEnable(1000); //ustawienie WatchDoga delay(10); //Wstepna konfiguracja pinow i zmiennych pinMode(inLampa, INPUT); swLampa = digitalRead(inLampa); pinMode(inSamoloty, INPUT); swSamoloty = digitalRead(inSamoloty); pinMode(D2, OUTPUT); //ustawienie stanow odpowiadajacych swiatlu wylaczonemu (w przypadku resetu w nocy nie wlaczy nam swiatla) digitalWrite(D2, 1); Lampa = 1; pinMode(D1, OUTPUT); digitalWrite(D1, 1); Samoloty = 1; // polaczenie do sieci wi-fi // Serial.println(); // Serial.println(); // Serial.print("Lacznenie do "); // Serial.println(ssid); WiFi.begin(ssid, password); //laczenie z siecia wifi while (WiFi.status() != WL_CONNECTED) { delay(500); // Serial.print("."); } // Serial.println(""); // Serial.println("WiFi Polaczono"); // start serwer // Serial.println("Server startuje"); // Serial - adres ip // Serial.println(WiFi.localIP()); server.on("/lampa/0", []() { //Obsluga podstrony /lampa/0. /X/Y X - ktore swiatlo, Y - stan swiatla digitalWrite(D2, 0); //ustawienie odpowiedniego stanu na wyjsciu Lampa = 0; //ustawienie zmiennej do pozniejszej obslugi przelacznika String s = "\r\n\r\n"; //nie umiem wytlumaczyc czemu ale aplikacja mobilna bez tego mi nie dzialala :) s += ((Lampa * 10) + Samoloty ); //wyslanie informacji zwrotnej do aplikacji z danymi odnosnie swiatla s += "\n"; server.send(200, "text/plain" , s); // wyslanie danych zwrotnych }); server.on("/lampa/1", []() { //Lampa 1 omowione wyzej digitalWrite(D2, 1); Lampa = 1; String s = "\r\n\r\n"; s += ((Lampa * 10) + Samoloty ); s += "\n"; // wyslanie danych zwrotnych server.send(200, "text/plain" , s); }); server.on("/samoloty/0", []() { //Samolot 0 omowione wyzej digitalWrite(D1, 0); Samoloty = 0; String s = "\r\n\r\n"; s += ((Lampa * 10) + Samoloty ); s += "\n"; // wyslanie danych zwrotnych server.send(200, "text/plain" , s); }); server.on("/samoloty/1", []() { //Samolot 1 omowione wyzej digitalWrite(D1, 1); Samoloty = 1; String s = "\r\n\r\n"; s += ((Lampa * 10) + Samoloty ); s += "\n"; // wyslanie danych zwrotnych server.send(200, "text/plain" , s); }); server.on("/stan", []() { //podstrona ktora wysyla dane zwrotne do aplikacji aby zaktualizowac podswietlenie przycikow String s = "\r\n\r\n"; // omowione wyzej s += ((Lampa * 10) + Samoloty ); s += "\n"; // wyslanie danych zwrotnych server.send(200, "text/plain" , s); }); server.begin(); } void loop() { server.handleClient(); //uruchomienie serwera i "podstron" if (digitalRead(inSamoloty) != swSamoloty) //analizowanie stanu przelacznika sciennego przez porownanie stanu zapisanego do aktualnego. { delay(50); if (digitalRead(inSamoloty) != swSamoloty) //drugie sprawdzenie stanu przelacznika sciennego (drgania stykow) { swSamoloty = digitalRead(inSamoloty); //zmienna odpowiadajaca stanu przelacznika sciennego Samoloty = Samoloty ^ 1; //zmiana stanu zmiennej odpowiadajacej za stan swiatla digitalWrite(D1, Samoloty); //ustawienie stanu na odpowienim wyjsciu // Serial.println(Samoloty); } } if (digitalRead(inLampa) != swLampa) //omowione wyzej { delay(50); if (digitalRead(inLampa) != swLampa) { swLampa = digitalRead(inLampa); Lampa = Lampa ^ 1; digitalWrite(D2, Lampa); // Serial.println(Lampa); } } } |
Aplikacja mobilna:
Aplikacje mobilną chciałem wykonać sam, wszystkie dostępne aplikacje, których mogłem użyć po prostu mi się nie podobały :) Do napisania programu użyłem strony internetowej http://appinventor.mit.edu/explore/ czyli całość tworzenia przypominało ustawianie “scen” oraz programowanie w stretch’u. Pokusiłem się o wykonanie grafik i zastąpienie podstawowych. Mam nadzieję, iż aplikacja wygląda estetycznie.
Została nazwana OnOff, czyli nazwa sugeruje do czego służy – do włączania i wyłączania :) W załączniku dostępna aplikacja w postaci .apk oraz pliki do ewentualnej edycji w appinventorze wraz z grafikami :) Zawsze można bardziej rozbudować aplikację :)
Obsługa aplikacji:
W ustawieniach wpisujemy ip urządzenia np. “192.168.1.1” (sprawdzamy na serial porcie lub w ustawieniach rutera. Proponuję ustawić stałe ip dla Wemos D1 mini), klikamy przycisk “Zatwierdź” – poniżej ukazuje się wpisany adres ip. Wracamy do ekranu głównego aplikacji i cieszymi się działającą i praktyczną aplikacją.
Obudowa:
Obudowę postanowiłem zaprojektować i wydrukować na drukarce 3d Anet AM8. Została zaprojektowana w programie SketchUp – następnym razem poszedłbym w prostą sześcienną obudowę – byłaby praktyczniejsza :) Montaż zakrywki na wkręty, tak samo jak płytek PCB.
Montaż urządzenia:
UWAGA
230VAC jest napięciem niebezpiecznym dla zdrowia i życia.
Przy montażu należy upewnić się, iż przwody zasilające 230V są odłączone od sieci.
Montujemy wszystko w obudowie – podłączamy zgodnie ze schematem i opisem w sekcji “Podłączenie:”. Sprawdzamy poprawność podłączenia oraz testujemy czy wszystko działa, jeżeli tak przykręcamy zakrywkę.
Podsumowanie:
Urządzenie działa zgodnie z założeniami, aplikacja wygląda estetycznie i ma możliwość rozbudowy pod kolejne projekty.
W planach wykonanie automatycznych rolet i zintegrowanie ich z aplikacją OnOff oraz jej rozbudowa. Wszystkie pliki spakowane :)
Pozdrawiam,
Mateusz
Witam
Dlaczego nie zastosowałeś modułów sonoff.
Programuje się je tak samo a integrują zasilanie i są bardziej kompaktowe.
Witam serdecznie,
Redukcja kosztów (większość części już miałem) i dodatkowa nauka, frajda nabyta w trakcie projektowania i wykonywania :) poza tym nie lubię gotowych urządzeń tego typu a wole wykonać takie samodzielnie.
Gdyby zastosował nie było by artykułu :)
Wydawało mi się, że ta strona jest właśnie dla ludzi, którzy czasami zamiast korzystać z gotowego rozwiązania tworzą coś sami. W wielu projektach można zapytać “dlaczego po prostu nie kupisz komercyjnej wersji?”. Czasami było by to tańsze i lepsze rozwiązanie, do tego możliwe że ze wsparciem technicznym, ale jednak jest coś w robieniu czegoś samemu.
Nauczenie się o tym jak coś działa może być przydatne, a także po prostu może to być niezła zabawa.
Lepszym argumentem za sonoff zamiast diy byłoby tu bezpieczeństwo. Nawet autor zaznaczył na początku: “230VAC jest napięciem niebezpiecznym dla zdrowia i życia.”. Ale podjął się tego i zrobił swoją wersję – na razie chyba żyje, więc udało się :)
Żyję i wszystko działa :P A ostrzezenie dla osob ktore nie maja pojecia o 230V i elekryce. Sama płytka jest poprawnie zrobiona – najbardziej narazonym elementem jest zasilacz (ale dlatego jest bezpiecznik)..
Słabe. Espeasy lepsze niż twój kod, brak wzmianki o separacji galwanicznej.
W module przekaźników jest optoizolacja. A o wyższości ESPeasy nie będę dyskutował – co kto lubi :)
A propos,
jakiś Chiński “geniusz” do sterowania przekaźników wstawił transoptory?! Wszyscy inni to powtarzają i się tym podniecają. Toż to sam przekaźnik nie jest wystarczającym izolatorem obwodu sterowanego i sterującego? Czy ja się innej elektrotechniki uczyłem? Ktoś mnie uświadomi?
Prędzej chodzi o piki przy włączaniu i wyłączaniu cewki w przekaźniku, aby odizolować je od wyjść uC. Ale mogę się mylić :)
Wg mojej wiedzy od tego jest ta dioda włączona równolegle do cewki. Bez tej diody ten pik (czasem kilkadziesiąt Voltów – zależy od szybkości tranzystora) i tak usmaży ten tranzystor w transoptorze.
A co się dzieje, kiedy włączysz światło łącznikiem na ścianie, a chcesz wyłączyć światło ze smartfona?
Włączanie / wyłączanie światła jest zralizowane przez moduł przekaźników. Przełącznik naścienny jest tylko do dostarczenia sygnału do ESP8266 które przetwarza sygnał i steruje modułem przekaźników.
A co bedzie jak zaleje to woda…
A co bedzie jak wylacza prad…
A co bedzie jak walnie bomba ?
Ja pierd…. ludzie. Chlopak cos zrobil, pokazal i dostaje w ryj.
Czy naprawde musicie byc takimi cebulakami ?
Znaczy mnie to jakoś bardzo nie boli :P Woda sie nie dostanie, jak wyłączą prąd to wyłączą – mam latarki (Haikelite MT09r daje zdecydowanie za dużo światła), a jak walnie bomba to walnie :) Pokazałem – nie spodobało się – trudno.. Mi nad projektem zeszło sporo czasu to jest 3 wersja kodu – poprzednie się wieszały z nie wiadomych dla mnie przyczyn (prawdopodobnie błędy w bibliotece dla ESP) – aktualny działa :P Ale dziękuję :)
kosz takiego projektu ?
koszt*
Ciezko mi oszacować koszt. Większość elementów miałem.
Cena jest zalezna czt zamawiamy z chin czy kupujemy w polsce. U gory jest lista potrzebnych części.
Ja tylko tak od strony 230: wystające z kostek gołe żyły bez izolacji nie są cool, izolacja powinna kończyć się możliwie jak najbliżej styku. Po drugie nie polecam wkładania dwóch przewodów pod jeden styk, szczególnie że używasz przewodu typu drut. te kosteczki są strasznie wątłe a w połączeniu z drutem najmniejszy ruch urządzeniem lub przewodami, powoduje ich luzowanie się w zacisku. Idealnie by to było, gdyby z płytki były wyprowadzone przewody typu linka z pocynowanymi końcówkami do prawdziwej listwy zaciskowej przymocowanej do obudowy w osobnym miejscu. Projekt ciekawy i z sensem.
Okej poprawię :)
Świetnie opisane i wyjaśnione. Nie ważne, że są gotowce. Z tym 230 V to rzeczywiście ostrożnie i autor ostrzega przed tym. Na bazie tego projektu można wymyślać różne cuda nie koniecznie na 230 V. Ja koledze bardzo dziękuję i gratuluję projektu. Co po niektórzy geniusze krytykujący ten artykuł chyba powinni poszukać innej strony odpowiedniej dla ich poziomu wiedzy.
A mnie się podoba. Oczywiście są tańsze rozwiązania na rynku (sonoffa chyba na razie nic nie przeskoczy), ale tu chodzi również o zabawę i naukę. Gdybyś chciał więcej takich urządzonek zrobić to polecam do Wemosa wgrać sobię Tasmotę i połączyć to sobie z jakimś serwerem MQTT (np. na malince) i obsługiwać przez OpenHaba z każdego miejsca na świecie. Jak tak sobie zrobiłem z kilkoma Wemosami i Sonoffami i fajnie sobie to już drugi rok śmiga.
Fajny amatorski projekt, jeżeli chodzi o wykonanie to jest często spotykane, głosy tu zamieszczone o napięciu 230 V itd. świadczą o tym że krytykanci, mają mgliste pojęcie na temat wykonawstwa sieci prądowych, czasami teoria mija się z praktyką.
Oj Janku… W takich projektach ważne jest bezpieczeństwo! Bo nawet najciekawszy projekt nie powinien zagrażać projektantowi. Ja na miejscu autora nie pakowałbym w takim projekcie złącza sieci i ESP na jednej płytce. Do bezpiecznika warto zastosować oprawkę izolowaną, taką jak n.p. w sprzęcie stacjonarnym. Zasilacz fabryczny z certyfikatem CE, a przy złączach elementy mocujące przewody, aby ich nie wyrwać przez przypadek. Na szczęście autor podchodzi w sensowny sposób do oceny przez innych swego projektu.
Chciałem zrobic cos podobnego do sterowania dwoma różnymi oświetleniami tak samo wemos i przkaznik ssr ale mam pytanie czy nie można wemosa zasilic normalnie z ładowarki? nie wystarczy mi sam wemos, przekaznik i stara ładowarka nokii? :P