Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
Mam w sypialni komplet rolet zaciemniających, które rano lub wieczorem często zapominam otworzyć lub zamknąć. Chcę zautomatyzować otwieranie i zamykanie, ale z nadpisaniem, kiedy się przebieram.
Krok 1: Potencjalne pomysły lub rozwiązania
Po przejrzeniu różnych witryn, takich jak YouTube, Instructables i Thingiverse, stwierdziłem, że najczęstszym rozwiązaniem jest zmotoryzowanie szpuli, która zwija i rozwija rolety za pomocą silnika krokowego lub serwomechanizmu. Znalazłem 2 główne opcje z różnymi zaletami i wadami.
Pomysł 1: Metoda szpuli, w której silnik i przekładnia są umieszczone wewnątrz szpuli. Ma to tę zaletę, że jest to schludny i elegancki sposób, ale ma wady polegające na tym, że wymaga poważnych modyfikacji żaluzji, przewód nie nadaje się już do użytku, a montaż byłby bardzo trudno dostępny w celu konserwacji po wdrożeniu.
Pomysł 2: metoda sznurowa, w której silnik i przekładnia są umieszczone na sznurku. Ma to tę zaletę, że jest prostsze, a montaż może być łatwo dostępny. Ma jednak tę wadę, że może być brzydki i nieporęczny, a także fakt, że musi być przymocowany do parapetu podczas wdrażania.
Preferuję metodę sznurkową, ponieważ jest to znacznie prostsze rozwiązanie, które nie utrudnia ręcznego używania sznurka, a roleta nie będzie wymagała większych modyfikacji. Planuję uczynić go tak ukrytym i kompaktowym, jak to tylko możliwe, kiedy tworzę ostateczną wersję z ESP8266.
Krok 2: Wykonanie montażu
Zrobiłem ten projekt, używając mojego Lego mindstorms EV3, który ma funkcjonalność, której potrzebuję, aby pokazać, że projekt może działać, i jestem zaznajomiony z oprogramowaniem, które zdecydowanie bardzo pomogło. Ponieważ roleta napędza szpulę za pomocą łańcuszka kulkowego, z którym zębatki Lego nie są kompatybilne, uznałem, że najlepszym rozwiązaniem będzie zaprojektowanie zębatki z prawidłowym rozstawem kulek na zewnątrz – ze standardowym otworem w kształcie krzyża w centrum, w którym następnie wydrukowałabym projekt w 3D. W tym momencie zrobiłem również przycisk kalibracji i podłączyłem czujnik światła do mojego okna, a także przycisk, aby działał jako nadpisanie.
Krok 3: Projektowanie ślepego sprzętu
Zdemontowałem roletę, aby dokładniej zobaczyć, jak korba wyglądała. Podczas demontażu znalazłem małą 16-zębową zębatkę, która była utrzymywana na miejscu przez napiętą cewkę, to była ta część, której szukałem. Po zaprojektowaniu repliki sprzętu dodałem wymagane otwory kompatybilne z Lego, wydrukowałem 3 oddzielne części i ostatecznie połączyłem je ze sobą superklejem. Początkowo miałem problemy z dostosowaniem części do klocków Lego, w tym sensie, że moja drukarka 3D nie miała rozdzielczości wystarczającej do wykonania otworu „x”, ale nie miała problemów z okrągłymi otworami po obu stronach. Więc zastąpiłem „x” okrągłym otworem i wydrukowałem dobrze. Potem, po niewielkiej ilości testów, zobaczyłem, że poradzi sobie z momentem obrotowym i ciężarem ze ślepego. Połączę moje projekty dla sprzętu poniżej lub możesz je znaleźć na Thingiverse pod adresem:
Krok 4: Kodowanie niewidomych
Chciałem kodu, który automatycznie otwierałby i zamykał roletę, gdy osiągnął określony poziom światła, ale miał również przycisk nadrzędny, dzięki czemu można było nadal otwierać lub zamykać roletę, kiedy chciał. Połączyłem mój GitHub z ostateczną wersją kodu tutaj:
Ukończenie kodu do projektu zajęło mi kilka dni, podstawowa logika programu działała poprawnie z czujnikiem światła, jednak przycisk chwilowego nadpisania nie działał poprawnie. Zmienił stan rolety po naciśnięciu, ale brakowało jej funkcji „zatrzaśnięcia”, co oznaczałoby, że roleta pozostanie w tej pozycji – co oznacza, że roleta natychmiast powróci do poprzedniego stanu. Naprawiłem to za pomocą bloku „czekaj aż”, połączonego z logiczną bramką OR, która odczytuje wartości czujnika światła i czujnika dotykowego, co wyjaśnię poniżej.
Kod rozpoczyna się od skalibrowania silników i rolety, zaczynając od całkowicie otwartej rolety i opuszczając ją, aż dotknie czujnika dotykowego na dole, licząc, ile ćwierć obrotu potrzeba, aby dostać się na dół, co jest zapisywane jako „Wymagane obroty” zmienny. Następnie zapisuje „false” do zmiennej „BlindOpen”, która służy do śledzenia pozycji w ciemno. W tym momencie kod dzieli się na 4 pętle.
Jedną z tych pętli jest pętla „Buttonstate”, która stale publikuje stan przycisku do zmiennej o nazwie „ButtonPressed”. Eliminuje to potrzebę umieszczania w skrypcie wielu bloków przycisków.
Druga pętla to „Światło lub ciemno”, która nieustannie porównuje poziom światła za moim oknem ze stałą zdefiniowaną wcześniej w kodzie. Jeśli wynik jest poniżej tej stałej, pętla zapisze „false” do zmiennej „ItIsLight”, natomiast jeśli jest powyżej tej wartości, zapisze „prawda”.
Trzecia pętla zawiera liczbową listę 3 opcji, które zasadniczo mówią niewidomym, co robić, 0=oślepiając, 1=oślepniając, 2=nic nie rób, ponieważ blind jest na właściwym miejscu. Pętla rozpoczyna się od odczytania zmiennej „BlindShould”, która określa prawidłowe zadanie, które powinien wykonać niewidomy, a następnie wykonuje to zadanie, zmienia zmienną „BlindOpen” na właściwą opcję, a następnie staje się bezczynna, dopóki zmienna „BlindShould” nie zostanie zmieniona, gdzie to się powtarza. Wykorzystuje wartość „RotationsNeeded” oraz +/- 100% mocy, aby całkowicie otworzyć lub zamknąć roletę.
Czwarta i ostatnia pętla jest najbardziej złożona, jest to pętla „decydenta”, która obsługuje wszystkie dane i decyduje, co zrobić z każdą permutacją. Czyni to za pomocą logicznych „rozwidlenia drogi”, gdzie „przycisk jest wciśnięty”, „poziom światła”, „otwarta roleta” to pytania prawdziwe lub fałszywe. Wszystkie permutacje mają zakodowaną odpowiedź, która wynosi 0=ślep w dół, 1=oślep w górę lub 2=nic nie rób – ta wartość jest zapisywana w zmiennej „BlindShould”, która jest następnie obsługiwana przez poprzednią pętlę. Niektóre odpowiedzi będą następnie czekać na zmianę zmiennej „ItIsLight” i/lub „ButtonPressed” przed zakończeniem skryptu, dotyczy to tylko permutacji aktywowanych przyciskiem, ponieważ w przeciwnym razie natychmiast próbowałby skorygować swoją pozycję, co oznacza powrót do stanu pierwotnego. Proces ten jest następnie zapętlony, aby stworzyć solidny i stosunkowo prosty automatyczny system, który można łatwo dodawać i debugować. Uff.
Krok 5: Wykończenie akcentów
Później zdecydowałem się podłączyć zasilacz 9V do mojego EV3, używając drewnianych kołków i śrub jako „baterii”, co sprawiło, że produkt nie był zależny od baterii i nie musiałem wymieniać baterii co kilka dni.
Krok 6: Ocena Projektu
Myślę, że generalnie projekt poszedł dobrze, skończyło się na działającym prototypie do montażu żaluzji automatycznych, który mogę wziąć wszystkie istotne informacje, które znalazłem podczas projektu i wdrożyć do ostatecznej wersji. Pomyślnie zakodowałem urządzenie, a później nie znalazłem do tej pory większych problemów z kodem. Chciałbym, aby urządzenie było bardziej atrakcyjne wizualnie, ale po raz kolejny jest to dowód koncepcji i postaram się, aby wyglądało dobrze, gdy wykonam ostateczną wersję z ESP8266. Kiedy ponownie wykonam projekt, zaprojektuję silnik tak, aby siedział wewnątrz żaluzji, ponieważ łatwiej byłoby go ukryć. Największą lekcją, jakiej się nauczyłem, jest logiczne debugowanie i przemyślenie, udokumentowanie i przetestowanie kodu przed jego wdrożeniem.
Zalecana:
Automatyka domowa Arduino, automatyczne otwieranie drzwi: 6 kroków
Automatyka domowa Arduino, automatyczne otwieranie drzwi: Zapisz się na mój kurs „Elektronika w pigułce” tutaj: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARKAZajrzyj również na mój kanał na YouTube, aby uzyskać więcej informacji projekty i tutoriale dotyczące elektroniki: https://www.youtube.com/channel/UCelOOR
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Automatyczne otwieranie drzwi kurczaka: 6 kroków
Automatyczne urządzenie do otwierania drzwi z kurczaka: Automatyczne urządzenie do otwierania drzwi z kurczaka W tym samouczku z instrukcjami przeprowadzę Cię przez kroki i części niezbędne do stworzenia automatycznego urządzenia do otwierania drzwi z kurczaka z typowych części, które można kupić u wielu sprzedawców. Użyte części i narzędzia są al
Wykonaj automatyczne samoczynne otwieranie i zamykanie drzwi za pomocą Arduino!: 4 kroki
Zrób automatyczne samoczynne otwieranie i zamykanie drzwi za pomocą Arduino!: Czy kiedykolwiek chciałeś, aby drzwi otwierały się automatycznie, tak jak w filmach science fiction? Teraz możesz, postępując zgodnie z tą instrukcją. W tej instrukcji zbudujemy drzwi, które mogą otwierać się i zamykać automatycznie bez dotykania drzwi. Czujniki ultradźwiękowe o
Automatyczne otwieranie żaluzji: 11 kroków
Automatyczne otwieranie żaluzji: http://contraptionmaker.infoMieszkamy w 150-letnim wiejskim domu z oryginalnymi oknami. Pomimo izolacji i nowej bocznicy, zimą jest jak w sicie. Aby zwalczyć ten problem, montujemy plastik nad oknami, aby spróbować