Cuprins:

Deschizător automat pentru blinduri folosind EV3: 6 pași
Deschizător automat pentru blinduri folosind EV3: 6 pași

Video: Deschizător automat pentru blinduri folosind EV3: 6 pași

Video: Deschizător automat pentru blinduri folosind EV3: 6 pași
Video: Sistem de ridicare si inchidere a portbagajului cu softclose. Inclusiv pe Dacia Duster 2024, Noiembrie
Anonim
Deschizător automat pentru blinduri folosind EV3
Deschizător automat pentru blinduri folosind EV3
Deschizător automat pentru blinduri folosind EV3
Deschizător automat pentru blinduri folosind EV3

Am un set de rulouri opace în dormitorul meu pe care de multe ori uit să le deschid sau să le închid dimineața sau seara. Vreau să automatizez deschiderea și închiderea, dar cu o suprascriere când, când mă schimb.

Pasul 1: Idei sau soluții potențiale

După ce am căutat pe diverse site-uri, cum ar fi YouTube, Instructables și Thingiverse, am constatat că cea mai comună soluție a fost motorizarea bobinei care înfășura și desfășura jaluzelele folosind un motor pas cu pas sau un servo. Am găsit 2 opțiuni principale cu diferite avantaje și dezavantaje.

Ideea 1: Metoda bobinei în care motorul și angrenajul sunt adăpostite în bobină. Aceasta are avantajele că este o metodă elegantă și elegantă, dar are dezavantajele că necesită modificări majore pentru jaluzele, cablul nu mai este utilizabil, iar ansamblul ar fi foarte dificil de accesat pentru întreținere atunci când este implementat.

Ideea 2: metoda cablului în care motorul și angrenajul sunt adăpostite pe cablu. Acest lucru are avantajul că este mai simplu și că ansamblul ar putea fi ușor accesibil. Cu toate acestea, are dezavantajul că ar putea fi urât și voluminos, precum și faptul că trebuie atașat la prag atunci când este implementat.

Prefer metoda cablului, deoarece este o soluție mult mai simplă, care nu inhibă utilizarea manuală a cablului, iar jaluzelele nu vor necesita modificări majore. Am de gând să-l fac cât mai ascuns și compact posibil când fac versiunea finală cu un ESP8266.

Pasul 2: Realizarea Asamblării

Realizarea Adunării
Realizarea Adunării
Realizarea Adunării
Realizarea Adunării

Am făcut acest proiect folosind Lego mindstorms EV3, care are funcționalități de care am nevoie pentru a arăta că proiectul ar putea funcționa și sunt familiarizat cu software-ul care cu siguranță a ajutat foarte mult. Deoarece jaluzelul folosește un lanț cu bile pentru a acționa bobina, cu care angrenajele Lego sunt incompatibile, am decis că cea mai bună soluție a fost de a proiecta un angrenaj cu distanța corectă a mingii la exterior - cu gaura standard „în formă de cruce” în centru, unde aș printa 3D proiectarea. În acest moment, am făcut și un buton de calibrare și am atașat un senzor de lumină la fereastră, precum și un buton pentru a acționa ca suprascriere.

Pasul 3: Proiectarea Blind Gear

Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear
Proiectarea Blind Gear

Am dezasamblat blindul pentru a vedea cum arăta manivela mai detaliat. În timpul demontării am găsit un angrenaj mic cu 16 dinți, care a fost ținut în poziție de o bobină tensionată, aceasta a fost partea pe care o căutam. După proiectarea unei replici a uneltelor, am adăugat găurile compatibile Lego necesare, am imprimat cele 3 părți separate și le-am lipit în cele din urmă cu superglue. Am avut inițial probleme în ceea ce privește compatibilitatea piesei Lego, în sensul că imprimanta 3D nu avea rezoluția de a face gaura „x” suficientă, totuși nu avea probleme cu găurile circulare de ambele părți ale acesteia. Așa că am înlocuit „x” cu o gaură circulară și a imprimat bine. Apoi, după o mică cantitate de teste, am putut vedea că se poate descurca cuplul și greutatea de la blind. Îmi voi lega desenele pentru echipamentul de mai jos sau îl puteți găsi pe Thingiverse la:

Pasul 4: Codificarea orbului

Codarea orbilor
Codarea orbilor

Am vrut un cod care să se deschidă și să închidă automat jaluzeaua când ajunge la un anumit nivel de lumină, dar care avea și un buton de suprascriere, astfel încât să poată deschide sau închide jaluzeaua atunci când doresc. Am conectat GitHub la versiunea finală a codului aici:

Codul proiectului mi-a luat câteva zile până la finalizare, aveam logica de bază a programului care funcționa corect cu senzorul de lumină, totuși butonul de suprascriere momentan nu funcționa corect. A modificat starea orbului după ce a fost apăsat, dar nu avea funcția de „blocare” care ar însemna că orbul va rămâne în poziție - adică orbul îl va întoarce imediat la ceea ce era înainte. Am remediat acest lucru folosind un bloc „așteptați până”, legat de o poartă logică SAU care citea valorile senzorului de lumină și al senzorului tactil, pe care le voi explica mai jos.

Codul începe prin calibrarea motoarelor și a jaluzelei, începând cu jaluzeaua complet deschisă și coborând-o până când atinge senzorul tactil din partea de jos, numărând câte sferturi de rotație este nevoie pentru a ajunge în partea de jos, care este salvată ca „RotationsNeeded” variabil. Apoi scrie „fals” în variabila „BlindOpen” care este utilizată pentru a urmări poziția blind-ului. În acest moment, codul se împarte în 4 bucle.

Una dintre aceste bucle este bucla „Buttonstate” care publică continuu starea butonului la o variabilă numită „ButtonPressed”. Acest lucru elimină necesitatea ca mai multe blocuri de butoane să fie plasate pe script.

A doua buclă este „Lumina sau întunericul” care compară continuu nivelul de lumină din afara ferestrei mele, cu o constantă definită mai devreme în cod. Dacă rezultatul este sub această constantă, bucla va scrie „fals” în variabila „ItIsLight”, în timp ce dacă este peste valoare, va scrie „adevărat”.

Cea de-a treia buclă conține o listă numerică de 3 opțiuni care spune practic orbilor ce trebuie să facă, 0 = orb în jos, 1 = orb în sus, 2 = nu face nimic, pentru că orb este în locul corect. Bucla începe prin citirea variabilei „BlindShould” care specifică sarcina corectă pe care ar trebui să o facă blindul, apoi efectuează acea sarcină, modifică variabila „BlindOpen” la opțiunea corectă și apoi devine inactivă până când variabila „BlindShould” este schimbată unde se repetă. Folosește valoarea „RotationsNeeded”, precum și o putere de +/- 100% pentru a muta jaluzeaua complet deschisă sau închisă.

A patra și ultima buclă este cea mai complexă, este bucla „Decider” care gestionează toate datele și decide ce să facă cu fiecare permutare. Face acest lucru folosind „furci în drum” bazate pe logică unde „butonul este apăsat”, „Nivelul luminii”, „Blind deschis” sunt întrebările adevărate sau false. Toate permutările au un răspuns codat greu, care este fie 0 = orb în jos, 1 = orb în sus sau 2 = nu face nimic - această valoare este scrisă în variabila „BlindShould” care este apoi tratată de o buclă anterioară. Unele răspunsuri vor aștepta apoi modificarea variabilei „ItIsLight” și / sau „ButtonPressed” înainte de a termina scriptul, acesta este doar cazul permutărilor activate de buton, deoarece altfel ar încerca imediat să-și corecteze poziția, ceea ce înseamnă că orbul ar reveni la starea sa inițială. Acest proces este apoi în buclă pentru a crea un sistem automat robust și relativ simplu, care poate fi ușor adăugat și depanat. Phew.

Pasul 5: Atingeri de finisare

Finisaje
Finisaje

Am decis ulterior să conectez o sursă de alimentare de 9V la EV3 folosind niște dibluri și șuruburi de lemn ca „baterii”, ceea ce a făcut ca produsul să nu se bazeze pe baterii și să mă împiedice să schimb bateriile la fiecare două zile.

Pasul 6: Evaluarea proiectului

Cred că proiectul a decurs bine în ansamblu, am ajuns la un prototip funcțional pentru ansamblul jaluzelelor automate, pe care îl pot lua pe toate informațiile relevante pe care le-am găsit în timpul proiectului și le pot implementa în versiunea finală. Am codificat cu succes dispozitivul și mai târziu nu am găsit probleme majore cu codul până acum. Mi-aș fi dorit să fac dispozitivul mai atrăgător din punct de vedere vizual, dar încă o dată este o dovadă a conceptului și voi depune un efort pentru a face să arate bine atunci când fac versiunea finală cu un ESP8266. Când voi face din nou proiectul, voi proiecta motorul să stea în interiorul jaluzelului, deoarece ar fi mai ușor de ascuns. Cea mai mare lecție pe care am învățat-o este să depan logic și să mă gândesc, să documentez și să testez codul meu înainte să îl implementez.

Recomandat: