Sommario:

Apri cieco automatico utilizzando EV3: 6 passaggi
Apri cieco automatico utilizzando EV3: 6 passaggi

Video: Apri cieco automatico utilizzando EV3: 6 passaggi

Video: Apri cieco automatico utilizzando EV3: 6 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Luglio
Anonim
Apri cieco automatico utilizzando EV3
Apri cieco automatico utilizzando EV3
Apri cieco automatico utilizzando EV3
Apri cieco automatico utilizzando EV3

Ho una serie di tende a rullo oscuranti nella mia camera da letto che spesso dimentico di aprire o chiudere al mattino o alla sera. Voglio automatizzare l'apertura e la chiusura, ma con un override quando per quando mi cambio.

Passaggio 1: potenziali idee o soluzioni

Dopo aver cercato su vari siti come YouTube, Instructables e Thingiverse ho scoperto che la soluzione più comune era quella di motorizzare la bobina che avvolgeva e svolgeva le tapparelle utilizzando un motore passo-passo o un servo. Ho trovato 2 opzioni principali con vari vantaggi e svantaggi.

Idea 1: metodo a spola in cui il motore e l'ingranaggio sono alloggiati all'interno della spola. Questo ha i vantaggi di essere un metodo pulito ed elegante, ma ha gli svantaggi di richiedere importanti modifiche alla tenda, il cavo non è più utilizzabile e l'assieme sarebbe molto difficile da accedere per la manutenzione una volta implementato.

Idea 2: metodo a corda in cui il motore e l'ingranaggio sono alloggiati sul cavo. Questo ha il vantaggio che è più semplice e l'assemblaggio potrebbe essere facilmente accessibile. Tuttavia ha lo svantaggio che potrebbe essere brutto e ingombrante, oltre al fatto che deve essere attaccato al davanzale una volta implementato.

Io preferisco il metodo del cavo in quanto è una soluzione molto più semplice che non inibisce l'uso manuale del cavo e la tenda non richiederà alcuna modifica importante. Ho intenzione di renderlo il più nascosto e compatto possibile quando realizzerò la versione finale con un ESP8266.

Passaggio 2: eseguire l'assemblaggio

Fare l'Assemblea
Fare l'Assemblea
Fare l'Assemblea
Fare l'Assemblea

Ho realizzato questo progetto utilizzando il mio Lego mindstorms EV3 che ha funzionalità di cui ho bisogno per dimostrare che il progetto potrebbe funzionare e conosco il software che sicuramente mi ha aiutato molto. Dato che la tenda utilizza una catena a sfere per azionare la bobina, con cui gli ingranaggi Lego sono incompatibili, ho deciso che la soluzione migliore era progettare un ingranaggio con la corretta distanza tra le sfere all'esterno, con il foro standard "a croce" nel centro, dove poi avrei stampato in 3D il disegno. A questo punto ho anche creato un pulsante di calibrazione e collegato un sensore di luce alla mia finestra e un pulsante per fungere da override.

Passaggio 3: progettare l'ingranaggio cieco

Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco
Progettare l'ingranaggio cieco

Ho smontato la tenda per vedere come appariva la manovella in modo più dettagliato. Durante lo smontaggio ho trovato un piccolo ingranaggio a 16 denti che era tenuto in posizione da una bobina in tensione, questo era il pezzo che cercavo. Dopo aver progettato una replica dell'attrezzatura, ho aggiunto i fori compatibili con Lego richiesti, ho stampato le 3 parti separate e infine le ho incollate insieme con la supercolla. Inizialmente ho avuto problemi a rendere compatibile la parte Lego, nel senso che la mia stampante 3D non aveva la risoluzione per fare il foro "x" a sufficienza, tuttavia non ha avuto problemi con i fori circolari su entrambi i lati. Quindi ho sostituito la "x" con un foro circolare e ha stampato bene. Quindi, dopo una piccola quantità di test, ho potuto vedere che poteva sopportare la coppia e il peso della tenda. Collegherò i miei progetti per l'attrezzatura di seguito o puoi trovarlo su Thingiverse all'indirizzo:

Passaggio 4: codificare i ciechi

Codificare i ciechi
Codificare i ciechi

Volevo un codice che aprisse e chiudesse automaticamente la tenda quando arrivava a un livello di luce specifico, ma che aveva anche un pulsante di esclusione in modo che si potesse comunque aprire o chiudere la tenda quando si voleva. Ho collegato il mio GitHub con la versione finale del codice qui:

Il codice per il progetto mi ha richiesto diversi giorni per essere completato, avevo la logica di base del programma che funzionava correttamente con il sensore di luce, tuttavia il pulsante di override momentaneo non funzionava correttamente. Ha alterato lo stato della tenda dopo essere stato premuto, ma mancava della funzione di "aggancio" che significava che la tenda sarebbe rimasta nella posizione, il che significa che la tenda l'avrebbe immediatamente riportata come era prima. Ho risolto questo problema utilizzando un blocco "aspetta fino", collegato a una porta logica OR che legge i valori del sensore di luce e del sensore tattile, che spiegherò di seguito.

Il codice inizia calibrando i motori e la tenda, partendo con la tenda completamente aperta e abbassandola fino a toccare il sensore tattile in basso, contando quanti quarti di giro ci vogliono per arrivare in fondo, che viene salvato come "Rotazioni necessarie" variabile. Quindi scrive "false" nella variabile "BlindOpen" che viene utilizzata per tracciare la posizione della tenda. A questo punto il codice si divide in 4 loop.

Uno di questi cicli è il ciclo "Buttonstate" che pubblica continuamente lo stato del pulsante su una variabile chiamata "ButtonPressed". Ciò elimina la necessità di inserire più blocchi di pulsanti nello script.

Il secondo ciclo è "Light or dark" che confronta continuamente il livello di luce fuori dalla mia finestra, con una costante definita in precedenza nel codice. Se il risultato è inferiore a tale costante, il ciclo scriverà "false" nella variabile "ItIsLight", mentre se è superiore al valore scriverà "true".

Il terzo ciclo contiene un elenco numerico di 3 opzioni che fondamentalmente dice al cieco cosa fare, 0=abbassare la cieca, 1=accedere alla cieca, 2=non fare nulla perché la cieca è nel posto giusto. Il ciclo inizia leggendo la variabile "BlindShould" che specifica il compito corretto che il cieco dovrebbe svolgere, quindi esegue tale compito, modifica la variabile "BlindOpen" con l'opzione corretta e quindi diventa inattivo fino a quando la variabile "BlindShould" non viene modificata dove si ripete. Utilizza il valore "RotationsNeeded" e una potenza +/- 100% per aprire o chiudere completamente la tenda.

Il quarto e ultimo ciclo è il più complesso, è il ciclo "Decider" che gestisce tutti i dati e decide cosa fare con ogni permutazione. Lo fa utilizzando "biforcazioni sulla strada" basati sulla logica in cui "pulsante premuto", "Livello luce", "Venezia aperta" sono le domande vere o false. Tutte le permutazioni hanno una risposta codificata, che è 0=blind down, 1=blind up o 2= non fare nulla - questo valore viene scritto nella variabile "BlindShould" che viene quindi gestita da un ciclo precedente. Alcune risposte aspetteranno quindi che la variabile "ItIsLight" e/o "ButtonPressed" cambi prima di terminare lo script, questo è solo il caso delle permutazioni attivate dal pulsante poiché altrimenti cercherebbe immediatamente di correggere la sua posizione, il che significa che la tenda ritornerebbe al suo stato originario. Questo processo viene quindi eseguito in loop per creare un sistema automatico robusto e relativamente semplice, che può essere facilmente aggiunto e di cui è possibile eseguire il debug. uff.

Passaggio 5: ritocchi finali

Finiture
Finiture

Ho deciso in seguito di collegare un alimentatore da 9V al mio EV3 usando dei tasselli e delle viti in legno come "batterie", questo ha reso il prodotto non dipendente dalle batterie e mi ha impedito di dover cambiare le batterie ogni due giorni.

Fase 6: Valutazione del progetto

Penso che il progetto sia andato nel complesso bene, ho finito con un prototipo funzionante per il montaggio delle tende automatiche, che posso prendere tutte le informazioni rilevanti che ho trovato durante il progetto e implementare nella versione finale. Ho codificato con successo il dispositivo e in seguito non ho riscontrato problemi importanti con il codice finora. Mi sarebbe piaciuto rendere il dispositivo visivamente più accattivante, ma ancora una volta è una prova del concetto e mi impegnerò per renderlo bello quando realizzerò la versione finale con un ESP8266. Quando rifarò il progetto, progetterò il motore per stare all'interno della tenda perché sarebbe più facile da nascondere. La più grande lezione che ho imparato è eseguire il debug in modo logico e riflettere, documentare e testare il mio codice prima di implementarlo.

Consigliato: