Innholdsfortegnelse:

Sykkellys for hånd: 10 trinn (med bilder)
Sykkellys for hånd: 10 trinn (med bilder)

Video: Sykkellys for hånd: 10 trinn (med bilder)

Video: Sykkellys for hånd: 10 trinn (med bilder)
Video: 50 Coolest Bicycle Gadgets Accessories 2024, November
Anonim
Signallys for sykkelhånd
Signallys for sykkelhånd

Målet med dette prosjektet er å skape et lys som passer på en sykkelhanske og peker i retning av den tiltenkte svingen, for å øke synligheten om natten. Den skal være lett, enkel å bruke og integrert med de eksisterende bevegelsene for signalering (minimal justering av signalmetoden (du trenger ikke å trykke på en knapp, den går bare når du signaliserer)). Dette ville være en flott feriegave.

Merk: Dette krever forkunnskaper om hvordan du lodder, og en ide om hvordan du programmerer AVR er et stort pluss. Med det i tankene, ha det gøy, vær tålmodig og legg ut bilder av produktet ditt nedenfor! Her er en video: Og her er et bilde av meg:

Trinn 1: Deler

Deler
Deler

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pinners DIP-kontakt (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex Sensors (www.sparkfun.com) x (Mange) motstander 180 ohm og 10k ohmx2 PC -kort (www.sparkfun.com) x6 Stand -offs (www.sparkfun.com) og skruer for å passe (lokal maskinvare) x1 akselerometer på breakout -bord (www.sparkfun.com) x2 Headers - Male (www.sparkfun.com), Female (www.sparkfun.com), and Right Angle (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 pin pins (Jeg fikk min på Radio Shack) x1 9v batteri x1 fot fast-på velcrox1 Fullfingret sykkelhanskex1 spole polyester threadx1 programmerer (jeg har denne) x1 Wire stripper og clipx1 Multimeter Noen av delene:

Trinn 2: Forbered brettene

Forbered styrene
Forbered styrene
Forbered styrene
Forbered styrene
Forbered styrene
Forbered styrene
Forbered styrene
Forbered styrene

Legg først til standoffs. Du må skru to sammen for å få riktig høyde. Sørg for at avstandene synker fra siden med SQUARE -putene. På denne måten kan du bygge broputer med loddetinn på bunnen og bro med den vanlige puten på toppen for å koble til bakken. Legg deretter til LED -matrisen og lodd den inn. Det skal være så langt til kanten av brettet med de to stanoffene som det kan være med YS mot den motsatte siden. Pinnen nederst til venstre er pinne 1. (Den er også merket på bildet.) Deretter legger du til de to 8 -pinners stikkontaktene oppå hverandre for å danne en 16 -pinners kontakt. Sørg for å ha ett mellomrom til venstre og lodd det inn. Del deretter hode- og hunnhodene i 10 og 11 pinners seksjoner. Du trenger dobbelt så mange kvinnelige overskrifter. Lodde de som vist på bildet. Når det gjelder de mannlige overskriftene, må du flytte pinnen slik at den er like stor på hver side av plasten. Det er lettest å se på et bilde for å se hva jeg mener, så ta en titt på #6. Jeg brukte noen tang og det fungerte ganske bra. Hvis du tar de mannlige hodene og plasserer dem mellom de to kvinnelige hodene, vil du se at de nå er i riktig størrelse for å koble topp- og bunnbrettet sammen.

Trinn 3: Legg til motstandene

Legg til motstandene
Legg til motstandene
Legg til motstandene
Legg til motstandene
Legg til motstandene
Legg til motstandene

Disse motstandene går mellom LED -matrisen og 74138 (bakken) for å beskytte matrisen. Brett en av lederne fra motstanden over toppen slik at de to ledningene er parallelle. Monter dem på pinne 7, 9, 10, 11, 12, 13, 14 og 15 og loddetinn. Jeg fant ut at det fungerer best hvis du veksler motstandens retning som du kan se på det andre og tredje bildet.

Trinn 4: Koble til toppen

Koble toppen
Koble toppen
Koble toppen
Koble toppen
Koble toppen
Koble toppen
Koble toppen
Koble toppen

Dette er det desidert lengste trinnet i prosjektet, så jeg håper at du liker lodding! Bare følg skjemaet nedenfor og sørg for å teste kontinuitet med multimeteret ditt. Hvis du vil vite hvordan jeg kom til oss med en skjematisk titt på databladet for matrisen og 74138.

Trinn 5: Befolk bunnen

Befolk bunnen
Befolk bunnen
Befolk bunnen
Befolk bunnen
Befolk bunnen
Befolk bunnen
Befolk bunnen
Befolk bunnen

Nå er det på tide å plassere våre grunnleggende komponenter på bunnplaten. Først gjør vi 40 -pinners DIP -kontakten som går så nært øverst til venstre som mulig mens vi forlater en plass med plass på venstre side. (Se bilde nr. 1). Lodde det inn og legg deretter topptekstene. Den enkleste måten å gjøre dette på er å koble de på toppen til de som vil gå nederst ved hjelp av dine modifiserte mannlige overskrifter. Hvis du gjorde alt riktig, skulle du ende opp med de tre øverste tre pinnene i venstre topptekst ved siden av de nederste høyre pinnene på kontakten. Dette er greit. Vi bruker bare den nederste pinnen til høyre, og som du kan se har vi et klart skudd på den fra en annen retning. Legg nå til spenningsregulatoren som vist på bildet. Jeg sikret min gjennom hullet i metallvarmeavlederen med en skrue og mutter. Varmeavlederen er en annen måte å jorde flisen på og bolte den til brettet gir en solid kontakt med den vanlige forbindelsen. Dette er koblet til bunnen så vel som toppen fordi de to er forbundet med metallavstand. Imidlertid, hvis du ikke bruker den vanlige tilkoblingen for jord, IKKE bolt varmeavlederen til brettet, da kjøleribben fungerer som bakken, og du vil sannsynligvis kortslutte noe. Neste ledning i batteriklemmen. Rød går til pinnen til venstre (Med varmeavlederen oppe og pinnene nede) svart til midten og den høyre pinnen produserer +5v. Nå kan du koble strøm til toppen (se bilde nr. 2). Nå for programmerer -tilkoblingen. Jeg har en adapter som jeg har laget for programmereren min, men du vil sannsynligvis ha en 6 -pins (3x2) topptekst i designen din. Men hvis du har en adapter som meg, er det jeg gjorde. Jeg tok en rettvinklet overskrift og en kvinnelig overskrift og loddet dem sammen (Bilde nr. 3). Deretter festet jeg den til brettet med den første pinnen koblet til pinne 6. Nå må du slå på brikken og koble brikken samt koble til en motstand for å trekke reset høyt. Jeg kjørte en 10k motstand fra pin 9 til pin 10 og koblet deretter pin 10 til +5v. Den neste pinnen (11) går til den vanlige forbindelsen (bakken). Se til slutt på bilde nr. 4 for å fullføre dette trinnet (det er ganske selvforklarende).

Trinn 6: Koble bunnen

Tråd bunnen
Tråd bunnen
Tråd bunnen
Tråd bunnen
Tråd bunnen
Tråd bunnen

Husker du det virkelig morsomme trinnet der du måtte kjøre over 30 ledninger for å få en LED -matrise til å fungere? Nå får du gjøre det igjen! På bunnen!. Denne er litt raskere, men ikke mye. Igjen, se på skjematikken og sjekk alle forbindelsene dine med multimeteret ditt. Ikke bekymre deg, dette er det siste store loddestykket i prosjektet, og du er nesten ferdig.

Trinn 7: Flex -sensorer og akselerometer

Flex -sensorer og akselerometer
Flex -sensorer og akselerometer
Flex -sensorer og akselerometer
Flex -sensorer og akselerometer
Flex -sensorer og akselerometer
Flex -sensorer og akselerometer

Vi skal først takle flex -sensorene, men du er på hjemmestrekningen så langt det gjelder maskinvare. Jeg tror at bildene nedenfor ganske mye forklarer hva du skal gjøre. Koble den ene pinnen til +5v den andre til den tredje eller fjerde pinnen fra toppen på høyre side av AVR (mikrokontrolleren i hjertet av dette prosjektet). Da jeg først satte dette sammen tenkte jeg at det var alt jeg trengte å gjøre, men det viser seg at for at AVR -en skal lese flex -sensorene må du sette en motstand fra pinnen på sensoren som går til AVR -en til bakken (se bilder # 10 og 11). Jeg brukte en 10k. Dette deler spenningen til AVR som praktisk talt dobler følsomheten til sensoren. Nå for akselerometeret. Fordi akselerometeret bare er et hår høyere enn mellomrommet mellom de to brettene og fordi vi kanskje vil bytte det en dag, har jeg bestemt meg for å bruke overskrifter for å støte det ut av brettet og koble det til. Bruk en rettvinklet overskrift for å koble til de 6 pinnene på breakout -kortet. Ta nå en annen rettvinklet overskrift og lodd en kvinnelig topptekst til de korte pinnene, og lodd dette ned nederst til venstre på brettet ditt. Koble til akselerometeret for å sikre at det passer, koble fra det og koble deretter de riktige pinnene til Vcc (+5v) og Gnd. Koble deretter pinneutgangen X til pinne 40 og Y til pinne 39. Nå bør du være satt til å legge til IC -ene (integrerte kretser) og slå den på.

26. desember 2009: Jeg har funnet ut at måten jeg monterte pekefingerflekssensoren på, forårsaket at materialet som forbinder sensoren med pinnene ble degradert. Jeg har siden kjøpt en erstatnings sensor og varmlimt et stykke tynn plast til sensoren for å forhindre at dette området er det som gjør det meste av bøyningen. Jeg har merket stedet på bildet nedenfor.

Trinn 8: Legge til IC -er og det første programmet

Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet
Legger til IC -er og det første programmet

Dette er sannsynlighet det enkleste trinnet i hele prosessen. Nok en gang hjelper bildet. Sørg for at du har sjetongene på riktig måte som forklart på bilde #3. Jeg ville først koble til strøm uten noe tilkoblet og berøre kjøleribben på spenningsregulatoren. Hvis det er varmt, er det noe som mangler, og du må gå tilbake og sjekke forbindelsene dine. Fortsett på denne måten, legg til en brikke om gangen, kjenn etter varme og når alt er på plass, stram mutrene på bunnplaten slik at de to brettene festes godt sammen. Deretter programmerer du AVR. Hvis du aldri har gjort dette før, gir et raskt google -søk en mengde resultater. Hvis jeg var deg ville jeg lagt min AVR på et brødbrett og programmert der før du prøver det på hardt arbeid. Jeg skrev et enkelt program for å sende informasjonen som ble mottatt fra flex -sensorene til LED -arrayet. Dette bør gi deg en grunnleggende ide om hva som er og ikke fungerer i kretsen din. Her er en video av koden i aksjon …… og her er koden: #define F_CPU 800000UL #include #include #include void ADCINIT () { ADMUX = 0b01100000; ADCSRA = 0b10000000;} int main () {int a; a = 0; int b; b = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT (); mens (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; mens (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _forsinkelse_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; mens (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _forsinkelse_ms (1); PORTB = 0x00; }}

Trinn 9: Fest kretsen til en hanske

Fest kretsen til en hanske
Fest kretsen til en hanske
Fest kretsen til en hanske
Fest kretsen til en hanske
Fest kretsen til en hanske
Fest kretsen til en hanske

Jeg tror at det er mange måter å feste kretsen til hånden din, og tenkte en stund at jeg ville overlate det til leseren, men bestemte meg for at instruksjonene ikke ville være fullstendige uten denne nedleggelsen. Jeg dro til min lokale sykkelbutikk og fikk den billigste helfingershanske jeg kunne finne. Full finger er nødvendig fordi du ellers ikke kan feste flexsensorene veldig godt. Deretter gikk jeg innom en stoffbutikk og fikk litt polyestertråd og borrelås. Jeg tok på hansken og la kretsen på hånden min. En del av posisjoneringen er komfort, men en annen del er flexsensorene. De skal gå ned midt på to fingre. Jeg sydde løkker rundt de tre avstandene for å holde hovedkortet på (se bilde nr. 2) og løste deretter løkker 3/4 av veien nedover hver fleksibel sensorfinger (#3 og 4). Pass på at du ikke sy hansken lukket. Deretter stakk jeg en borrelås på siden av tommelen for å holde batteriet. Jeg har funnet ut etter å ha testet at det virkelig lønner seg å sy dette på også da pinnen ikke varer for lenge. Deretter legger jeg en borrelåsløkke rundt 9v (bilde 5). Dette oppsettet ser ut til å fungere ganske bra. Som du ser på bildene på det første og siste lysbildet, har jeg nå lagt til ermer for flex -sensorene, men hvis du ikke har tid, bør løkker gjøre det bra. Når du er ferdig med prosjektet, vennligst legg ut bilder av det ferdige produktet ditt under. Jeg vil gjerne se hva du fant på for å feste kretsen!

Trinn 10: Den virkelige koden

Den virkelige koden
Den virkelige koden

Takk for at du bærer med meg så langt. Vær oppmerksom på at koden min ikke er perfekt. Jeg har funnet ut at det tar litt å lære for å få signalet til å fungere akkurat. Jeg vil fortsette å prøve å perfeksjonere systemet mitt og vil holde denne siden oppdatert med ny kode når jeg skriver det. 26. desember 2009: NY KODE! Det er lagt ut hvor den gamle koden var. Tusen takk til Jacob for forenklingen. Det fungerer virkelig bra. Her er det. Takk for at du leser, og ikke glem å stemme! #include #include #include // Setter eller sletter biter i registre #define setBit (sfr, bit) (sfr | = (1 << bit)) #define clearBit (sfr, bit) (sfr & = ~ (1 << bit)) #define flipBit (sfr, bit) (sfr ^= (1 << bit)) #define FALSE 0 #define TRUE 1 #define matrixX (x) (PORTA = (x - 1) << 5) #define matrixGY (y) (PORTD = y) #define matrixRY (y) (PORTB = y) void delay (unsigned int delay) {unsigned int x = 0; mens (x <forsinkelse) {x ++; }} ugyldig initMatrix () {DDRD = 0xFF; // Grønn kontroll DDRB = 0xFF; // Rød kontroll DDRA = 0xE0; // Ground control} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (column); int i = 0; for (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (rødmaske & (1 << i)); _forsinkelse_us (150); } matrixGY (0x00); matriseRY (0x00); } void matrixLeft () {matrixRowDraw (0x10, 0, 1); matrixRowDraw (0x20, 0, 2); matrixRowDraw (0x40, 0, 3); matrixRowDraw (0xFF, 0, 4); matrixRowDraw (0xFF, 0, 5); matrixRowDraw (0x40, 0, 6); matrixRowDraw (0x20, 0, 7); matrixRowDraw (0x10, 0, 8); } void matrixRight () {matrixRowDraw (0x18, 0, 1); matrixRowDraw (0x18, 0, 2); matrixRowDraw (0x18, 0, 3); matrixRowDraw (0x18, 0, 4); matrixRowDraw (0x99, 0, 5); matrixRowDraw (0x5A, 0, 6); matrixRowDraw (0x3C, 0, 7); matrixRowDraw (0x18, 0, 8); } void adcInit () {ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (char chan) {ADMUX = 0x60 | chan; ADCSRA | = 0x40; mens (bit_is_clear (ADCSRA, ADIF)); returnere ADCH; } char adcAvg (char chan, char avgnum) // Bare gjennomsnittlig opptil 256 prøver {int i = 0; usignert int total = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } retur totalt/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Hex -verdiene her bør endres avhengig av brukerens oppsett for å bestemme følsomheten til flex -sensorene. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} returner 0; } Spesiell takk til Chamberlains, mine foreldre og venner som hjalp til.

Finalist i hjemmelaget feriekonkurranse

Anbefalt: