Innholdsfortegnelse:

Perifer radar for synshemmede: 14 trinn
Perifer radar for synshemmede: 14 trinn

Video: Perifer radar for synshemmede: 14 trinn

Video: Perifer radar for synshemmede: 14 trinn
Video: Кемпинг под дождем у лесного ручья с собакой - Дождь ASMR 2024, November
Anonim
Perifer radar for synshemmede
Perifer radar for synshemmede

Som et resultat av en fryktelig ulykke mistet en venn av meg nylig synet på høyre øye. Han var lenge uten jobb, og da han kom tilbake fortalte han at en av de mest irriterende tingene han må håndtere er mangelen på å vite hva som er på høyre side. Mindre perifert syn betyr å støte på ting og mennesker. Dette plaget meg. Jeg bestemte meg for at det måtte være noe vi kunne gjøre.

Jeg ønsket å bygge en enhet som kunne måle avstand til objekter på vennens høyre side. Planen min er å bruke en haptisk motor til å vibrere enheten omvendt proporsjonal med avstanden til et objekt. Så hvis gjenstander var langt unna, ville ikke motoren vibrere, og et objekt var nærmere, og den ville begynne å vibrere på et lavt nivå. Hvis objektet var nært, ville det vibrere på et mye høyere nivå (eller hvilket nivå du måtte ønske). Enheten må være liten nok til å henge på siden av brillene med sensoren pekende til høyre. Vennen min ville sette enheten på høyre side av brillene, men selvfølgelig for noen andre kan det være venstre side.

Jeg husket at jeg hadde noen akustiske avstandssensorer hjemme. Men de er litt store og klumpete, mindre presise og vil sannsynligvis være for tunge til bruk på briller. Jeg begynte å lete etter noe annet.

Det jeg fant var ST Electronics VL53L0X Time-of-Flight-sensor. Dette er en infrarød laser og infrarød detektor i en enkelt pakke. Den sender ut en puls av laserlys utenfor det synlige området for mennesker (940 nm) og registrerer den forløpte tiden det tar å oppdage den reflekterte pulsen. Den deler denne gangen med 2 og multipliserer med lysets hastighet og produserer veldig nøyaktig avstand i millimeter. Sensoren kan oppdage avstand ut til 2 meter, men som jeg har sett, er 1 meter mer optimal.

Som det skjer, har Adafruit et VL53L0X breakout -bord. Så jeg trengte en vibrerende motor, som de også hadde, og en mikrokontroller for å kjøre alt. Jeg hadde tilfeldigvis en PJRC Teensy 3.2 for hånden. Selv om den var større enn jeg ønsket, hadde den muligheten til å bli klokket i sakte hastighet. Jeg ønsket å senke klokkehastigheten for å spare strøm. Og når det gjelder en strømkilde, hadde jeg en Sparkfun boost -regulator i søppelfeltet sammen med en AAA -batteriholder. Jeg hadde omtrent alt jeg trengte.

Trinn 1: Første prototype

Første prototype
Første prototype
Første prototype
Første prototype

Jeg tok delene jeg hadde på hånden og laget en håndholdt prototype av enheten jeg så for meg. Jeg trykte 3D -håndtaket og monteringsplaten og loddet alt elektronikken på et Adafruit -protobord. Jeg koblet den vibrerende motoren til Teensy via en 2N3904 NPN -transistor. Jeg la til et potensiometer som skal brukes til å angi maksimal avstand enheten vil svare på.

Jeg kjørte den neste helg (se bildet ovenfor). Det var ikke pent, men det demonstrerte prinsippet. Vennen min kunne holde enheten på høyre side og teste om enheten ville være nyttig eller ikke, og for å hjelpe til med å finpusse det han ønsket for funksjoner.

Trinn 2: Prototype #2

Prototype #2
Prototype #2
Prototype #2
Prototype #2
Prototype #2
Prototype #2

Etter den første håndholdte prototypen begynte jeg å lage en mindre versjon. Jeg ønsket å komme nærmere målet mitt om å lage noe som kunne passe på briller. Teensy jeg brukte på den håndholdte versjonen tillot meg å senke klokken for å spare strøm. Men størrelsen kom til å være en faktor, og derfor byttet jeg til en Adafruit Trinket M0. Selv om klokkefrekvensen er 48 MHz, kan ARM -prosessoren den er basert på, klokkes saktere. Ved å bruke den interne RC -oscillatoren kan den kjøre på 8, 4 2 og til og med 1 MHz.

Prototype #2 kom ganske raskt sammen da jeg hadde alt sammen neste helg. Kretsløpet var det samme som prototype #1 bortsett fra ARM M0. Jeg 3D -trykte et lite kabinett og la guider på baksiden slik at det kunne skyves på glass. Se bildet over. I utgangspunktet blir den klokket med en hastighet på 48 MHz.

Trinn 3: Prototype #3

Prototype #3
Prototype #3

Så, dette instruerbare begynner virkelig her. Jeg bestemte meg for å lage en siste prototype. Jeg bestemmer meg for å klemme den så liten som jeg kunne, uten å bruke en tilpasset PWB (det er der jeg er sikker på at vi er på vei). Resten av denne instruksen vil handle om å vise deg hvordan du lager en. Akkurat som folk som lager 3D -trykte hender for barn med nedsatt funksjonsevne, håper jeg at folk vil lage disse for alle med lignende synstap i øyet.

Jeg beholdt delelisten den samme som prototype #2, men jeg bestemte meg for å fjerne potensiometeret. Etter å ha snakket med vennen min bestemte vi oss for å sette maksimal avstand ved hjelp av programvare. Fordi jeg har muligheten til å bruke en berøringssensor ved bruk av Teensy, kan vi alltid gjøre maksavstanden til en innstilling ved å berøre. Ett trykk angir en kort avstand, eller mer berøring en lengre distanse, et annet trykk på den lengste distansen, og deretter for en berøring, vikle deg tilbake til begynnelsen. Men først bruker vi en fast avstand for å komme i gang.

Trinn 4: Deler

Deler
Deler

For denne prototypen trengte jeg et mindre brett. Jeg gikk med et Sparkfun protoboard (PRT-12702) fordi det er små dimensjoner (ca. 1,8 "X 1,3") ville være en god størrelse å skyte for.

Jeg trengte også å bruke noe annet enn et AAA -batteri som strømkilde. En LiPo virket som det riktige valget, da den ville ha lagringskapasitet og lett vekt. Jeg prøvde en myntcelle, men den hadde ikke nok kraft til å håndtere motoren veldig lenge. Jeg valgte en liten LiPo som har en kapasitet på 150 mAH.

Jeg skulle bli hos Trinket M0 og selvfølgelig VL53L0X breakout board.

Nå som vi er i detalj, her er en liste over deler til denne prototypen:

Adafruit VL53L0X Time of Flight Distance Sensor - PRODUCT ID: 3317 Adafruit - Vibrating Mini Motor Disc - PRODUCT ID: 1201 Adafruit - Lithium Ion Polymer Battery - 3.7v 150mAh - PRODUCT ID: 1317 SparkFun - Loddbart brødbrett - Mini - PRT -12702 Sparkfun - JST -vinkelkontakt - 2 -pinners gjennomgående hull - PRT -09749 10K ohm motstand - Junkbox (se på gulvet ditt) 2N3904 NPN Transistor - Junkbox (eller telefon en venn) Noen tilkoblingskabler (jeg brukte 22 gauge strandet)

For å lade LiPo -batteriet tok jeg også opp:

Adafruit - Micro Lipo - USB LiIon/LiPoly lader - v1 - PRODUKT ID: 1304

Trinn 5: Skjematisk

Skjematisk
Skjematisk

Skjematisk for denne enheten er vist ovenfor. Berøringsinngangen vil være for en fremtidig versjon, men den vises uansett i skjematikken. 10K motstanden mellom Trinket M0 og basen på 2N3904 gir også akkurat nok base til å slå på motoren uten å slå den for hardt.

Det som følger er en trinnvis monteringsbeskrivelse.

Trinn 6: Protoboardet

Protoboardet
Protoboardet

Mange av dere som er erfarne vet dette, men dette er for de som kan være nye i lodding av protoboard:

Sparkfun protoboardet (PRT-12702) vist ovenfor har 17 kolonner (grupper) med 5 pinner på hver side av et tre tiendedels tommer gap. Hver vertikal kolonne med 5 pinner på hver side av gapet er felles for hverandre. Med dette mener jeg at enhver forbindelse til en pin i gruppen er en forbindelse til hver annen pin i gruppen. For dette kortet virker det ikke åpenbart, men du kan bekrefte dette hvis du bruker en DVM (Digital Volt Meter). Hvis du ser på baksiden, kan du bare finne ut sporene som forbinder gruppene.

Trinn 7: Komponentplassering

Komponentplassering
Komponentplassering
Komponentplassering
Komponentplassering

Du må sannsynligvis lodde tappestrimler til både Trinket M0 og VL53L0X. Begge følger med stripene, men de må loddes. Adafruit har instruksjoner i sitt læringssenter for begge disse delene. Hvis du er ny på dette, kan du gå dit (her og her) før du lodder stripene på platene. Tappestrimlene gir en lavere profil enn en stikkontakt ville.

Det første du må vurdere når du lodder noe på et protoboard med begrenset plass, er komponentplassering. Jeg plasserte Trinket og VL53L0X i posisjonene vist på figuren ovenfor. Trinket har pinner på begge kantene av brettet, men VL53L0X har 7 pinner alle på den ene kanten av brettet. Siden av VL53L0X som ikke har pinner, vil vi bruke til å koble til noen komponenter … som vi får se.

Jeg loddet også glidebryteren på plass, og jeg loddet 2N3904. Jeg har mørkere hullene der delene er plassert, og for 2N3904 har jeg notert hvilke pinner som er samleren, basen og emitteren. Når du først lodder det, bør du la det stå vinkelrett på brettet slik at du kan lodde andre tilkoblinger. Senere vil du kunne bøye den (forsiktig) slik at det er nærmere å skylle med brettet.

MERK: JST Battery Breakout blir IKKE loddet til brettet på dette tidspunktet. Det vil bli loddet på baksiden av brettet, men bare ETTER at vi har loddet de andre forbindelsene våre. Det blir det siste vi lodder.

Trinn 8: Ledninger

Ledninger
Ledninger

Diagrammet ovenfor viser protoboardet igjen med mørkede hull der komponentene skal plasseres. Jeg har lagt til etikettene for dem langs kantene for å gjøre det lettere å koble til. Vær oppmerksom på at vibrasjonsmotoren er vist, men den vil være plassert på baksiden av brettet og vil bli tilkoblet nesten sist, så foreløpig bare ignorere den. Jeg viser også JST Battery Breakout med en stiplet linje. Som identifisert i forrige trinn, må du ikke koble den til, men la de fire hullene på toppen av brettet være åpne (dvs. ikke lodde til dem).

Jeg antar at du vet hvordan du fjerner isolasjon fra en ledning, tenner endene med loddetinn og loddetinn til et brett. Hvis ikke, kan du gå til en av instruksjonene om lodding.

For dette trinnet, loddetråder som vist i gult. Endepunktene er hullene du bør lodde dem til. Du bør også lodde 10K ohm motstanden til brettet som vist. Tilkoblingene som blir gjort er:

1. En tilkobling fra batteriets positive terminal til COMmon (midtre) terminal på skyvebryteren. Den ene siden av glidebryteren vil ta kontakt med BAT -inngangen til Trinket. Trinkets innebygde regulator genererer 3,3V fra BAT-inngangsspenningen.

2. En tilkobling fra batteriets negative (jord) -terminal til bakken på pynten.

3. En tilkobling fra batteriets negative (bakken) terminal til senderen til 2N3904

4. En tilkobling fra Trinkets 3,3 volt (3V) pin til VIN på VL53L0X. VL53L0X vil videre regulere dette til 2,8 volt for eget bruk. Det bringer også denne spenningen ut til en pinne, men vi trenger ikke den, så den blir liggende uten tilkobling.

Trinn 9: Flere ledninger

Flere ledninger
Flere ledninger

Så nå legger vi til den neste gruppen ledninger som vist ovenfor. Her er en liste over hver tilkobling:

1. En tilkobling fra Trinket -pinnen merket som en 2 til VL53L0X SCL -pinnen. Dette er I2C klokkesignal. I2C seriell protokoll er det som brukes av Trinket til å kommunisere med VL53L0X.

2. En tilkobling fra Trinkets pin merket som 0 (null) til VL53L0X SDA -pin. Dette er I2C datasignal.

3. En tilkobling fra VL53L0X GND -pinnen over gapet på protoboardet til emitteren til 2N3904. Dette gir bakken til VL53L0X.

4. En tilkobling fra Trinkets pin merket som en 4 til 10K -motstanden. Dette er stasjonen for vibrasjonsmotoren. Denne ledningen bør definitivt loddes på baksiden av brettet hvis du velger mitt tilkoblingspunkt.

Husk at enhver vertikal gruppe på 5 pinner er felles for hverandre, slik at du kan koble til hvor som helst i denne gruppen som er praktisk. Du vil merke på bildene av brettet mitt at jeg endret noen av tilkoblingspunktene mine. Så lenge de er riktig tilkobling, er den puten du velger fin.

Trinn 10: Vibrasjonsmotor

Vibrasjonsmotor
Vibrasjonsmotor

Vibrasjonsmotoren kommer med et klistremerke som kan skrelles på baksiden. Du trekker dette av for å avsløre et klebrig materiale som gjør at motoren kan sitte fast på baksiden av brettet (men, se kommentaren nedenfor før du klistrer den). Jeg plasserte den til venstre (ser på baksiden av brettet) på JST Battery Breakout -kortet som vi ikke har festet ennå. Så la det være litt plass til JST Battery Breakout -kortet. Jeg ville også sørge for at motorens metallhus ikke kortsluttet noen pinner over gapet på protoboardet. Så, jeg kuttet et lite stykke dobbeltsidig tape og festet det på baksiden av vibrasjonsmotorens klebrig side. Så skjøv jeg det på baksiden av brettet. Det hjelper å holde metallhuset høyt og vekk fra alle pinner. Men vær forsiktig med å plassere den på en måte som IKKE korter noen pins.

Lodd den røde ledningen til vibrasjonsmotoren til 3V -pinnen på pyntegjenstanden. Vibrasjonsmotorens svarte ledning er loddet til samleren til 2N3904. Når programvaren pulserer 2N3904 (gir en logikk 1 som 3,3V) slår transistoren på å koble den svarte ledningen til vibrasjonsmotoren til bakken (eller i nærheten av den). Dette får motoren til å vibrere.

Jeg kunne ha lagt til litt kapasitans ved vibrasjonsmotorens røde ledningspunkt. Men det er kapasitans på Trinket 's 3.3V linje, så jeg er sikker på at det er greit, men hvis du vil legge til en annen kapasitans kan du … så lenge du kan presse den inn. For den saks skyld kan den røde ledningen bli tilkoblet direkte til LiPo -batteriets positive side. Jeg valgte 3.3V -siden for å holde spenningen konstant. Så langt ser det ut til å fungere fint.

Trinn 11: Sist men ikke minst …

Sist men ikke minst…
Sist men ikke minst…
Sist men ikke minst…
Sist men ikke minst…

Sist kobler vi JST Battery breakout board til baksiden av protoboardet. Jeg loddet pins på brettet og plasserte JST Battery breakout board med oversiden vendt mot protoboardet som vist ovenfor. Sørg for at du loddet ledningene for positivt batteri og jordet til de riktige pinnene når du plasserer denne delen. Hvis du tar feil, vil du snu polariteten til delene og sannsynligvis ødelegge dem alle. Så vær så snill, sjekk og sjekk før du lodder og plugger inn batteriet.

Trinn 12: Programvare

Programvare
Programvare

For å installere og/eller endre programvaren trenger du Arduino IDE og brettfilene for Trinket M0 samt bibliotekene for VL53L0X. Alt dette er her, her og her.

Følg instruksjonene for bruk av Adafruit M0 på deres læringssted her.

Når programvaren er lastet inn, bør kortet starte og kjøre på USB seriell tilkobling. Flytt siden av brettet med VL53L0X nær en vegg eller hånden din, og du skal føle motoren vibrere. Vibrasjonen bør bli lavere i amplitude jo lenger vekk fra enheten et objekt er.

En oppførsel som er sett på enheten, er noe forklart i kommentarene i kildekoden. Men den vedlagte grafen bør gjøre dette poenget godt. Enheten skal ikke begynne å vibrere før ca 863 mm fra et objekt. Den vil nå sitt maksimale vibrasjonsnivå 50 mm fra et objekt. Hvis du beveger deg nærmere et objekt enn 50 mm, vil enheten ikke produsere mer vibrasjon enn den gjør ved 50 mm.

Trinn 13: Vedlegg

Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning

Jeg designet et kabinett og 3D -trykt det i ABS -plast. Du kan skrive den ut i PLA eller ABS eller hvilket materiale du vil. Jeg bruker ABS fordi jeg kan aceton sveise biter på brettet om nødvendig. Brettet jeg designet er enkelt og har et hull for USB -porten på Trinket og et hull for strømbryteren. Jeg fikk de to brettene til å snappe sammen med små armer på sidene av esken. Jeg liker det ikke så godt, så jeg vil sannsynligvis endre det. Selvfølgelig kan du gjøre de endringene du ønsker å se.

Akkurat nå for denne versjonen må boksen åpnes for å koble fra LiPo -batteriet for å lade det opp. Hvis jeg lager et kretskort for dette prosjektet, vil jeg legge til en annen kontakt for å gjøre batteriet tilgjengelig uten å åpne boksen. Det kan være mulig å gjøre det på denne protoboard -designen og lage et hull for kontakten for lading. Hvis du vil prøve dette, vennligst del resultatene dine.

Jeg klarte å designe en eske jeg ikke helt hatet. Vi bruker denne til å teste systemet. Jeg har festet toppen og bunnen av esken som STL -filer, så vel som braketten/guiden jeg la til bunnen. Jeg la til et par guider ved hjelp av aceton for å sveise delene sammen kjemisk. Vær forsiktig hvis du gjør dette. Du kan se forsamlingen ovenfor.

Trinn 14: Hva nå?

Hva nå?
Hva nå?

Sjekk meg… Jeg er gammel og har kanskje glemt noe eller rotet meg. Jeg leser på nytt og sjekker dette, men jeg kan fortsatt savne ting. Fortell meg gjerne hva jeg gjorde/gjorde feil.

Og nå som du har konstruert det perifere radarkortet og lastet det inn og LiPo -batteriet er i et fint 3D -trykt etui (når jeg er ferdig med det, eller hvis du gjorde ditt eget), hva gjør du videre? Jeg tror du bør få erfaring med hvordan den fungerer og gjøre endringer i programvaren. Lisensavtalen i programvaren sier at du kan bruke den, men hvis du gjør noen endringer må du dele dem. Jeg sier ikke at programvaren for dette prosjektet er komplisert eller fantastisk på en eller annen måte. Den oppnår sine mål, men det er rom for forbedring. Hjelp til med å gjøre denne enheten bedre og del den med oss alle. Husk at dette prosjektet handler om å hjelpe mennesker. Så, hjelp!

Anbefalt: