Inhoudsopgave:

Automatische jaloezieopener met EV3 - Ajarnpa
Automatische jaloezieopener met EV3 - Ajarnpa

Video: Automatische jaloezieopener met EV3 - Ajarnpa

Video: Automatische jaloezieopener met EV3 - Ajarnpa
Video: Open Policy Agent Gatekeeper | HCS Company 2024, Juli-
Anonim
Automatische jaloezieopener met EV3
Automatische jaloezieopener met EV3
Automatische jaloezieopener met EV3
Automatische jaloezieopener met EV3

Ik heb een set verduisterende rolgordijnen in mijn slaapkamer die ik 's ochtends of' s avonds vaak vergeet te openen of te sluiten. Ik wil het openen en sluiten automatiseren, maar met een override wanneer ik me omkleed.

Stap 1: Potentiële ideeën of oplossingen

Na verschillende sites zoals YouTube, Instructables en Thingiverse te hebben bekeken, ontdekte ik dat de meest gebruikelijke oplossing was om de spoel die de jaloezieën op- en afrolde te motoriseren met behulp van een stappenmotor of een servo. Ik vond 2 hoofdopties met verschillende voor- en nadelen.

Idee 1: spoelmethode waarbij de motor en tandwieloverbrenging in de spoel zijn ondergebracht. Dit heeft als voordelen dat het een nette en elegante methode is, maar heeft als nadelen dat het een grote aanpassing aan de jaloezie vereist, het koord niet langer bruikbaar is en de montage zeer moeilijk toegankelijk zou zijn voor onderhoud wanneer geïmplementeerd.

Idee 2: snoermethode waarbij de motor en tandwieloverbrenging op het snoer zijn ondergebracht. Dit heeft als voordeel dat het eenvoudiger is en de montage gemakkelijk toegankelijk zou kunnen zijn. Het heeft echter het nadeel dat het lelijk en omvangrijk kan zijn, evenals het feit dat het aan de dorpel moet worden bevestigd wanneer het wordt geïmplementeerd.

Ik geef de voorkeur aan de koordmethode, omdat dit een veel eenvoudigere oplossing is die het handmatige gebruik van het koord niet belemmert, en de jaloezie vereist geen grote wijziging. Ik ben van plan om het zo verborgen en compact mogelijk te maken als ik de definitieve versie maak met een ESP8266.

Stap 2: De montage maken

De assemblage maken
De assemblage maken
De assemblage maken
De assemblage maken

Ik deed dit project met behulp van mijn Lego mindstorms EV3 die functionaliteit heeft die ik nodig heb om te laten zien dat het project zou kunnen werken, en ik ben bekend met de software die zeker veel heeft geholpen. Omdat het rolgordijn een kogelketting gebruikt om de spoel aan te drijven, waar Lego-tandwielen niet compatibel mee zijn, besloot ik dat de beste oplossing was om een tandwiel te ontwerpen met de juiste balafstand aan de buitenkant - met het standaard "kruisvormige" gat in de centrum, waar ik het ontwerp dan 3D zou printen. Op dit punt heb ik ook een kalibratieknop gemaakt en een lichtsensor aan mijn raam bevestigd, evenals een knop om als opheffing te fungeren.

Stap 3: Het ontwerpen van de blinde versnelling

De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen
De blinde versnelling ontwerpen

Ik heb het rolgordijn gedemonteerd om te zien hoe de slinger er in meer detail uitzag. Tijdens de demontage vond ik een klein tandwiel met 16 tanden dat op zijn plaats werd gehouden door een gespannen spoel, dit was het onderdeel dat ik zocht. Na het ontwerpen van een replica van de uitrusting, heb ik de benodigde Lego-compatibele gaten toegevoegd, de 3 afzonderlijke delen geprint en ze uiteindelijk met secondelijm aan elkaar geplakt. Ik had aanvankelijk problemen om het onderdeel Lego-compatibel te maken, in die zin dat mijn 3D-printer niet de resolutie had om het "x" -gat voldoende te maken, maar het had geen problemen met de ronde gaten aan weerszijden ervan. Dus ik verving de "x" door een rond gat en het drukte prima af. Toen, na een kleine hoeveelheid testen, kon ik zien dat het het koppel en het gewicht van de jaloezie aankon. Ik zal mijn ontwerpen voor de uitrusting hieronder linken of je kunt het vinden op Thingiverse op:

Stap 4: Blinden coderen

Blinden coderen
Blinden coderen

Ik wilde een code die de jaloezie automatisch zou openen en sluiten wanneer het een bepaald lichtniveau bereikte, maar die ook een overschrijfknop had zodat men de jaloezie nog steeds kon openen of sluiten wanneer ze dat wilden. Ik heb mijn GitHub hier gekoppeld aan de definitieve versie van de code:

De code voor het project kostte me enkele dagen om te voltooien, ik had de basislogica van het programma correct laten werken met de lichtsensor, maar de tijdelijke opheffingsknop werkte niet correct. Het veranderde wel de toestand van het rolgordijn nadat het werd ingedrukt, maar het miste de "vergrendelende" functie die zou betekenen dat het rolgordijn in de positie zou blijven - wat betekent dat het rolgordijn het onmiddellijk zou terugrollen naar wat het was. Ik heb dit opgelost met behulp van een "wacht tot" -blok, gekoppeld aan een logische OF-poort die de waarden van de lichtsensor en aanraaksensor leest, die ik hieronder zal uitleggen.

De code begint met het kalibreren van de motoren en de jaloezie, te beginnen met de jaloezie volledig open en deze omlaag te brengen totdat deze de aanraaksensor aan de onderkant raakt, waarbij wordt geteld hoeveel kwartslagen nodig zijn om de bodem te bereiken, wat wordt opgeslagen als de "RotationsNeeded" variabel. Vervolgens schrijft het "false" naar de variabele "BlindOpen", die wordt gebruikt om de positie van de jaloezie te volgen. Op dit punt splitst de code zich op in 4 lussen.

Een van deze lussen is de "Buttonstate"-lus die continu de status van de knop publiceert naar een variabele genaamd "ButtonPressed". Dit elimineert de noodzaak om meerdere knopblokken op het script te plaatsen.

De tweede lus is de "Licht of donker" die voortdurend het lichtniveau buiten mijn raam vergelijkt met een constante die eerder in de code is gedefinieerd. Als het resultaat onder die constante ligt, schrijft de lus "false" naar de variabele "ItIsLight", terwijl als het boven de waarde ligt, het "true" zal schrijven.

De derde lus bevat een numerieke lijst van 3 opties die de blinde in feite vertelt wat hij moet doen, 0=blind omlaag, 1=blind omhoog, 2=niets doen omdat blind op de juiste plaats zit. De lus begint met het lezen van de variabele "BlindShould" die de juiste taak specificeert die de blinde moet doen, voert vervolgens die taak uit, wijzigt de variabele "BlindOpen" in de juiste optie en wordt dan inactief totdat de variabele "BlindShould" wordt gewijzigd waar het herhaalt zich. Het gebruikt de waarde "RotationsNeeded" en een vermogen van +/- 100% om de jaloezie volledig open of gesloten te bewegen.

De vierde en laatste lus is de meest complexe, het is de "Decider"-lus die alle gegevens verwerkt en beslist wat er met elke permutatie moet worden gedaan. Het doet dit door gebruik te maken van op logica gebaseerde "vorken in de weg" waarbij "knop wordt ingedrukt", "Lichtniveau", "Blind open" de waar of onwaar vragen zijn. Alle permutaties hebben een hard gecodeerde reactie, die ofwel 0=blind omlaag, 1=blind omhoog of 2=niets is - deze waarde wordt geschreven naar de "BlindShould"-variabele die vervolgens wordt afgehandeld door een eerdere lus. Sommige reacties wachten dan tot de variabele "ItIsLight" en/of "ButtonPressed" verandert voordat het script wordt voltooid. naar zijn oorspronkelijke staat. Dit proces wordt vervolgens in een lus omgezet om een robuust en relatief eenvoudig automatisch systeem te maken, dat gemakkelijk kan worden toegevoegd aan en kan worden opgespoord. Opluchting.

Stap 5: Afwerking

Afwerking
Afwerking

Ik besloot achteraf om een 9V-voeding op mijn EV3 aan te sluiten met behulp van enkele houten pluggen en schroeven als "batterijen", dit maakte het product niet afhankelijk van batterijen en voorkwam dat ik de batterijen om de paar dagen moest vervangen.

Stap 6: Evaluatie van het project

Ik denk dat het project over het algemeen goed is verlopen, ik heb uiteindelijk een werkend prototype voor de automatische jaloezie-assemblage gekregen, die ik alle relevante informatie die ik tijdens het project heb gevonden, kan meenemen in de definitieve versie. Ik heb het apparaat met succes gecodeerd en heb later tot nu toe geen grote problemen met de code gevonden. Ik had het apparaat graag visueel aantrekkelijker willen maken, maar nogmaals, het is een proof of concept en ik zal wat moeite doen om het er goed uit te laten zien wanneer ik de definitieve versie maak met een ESP8266. Als ik het project opnieuw doe, zal ik de motor zo ontwerpen dat hij in de jaloezie zit, omdat dat gemakkelijker te verbergen is. De grootste les die ik heb geleerd, is om logisch te debuggen en na te denken, te documenteren en mijn code te testen voordat ik deze implementeer.

Aanbevolen: