Indholdsfortegnelse:

Perifer radar for synshandicappede: 14 trin
Perifer radar for synshandicappede: 14 trin

Video: Perifer radar for synshandicappede: 14 trin

Video: Perifer radar for synshandicappede: 14 trin
Video: Tesla Cybertruck Crash Test - BeamNG.Drive #shorts 2024, November
Anonim
Perifer radar for synshandicappede
Perifer radar for synshandicappede

Som følge af en frygtelig ulykke mistede en af mine venner for nylig synet i sit højre øje. Han var arbejdsløs i lang tid, og da han kom tilbage, fortalte han mig, at en af de mest irriterende ting, han skal håndtere, er manglen på at vide, hvad der er på hans højre side. Mindre perifert syn betyder at støde ind i ting og mennesker. Dette generede mig. Jeg besluttede, at der skulle være noget, vi kunne gøre.

Jeg ville bygge en enhed, der kunne måle afstanden til objekter på min vens højre side. Min plan er at bruge en haptisk motor til at vibrere enheden omvendt proportional med afstanden til et objekt. Så hvis genstande var langt væk, ville motoren ikke vibrere, og da et objekt var tættere, ville den begynde at vibrere på et lavt niveau. Hvis objektet var tæt på, ville det vibrere på et meget højere niveau (eller hvilket niveau du ville have). Enheden skal være lille nok til at hænge på siden af brillerne med sensoren pegende til højre. Min ven ville sætte enheden på højre side af hans briller, men selvfølgelig for en anden, kunne det være venstre side.

Jeg huskede, at jeg havde nogle akustiske afstandssensorer derhjemme. Men de er lidt store og omfangsrige, mindre præcise og ville sandsynligvis være for tunge til brug på glas. Jeg begyndte at lede efter noget andet.

Hvad jeg fandt var ST Electronics VL53L0X Time-of-Flight sensor. Dette er en infrarød laser og infrarød detektor i en enkelt pakke. Den udsender en puls af laserlys uden for det menneskeligt synlige område (940 nm) og registrerer den forløbne tid, det tager at detektere den reflekterede puls. Den deler denne gang med 2 og multipliceres med lysets hastighed, der producerer meget nøjagtig afstand i millimeter. Sensoren kan registrere afstand til 2 meter, men som jeg har set, er 1 meter mere optimal.

Når det sker, har Adafruit et VL53L0X breakout board. Så jeg havde brug for en vibrerende motor, som de også havde, og en mikrokontroller til at køre det hele. Jeg havde tilfældigvis en PJRC Teensy 3.2 ved hånden. Mens den var større end jeg ønskede, havde den evnen til at blive klokket med en langsom hastighed. Jeg ville sænke urets hastighed for at spare strøm. Og hvad angår en strømkilde, havde jeg en Sparkfun boost -regulator i min uønskede boks sammen med en AAA -batteriholder. Jeg havde næsten alt, hvad jeg havde brug for.

Trin 1: Første prototype

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

Jeg tog de dele, jeg havde, ved hånden og lavede en håndholdt prototype af den enhed, jeg forestillede mig. Jeg 3D -printede håndtaget og monteringspladen og loddet al elektronikken på et Adafruit protoboard. Jeg tilsluttede den vibrerende motor til Teensy via en 2N3904 NPN transistor. Jeg tilføjede et potentiometer, der skal bruges til at indstille den maksimale afstand, enheden ville reagere på.

Jeg havde den kørende i den næste weekend (se billedet ovenfor). Det var ikke smukt, men det demonstrerede princippet. Min ven kunne holde enheden på sin højre side og teste, om enheden ville være nyttig eller ej, og for at hjælpe med at forfine, hvad han ønskede for funktioner.

Trin 2: Prototype #2

Prototype nr. 2
Prototype nr. 2
Prototype nr. 2
Prototype nr. 2
Prototype #2
Prototype #2

Efter den første håndholdte prototype begyndte jeg at lave en mindre version. Jeg ville komme tættere på mit mål om at lave noget, der kunne passe på briller. Den Teensy, jeg brugte på den håndholdte version, tillod mig at bremse uret for at spare strøm. Men størrelsen ville være en faktor, og derfor skiftede jeg til en Adafruit Trinket M0. Selvom dens urfrekvens er 48 MHz, kan den ARM -processor, den er baseret på, clockes langsommere. Ved at bruge den interne RC -oscillator kan den køre ved 8, 4 2 og endda 1 MHz.

Prototype #2 kom temmelig hurtigt sammen, da jeg havde det hele sammen i den næste weekend. Kredsløbet var det samme som prototype #1 bortset fra ARM M0. Jeg 3D -printede et lille kabinet og lagde guider på bagsiden, så det kunne glides på glas. Se billedet ovenfor. I første omgang bliver den klokket med en hastighed på 48 MHz.

Trin 3: Prototype #3

Prototype #3
Prototype #3

Så denne instruktive begynder virkelig her. Jeg besluttede at lave en sidste prototype. Jeg beslutter mig for at klemme den så lille, som jeg kunne mangle at bruge en brugerdefineret PWB (det er her, jeg er sikker på, at vi er på vej). Resten af denne Instructable vil handle om at vise dig, hvordan du laver en. Ligesom folk laver 3D -printede hænder til børn med handicap, er mit håb, at folk vil lave dem til alle med et lignende synstab i øjet.

Jeg holdt delelisten den samme som prototype #2, men jeg besluttede at fjerne potentiometeret. Efter at have talt med min ven besluttede vi os for at indstille den maksimale afstand ved hjælp af software. Fordi jeg har mulighed for at bruge en berøringssensor ved hjælp af Teensy, kunne vi altid gøre den maksimale afstand til en indstilling ved at røre ved. Et tryk indstiller en kort afstand, eller mere tryk på en længere afstand, et andet tryk på den længste afstand, og derefter for et tryk mere, vikl tilbage til begyndelsen. Men i første omgang bruger vi en fast afstand til at komme i gang.

Trin 4: Dele

Dele
Dele

Til denne prototype havde jeg brug for et mindre bræt. Jeg gik med et Sparkfun protoboard (PRT-12702), fordi det er små dimensioner (ca. 1,8 "X 1,3") ville være en god størrelse at skyde for.

Jeg havde også brug for at bruge noget andet end et AAA -batteri som strømkilde. En LiPo virkede som det rigtige valg, da den ville have lagerkapacitet og let vægt. Jeg prøvede en møntcelle, men den havde ikke nok strøm til at håndtere motoren i meget lang tid. Jeg valgte en lille LiPo, der har en kapacitet på 150 mAH.

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

Nu hvor vi er nede i detaljerne, her er en liste over dele til denne prototype:

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 - Loddebart brødbræt - Mini - PRT -12702 Sparkfun - JST -retvinklet stik - Gennemgående hul 2 -benet - PRT -09749 10K ohm modstand - Junkbox (se på dit gulv) 2N3904 NPN Transistor - Junkbox (eller telefon en ven) Nogle tilslutningskabler (jeg brugte 22 gauge strandet)

For at oplade LiPo -batteriet skaffede jeg også:

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

Trin 5: Skematisk

Skematisk
Skematisk

Skematisk for denne enhed er vist ovenfor. Touch -input vil være til en fremtidig version, men det vises alligevel i skematisk. 10K modstanden mellem Trinket M0 og basen på 2N3904 giver også nok base til at tænde motoren uden at smække den for hårdt.

Det følgende er en trin-for-trin montagebeskrivelse.

Trin 6: Protoboardet

Protoboardet
Protoboardet

Mange af jer, der er erfarne, ved dette, men dette er for dem, der måske er nye inden for lodning af protoboards:

Sparkfun protoboardet (PRT-12702) vist ovenfor har 17 søjler (grupper) med 5 ben på hver side af et tre tiendedels tommer hul. Hver lodret kolonne med 5 ben på hver side af hullet er fælles for hinanden. Med dette mener jeg, at enhver forbindelse til en pin i gruppen er en forbindelse til hver anden pin i gruppen. For dette bord virker det ikke indlysende, men du kan bekræfte dette, hvis du bruger en DVM (Digital Volt Meter). Hvis du ser på bagsiden, kan du bare skelne sporene, der forbinder grupperne.

Trin 7: Komponentplacering

Komponentplacering
Komponentplacering
Komponentplacering
Komponentplacering

Du skal sandsynligvis lodde stifter til både Trinket M0 og VL53L0X. Begge kommer med strimler, men de skal loddes. Adafruit har instruktioner i deres læringscenter for begge disse dele. Hvis du er ny inden for dette, skal du gå der (her og her), før du lodder strimlerne på brædderne. Tappestrimlerne giver en lavere profil end en stikkontakt ville.

Den første ting at overveje, når man lodder noget på et protoboard med begrænset plads, er komponentplacering. Jeg placerede Trinket og VL53L0X i positionerne vist i figuren ovenfor. Trinket har stifter på begge kanter af brættet, men VL53L0X har 7 ben alle på den ene kant af brættet. Siden af VL53L0X, der ikke har stifter, vil vi bruge til at forbinde nogle komponenter … som vi ser.

Jeg lodde også glidekontakten på plads, og jeg lodde 2N3904. Jeg har mørkere hullerne, hvor disse dele er placeret, og for 2N3904 har jeg noteret, hvilke stifter der er samleren, basen og emitteren. Når du først lodder det, skal du lade det stå vinkelret på brættet, så du kan lodde andre forbindelser. Senere vil du være i stand til at bøje det (forsigtigt), så det er tættere på at blive skyllet med brættet.

BEMÆRK: JST Battery Breakout bliver IKKE loddet til brættet på nuværende tidspunkt. Det vil blive loddet på bagsiden af brættet, men først EFTER vi lodder vores andre forbindelser. Det vil være det sidste, vi lodder.

Trin 8: Ledninger

Ledninger
Ledninger

Diagrammet ovenfor viser protoboardet igen med mørkede huller, hvor komponenterne skal placeres. Jeg har tilføjet etiketterne til dem langs kanterne for at gøre det lettere at wire. Bemærk, at vibrationsmotoren er vist, men den vil være placeret på bagsiden af kortet og vil blive tilsluttet næsten sidst, så ignorér den nu. Jeg viser også JST Battery Breakout med en stiplet linje. Som identificeret i det foregående trin, skal du ikke tilslutte det, men lad venligst de 4 huller øverst på brættet være åbne (dvs. ikke lodde til dem).

Jeg antager på dette tidspunkt, at du ved, hvordan du fjerner isolering fra en tråd, tin enderne med loddetin og loddetæt til et bræt. Hvis ikke, kan du gå til en af instruktionerne om lodning.

Til dette trin loddes tråde som vist i gult. Slutpunkterne er hullerne, som du skal lodde dem til. Du bør også lodde 10K ohm modstanden til brættet som vist. De forbindelser, der laves, er:

1. En forbindelse fra batteriets positive terminal til COMmon (center) terminalen på glidekontakten. Den ene side af skydekontakten kommer i kontakt med BAT -indgangen til Trinket. Trinkets indbyggede regulator genererer 3,3V fra BAT-indgangsspændingen.

2. En forbindelse fra batteriets negative (jord) terminal til bunden af Trinket.

3. En forbindelse fra batteriets negative (jord) terminal til 2N3904s emitter

4. En forbindelse fra Trinkets 3,3 volt (3V) pin til VIN på VL53L0X. VL53L0X vil yderligere regulere dette til 2,8 volt til eget brug. Det bringer også denne spænding ud til en pin, men vi har ikke brug for det, så det forbliver uforbundet.

Trin 9: Flere ledninger

Flere ledninger
Flere ledninger

Så nu tilføjer vi den næste gruppe ledninger som vist ovenfor. Her er en liste over hver forbindelse:

1. En forbindelse fra Trinkets pin mærket som en 2 til VL53L0X SCL pin. Dette er I2C -klokkesignalet. I2C seriel protokol er det, der bruges af Trinket til at kommunikere med VL53L0X.

2. En forbindelse fra Trinkets pin mærket som 0 (nul) til VL53L0X SDA -pin. Dette er I2C datasignal.

3. En forbindelse fra VL53L0X GND -stiften på tværs af hullet på protoboardet til emitteren på 2N3904. Dette giver jord til VL53L0X.

4. En forbindelse fra Trinkets pin mærket som en 4 til 10K modstanden. Dette er drevet til vibrationsmotoren. Denne ledning skal absolut loddes på bagsiden af brættet, hvis du vælger mit tilslutningspunkt.

Husk, at enhver lodret gruppe på 5 ben er fælles for hinanden, så du kan forbinde hvor som helst i denne gruppe, der er praktisk. Du vil bemærke på billederne af mit bord, at jeg har ændret et par af mine forbindelsespunkter. Så længe de er den korrekte forbindelse, er den pad, du vælger, fin.

Trin 10: Vibrationsmotor

Vibrationsmotor
Vibrationsmotor

Vibrationsmotoren leveres med et klistermærke på bagsiden. Du trækker dette af for at afsløre et klæbrigt materiale, der gør det muligt for motoren at sidde fast på bagsiden af brættet (men se kommentaren herunder, før du klistrer det). Jeg placerede den til venstre (ser på bagsiden af brættet) på JST Battery Breakout -kortet, som vi ikke har vedhæftet endnu. Så lad lidt plads til JST Battery Breakout -kortet. Jeg ville også sikre mig, at motorens metalhus ikke kortede stifter på tværs af protoboardets hul. Så jeg skar et lille stykke dobbeltsidet tape og stak det på bagsiden af vibrationsmotorens klæbrige side. Så skubbede jeg det på bagsiden af brættet. Det hjælper med at holde metalhuset højt og væk fra stifter. Men vær alligevel forsigtig med at placere den på en måde, der IKKE kortgør stifter.

Lod den røde ledning af vibrationsmotoren til 3V -stiften på pyntegenstanden. Vibrationsmotorens sorte ledning er loddet til samleren på 2N3904. Når softwaren pulserer 2N3904 (giver en logik 1 som 3,3V) tænder transistoren for at forbinde vibrationsmotorens sorte ledning til jord (eller tæt på den). Dette får motoren til at vibrere.

Jeg kunne have tilføjet noget kapacitans ved vibrationsmotorens røde ledningstilslutningspunkt. Men der er kapacitans på Trinkets 3.3V -linje, så jeg er sikker på, at det er fint, men hvis du vil tilføje en anden kapacitans, kan du … så længe du kan presse den ind. For den sags skyld kan den røde ledning blive tilsluttet direkte til LiPo -batteriets positive side. Jeg valgte 3.3V -siden for at holde spændingen konstant. Indtil videre ser det ud til at fungere fint.

Trin 11: Sidst men ikke mindst …

Sidst men ikke mindst…
Sidst men ikke mindst…
Sidst men ikke mindst…
Sidst men ikke mindst…

Sidst forbinder vi JST Battery breakout board til bagsiden af protoboardet. Jeg lodde stifter på brættet og placerede JST Battery breakout board med oversiden mod protoboardet som vist ovenfor. Sørg for at have loddet ledningerne til positivt batteri og jordet til de rigtige ben, når du placerer denne del. Hvis du tager fejl, vil du vende polariteten til delene og sandsynligvis ødelægge dem alle. Så venligst, tjek og tjek igen før lodning og tilslutning af batteriet.

Trin 12: Software

Software
Software

For at installere og/eller ændre softwaren skal du bruge Arduino IDE og bestyrelsesfilerne til Trinket M0 samt bibliotekerne til VL53L0X. Alt det er her, her og her.

Følg instruktionerne for brug af Adafruit M0 på deres læringssted her.

Når softwaren er indlæst, skal kortet starte og køre på USB seriel forbindelse. Flyt siden af brættet med VL53L0X tæt på en væg eller din hånd, og du skal føle motoren vibrere. Vibrationen skal blive lavere i amplitude jo længere væk fra enheden et objekt er.

En adfærd, der ses på enheden, er noget forklaret i kommentarerne i kildekoden. Men den vedhæftede graf bør gøre dette punkt godt. Enheden bør først begynde at vibrere cirka 863 mm fra et objekt. Det når sit maksimale vibrationsniveau 50 mm fra et objekt. Hvis du bevæger dig tættere på et objekt end 50 mm, producerer enheden ikke mere vibrationer, end den gør ved 50 mm.

Trin 13: Kapsling

Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet

Jeg har designet et kabinet og 3D -printet det i ABS -plast. Du kan udskrive det i PLA eller ABS eller hvilket materiale du ønsker. Jeg bruger ABS, fordi jeg kan acetone svejse stykker på brættet, hvis det er nødvendigt. Brættet, jeg har designet, er enkelt og har et hul til USB -porten på Trinket og et hul til afbryderen. Jeg fik de to tavler til at snappe sammen med små arme på kassens sider. Jeg kan ikke lide det så meget, så jeg vil sandsynligvis ændre det. Selvfølgelig kan du foretage de ændringer, du gerne vil se.

Lige nu for denne version skal boksen åbnes for at afbryde LiPo -batteriet for at genoplade det. Hvis jeg laver et printkort til dette projekt, tilføjer jeg et andet stik for at gøre batteriet tilgængeligt uden at åbne boksen. Det kan være muligt at gøre det på dette protoboard -design og lave et hul til stikket til opladning. Hvis du vil prøve dette, bedes du dele dine resultater.

Det lykkedes mig at designe en kasse, jeg ikke helt hadede. Vi bruger denne til at teste systemet. Jeg har vedhæftet toppen og bunden af boksen som STL -filer samt beslaget/guiden, jeg tilføjede bunden. Jeg tilføjede et par guider ved hjælp af acetone til kemisk at svejse delene sammen. Hvis du gør dette, skal du være forsigtig. Du kan se samlingen ovenfor.

Trin 14: Hvad nu?

Hvad nu?
Hvad nu?

Tjek mig … Jeg er gammel og har muligvis glemt noget eller rodet ud. Jeg læser og tjekker dette igen, men jeg kan stadig savne ting. Fortæl mig gerne, hvad jeg har gjort/gjort forkert.

Og nu hvor du har konstrueret det perifere radar -kort og indlæst det, og LiPo -batteriet er i en flot 3D -trykt sag (når jeg er færdig med det, eller hvis du har gjort dit eget), hvad gør du så? Jeg synes, du skal få erfaring med, hvordan den fungerer og foretage ændringer af softwaren. Licensaftalen i softwaren siger, at du kan bruge den, men hvis du foretager ændringer, skal du dele dem. Jeg siger ikke, at softwaren til dette projekt er kompliceret eller fantastisk på en eller anden måde. Det opfylder sine mål, men der er plads til forbedringer. Hjælp med at gøre denne enhed bedre, og del den med os alle. Husk, at dette projekt handler om at hjælpe mennesker. Så hjælp!

Anbefalede: