Spisu treści:

Automatyczne otwieranie żaluzji przy użyciu EV3: 6 kroków
Automatyczne otwieranie żaluzji przy użyciu EV3: 6 kroków

Wideo: Automatyczne otwieranie żaluzji przy użyciu EV3: 6 kroków

Wideo: Automatyczne otwieranie żaluzji przy użyciu EV3: 6 kroków
Wideo: 4k automatyczne otwieranie 2024, Lipiec
Anonim
Automatyczne otwieranie żaluzji za pomocą EV3
Automatyczne otwieranie żaluzji za pomocą EV3
Automatyczne otwieranie żaluzji za pomocą EV3
Automatyczne otwieranie żaluzji za pomocą EV3

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

Dokonywanie montażu
Dokonywanie montażu
Dokonywanie montażu
Dokonywanie 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

Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
Projektowanie ślepego sprzętu
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

Kodowanie niewidomych
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

Ostatnie poprawki
Ostatnie poprawki

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: