Innehållsförteckning:

Perifer radar för synskadade: 14 steg
Perifer radar för synskadade: 14 steg

Video: Perifer radar för synskadade: 14 steg

Video: Perifer radar för synskadade: 14 steg
Video: SKINWALKER RANCH - Brandon Fugal säsong 4 intervju 2024, November
Anonim
Perifer radar för synskadade
Perifer radar för synskadade

Till följd av en fruktansvärd olycka tappade en av mina vänner nyligen synen i sitt högra öga. Han var arbetslös länge och när han kom tillbaka berättade han för mig att en av de mest oroande sakerna han måste hantera är bristen på att veta vad som är på hans högra sida. Mindre perifer syn innebär att stöta på saker och människor. Detta störde mig. Jag bestämde att vi måste göra något.

Jag ville bygga en enhet som kunde mäta avstånd till föremål på min väns högra sida. Min plan är att använda en haptisk motor för att vibrera enheten omvänt proportionellt mot avståndet till ett föremål. Om föremål var långt borta skulle motorn inte vibrera och när ett föremål var närmare skulle det börja vibrera på en låg nivå. Om objektet var nära skulle det vibrera på en mycket högre nivå (eller vilken nivå du vill). Enheten måste vara tillräckligt liten för att hänga på glasögonen med sensorn pekad åt höger. Min vän skulle sätta enheten på höger sida av glasögonen men naturligtvis för någon annan kan det vara vänster sida.

Jag kom ihåg att jag hade några akustiska avståndssensorer hemma. Men de är lite stora och skrymmande, mindre exakta och skulle troligen vara för tunga för användning på glasögon. Jag började leta efter något annat.

Det jag hittade var ST Electronics VL53L0X Time-of-Flight-sensor. Detta är en infraröd laser och infraröd detektor i ett enda paket. Den avger en puls av laserljus utanför det människosynliga området (940 nm) och registrerar den förflutna tiden det tar att detektera den reflekterade pulsen. Den dividerar denna tid med 2 och multipliceras med ljusets hastighet som ger mycket exakt avstånd i millimeter. Sensorn kan detektera avstånd till 2 meter men som jag har sett är 1 meter mer optimalt.

När det händer har Adafruit en VL53L0X breakout board. Så jag behövde en vibrerande motor, som de också hade, och en mikrokontroller för att köra allt. Jag råkade ha en PJRC Teensy 3.2 till hands. Medan den var större än jag ville hade den förmågan att klockas med långsam hastighet. Jag ville sänka klockhastigheten för att spara ström. Och när det gäller en strömkälla hade jag en Sparkfun -boostregulator i min skräpbox tillsammans med en AAA -batterihållare. Jag hade nästan allt jag behövde.

Steg 1: Första prototypen

Första prototypen
Första prototypen
Första prototypen
Första prototypen

Jag tog delarna jag hade till hands och gjorde en handhållen prototyp av enheten jag tänkt mig. Jag 3D -skrivit ut handtaget och monteringsplattan och lödde all elektronik på ett Adafruit protoboard. Jag kopplade den vibrerande motorn till Teensy via en 2N3904 NPN -transistor. Jag lade till en potentiometer för att ställa in det maximala avstånd enheten skulle svara på.

Jag hade den igång nästa helg (se bilden ovan). Det var inte vackert men det demonstrerade principen. Min vän kunde hålla enheten på höger sida och testa om enheten skulle vara användbar eller för att förfina vad han ville ha för funktioner.

Steg 2: Prototyp nr 2

Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2

Efter den första handhållna prototypen började jag göra en mindre version. Jag ville komma närmare mitt mål att göra något som kunde passa på glasögon. Den Teensy jag använde i den handhållna versionen gjorde att jag kunde sakta ner klockan för att spara ström. Men storleken skulle vara en faktor och så bytte jag till en Adafruit Trinket M0. Medan dess klockfrekvens är 48 MHz, kan den ARM -processor som den är baserad på klockas långsammare. Genom att använda den interna RC -oscillatorn kan den köras med 8, 4 2 och till och med 1 MHz.

Prototyp nr 2 kom ihop ganska snabbt eftersom jag hade allt tillsammans nästa helg. Kretsen var densamma som prototyp #1 förutom ARM M0. Jag 3D -skrivit ut ett litet hölje och lägger guider på baksidan så att det kan glidas på glasögon. Se bilden ovan. Ursprungligen klockas den med en hastighet på 48 MHz.

Steg 3: Prototyp #3

Prototyp #3
Prototyp #3

Så, denna instruerbara börjar verkligen här. Jag bestämde mig för att göra en sista prototyp. Jag bestämmer mig för att klämma in den så liten som jag kunde utan att använda en anpassad PWB (det är dit jag är säker på att vi är på väg). Resten av den här instruktionsboken kommer att handla om att visa dig hur du gör en. Precis som människor som gör 3D -tryckta händer för barn med funktionsnedsättning, är min förhoppning att människor kommer att göra dessa för alla med liknande synförlust i ögat.

Jag höll dellistan densamma som prototyp nr 2 men jag bestämde mig för att ta bort potentiometern. Efter att ha pratat med min vän bestämde vi oss för att göra det maximala avståndet med hjälp av programvara. Eftersom jag har möjlighet att använda en pekssensor med Teensy, kan vi alltid göra maxavståndet till en inställning genom att röra vid. En knapp anger en kort sträcka, eller mer trycker på en längre sträcka, en annan tryckning den längsta sträckan och sedan en gång till, svep tillbaka till början. Men först använder vi ett fast avstånd för att komma igång.

Steg 4: Delar

Delar
Delar

För denna prototyp behövde jag en mindre bräda. Jag gick med ett Sparkfun protoboard (PRT-12702) eftersom det är små dimensioner (ca 1,8 "X 1,3") skulle vara en bra storlek att skjuta för.

Jag behövde också använda något annat än ett AAA -batteri som strömkälla. En LiPo verkade vara rätt val eftersom den skulle ha lagringskapacitet och låg vikt. Jag försökte en myntcell men den hade inte tillräckligt med kraft för att hantera motorn särskilt länge. Jag valde en liten LiPo som har en kapacitet på 150 mAH.

Jag tänkte stanna hos Trinket M0 och naturligtvis VL53L0X breakout board.

Nu när vi är i detalj, här är en lista över delar för denna prototyp:

Adafruit VL53L0X Time of Flight Distance Sensor - PRODUKT ID: 3317 Adafruit - Vibrerande minimotorskiva - PRODUKT ID: 1201 Adafruit - Litiumjonpolymerbatteri - 3,7v 150mAh - PRODUKT ID: 1317 SparkFun - Lödbar brödbräda - Mini - PRT -12702 Sparkfun - JST rätvinklig kontakt - genomgående hål 2 -stift - PRT -09749 10K ohm motstånd - Junkbox (titta på ditt golv) 2N3904 NPN Transistor - Junkbox (eller telefon en vän) Någon anslutningstråd (jag använde 22 gauge strandad)

För att ladda LiPo -batteriet tog jag också upp:

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

Steg 5: Schematisk

Schematisk
Schematisk

Schemat för denna enhet visas ovan. Pekingången kommer att vara för en framtida version men den visas ändå i schemat. 10K -motståndet mellan Trinket M0 och basen på 2N3904 ger också tillräckligt med bas för att slå på motorn utan att slå den för hårt.

Det som följer är en steg-för-steg monteringsbeskrivning.

Steg 6: Protoboardet

Protoboardet
Protoboardet

Många av er som är erfarna vet detta, men detta är för dem som kanske är nya inom lödning av protoboard:

Sparkfun-protoboardet (PRT-12702) som visas ovan har 17 kolumner (grupper) med 5 stift på varje sida av en tredel av en tumgap. Varje vertikal kolumn med 5 stift på vardera sidan av springan är gemensam för varandra. Med detta menar jag att varje anslutning till en pin i gruppen är en anslutning till varannan pin i gruppen. För det här kortet verkar det inte självklart men du kan verifiera detta om du använder en DVM (Digital Volt Meter). Om du tittar på baksidan kan du bara ta reda på spåren som förbinder grupperna.

Steg 7: Komponentplacering

Komponentplacering
Komponentplacering
Komponentplacering
Komponentplacering

Du måste antagligen löda stiftremsor till både Trinket M0 och VL53L0X. Båda levereras med remsor men de måste lödas. Adafruit har instruktioner i sitt inlärningscenter för båda dessa delar. Om du är ny på detta, gå dit (här och här) innan du lödar remsorna på brädorna. Stiftremsorna ger en lägre profil än ett uttag skulle.

Det första du bör tänka på när du lödar något på ett protoboard med begränsat utrymme är komponentplacering. Jag placerade Trinket och VL53L0X i positionerna som visas i figuren ovan. Trinket har stift på båda kanterna av brädet men VL53L0X har 7 stift alla på ena kanten av brädet. Den sida av VL53L0X som inte har stift ska vi använda för att ansluta vissa komponenter … som vi får se.

Jag lödde också skjutreglaget i läge och jag lodde 2N3904. Jag har mörkat hålen där dessa delar är placerade och för 2N3904 har jag noterat vilka stift som är samlaren, basen och sändaren. När du först lödde det bör du lämna det vinkelrätt mot brädet så att du kan löda andra anslutningar. Senare kommer du att kunna böja den (försiktigt) så att det är närmare att vara i linje med brädet.

OBS: JST Battery Breakout löds INTE i brädan vid denna tidpunkt. Det kommer att lödas på baksidan av brädet men bara EFTER att vi lödde våra andra anslutningar. Det blir det sista vi lödder.

Steg 8: Ledningar

Trådar
Trådar

Diagrammet ovan visar protoboardet igen med mörkare hål där komponenterna kommer att placeras. Jag har lagt till etiketterna för dem längs kanterna för att göra det lättare att tråda. Observera att vibrationsmotorn visas men den kommer att placeras på baksidan av kortet och kommer att anslutas nästan sist så för nu, ignorera den bara. Jag visar också JST Battery Breakout med en streckad linje. Som identifierat i föregående steg ska du inte ansluta den, men låt de fyra hålen längst upp på brädet vara öppna (dvs inte löd dem).

Jag antar vid denna tidpunkt att du vet hur man avlägsnar isolering från en tråd, tänder ändarna med lödning och lödning till en bräda. Om inte, gå till en av instruktionerna om lödning.

För detta steg, lödtrådar som visas i gult. Slutpunkterna är hålen som du ska lödda dem till. Du bör också löda 10K ohm -motståndet till brädet som visas. Anslutningarna som görs är:

1. En anslutning från batteriets positiva terminal till COMmon (center) terminalen på skjutreglaget. Ena sidan av skjutreglaget kommer att komma i kontakt med BAT -ingången till prydnadssaken. Trinkets inbyggda regulator genererar 3,3V från BAT-ingångsspänningen.

2. En anslutning från batteriets negativa (jord) terminal till marken på prydnadssatsen.

3. En anslutning från batteriets negativa (jordade) terminal till sändaren på 2N3904

4. En anslutning från Trinkets 3,3 volt (3V) stift till VIN på VL53L0X. VL53L0X kommer ytterligare att reglera detta till 2,8 volt för eget bruk. Det tar också ut denna spänning till en stift men vi behöver den inte så den kommer att lämnas oansluten.

Steg 9: Fler ledningar

Fler ledningar
Fler ledningar

Så nu lägger vi till nästa grupp ledningar som visas ovan. Här är en lista över varje anslutning:

1. En anslutning från Trinkets stift märkt som 2 till VL53L0X SCL -stift. Detta är I2C -klocksignalen. I2C seriellt protokoll är det som används av Trinket för att kommunicera med VL53L0X.

2. En anslutning från Trinkets stift märkt som 0 (noll) till SDL -stiftet VL53L0X. Detta är I2C -datasignalen.

3. En anslutning från VL53L0X GND -stiftet över springan på protoboardet till 2N3904 -sändaren. Detta ger mark till VL53L0X.

4. En anslutning från Trinkets stift märkt som en 4 till 10K -motståndet. Detta är drivenheten för vibrationsmotorn. Denna tråd bör definitivt lödas på baksidan av brädet om du väljer min anslutningspunkt.

Kom ihåg att alla vertikala grupper med 5 stift är gemensamma för varandra så att du kan ansluta var som helst i den här gruppen som är bekvämt. Du kommer att märka på bilderna på min tavla att jag ändrade några av mina anslutningspunkter. Så länge de är rätt anslutning, är vilken pad du väljer bra.

Steg 10: Vibrationsmotor

Vibrationsmotor
Vibrationsmotor

Vibrationsmotorn levereras med en skalbar klistermärke på baksidan. Du drar av detta för att avslöja ett klibbigt material som gör att motorn kan fastna på baksidan av brädet (men se kommentaren nedan innan du klistrar fast den). Jag placerade den till vänster (tittar på baksidan av kortet) på JST Battery Breakout -kortet som vi inte har fäst ännu. Så lämna lite utrymme för JST Battery Breakout -kortet. Jag ville också se till att motorns metallhölje inte kortade några stift över protoboardets gap. Så, jag skar en liten bit dubbelsidig tejp och fastade den på baksidan av vibrationsmotorns klibbiga sida. Sedan tryckte jag det på baksidan av brädet. Det hjälper till att hålla metallhöljet högt och borta från alla stift. Men var ändå försiktig med att placera den på ett sätt som INTE kortar några stift.

Löd den röda tråden på vibrationsmotorn till 3V -stiftet på prydnadssatsen. Vibrationsmotorns svarta tråd löds till kollektorn på 2N3904. När mjukvaran pulserar 2N3904 (ger logik 1 som 3,3V) startar transistorn för att ansluta den svarta ledningen på vibrationsmotorn till jord (eller nära den). Detta gör att motorn vibrerar.

Jag kunde ha lagt till lite kapacitans vid vibrationsmotorns röda trådanslutningspunkt. Men det finns kapacitans på Trinkets 3.3V -ledning så jag är säker på att det är bra, men om du vill lägga till en annan kapacitans kan du … så länge du kan pressa in den. För den delen kan den röda ledningen bli ansluten direkt till LiPo -batteriets positiva sida. Jag valde 3.3V -sidan för att hålla spänningen konstant. Hittills verkar det fungera bra.

Steg 11: Sist men inte minst …

Sist men inte minst…
Sist men inte minst…
Sist men inte minst…
Sist men inte minst…

Senast ansluter vi JST Battery breakout board till baksidan av protoboardet. Jag lödde stiften på brädet och placerade JST -batteriets utbrottskort med ovansidan mot protoboardet som visas ovan. Se till att du lödde trådarna för positivt batteri och jordade till rätt stift när du placerar denna del. Om du har fel kommer du att vända polariteten till delarna och troligen förstöra dem alla. Så snälla, kontrollera och kontrollera innan du lödar och sätter i batteriet.

Steg 12: Programvara

programvara
programvara

För att installera och/eller ändra programvaran behöver du Arduino IDE och kortfilerna för Trinket M0 samt biblioteken för VL53L0X. Allt det här är här, här och här.

Följ instruktionerna för att använda Adafruit M0 på deras inlärningssida här.

När programvaran har laddats bör kortet starta och köras på USB -seriell anslutning. Flytta sidan av brädet med VL53L0X nära en vägg eller din hand och du ska känna hur motorn vibrerar. Vibrationen ska bli lägre i amplitud ju längre bort från enheten ett föremål är.

Ett beteende som ses i enheten förklaras något i kommentarerna i källkoden. Men den bifogade grafen bör göra denna punkt väl. Enheten bör inte börja vibrera förrän cirka 863 mm från ett föremål. Den når sin maximala vibrationsnivå 50 mm från ett föremål. Om du rör dig närmare ett föremål än 50 mm ger enheten inte mer vibrationer än vid 50 mm.

Steg 13: Kapsling

Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad

Jag designade ett hölje och 3D -tryckt det i ABS -plast. Du kan skriva ut den i PLA eller ABS eller vilket material du vill. Jag använder ABS eftersom jag kan acetonsvetsa bitar på brädet om det behövs. Kortet som jag designade är enkelt och har ett hål för USB -porten på prydnadssättet och ett hål för strömbrytaren. Jag fick de två brädorna att snäppa ihop med små armar på lådans sidor. Jag gillar det inte så mycket så jag kommer troligen att ändra det. Naturligtvis kan du göra de ändringar du vill se.

Just nu för denna version måste lådan öppnas för att koppla bort LiPo -batteriet för att ladda det. Om jag skapar ett kretskort för det här projektet lägger jag till en annan kontakt för att göra batteriet tillgängligt utan att öppna lådan. Det kan vara möjligt att göra det på denna protoboard -design och göra ett hål för kontakten för laddning. Om du vill prova detta, dela gärna dina resultat.

Jag lyckades designa en låda som jag inte hatade helt. Vi kommer att använda den här för att testa systemet. Jag har bifogat den övre och nedre delen av rutan som STL -filer samt fästet/guiden jag lade till botten. Jag lade till ett par guider med aceton för att kemiskt svetsa ihop delarna. Om du gör detta, var försiktig. Du kan se sammansättningen ovan.

Steg 14: Vad nu?

Nu då?
Nu då?

Kontrollera mig … Jag är gammal och kan ha glömt något eller trasslat till. Jag läser om och kollar detta, men jag kan fortfarande sakna saker. Berätta gärna vad jag gjort/gör fel.

Och nu när du har konstruerat kringkortsradarkortet och laddat det och LiPo -batteriet är i ett snyggt 3D -tryckt fodral (när jag avslutar det eller, om du gjorde ditt eget), vad gör du sedan? Jag tycker att du borde få erfarenhet av hur det fungerar och göra ändringar i programvaran. Licensavtalet i programvaran anger att du kan använda det, men om du gör några ändringar måste du dela dem. Jag säger inte att programvaran för det här projektet är komplicerad eller fantastisk på något sätt. Det uppnår sina mål men det finns utrymme för förbättringar. Hjälp till att göra den här enheten bättre och dela den med oss alla. Kom ihåg att det här projektet handlar om att hjälpa människor. Så hjälp!

Rekommenderad: