- Komponenty wymagane do budowy automatycznych rolet Arduino
- Sterowanie roletami za pomocą Arduino
- Zaprojektuj i zbuduj osprzęt do żaluzji okiennych
- Drukowanie 3D uchwytu silnika i ślepej przekładni
- Schemat obwodu sterowania roletami Arduino
- Blynk Application for Arduino Blind Control
- Programowanie NodeMCU do sterowania żaluzjami za pomocą Blynk
- Sterowanie roletami okiennymi za pomocą Asystenta Google
- Automatyczne sterowanie roletami okiennymi oparte na Arduino - demonstracja
"Dzień dobry. Jest 7 rano. Pogoda w Malibu to 72 stopnie… ”to były pierwsze słowa JARVIS-a, kiedy został wprowadzony do uniwersum Marvel Cinematics. Większość fanów Iron Mana powinna być w stanie przypomnieć sobie tę scenę i pamiętać, że JARVIS był w stanie rano otworzyć okno (coś w rodzaju) i podawać aktualne informacje o czasie i pogodzie. W filmie okulary okienne zostały faktycznie wykonane z przezroczystych wyświetlaczy dotykowych, dzięki czemu JARVIS był w stanie zmienić kolor z czarnego na przezroczysty, a także wyświetlać na nim statystyki pogodowe. Ale w rzeczywistości jesteśmy daleko od przezroczystych ekranów dotykowych, a im bliżej możemy się zbliżyć, jest automatyczne sterowanie roletami okiennymi lub ogranicznikami.
Tak więc w tym projekcie zamierzamy zbudować dokładnie to, zbudujemy zautomatyzowaną żaluzję z napędem, która będzie otwierać i zamykać się automatycznie we wcześniej określonych godzinach. Wcześniej stworzyliśmy wiele projektów automatyki domowej, w których zautomatyzowaliśmy oświetlenie, silniki itp. Możesz je sprawdzić, jeśli jesteś zainteresowany. Wracając, te rolety sterowane przez Arduino mogą również przyjmować polecenia od asystenta Google, dzięki czemu można zdalnie otwierać lub zamykać rolety okienne za pomocą poleceń głosowych. Intrygancki? Następnie zbudujmy go.
Komponenty wymagane do budowy automatycznych rolet Arduino
Projekt jest stosunkowo prosty i nie wymaga wielu komponentów. Po prostu zbierz poniższe elementy.
- NodeMCU
- Silnik krokowy - 28BYJ-48
- Moduł sterownika silnika krokowego
- LM117-3,3V
- Kondensatory (10 uf, 1 uf)
- Adapter 12V DC
- Płyta Perf
- Zestaw do lutowania
- drukarka 3d
Sterowanie roletami za pomocą Arduino
Obecnie na rynku dostępnych jest wiele rodzajów rolet, ale najczęściej używana jest linka z koralikami (jak pokazano poniżej), którą można pociągnąć, aby otworzyć lub zamknąć rolety.
Kiedy pociągniemy tę okrągłą linę w kierunku zgodnym z ruchem wskazówek zegara, rolety się otworzą, a kiedy pociągniemy tę linę w kierunku przeciwnym do ruchu wskazówek zegara, rolety się zamkną. Tak więc, gdybyśmy mieli zautomatyzować ten proces, wystarczy użyć silnika, aby pociągnąć tę linę w kierunku zgodnym lub przeciwnym do ruchu wskazówek zegara i skończymy z tym. W rzeczywistości to właśnie zamierzamy zrobić w tym projekcie; będziemy używać silnika krokowego 28BYJ-48 wraz z NodeMCU do ciągnięcia koralikowej liny.
Zaprojektuj i zbuduj osprzęt do żaluzji okiennych
Część elektroniczna tego projektu była dość prosta i nieskomplikowana, najtrudniejszą częścią było zbudowanie Blind Gear, które mogło ciągnąć linę z koralików. Więc zacznijmy ten artykuł od projektu ślepego koła zębatego, nie zamierzam wchodzić w szczegóły dotyczące projektowania sprzętu, ale ta podstawowa idea powinna ci pomóc. Obraz liny z koralikami na niej pokazano poniżej.
Ponownie, istnieje wiele rodzajów lin, ale najczęściej używanymi linami jest odległość od środka do środka każdego koralika wynosi 6 mm, a średnica każdego koralika wynosi 4 mm. Korzystając z tych informacji, możemy rozpocząć projektowanie naszego sprzętu. Jeśli lina na roletach ma takie same wymiary, jak omówione, możesz po prostu pominąć ten krok i pobrać plik STL dostarczony w tym artykule i wydrukować sprzęt. Jeśli twoja lina ma inny układ koralików, to w ten sposób powinieneś przeprojektować żaluzję.
Zdecydowałem się mieć 24 koraliki na moim sprzęcie, aby uzyskać optymalny rozmiar koła zębatego, możesz wybrać dowolną liczbę zbliżoną do tego, aby Twoje koło zębate było duże lub małe. Więc teraz wiemy, że odległość między każdą linką wynosi 6 mm i potrzebujemy 24 koralików na naszym sprzęcie. Mnożenie obu da obwód koła zębatego. Na podstawie tych danych możesz obliczyć promień koła zębatego. Jak widać na powyższym obrazku, obliczona średnica mojego koła zębatego wynosiła około 46 mm. Pamiętaj jednak, że nie jest to rzeczywista średnica koła zębatego, ponieważ nie uwzględniliśmy średnicy koralików, która wynosi 4 mm. Tak więc rzeczywista średnica koła zębatego będzie wynosić 42 mm, wydrukowałem i przetestowałem wiele kół zębatych, zanim znalazłem to, które działa najlepiej. Jeśli nie interesujesz się projektami,po prostu pobierz i wydrukuj pliki STL z następnego akapitu i kontynuuj swój projekt.
Drukowanie 3D uchwytu silnika i ślepej przekładni
Wraz z przekładnią potrzebujemy również małej obudowy, którą można nawiercić na ścianie i przytrzymać silnik krokowy na miejscu, zarówno obudowę, jak i przekładnię zastosowaną w tym projekcie pokazano poniżej.
Pełne pliki projektowe i pliki STL można znaleźć na stronie Arduino Blind Control Thingiverse podanej poniżej. Możesz po prostu pobrać i wydrukować swoje żaluzje i obudowę silnika.
Pobierz pliki STL dla Blind Gear i Motor Case
Schemat obwodu sterowania roletami Arduino
Gdy będziesz gotowy z przekładnią i montażem, możesz łatwo przejść do części elektronicznej i oprogramowania. Pełny schemat obwodu dla projektu sterowania IoT Blind pokazano poniżej.
Do zasilania całej konfiguracji użyliśmy adaptera 12 V; regulator LM1117-3.3V konwertuje napięcie 12 V na 3,3 V, które można wykorzystać do zasilania płyty NodeMCU. Moduł sterownika silnika krokowego jest zasilany bezpośrednio z adaptera 12V. Próbowałem uruchomić silnik krokowy na 5V, ale wtedy nie zapewniał on wystarczającego momentu obrotowego, aby zaciągnąć rolety, więc upewnij się, że używasz również 12V.
Poza tym obwód jest dość prosty, jeśli jesteś nowy w silnikach krokowych, zapoznaj się z podstawami artykułu o silniku krokowym, aby zrozumieć, jak to działa i jak można go używać z mikrokontrolerem.
Blynk Application for Arduino Blind Control
Zanim przejdziemy do programu Arduino do Kontroli Rolety, otwórzmy aplikację blynk i stwórzmy kilka przycisków, za pomocą których możemy otwierać lub zamykać rolety. Będziemy też potrzebować tego później do sterowania z domu Google.
Właśnie dodałem dwa przyciski do otwierania i zamykania rolet oraz jednorazowe otwieranie rolet codziennie o 10:00. Możesz dodać wiele timerów, aby otwierać lub zamykać rolety w różnych odstępach dnia. Zasadniczo, gdy musimy zamknąć rolety, musimy wyzwolić wirtualny pin V1, a gdy musimy otworzyć rolety, musimy uruchomić wirtualny pin V2. Program do sterowania silnikiem krokowym na podstawie wciśniętego tutaj przycisku zostanie napisany na Arduino IDE, to samo omówiono poniżej.
Programowanie NodeMCU do sterowania żaluzjami za pomocą Blynk
Pełny kod ESP8266 dla tego projektu sterowania żaluzjami można znaleźć na dole tej strony. Nasz program musi czekać na polecenie z aplikacji blynk i na podstawie tego polecenia musimy obrócić silnik krokowy w kierunku zgodnym lub przeciwnym do ruchu wskazówek zegara. Poniżej omówiono ważne segmenty kodu.
Zgodnie z naszym schematem obwodu, użyliśmy cyfrowych pinów 1, 2, 3 i 4 w nodemcu do sterowania naszym silnikiem krokowym. Musimy więc utworzyć instancję o nazwie stepper za pomocą tych pinów, jak pokazano poniżej. Zauważ, że zdefiniowaliśmy szpilki w kolejności 1, 3, 2 i 4. Zostało to zrobione celowo i nie jest to błąd; musimy zamienić piny 2 i 3 żeby silnik działał poprawnie.
// utwórz instancję klasy stepper używając kroków i pinów Stepper stepper (STEPS, D1, D3, D2, D4);
W następnym kroku musimy udostępnić nasz token uwierzytelniania aplikacji blynk i poświadczenia Wi-Fi, z którymi ma być połączony nasz kontroler IoT Blind. Jeśli nie masz pewności, jak uzyskać ten token uwierzytelniania Blynk, zapoznaj się z projektem Blynk LED Control, aby zrozumieć podstawy aplikacji blynk i sposób jej używania.
// Powinieneś pobrać token autoryzacji w aplikacji Blynk. // Przejdź do ustawień projektu (ikona nakrętki). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Twoje dane uwierzytelniające Wi-Fi. // Ustaw hasło na „” dla otwartych sieci. char ssid = "CircuitDigest"; char pass = "dummy123";
Przechodząc dalej z naszym kodem, po funkcji setup zdefiniowaliśmy dwie metody dla blynk. Jak wspomniano wcześniej, musimy zdefiniować, jakie wirtualne piny V1 i V2 mają robić. Kod tego samego podano poniżej.
BLYNK_WRITE (V1) // ZAMKNIJ ROLETY {Serial.println ("Closing Blinds"); if (opens == true) {for (int c_val = 0; c_val <= 130; c_val ++) // obróć przeciwnie do ruchu wskazówek zegara w celu zamknięcia {stepper.step (c_val); wydajność(); } zamknięte = prawda; open = false; disable_motor (); // zawsze zdalne silniki krokowe po użyciu, aby zmniejszyć zużycie energii i ogrzewanie}} BLYNK_WRITE (V2) // OTWÓRZ ROLETY {Serial.println ("Otwieranie rolet"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // obróć w prawo w celu otwarcia {stepper.step (cc_val); wydajność(); } otwarty = prawda; zamknięte = fałsz; } disable_motor (); // zawsze pożądane silniki krokowe po użyciu, aby zmniejszyć zużycie energii i ogrzewanie}
Jak widać, V1 służy do zamykania rolet, a V2 służy do otwierania rolet. Pętli służy do obracania w silniki o ruchu wskazówek zegara lub przeciwnie do ruchu wskazówek zegara o 130 stopniach. Poeksperymentowałem z roletami, aby stwierdzić, że przy 130 krokach jestem w stanie całkowicie otworzyć i zamknąć rolety. Twój numer może się różnić. Pętli do silnika krokowego obracania w kierunku ruchu wskazówek zegara i przeciwnie do ruchu wskazówek zegara, jest przedstawiony poniżej.
for (int c_val = 0; c_val <= 130; c_val ++) // obróć przeciwnie do ruchu wskazówek zegara w celu zamknięcia {stepper.step (c_val); wydajność(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // obróć zgodnie z ruchem wskazówek zegara, aby otworzyć {stepper.step (cc_val); wydajność(); }
W naszym programie można również zauważyć dwie zmienne logiczne „otwarte” i „zamknięte”. Te dwie zmienne służą do zapobiegania dwukrotnemu otwarciu lub zamknięciu rolet przez silnik. Oznacza to, że roleta otworzy się tylko wtedy, gdy zostanie wcześniej zamknięta, a zamknie się tylko wtedy, gdy zostanie wcześniej otwarta.
Jak zwiększyć prędkość silnika krokowego 28BJY-48?
Wadą korzystania z silnika krokowego 28BJY-48 jest to, że jest bardzo wolny. Silniki te zostały pierwotnie wyprodukowane do użytku w zastosowaniach o wysokiej precyzji i niskich prędkościach, więc nie należy oczekiwać, że silniki te będą się obracać z dużą prędkością. Jeśli chcesz zwiększyć prędkość silnika krokowego za pomocą Arduino, są dwa parametry, które możesz zmienić. Jednym z nich jest #define STEPS 64, stwierdziłem, że gdy kroki są zdefiniowane jako 64, silnik był stosunkowo szybszy. Kolejnym parametrem jest stepper.setSpeed (500); ponownie stwierdziłem, że 500 jest wartością optymalną, cokolwiek więcej niż to faktycznie powoduje, że silnik krokowy jest wolniejszy.
Czy znasz inny sposób na zwiększenie prędkości tych silników? Jeśli tak, zostaw je w sekcji komentarzy poniżej.
Jak zapobiec przegrzaniu silnika krokowego?
Silniki krokowe powinny być zawsze wyłączane, gdy nie są używane, aby zapobiec przegrzaniu. Wyłączenie silnika krokowego jest bardzo proste; po prostu zmień stan pinów wszystkich czterech pinów GPIO, które sterują silnikiem krokowym na niski. Jest to bardzo ważne, w przeciwnym razie silnik może się bardzo rozgrzać przy + 12V i trwale uszkodzić. Program wyłączający silnik krokowy podano poniżej.
void disable_motor () // wyłącz silnik po zakończeniu, aby uniknąć ogrzewania {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Sterowanie roletami okiennymi za pomocą Asystenta Google
Zamierzamy użyć interfejsu API blynk do sterowania roletami za pomocą asystenta Google, będzie on podobny do naszego projektu automatyzacji domu sterowanego głosem, więc sprawdź to, jeśli jesteś zainteresowany. Zasadniczo musimy uruchomić poniższy link, gdy mówimy do Asystenta Google predefiniowaną frazę.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Upewnij się, że zmieniłeś token uwierzytelniania na ten dostarczony przez aplikację blynk. Możesz nawet przetestować ten link w przeglądarce Chrome, aby sprawdzić, czy działa zgodnie z oczekiwaniami. Teraz, gdy łącze jest gotowe, musimy po prostu przejść do IFTTT i utworzyć dwa aplety, które mogą wyzwalać wirtualne piny V1 i V2, gdy poprosimy o zamknięcie i otwarcie rolet. Ponownie, nie wchodzę w szczegóły, ponieważ robiliśmy to wiele razy. Jeśli potrzebujesz więcej pomocy, zajrzyj do tego projektu radia FM sterowanego głosem, po prostu zamień usługi adafruit na webhooki. Udostępniam również zrzut ekranu mojego fragmentu w celach informacyjnych.
Automatyczne sterowanie roletami okiennymi oparte na Arduino - demonstracja
Gdy obwód i obudowy wydrukowane w 3D będą gotowe, wystarczy zamontować urządzenie na ścianie poprzez wywiercenie w ścianie dwóch otworów. Moje ustawienia montażowe pokazane są na poniższych zdjęciach.
Następnie upewnij się, że rolety są otwarte, a następnie włącz obwód. Teraz możesz spróbować zamknąć rolety z aplikacji blynk lub przez Asystenta Google i powinno działać. Możesz także ustawić timery w aplikacji blynk, aby automatycznie otwierać i zamykać roletę o określonej porze dnia.
Pełne działanie projektu można zobaczyć na poniższym filmie; jeśli masz jakieś pytania, napisz je w sekcji komentarzy poniżej. Możesz także skorzystać z naszych forów do innych dyskusji technicznych.