Cuprins:

Semnalizare manuală pentru bicicletă: 10 pași (cu imagini)
Semnalizare manuală pentru bicicletă: 10 pași (cu imagini)

Video: Semnalizare manuală pentru bicicletă: 10 pași (cu imagini)

Video: Semnalizare manuală pentru bicicletă: 10 pași (cu imagini)
Video: Cum scrii când începi un caiet nou 2024, Noiembrie
Anonim
Lampă de semnalizare manuală pentru bicicletă
Lampă de semnalizare manuală pentru bicicletă

Scopul acestui proiect este de a crea o lumină care să se potrivească pe o mănușă de bicicletă și să indice în direcția virajului dorit, pentru a crește vizibilitatea pe timp de noapte. Ar trebui să fie ușor, ușor de utilizat și integrat cu mișcările existente pentru semnalizare (ajustarea minimă a metodei semnalului (nu trebuie să apăsați un buton, acesta merge doar când semnalizați)). Acest lucru ar face un cadou minunat de sărbătoare.

Notă: Acest lucru necesită cunoștințe anterioare despre cum să lipiți și o idee despre cum să programați AVR-uri este un mare plus. Având în vedere acest lucru, distrați-vă, aveți răbdare și postați imagini cu produsul dvs. mai jos! Iată un videoclip: Și iată o imagine a mea:

Pasul 1: Piese

Părți
Părți

x1 ATmega 32L 8PU (www.digikey.com) x1 mufă DIP 40 pini (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Senzori flexibili (www.sparkfun.com) x (Multe) Rezistoare 180 ohm și 10k ohmx2 Placă PC (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) și șuruburi pentru a se potrivi (Magazin local de hardware) x1 Accelerometru pe placa de rupere (www.sparkfun.com) x2 Headers - Male (www.sparkfun.com), Female (www.sparkfun.com) și angle drept (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 prize cu 8 pini (Mi-am luat-o pe a mea la Radio Shack) x1 baterie 9v x 1 picior velcrox stick1 Bicicletă cu degetele complete mănușă 1 bobină filă poliester x1 Programator (am acesta) x1 Dispozitiv de sârmă și clipx1 Multimetru Unele dintre piese:

Pasul 2: Pregătiți panourile

Pregătiți panourile
Pregătiți panourile
Pregătiți panourile
Pregătiți panourile
Pregătiți panourile
Pregătiți panourile
Pregătiți panourile
Pregătiți panourile

Mai întâi, adăugați diferențele. Va trebui să înșurubați două pentru a obține înălțimea corectă. Asigurați-vă că distanțele descresc din lateral cu tampoanele SQUARE. În acest fel, puteți lega plăcuțele cu lipire pe partea inferioară și podul cu plăcuța comună în partea de sus pentru a vă conecta la sol. Apoi adăugați LED-ul și lipiți-l. Ar trebui să fie cât mai departe de marginea plăcii cu cele două stanoff-uri, pe cât se poate cu YS orientat spre partea opusă. Pinul din stânga jos este pinul 1. (Este, de asemenea, marcat pe imagine.) Apoi adăugați cele două prize cu 8 pini una peste alta, astfel încât să formați o priză cu 16 pini. Asigurați-vă că aveți un spațiu la stânga, apoi lipiți-l. Apoi împărțiți antetele masculin și feminin în secțiuni cu 10 și 11 pini. Veți avea nevoie de două ori mai multe anteturi pentru femei. Lipiți-i pe cei din așa cum se vede în fotografie. În ceea ce privește antetele masculine, trebuie să schimbați știftul, astfel încât să fie o cantitate egală pe fiecare parte a plasticului. Am folosit niște clești și a funcționat destul de bine. Acum, dacă luați antetele masculine și le așezați între cele 2 anteturi feminine, veți vedea că acum au dimensiunea potrivită pentru a conecta împreună placa superioară și inferioară.

Pasul 3: Adăugați rezistoarele

Adăugați rezistoarele
Adăugați rezistoarele
Adăugați rezistoarele
Adăugați rezistoarele
Adăugați rezistoarele
Adăugați rezistoarele

Aceste rezistențe merg între tabloul LED și 74138 (masă) pentru a proteja tabloul. Îndoiți unul dintre cablurile de la rezistență deasupra, astfel încât cele două cabluri să fie paralele. Montați-le pe pinii 7, 9, 10, 11, 12, 13, 14 și 15 și lipiți. Am constatat că funcționează cel mai bine dacă alternați direcția rezistorului așa cum puteți vedea în a doua și a treia imagine.

Pasul 4: conectați partea de sus

Sârmă de sus
Sârmă de sus
Sârmă de sus
Sârmă de sus
Sârmă de sus
Sârmă de sus
Sârmă de sus
Sârmă de sus

Acesta este de departe cel mai lung pas al proiectului, așa că sper că vă place lipirea! Doar urmați schema de mai jos și asigurați-vă că testați continuitatea cu multimetrul dvs. În cazul în care doriți să știți cum am venit cu aspectul schematic al fișei tehnice pentru matrice și 74138.

Pasul 5: Populați partea de jos

Populați partea de jos
Populați partea de jos
Populați partea de jos
Populați partea de jos
Populați partea de jos
Populați partea de jos
Populați partea de jos
Populați partea de jos

Acum este timpul să plasăm componentele noastre de bază pe placa de jos. Mai întâi vom face soclul DIP cu 40 de pini care se apropie cât mai aproape de stânga sus, lăsând un rând de spațiu pe partea stângă. (A se vedea imaginea nr. 1.) Lipiți-l și apoi plasați antetele. Cel mai simplu mod de a face acest lucru este să le conectați pe cele din partea de sus la cele care vor merge în partea de jos folosind antetele masculine modificate. Dacă ați făcut totul bine, ar trebui să ajungeți cu cei trei pini superiori din antetul stâng lângă pinii din dreapta jos de pe soclu. Este în regulă. Folosim doar știftul de jos din dreapta și, după cum puteți vedea, avem o imagine clară asupra acestuia din altă direcție. Acum adăugați regulatorul de tensiune așa cum se arată în imagine. Am asigurat-o pe a mea prin orificiul radiatorului metalic cu un șurub și o piuliță. Radiatorul este un alt mod de a lega la masă cipul, iar fixarea acestuia la placă asigură un contact solid cu conexiunea comună. Aceasta este conectată atât la partea de jos, cât și la partea superioară, deoarece cele două sunt conectate cu distanțe metalice. Cu toate acestea, dacă nu utilizați conexiunea obișnuită pentru împământare, NU strângeți radiatorul pe placă, deoarece radiatorul servește ca masă și probabil că veți scurtcircuita ceva. Următorul fir în clema bateriei. Roșu merge la pinul din stânga (Cu radiatorul în sus și pinii în jos) negru la mijloc, iar pinul drept produce + 5v. Acum puteți conecta alimentarea în partea de sus (a se vedea imaginea # 2). Acum, pentru conectorul programator. Am un adaptor pe care l-am creat pentru programatorul meu, dar probabil că veți dori să încorporați un antet cu 6 pini (3x2) în proiectarea dvs. Cu toate acestea, dacă aveți un adaptor ca mine, iată ce am făcut. Am luat un antet cu unghi drept și un antet feminin și le-am lipit împreună (Imaginea # 3). Apoi l-am atașat la placa cu primul pin conectat la pinul 6. Acum trebuie să alimentați și să legați la masă cipul, precum și să conectați un rezistor pentru a trage resetul la mare. Am rulat un rezistor de 10k de la pinul 9 la pinul 10 și apoi am conectat pinul 10 la + 5v. Următorul pin (11) merge la conexiunea comună (masă). În cele din urmă, uitați-vă la imaginea # 4 pentru a finaliza acest pas (este destul de explicativ).

Pasul 6: conectați partea inferioară

Sârmă de jos
Sârmă de jos
Sârmă de jos
Sârmă de jos
Sârmă de jos
Sârmă de jos

Îți amintești acel pas cu adevărat distractiv în care trebuie să rulezi peste 30 de fire pentru a funcționa o matrice de LED-uri? Acum trebuie să o faci din nou! În partea de jos!. Acesta este puțin mai rapid, dar nu prea mult. Încă o dată, priviți schema și verificați toate conexiunile cu multimetrul. Nu vă faceți griji, aceasta este ultima piesă mare de lipit a proiectului și aproape că ați terminat.

Pasul 7: Senzori flexibili și accelerometru

Senzori flex și accelerometru
Senzori flex și accelerometru
Senzori flex și accelerometru
Senzori flex și accelerometru
Senzori flex și accelerometru
Senzori flex și accelerometru

Vom aborda mai întâi senzorii flexibili, dar vă aflați în zona de acțiune în ceea ce privește hardware-ul. Cred că imaginile de mai jos explică destul de mult ce trebuie făcut. Conectați un pin la + 5v celălalt la al treilea sau al patrulea pin din partea superioară din partea dreaptă a AVR (Microcontrolerul din centrul acestui proiect). Când am pus acest lucru laolaltă, m-am gândit că este tot ce trebuie să fac, dar se pare că, pentru ca AVR să citească senzorii flex, trebuie să puneți un rezistor de la pinul senzorului care merge la AVR la sol (Vedeți imaginile # 10 și 11). Am folosit un 10k. Aceasta împarte tensiunea care merge la AVR, care practic dublează sensibilitatea senzorului. Acum pentru accelerometru. Deoarece accelerometrul este cu doar un păr mai înalt decât spațiul dintre cele două plăci și pentru că am putea dori să-l înlocuim într-o zi, am decis să folosesc anteturi pentru a-l scoate de pe placă și pentru a-l conecta. Utilizați un antet cu unghi drept pentru a vă conecta la cei 6 pini de pe placa de separare. Acum luați un alt antet cu unghi drept și lipiți un antet feminin pe știfturile scurte, apoi lipiți-l în partea din stânga jos a plăcii. Conectați accelerometrul pentru a vă asigura că se potrivește, deconectați-l și apoi conectați pinii corespunzători la Vcc (+ 5v) și Gnd. Apoi conectați pinul care iese X la pinul 40 și Y la pinul 39. Acum ar trebui să fiți setat să adăugați IC-urile (circuite integrate) și să îl porniți.

26 decembrie 2009: Am constatat că felul în care am montat senzorul flex degetului arătător a cauzat degradarea materialului care conectează senzorul cu pinii. De atunci am cumpărat un senzor de înlocuire și am lipit la cald o bucată de plastic subțire de senzor pentru a împiedica această zonă să fie partea care face cea mai mare parte a îndoirii. Am etichetat locația în fotografia de mai jos.

Pasul 8: Adăugarea IC-urilor și a primului program

Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program
Adăugarea de IC-uri și primul program

Aceasta este probabil cea mai ușoară etapă a întregului proces. Încă o dată imaginea ajută. Asigurați-vă că aveți cipurile în modul corect, așa cum se explică în imaginea # 3. Aș conecta mai întâi alimentarea fără nimic conectat și aș atinge radiatorul de pe regulatorul de tensiune. Dacă este fierbinte, atunci se scurtează ceva și trebuie să vă întoarceți și să vă verificați conexiunile. Procedați în acest fel, adăugând câte un cip la un moment dat, simțind căldură și odată ce totul este la locul său, strângeți piulițele de pe placa inferioară, astfel încât cele două plăci să fie fixate solid împreună. Apoi veți programa AVR-ul. Dacă nu ați făcut acest lucru până acum, o căutare rapidă pe Google produce o mulțime de rezultate. Dacă aș fi în locul tău, aș pune AVR-ul meu pe o placă de programe și aș programa acolo înainte de a-l încerca pe munca ta grea. Am scris un program simplu pentru a transmite informațiile primite de la senzorii flex la matricea LED. Acest lucru ar trebui să vă ofere o idee de bază despre ceea ce funcționează și nu funcționează în circuitul dvs. Iată un videoclip al codului în acțiune …… și iată codul: #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 (); while (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _delay_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _delay_ms (1); PORTB = 0x00; }}

Pasul 9: Atașarea Circut la o mănușă

Atașarea Circut-ului tău la o mănușă
Atașarea Circut-ului tău la o mănușă
Atașarea Circut-ului tău la o mănușă
Atașarea Circut-ului tău la o mănușă
Atașarea Circut-ului tău la o mănușă
Atașarea Circut-ului tău la o mănușă

Cred că există multe modalități de a-ți atașa circuitul la mâna ta și, pentru o vreme, m-am gândit că îl voi lăsa pe seama cititorului, dar apoi am decis că instructivul nu va fi complet fără această închidere. Am mers la magazinul meu local de biciclete și am primit cea mai ieftină mănușă cu degetul întreg pe care am putut-o găsi. Este necesar degetul complet pentru că altfel nu puteți atașa senzorii flexibili foarte bine. Am trecut apoi pe lângă un magazin de țesături și am luat niște fire de poliester și velcro lipit. Mi-am pus mănușa și am pus circuitul pe mână. O parte a poziționării este confortul, dar o altă parte sunt senzorii flexibili. Ar trebui să coboare în mijlocul a două degete. Am cusut bucle în jurul celor trei distanțe pentru a ține placa principală (vezi imaginea nr. 2) și apoi am slăbit buclele la 3/4 din drum în jos cu fiecare deget al senzorului flexibil (# 3 și 4). Asigurați-vă că nu vă coaseți mănușa închisă. Apoi am lipit o bucată de velcro pe partea degetului mare pentru a ține bateria. După ce am testat, am constatat că merită să coaseți și acest lucru, deoarece bățul nu durează prea mult. Apoi am pus o buclă de velcro în jurul 9v (Imaginea 5). Această configurare pare să funcționeze destul de bine. După cum vedeți în imaginile de pe prima și ultima diapozitivă, am adăugat acum mâneci pentru senzorii flex, dar dacă nu aveți timp, buclele ar trebui să funcționeze bine. Când terminați proiectul, vă rugăm să postați fotografii cu produsul dvs. de mai jos. Mi-ar plăcea să văd cu ce ai venit să atașezi circuitul!

Pasul 10: Codul real

Codul real
Codul real

Mulțumesc că ai purtat cu mine până acum. Rețineți că codul meu nu este perfect. Am constatat că este nevoie de puțină învățare pentru ca semnalul să funcționeze corect. Voi continua să încerc să-mi perfecționez sistemul și voi menține această pagină actualizată cu un cod nou odată ce am scris-o. 26 decembrie 2009: NOU COD! Este postat unde era codul vechi. Multe mulțumiri lui Jacob pentru simplificare. Chiar funcționează bine. Iată-l. Vă mulțumim pentru lectură și nu uitați să votați! #include #include #include // Setează sau șterge biți în 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 (nesemnat int delay) {unsigned int x = 0; while (x <întârziere) {x ++; }} void initMatrix () {DDRD = 0xFF; // Control verde DDRB = 0xFF; // Control roșu DDRA = 0xE0; // Control la sol} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (coloană); int i = 0; pentru (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (mască roșie & (1 << i)); _delay_us (150); } matrixGY (0x00); matrixRY (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; while (bit_is_clear (ADCSRA, ADIF)); returnează ADCH; } char adcAvg (char chan, char avgnum) // În medie doar până la 256 de mostre {int i = 0; nesemnat int total = 0; for (i = 0; i <avgnum; i ++) {total + = adcGet (chan); } returnează total / avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Valorile hexagonale de aici ar trebui modificate în funcție de configurarea utilizatorilor pentru a determina sensibilitatea senzorilor flex. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} returnează 0; } Mulțumiri speciale camerelanilor, părinților și prietenilor mei care au ajutat.

Finalist la Concursul de sărbători de casă

Recomandat: