Sommario:

Radar periferico per ipovedenti: 14 passaggi
Radar periferico per ipovedenti: 14 passaggi

Video: Radar periferico per ipovedenti: 14 passaggi

Video: Radar periferico per ipovedenti: 14 passaggi
Video: La riabilitazione visiva e gli ausili per gli ipovedenti 2024, Novembre
Anonim
Radar periferico per ipovedenti
Radar periferico per ipovedenti

A seguito di un terribile incidente, un mio amico ha recentemente perso la vista dall'occhio destro. Era senza lavoro da molto tempo e quando è tornato mi ha detto che una delle cose più snervanti con cui deve fare i conti è la mancanza di sapere cosa c'è dalla sua parte destra. Meno visione periferica significa sbattere contro cose e persone. Questo mi ha infastidito. Ho deciso che doveva esserci qualcosa che potevamo fare.

Volevo costruire un dispositivo in grado di misurare la distanza dagli oggetti sul lato destro del mio amico. Il mio piano è usare un motore tattile per far vibrare il dispositivo in modo inversamente proporzionale alla distanza da un oggetto. Quindi, se gli oggetti fossero lontani, il motore non vibrerebbe e poiché un oggetto era più vicino, inizierebbe a vibrare a un livello basso. Se l'oggetto fosse vicino vibrerebbe ad un livello molto più alto (o qualunque livello tu voglia). Il dispositivo dovrebbe essere abbastanza piccolo da poter essere appeso al lato degli occhiali con il sensore rivolto a destra. Il mio amico metterebbe il dispositivo sul lato destro dei suoi occhiali, ma ovviamente per qualcun altro potrebbe essere il lato sinistro.

Mi sono ricordato che a casa avevo dei sensori acustici di distanza. Ma sono un po' grandi e ingombranti, meno precisi e probabilmente sarebbero troppo pesanti per l'uso sugli occhiali. Ho iniziato a cercare qualcos'altro.

Quello che ho trovato è stato il sensore del tempo di volo VL53L0X della ST Electronics. Questo è un laser a infrarossi e un rilevatore di infrarossi in un unico pacchetto. Emette un impulso di luce laser al di fuori della gamma visibile dall'uomo (940 nm) e registra il tempo trascorso necessario per rilevare l'impulso riflesso. Divide questo tempo per 2 e moltiplica per la velocità della luce producendo una distanza molto precisa in millimetri. Il sensore può rilevare una distanza fino a 2 metri ma, come ho visto, 1 metro è più ottimale.

Si dà il caso che Adafruit abbia una breakout board VL53L0X. Quindi avevo bisogno di un motore vibrante, che avevano anche loro, e un microcontrollore per far funzionare tutto. Mi è capitato di avere un PJRC Teensy 3.2 a portata di mano. Sebbene più grande di quanto volevo, aveva la capacità di essere cronometrato a una bassa velocità. Volevo ridurre la velocità di clock per risparmiare energia. E per quanto riguarda una fonte di alimentazione, avevo un regolatore boost Sparkfun nella mia spazzatura insieme a un portabatteria AAA. Avevo praticamente tutto ciò di cui avevo bisogno.

Passaggio 1: primo prototipo

Primo prototipo
Primo prototipo
Primo prototipo
Primo prototipo

Ho preso le parti che avevo a portata di mano e ho realizzato un prototipo portatile del dispositivo che avevo immaginato. Ho stampato in 3D la maniglia e la piastra di montaggio e ho saldato tutta l'elettronica su una scheda prototipi Adafruit. Ho collegato il motore vibrante al Teensy tramite un transistor NPN 2N3904. Ho aggiunto un potenziometro da utilizzare per impostare la distanza massima a cui il dispositivo dovrebbe rispondere.

L'ho fatto funzionare entro il prossimo fine settimana (vedi l'immagine sopra). Non era carino, ma dimostrava il principio. Il mio amico potrebbe tenere il dispositivo sul lato destro e verificare se il dispositivo sarebbe stato utile o meno e per aiutare a perfezionare ciò che voleva per le funzionalità.

Passaggio 2: prototipo n. 2

Prototipo 2
Prototipo 2
Prototipo 2
Prototipo 2
Prototipo 2
Prototipo 2

Dopo il primo prototipo portatile ho iniziato a realizzarne una versione più piccola. Volevo avvicinarmi al mio obiettivo di creare qualcosa che potesse adattarsi agli occhiali. Il Teensy che ho usato nella versione portatile mi ha permesso di rallentare l'orologio per risparmiare energia. Ma le dimensioni sarebbero state un fattore determinante e così sono passato a un Adafruit Trinket M0. Sebbene la sua frequenza di clock sia di 48 MHz, il processore ARM su cui si basa può avere un clock più lento. Utilizzando l'oscillatore RC interno può funzionare a 8, 4 2 e persino 1 MHz.

Il prototipo n. 2 è stato realizzato abbastanza velocemente poiché avevo tutto insieme entro il prossimo fine settimana. Il circuito era lo stesso del prototipo n. 1 ad eccezione dell'ARM M0. Ho stampato in 3D un piccolo involucro e ho messo le guide sul retro in modo che potesse essere fatto scivolare sugli occhiali. Vedi l'immagine sopra. Inizialmente viene sincronizzato alla frequenza di 48 MHz.

Passaggio 3: prototipo n. 3

Prototipo #3
Prototipo #3

Quindi, questo Instructable inizia davvero qui. Ho deciso di realizzare un ultimo prototipo. Decido di ridurlo il più piccolo possibile a meno di utilizzare un PWB personalizzato (che è dove sono sicuro che siamo diretti). Il resto di questo Instructable ti mostrerà come crearne uno. Proprio come le persone che realizzano mani stampate in 3D per bambini con disabilità, la mia speranza è che le persone le realizzino per chiunque abbia una simile perdita della vista in un occhio.

Ho mantenuto l'elenco delle parti uguale al prototipo n. 2 ma ho deciso di rimuovere il potenziometro. Dopo aver parlato con il mio amico, abbiamo deciso di impostare la distanza massima utilizzando un software. Poiché ho la possibilità di utilizzare un sensore tattile utilizzando Teensy, potremmo sempre impostare la distanza massima toccando. Un tocco imposta una distanza breve, o più tocco una distanza maggiore, un altro tocco la distanza più lunga e poi, per un altro tocco, torna all'inizio. Ma all'inizio useremo una distanza fissa per andare avanti.

Passaggio 4: parti

Parti
Parti

Per questo prototipo avevo bisogno di una tavola più piccola. Sono andato con una scheda prototipi Sparkfun (PRT-12702) perché di piccole dimensioni (circa 1,8 "X 1,3") sarebbe una buona dimensione per cui sparare.

Avevo anche bisogno di usare qualcosa di diverso da una batteria AAA come fonte di alimentazione. Una LiPo sembrava la scelta giusta in quanto avrebbe capacità di archiviazione e leggerezza. Ho provato una pila a bottone ma non aveva abbastanza potenza per gestire il motore per molto tempo. Ho scelto una piccola LiPo con una capacità di 150 mAH.

Sarei rimasto con il Trinket M0 e, naturalmente, la breakout board VL53L0X.

Ora che siamo passati ai dettagli, ecco un elenco di parti per questo prototipo:

Adafruit VL53L0X Sensore di distanza del tempo di volo - ID PRODOTTO: 3317 Adafruit - Mini disco motore vibrante - ID PRODOTTO: 1201 Adafruit - Batteria ai polimeri di ioni di litio - 3,7 V 150 mAh - ID PRODOTTO: 1317 SparkFun - Tagliere saldabile - Mini - PRT-12702 Sparkfun - Connettore JST ad angolo retto - Foro passante a 2 pin - PRT-09749 Resistore da 10K ohm - Junkbox (guarda sul tuo pavimento) 2N3904 Transistor NPN - Junkbox (o telefona a un amico) Alcuni cavi di collegamento (ho usato 22 gauge intrecciati)

Per caricare la batteria LiPo ho anche raccolto:

Adafruit - Micro Lipo - Caricabatterie USB LiIon/LiPoly - v1 - ID PRODOTTO: 1304

Passaggio 5: schema

Schema
Schema

Lo schema di questo dispositivo è mostrato sopra. L'input touch sarà per una versione futura ma è comunque mostrato nello schema. Inoltre, il resistore da 10K tra il Trinket M0 e la base del 2N3904 fornisce una base sufficiente per accendere il motore senza sbatterlo troppo forte.

Quella che segue è una descrizione passo passo dell'assemblaggio.

Passaggio 6: la scheda prototipi

La scheda prototipi
La scheda prototipi

Molti di voi che sono esperti lo sanno, ma questo è per coloro che potrebbero essere nuovi alla saldatura delle schede prototipi:

La scheda prototipi Sparkfun (PRT-12702) mostrata sopra ha 17 colonne (gruppi) di 5 pin su ciascun lato di uno spazio di tre decimi di pollice. Ogni colonna verticale di 5 piedini su entrambi i lati del divario è comune l'uno all'altro. Con questo intendo dire che qualsiasi connessione a un pin del gruppo è una connessione a ogni altro pin del gruppo. Per questa scheda, ciò non sembra ovvio, ma puoi verificarlo se utilizzi un DVM (Digital Volt Meter). Se guardi sul retro puoi appena distinguere le tracce che collegano i gruppi.

Passaggio 7: posizionamento dei componenti

Posizionamento dei componenti
Posizionamento dei componenti
Posizionamento dei componenti
Posizionamento dei componenti

Probabilmente devi saldare i pin strip sia al Trinket M0 che al VL53L0X. Entrambi vengono con le strisce ma devono essere saldati. Adafruit ha istruzioni nel proprio Centro di apprendimento per entrambe queste parti. Se sei nuovo in questo, vai lì (qui e qui) prima di saldare le strisce sulle schede. I pin strip forniscono un profilo più basso di quello che farebbe una presa.

La prima cosa da considerare quando si salda qualcosa su una scheda prototipi con spazio limitato è il posizionamento dei componenti. Ho posizionato il Trinket e il VL53L0X nelle posizioni mostrate nella figura sopra. Il Trinket ha pin su entrambi i bordi della scheda, ma il VL53L0X ha 7 pin tutti su un bordo della sua scheda. Il lato del VL53L0X che non ha pin lo useremo per collegare alcuni componenti…come vedremo.

Ho anche saldato l'interruttore a scorrimento in posizione e ho saldato il 2N3904. Ho oscurato i fori in cui sono posizionate quelle parti e, per il 2N3904, ho notato quali pin sono il collettore, la base e l'emettitore. Quando lo saldi per la prima volta, dovresti lasciarlo perpendicolare alla scheda in modo da poter saldare altre connessioni. Successivamente sarai in grado di piegarlo (con attenzione) in modo che sia più vicino a essere a filo con la tavola.

NOTA: la batteria JST Breakout NON viene saldata alla scheda in questo momento. Verrà saldato sul retro della scheda ma solo DOPO aver saldato le altre nostre connessioni. Sarà l'ultima cosa che saldiamo.

Passaggio 8: fili

fili
fili

Il diagramma sopra mostra di nuovo la scheda prototipi con i fori oscurati dove verranno posizionati i componenti. Ho aggiunto le etichette per loro lungo i bordi per facilitare il cablaggio. Nota che viene mostrato il motore di vibrazione, ma sarà posizionato sul lato posteriore della scheda e sarà collegato quasi per ultimo, quindi per ora ignoralo. Mostro anche il JST Battery Breakout con una linea tratteggiata. Come identificato nel passaggio precedente, non collegarlo ma lascia aperti i 4 fori nella parte superiore della scheda (cioè non saldarli).

Presumo a questo punto che tu sappia come togliere l'isolamento da un filo, saldare le estremità con saldatura e saldare a una scheda. In caso contrario, vai a vedere uno degli Instructables sulla saldatura.

Per questo passaggio, saldare i fili come mostrato in giallo. I punti finali sono i fori a cui dovresti saldarli. Dovresti anche saldare il resistore da 10K ohm alla scheda come mostrato. I collegamenti effettuati sono:

1. Un collegamento dal terminale positivo della batteria al terminale COMmon (centro) dell'interruttore a scorrimento. Un lato dell'interruttore a scorrimento entrerà in contatto con l'ingresso BAT al Trinket. Il regolatore di bordo del Trinket genera 3,3 V dalla tensione di ingresso BAT.

2. Una connessione dal terminale negativo (massa) della batteria alla terra del Trinket.

3. Una connessione dal terminale negativo (terra) della batteria all'emettitore del 2N3904

4. Una connessione dal pin da 3,3 volt (3V) del Trinket al VIN del VL53L0X. Il VL53L0X regolerà ulteriormente questo a 2,8 volt per il proprio uso. Porta anche questa tensione su un pin ma non ne abbiamo bisogno, quindi verrà lasciato scollegato.

Passaggio 9: più cavi

Più fili
Più fili

Quindi ora aggiungiamo il prossimo gruppo di fili come mostrato sopra. Ecco un elenco di ogni connessione:

1. Una connessione dal pin di Trinket etichettato come 2 al pin VL53L0X SCL. Questo è il segnale di clock I2C. Il protocollo seriale I2C è quello utilizzato dal Trinket per comunicare con il VL53L0X.

2. Una connessione dal pin del Trinket etichettato come 0 (zero) al pin SDA VL53L0X. Questo è il segnale dati I2C.

3. Una connessione dal pin VL53L0X GND attraverso lo spazio sulla scheda prototipi all'emettitore del 2N3904. Ciò fornisce la massa al VL53L0X.

4. Una connessione dal pin del Trinket etichettato come 4 al resistore da 10K. Questa è l'unità per il motore di vibrazione. Questo filo dovrebbe essere sicuramente saldato sul lato posteriore della scheda se scegli il mio punto di connessione.

Ricorda che qualsiasi gruppo verticale di 5 pin è comune tra loro, quindi puoi connetterti ovunque in questo gruppo che è conveniente. Noterai nelle foto della mia scheda che ho cambiato alcuni dei miei punti di connessione. Finché sono la connessione corretta, qualsiasi pad tu scelga va bene.

Passaggio 10: motore di vibrazione

Motore a vibrazione
Motore a vibrazione

Il motore di vibrazione viene fornito con un adesivo in grado di suonare sul retro. Lo togli per rivelare un materiale appiccicoso che consente al motore di essere bloccato sul retro della scheda (ma, vedi il commento sotto prima di incollarlo). L'ho posizionato a sinistra (guardando il retro della scheda) della scheda JST Battery Breakout che non abbiamo ancora collegato. Quindi, lascia un po' di spazio per la scheda JST Battery Breakout. Volevo anche assicurarmi che il case metallico del motore non cortocircuitasse alcun pin attraverso lo spazio della scheda prototipi. Quindi, ho tagliato un piccolo pezzo di nastro biadesivo e l'ho incollato sul retro del lato adesivo del motore di vibrazione. Poi l'ho spinto sul retro del tabellone. Aiuta a mantenere la custodia in metallo in alto e lontana da qualsiasi spillo. Tuttavia, fai attenzione a posizionarlo in modo che NON metta in cortocircuito alcun pin.

Saldare il filo rosso del motore di vibrazione al pin 3V del Trinket. Il filo nero del motore di vibrazione è saldato al collettore del 2N3904. Quando il software fa pulsare il 2N3904 (fornisce un 1 logico come 3.3V) il transistor si accende collegando a massa (o vicino ad essa) il filo nero del motovibratore. Questo fa vibrare il motore.

Avrei potuto aggiungere un po' di capacità al punto di connessione del cavo rosso del motore a vibrazione. Ma c'è una capacità sulla linea da 3,3 V di Trinket, quindi sono sicuro che va bene, ma se vuoi aggiungere qualche altra capacità puoi … direttamente al lato positivo della batteria LiPo. Ho scelto il lato 3.3V per mantenere la tensione costante. Finora, sembra funzionare bene.

Passaggio 11: ultimo ma non meno importante…

Ultimo, ma non per importanza…
Ultimo, ma non per importanza…
Ultimo, ma non per importanza…
Ultimo, ma non per importanza…

Infine colleghiamo la scheda breakout della batteria JST al lato posteriore della scheda prototipi. Ho saldato i pin sulla scheda e ho posizionato la scheda breakout della batteria JST con il lato superiore rivolto verso la scheda prototipi come mostrato sopra. Assicurati di aver saldato i fili per la batteria positiva e la messa a terra ai pin giusti quando posizioni questa parte. Se ti sbagli, invertirai la polarità delle parti e probabilmente le distruggerai tutte. Quindi, per favore, controlla e ricontrolla prima di saldare e collegare la batteria.

Passaggio 12: software

Software
Software

Per installare e/o modificare il software avrai bisogno dell'IDE Arduino e dei file della scheda per il Trinket M0 così come le librerie per il VL53L0X. Tutto questo è qui, qui e qui.

Segui le istruzioni per l'utilizzo di Adafruit M0 sul loro sito di apprendimento qui.

Una volta caricato il software, la scheda dovrebbe avviarsi e funzionare sulla connessione seriale USB. Sposta il lato della scheda con il VL53L0X vicino a un muro o alla tua mano e dovresti sentire il motore vibrare. La vibrazione dovrebbe diminuire di ampiezza quanto più un oggetto è lontano dal dispositivo.

Un comportamento visto nel dispositivo è in qualche modo spiegato nei commenti nel codice sorgente. Ma il grafico allegato dovrebbe chiarire bene questo punto. Il dispositivo non dovrebbe iniziare a vibrare fino a circa 863 mm da un oggetto. Raggiungerà il suo livello massimo di vibrazione a 50 mm da un oggetto. Se ci si avvicina a un oggetto più vicino di 50 mm, il dispositivo non produrrà più vibrazioni rispetto a 50 mm.

Passaggio 13: allegato

Allegato
Allegato
Allegato
Allegato
Allegato
Allegato
Allegato
Allegato

Ho progettato un involucro e l'ho stampato in 3D in plastica ABS. Puoi stamparlo in PLA o ABS o qualsiasi materiale tu voglia. Uso l'ABS perché posso saldare con acetone i pezzi sulla tavola, se necessario. La scheda che ho progettato è semplice e ha un foro per la porta USB sul Trinket e un foro per l'interruttore di alimentazione. Ho fatto incastrare le due tavolette con dei braccetti ai lati della scatola. Non mi piace molto quindi probabilmente lo cambierò. Naturalmente, puoi apportare tutte le modifiche che desideri vedere.

In questo momento per questa versione, la scatola deve essere aperta per scollegare la batteria LiPo per ricaricarla. Se creo un circuito stampato per questo progetto, aggiungerò un altro connettore per rendere accessibile la batteria senza aprire la scatola. Potrebbe essere possibile farlo su questo design della scheda prototipi e creare un foro per il connettore per la ricarica. Se vuoi provare questo, condividi i tuoi risultati.

Sono riuscito a progettare una scatola che non odiavo completamente. Useremo questo per testare il sistema. Ho allegato la parte superiore e inferiore della scatola come file STL e la staffa/guida che ho aggiunto nella parte inferiore. Ho aggiunto un paio di guide usando acetone per saldare chimicamente le parti insieme. Se lo fai, stai attento. Potete vedere l'assemblea qui sopra.

Passaggio 14: e ora?

Ora cosa?
Ora cosa?

Controllami… sono vecchio e potrei aver dimenticato qualcosa o aver fatto un casino. Sto rileggendo e controllando questo ma, posso ancora perdere delle cose. Sentiti libero di dirmi qualunque cosa ho fatto/fatto di sbagliato.

E ora che hai costruito la scheda radar periferica e l'hai caricata e la batteria LiPo è in una bella custodia stampata in 3D (quando l'avrò finita o, se l'hai fatta tu), cosa fai dopo? Penso che dovresti acquisire esperienza con come funziona e apportare modifiche al software. Il contratto di licenza nel software afferma che è possibile utilizzarlo, ma se si apportano modifiche è necessario condividerle. Non sto dicendo che il software per questo progetto sia complicato o sorprendente in qualche modo. Raggiunge i suoi obiettivi, ma c'è spazio per miglioramenti. Aiutaci a migliorare questo dispositivo e condividilo con tutti noi. Ricorda, questo progetto mira ad aiutare le persone. Quindi, aiuto!

Consigliato: