Tartalomjegyzék:

Automatikus vaknyitás az EV3 használatával: 6 lépés
Automatikus vaknyitás az EV3 használatával: 6 lépés

Videó: Automatikus vaknyitás az EV3 használatával: 6 lépés

Videó: Automatikus vaknyitás az EV3 használatával: 6 lépés
Videó: Automatikus felirat Youtube videóhoz & podcasthoz 2024, Július
Anonim
Automatikus vaknyitás az EV3 használatával
Automatikus vaknyitás az EV3 használatával
Automatikus vaknyitás az EV3 használatával
Automatikus vaknyitás az EV3 használatával

A hálószobámban van egy sötétítő redőny, amelyet gyakran elfelejtek kinyitni vagy bezárni reggel vagy este. Szeretném automatizálni a nyitást és a zárást, de felülbírálással, mikor mikor változok.

1. lépés: Lehetséges ötletek vagy megoldások

Miután megnéztem a különböző webhelyeket, például a YouTube -ot, az Instructables -t és a Thingiverse -t, megállapítottam, hogy a leggyakoribb megoldás az volt, hogy motorral hajtjuk az orsót, amely feltekeri és letekeri a redőnyöket, léptetőmotor vagy szervo segítségével. Találtam 2 fő lehetőséget, különböző előnyökkel és hátrányokkal.

1. ötlet: Orsó módszer, ahol a motor és a hajtómű az orsó belsejében található. Ennek megvan az az előnye, hogy ügyes és elegáns módszer, de vannak hátrányai, hogy a vakok jelentős módosítását igényli, a zsinór már nem használható, és az összeszerelés végrehajtásakor nagyon nehezen hozzáférhető a karbantartáshoz.

2. ötlet: zsinór módszer, ahol a motor és a hajtómű a zsinóron van elhelyezve. Ennek az az előnye, hogy egyszerűbb és a szerelvény könnyen hozzáférhető. Ennek azonban az a hátránya, hogy csúnya és terjedelmes lehet, valamint az a tény, hogy megvalósításkor a küszöbhöz kell rögzíteni.

Inkább a zsinóros módszert részesítem előnyben, mint egy sokkal egyszerűbb megoldást, amely nem gátolja a zsinór kézi használatát, és a vak nem igényel jelentős módosítást. Azt tervezem, hogy a lehető leplezettebb és kompaktabb lesz, amikor a végső verziót ESP8266 -tal készítem.

2. lépés: Az összeszerelés elkészítése

Az összeszerelés elkészítése
Az összeszerelés elkészítése
Az összeszerelés elkészítése
Az összeszerelés elkészítése

Ezt a projektet a Lego mindstorms EV3 segítségével végeztem el, amely rendelkezik olyan funkciókkal, amelyekkel meg kell mutatnom, hogy a projekt működhet, és ismerem a szoftvert, amely határozottan sokat segített. Mivel a vakok gömbláncot használnak az orsó meghajtásához, amelyekkel a Lego fogaskerekek nem kompatibilisek, úgy döntöttem, hogy a legjobb megoldás az, ha olyan fogaskerekeket tervezünk, amelyeknek a külső golyótávolsága megfelelő- a „kereszt alakú” standard lyukkal. központban, ahol ezután 3D -ben nyomtatnám ki a mintát. Ezen a ponton készítettem egy kalibráló gombot is, és egy fényérzékelőt csatoltam az ablakomhoz, valamint egy gombot, amely felülbírálásként szolgál.

3. lépés: A vak felszerelés tervezése

A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése
A vak felszerelés tervezése

Szétszereltem a rolót, hogy lássam, hogyan néz ki részletesebben a hajtókar. A szétszerelés során találtam egy kicsi, 16 fogú fogaskereket, amelyet egy feszített tekercs tartott a helyén, ez volt az a rész, amit kerestem. A fogaskerék másolatának megtervezése után hozzáadtam a szükséges Lego-kompatibilis lyukakat, kinyomtattam a 3 különálló részt és végül szuperragasztóval összeragasztottam. Kezdetben problémáim adódtak azzal, hogy a Lego kompatibilis legyen, abban az értelemben, hogy a 3D -s nyomtatóm nem volt olyan felbontású, hogy az „x” lyukat kellőképpen elkészítse, azonban nem volt probléma a kör alakú lyukakkal mindkét oldalán. Így kicseréltem az „x” -et egy kör alakú lyukra, és jól nyomtatott. Aztán egy kis teszt után láttam, hogy képes elviselni a vakok nyomatékát és súlyát. Az alábbiakban linkelem a fogaskerékre vonatkozó terveimet, vagy megtalálhatja a Thingiverse webhelyen:

4. lépés: A vakok kódolása

A vakok kódolása
A vakok kódolása

Olyan kódot szerettem volna, amely automatikusan kinyitja és bezárja a redőnyt, amikor eléri a megvilágítási szintet, de volt egy felülbíráló gombja is, hogy az ember akkor is kinyissa vagy lezárja a rolót, amikor akarják. Linkeltem a GitHubomat a kód végleges verziójával itt:

A projekt kódjának elkészítése több napot vett igénybe, a program alapvető logikája megfelelően működött a fényérzékelővel, azonban a pillanatnyi felülbíráló gomb nem működött megfelelően. Megváltoztatta a redőny állapotát, amikor megnyomta, de hiányzott belőle a „reteszelő” funkció, ami azt jelentené, hogy a vak ebben a helyzetben marad- vagyis a vak azonnal visszagurítja azt, ami korábban volt. Ezt a „várj addig” blokk segítségével oldottam meg, amely egy logikai VAGY kapuhoz kapcsolódik, amely leolvassa a fényérzékelő és az érintésérzékelő értékeit, amelyeket az alábbiakban elmagyarázok.

A kód a motorok és a vakok kalibrálásával kezdődik, kezdve a teljesen nyitott árnyékolóval, és engedje le, amíg el nem éri az alul lévő érintőérzékelőt, számolva, hogy hány negyedfordulatot kell elérnie az aljára, amelyet a „RotationsNeeded” néven tárol. változó. Ezután "false" -t ír a "BlindOpen" változóba, amely a vakok helyzetének nyomon követésére szolgál. Ezen a ponton a kód 4 hurokra oszlik.

Az egyik ilyen ciklus a „Buttonstate” ciklus, amely folyamatosan közzéteszi a gomb állapotát a „ButtonPressed” nevű változónak. Ezáltal nincs szükség több gombblokk elhelyezésére a parancsfájlban.

A második ciklus a „Világos vagy sötét”, amely folyamatosan összehasonlítja az ablakomon kívüli fényszintet a kódban korábban meghatározott állandó értékkel. Ha az eredmény az állandó alatt van, a ciklus „false” -t ír az „ItIsLight” változóba, míg ha az érték felett van, akkor „true” -t ír.

A harmadik ciklus 3 opció numerikus listáját tartalmazza, amely alapvetően megmondja a vaknak, hogy mit kell tennie, 0 = vak, 1 = vak, 2 = ne tegyen semmit, mert a vak a megfelelő helyen van. A ciklus a „BlindShould” változó elolvasásával kezdődik, amely meghatározza a vaknak elvégzendő feladatot, majd végrehajtja ezt a feladatot, megváltoztatja a „BlindOpen” változót a megfelelő opcióra, majd tétlenné válik, amíg a „BlindShould” változót meg nem változtatja. megismétli. A „RotationsNeeded” értéket, valamint +/- 100% teljesítményt használja a redőny teljesen nyitott vagy zárt mozgatásához.

A negyedik, egyben utolsó ciklus a legösszetettebb, ez a „Döntés” ciklus, amely kezeli az összes adatot, és eldönti, hogy mit kell tenni minden egyes permutációval. Ezt logikai alapú „útelágazások” segítségével teszi, ahol a „gomb megnyomása”, „Fényszint”, „Vak nyitva” az igaz vagy hamis kérdések. Az összes permutációra kemény kódolású válasz van, amely vagy 0 = vak, 1 = vak, vagy 2 = nem tesz semmit - ezt az értéket a „BlindShould” változóba írják, amelyet ezután egy előző ciklus kezel. Néhány válasz ezután megvárja, amíg az „ItIsLight” és/vagy a „ButtonPressed” változó megváltozik, mielőtt befejezi a szkriptet, ez csak a gomb által aktivált permutációk esetében van így, mivel különben azonnal megpróbálja kijavítani a pozícióját, vagyis a vak visszatér eredeti állapotába. Ezt a folyamatot ciklikusan alakítják ki, hogy robusztus és viszonylag egyszerű automatikus rendszert hozzanak létre, amely könnyen hozzáadható és hibakereshető. Fú.

5. lépés: Utolsó simítások

Utolsó simítások
Utolsó simítások

Később úgy döntöttem, hogy 9 V -os tápegységet csatlakoztatok az EV3 -hoz, néhány fa dübelt és csavart használva "elemként", ezáltal a termék nem volt megbízható az elemekkel szemben, és megakadályozta, hogy néhány naponta cseréljem az elemeket.

6. lépés: A projekt értékelése

Úgy gondolom, hogy a projekt összességében jól sikerült, végül egy működő prototípust kaptam az automatikus redőnyök összeállításához, amelyet a projekt során talált összes releváns információval átvehetek a végső verzióba. Sikeresen kódoltam az eszközt, és később nem találtam komolyabb problémákat a kóddal. Szerettem volna vizuálisan vonzóbbá tenni az eszközt, de ez ismét a koncepció bizonyítéka, és erőfeszítéseket teszek annak érdekében, hogy jól nézzen ki, amikor elkészítem a végső verziót ESP8266 -tal. Amikor újra megcsinálom a projektet, úgy tervezem meg a motort, hogy a redőny belsejében üljön, mert így könnyebb lenne elrejteni. A legnagyobb lecke, amit megtanultam, az a logikai hibakeresés és a kód átgondolása, dokumentálása és tesztelése, mielőtt végrehajtanám.

Ajánlott: