Talaan ng mga Nilalaman:

Banayad na Signal ng Bike ng Kamay: 10 Hakbang (na may Mga Larawan)
Banayad na Signal ng Bike ng Kamay: 10 Hakbang (na may Mga Larawan)

Video: Banayad na Signal ng Bike ng Kamay: 10 Hakbang (na may Mga Larawan)

Video: Banayad na Signal ng Bike ng Kamay: 10 Hakbang (na may Mga Larawan)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Nobyembre
Anonim
Banayad na Signal ng Kamay ng Bisikleta
Banayad na Signal ng Kamay ng Bisikleta

Ang layunin ng proyektong ito ay upang lumikha ng isang ilaw na umaangkop sa isang guwantes ng bisikleta at tumuturo sa direksyon ng inilaan na pagliko, upang madagdagan ang kakayahang makita sa gabi. Dapat itong magaan, madaling gamitin, at isinama sa mga umiiral na paggalaw para sa pagbibigay ng senyas (minimal na pag-aayos ng paraan ng signal (hindi mo kailangang pindutin ang isang pindutan, napupunta lamang ito kapag nag-signal ka)). Gumagawa ito ng isang mahusay na regalo sa holiday.

Tandaan: Nangangailangan ito ng dating kaalaman tungkol sa kung paano maghinang at isang ideya kung paano i-program ang AVR's ay isang malaking karagdagan. Sa pag-iisip na iyon, magsaya, maging matiyaga at mag-post ng mga larawan ng iyong produkto sa ibaba! Narito ang isang video: At narito ang isang larawan ko:

Hakbang 1: Mga Bahagi

Mga Bahagi
Mga Bahagi

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pin DIP socket (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex Sensors (www.sparkfun.com) x (Many) Resistors 180 ohm at 10k ohmx2 PC Board (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) at mga tornilyo upang magkasya (Local Hardware Store) x1 Accelerometer sa breakout board (www.sparkfun.com) x2 Headers - Lalaki (www.sparkfun.com), Babae (www.sparkfun.com), at Right Angle (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 pin sockets (Nakuha ko ang minahan sa Radio Shack) x1 9v bateryax1 paa stick-on velcrox1 Full-fingered bike glovex1 spool polyester threadx1 Programmer (Mayroon akong isang ito) x1 Wire stripper at clipx1 MultimeterIlan sa mga bahagi:

Hakbang 2: Ihanda ang mga Lupon

Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon
Ihanda ang mga Lupon

Una, idagdag ang mga standoff. Kailangan mong i-tornilyo ang dalawa upang makuha ang tamang taas. Tiyaking bumababa ang mga standoff mula sa gilid gamit ang mga SQUARE pad. Sa ganitong paraan maaari mong tulay ang mga pad na may panghinang sa ilalim at tulay na may karaniwang pad sa itaas upang kumonekta sa lupa. Susunod na idagdag ang LED array at solder ito sa. Dapat itong malayo sa gilid ng board na may dalawang stanoffs dahil maaari itong nakaharap sa YS sa kabaligtaran. Ang pin sa kaliwang ibabang bahagi ay pin 1. (May marka din ito sa larawan.) Susunod na idagdag ang dalawang 8 pin na socket na isa sa tuktok ng isa pa upang mabuo ang isang 16 pin na socket. Siguraduhing magkaroon ng isang puwang sa kaliwa at pagkatapos ay solder iyon sa Susunod na hatiin ang mga header ng lalaki at babae sa 10 at 11 na seksyon ng pin. Kakailanganin mo ng dalawang beses nang maraming mga header ng babae. Maghinang ng mga sa tulad ng nakikita sa larawan. Tulad ng para sa mga header ng lalaki kailangan mong ilipat ang pin upang ang kanilang ay pantay na halaga sa bawat panig ng plastik Pinakamadali na tumingin sa isang larawan upang makita kung ano ang ibig kong sabihin kaya tingnan ang # 6. Gumamit ako ng ilang mga plier at gumana ito ng maayos. Ngayon kung kukunin mo ang mga header ng lalaki at ilagay ang mga ito sa pagitan ng 2 mga babaeng header makikita mo na ang mga ito ngayon ang tamang sukat upang ikonekta ang tuktok at ilalim na board nang magkasama.

Hakbang 3: Idagdag ang Mga Resistor

Idagdag ang mga Resistors
Idagdag ang mga Resistors
Idagdag ang mga Resistors
Idagdag ang mga Resistors
Idagdag ang mga Resistors
Idagdag ang mga Resistors

Ang mga resistor na ito ay pumupunta sa pagitan ng LED array at ng 74138 (Ground) upang maprotektahan ang array. Tiklupin ang isa sa mga lead mula sa risistor sa itaas upang ang dalawang lead ay magkapareho. Iakma ang mga ito sa mga pin 7, 9, 10, 11, 12, 13, 14, at 15 at panghinang. Nalaman kong ito ay pinakamahusay na gumagana kung papalitan mo ang direksyon ng risistor tulad ng nakikita mo sa pangalawa at pangatlong larawan.

Hakbang 4: Wire the Top

Wire the Top
Wire the Top
Wire the Top
Wire the Top
Wire the Top
Wire the Top
Wire the Top
Wire the Top

Ito ang pinakamalayo na hakbang ng proyekto kaya't sigurado akong nais mo ang paghihinang! Sundin lamang ang eskematiko sa ibaba at tiyaking subukan ang pagpapatuloy sa iyo ng multimeter. Kung sakaling nais mong malaman kung paano ako dumating sa amin sa eskematiko na pagtingin sa datasheet para sa array at sa 74138.

Hakbang 5: Populate the Bottom

Populate the Bottom
Populate the Bottom
Populate the Bottom
Populate the Bottom
Populate the Bottom
Populate the Bottom
Populate the Bottom
Populate the Bottom

Ngayon ay oras na upang ilagay ang aming pangunahing mga sangkap sa ilalim ng board. Una naming gagawin ang 40 pin DIP socket na napupunta malapit sa kaliwang tuktok hangga't maaari habang iniiwan ang isang hilera ng puwang sa kaliwang bahagi. (Tingnan ang larawan # 1.) I-solder iyon at pagkatapos ay ilagay ang mga header. Ang pinakamadaling paraan upang gawin ito ay upang ikonekta ang nasa itaas sa mga pupunta sa ibaba gamit ang iyong binagong mga header ng lalaki. Kung ginawa mo ang lahat ng tama dapat kang magtapos sa tatlong nangungunang tatlong mga pin sa kaliwang header sa tabi ng mga kanang kanang pin sa socket. OK lang ito Gumagamit lamang kami ng bottommost pin sa kanan at tulad ng nakikita mong mayroon kaming isang malinaw na pagbaril dito mula sa ibang direksyon. Idagdag ngayon ang regulator ng boltahe tulad ng ipinakita sa larawan. Siniguro ko ang minahan sa butas ng metal heat sink gamit ang isang turnilyo at nut. Ang heat sink ay isa pang paraan upang ibagsak ang maliit na tilad at i-bolting ito sa board ay nagbibigay ng isang solidong contact sa karaniwang koneksyon. Ito ay konektado sa ilalim pati na rin sa tuktok dahil ang dalawa ay konektado sa mga metal standoffs. Gayunpaman, kung hindi ka gumagamit ng karaniwang koneksyon para sa ground AYAW i-bolt ang heat sink sa board habang ang heat sink ay nagsisilbing ground at marahil ay maiikli mo ang isang bagay. Susunod na kawad sa clip ng baterya. Mapupunta ang pula sa pin sa kaliwa (Sa paglubog ng init at pagbaba ng mga pin) itim sa gitna at ang kanang pin ay gumagawa ng + 5v. Ngayon ay maaari mo nang i-wire ang lakas sa itaas (tingnan ang larawan # 2). Ngayon para sa programmer connecter. Mayroon akong isang adapter na ginawa ko para sa aking programmer ngunit malamang na gugustuhin mong isama ang isang 6 pin (3x2) na header sa iyong disenyo. Gayunpaman kung mayroon kang isang adapter tulad ng ginagawa ko, narito ang ginawa ko. Kumuha ako ng isang tamang anggulo ng header at isang babaeng header at pinaghinang ang mga ito nang magkasama (Larawan # 3). Pagkatapos ay ikinabit ko ito sa board na may unang pin na konektado sa pin 6. Ngayon ay kailangan mong i-power at i-ground ang chip pati na rin ang mga kable sa isang resistor upang hilahin ang mataas na pag-reset. Nagpatakbo ako ng isang 10k risistor mula sa pin 9 hanggang pin 10 at pagkatapos ay konektado ang pin 10 hanggang + 5v. Ang susunod na pin (11) ay papunta sa karaniwang koneksyon (Ground). Panghuli tingnan ang larawan # 4 upang tapusin ang hakbang na ito (Ito ay medyo nagpapaliwanag sa sarili).

Hakbang 6: Wire the Bottom

Wire the Bottom
Wire the Bottom
Wire the Bottom
Wire the Bottom
Wire the Bottom
Wire the Bottom

Tandaan na talagang nakakatuwang hakbang kung saan kailangan mong magpatakbo ng higit sa 30 mga wire upang makakuha ng gumagana ang isang LED array? Ngayon magagawa mong gawin itong muli! Sa ilalim!. Ang isang ito ay medyo mas mabilis ngunit hindi gaanong. Muli, tingnan ang eskematiko at suriin ang lahat ng iyong mga koneksyon sa iyong multimeter. Huwag magalala, ito ang huling malaking piraso ng paghihinang ng proyekto at halos tapos ka na.

Hakbang 7: Mga Flex Sensor at ang Accelerometer

Mga Flex Sensor at ang Accelerometer
Mga Flex Sensor at ang Accelerometer
Mga Flex Sensor at ang Accelerometer
Mga Flex Sensor at ang Accelerometer
Mga Flex Sensor at ang Accelerometer
Mga Flex Sensor at ang Accelerometer

Haharapin muna namin ang mga flex sensor ngunit ikaw ay nasa bahay na umaabot hanggang sa mapunta ang hardware. Sa palagay ko ang mga larawan sa ibaba ay lubos na nagpapaliwanag kung ano ang gagawin. Ikonekta ang isang pin sa + 5v sa isa pa sa pangatlo o ikaapat na pin mula sa itaas sa kanang bahagi ng AVR (Ang microcontroler sa gitna ng proyektong ito). Nang una kong pinagsama ito naisip ko na iyon lang ang kailangan kong gawin ngunit lumalabas na basahin ng AVR ang mga flex sensor na kailangan mong maglagay ng risistor mula sa pin sa sensor na pupunta sa AVR sa lupa (Tingnan ang mga larawan # 10 at 11). Gumamit ako ng 10k. Hinahati nito ang boltahe na papunta sa AVR na praktikal na doble ang pagiging sensitibo ng sensor. Ngayon para sa accelerometer. Sapagkat ang accelerometer ay isang buhok lamang na mas mataas kaysa sa puwang sa pagitan ng dalawang board at dahil baka gusto naming palitan ito ng ilang araw napagpasyahan kong gumamit ng mga header upang maibulwak ito mula sa board at ikonekta ito. Gumamit ng isang tamang anggulo header upang kumonekta sa 6 na mga pin sa breakout board. Kumuha ngayon ng isa pang kanang anggulo ng header at maghinang ng isang babaeng header sa mga maikling pin pagkatapos ihihinang ito sa kaliwang ibabang bahagi ng iyong board. I-plug ang accelerometer upang matiyak na umaangkop ito, i-unplug ito at pagkatapos ay ikonekta ang tamang mga pin sa Vcc (+ 5v) at Gnd. Pagkatapos ay ikonekta ang pin na naglalabas ng X sa pin 40 at Y upang i-pin ang 39. Ngayon dapat mong itakda upang idagdag ang IC (Integrated circuit) at paganahin ito.

Disyembre 26, 2009: Nalaman ko na ang paraan ng pag-mount ko sa index ng daliri ng daliri ng sensor ay sanhi ng materyal na kumokonekta sa sensor gamit ang mga pin upang mapahamak. Bumili ako mula noon ng isang kapalit na sensor at mainit na nakadikit ng isang piraso ng manipis na plastik sa sensor upang maiwasan ang lugar na ito na maging bahagi na ginagawa ang karamihan sa baluktot. Na-tag ko ang lokasyon sa larawan sa ibaba.

Hakbang 8: Pagdaragdag ng IC at ang Unang Programa

Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa
Pagdaragdag ng IC at ang Unang Programa

Ito ang posibilidad na pinakamadaling hakbang ng buong proseso. Muli ang larawan ay makakatulong. Tiyaking mayroon kang mga chips sa tamang paraan tulad ng ipinaliwanag sa larawan # 3. Gusto ko munang kumonekta ang lakas na walang konektado at hawakan ang heat sink sa voltage regulator. Kung ito ay mainit pagkatapos ng isang bagay ay maikli at kailangan mong bumalik at suriin ang iyong mga koneksyon. Magpatuloy sa ganitong paraan, pagdaragdag ng isang maliit na tilad, pakiramdam para sa init at sa sandaling ang lahat ay nasa lugar na nito higpitan ang mga mani sa ilalim ng pisara upang ang dalawang pisara ay ligtas na nakakabit. Susunod ipaprogram mo ang AVR. Kung hindi mo pa nagagawa ito dati, ang isang mabilis na paghahanap sa google ay magbubunga ng maraming resulta. Kung ako ay ikaw ay inilalagay ko ang aking AVR sa isang breadboard at programa doon bago mo subukan ito sa iyong piraso ng pagsusumikap. Sumulat ako ng isang simpleng programa upang mai-output ang impormasyong natanggap mula sa mga flex sensor sa LED array. Ito ay dapat magbigay sa iyo ng isang pangunahing ideya ng kung ano ang at hindi gumagana sa iyong circuit. Narito ang isang video ng code na kumikilos …… at narito ang code: #define F_CPU 800000UL # isama ang # isama ang # isama ang walang bisa na ADCINIT () { ADMUX = 0b01100000; ADCSRA = 0b10000000;} int main () {int a; a = 0; int b; b = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT (); habang (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; habang (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _delay_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; habang (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _delay_ms (1); PORTB = 0x00; }}

Hakbang 9: I-attach ang iyong Circut sa isang Glove

Paglakip ng iyong Circut sa isang Guwantes
Paglakip ng iyong Circut sa isang Guwantes
Ang paglakip ng iyong Circut sa isang guwantes
Ang paglakip ng iyong Circut sa isang guwantes
Ang paglakip ng iyong Circut sa isang guwantes
Ang paglakip ng iyong Circut sa isang guwantes

Sa palagay ko maraming mga paraan upang maikabit sa iyo ang iyong circuit at sa ilang sandali naisip na iiwan ko ito sa mambabasa ngunit pagkatapos ay nagpasya na ang magturo ay hindi kumpleto nang wala ang pagsasara na ito. Nagpunta ako sa aking lokal na tindahan ng bisikleta at Nakuha ang pinakamurang buong daliri na guwantes na maaari kong makita. Kailangan ang buong daliri sapagkat kung hindi man ay hindi mo maikakabit nang maayos ang mga flex sensor. Pagkatapos ay dumaan ako sa isang tindahan ng tela at kumuha ng ilang polyester thread at stick-on velcro. Isinuot ko ang gwantes at inilagay ang circuit sa aking kamay. Bahagi ng pagpoposisyon ay ginhawa ngunit ang isa pang bahagi ay ang mga flex sensor. Dapat silang bumaba sa gitna ng dalawang daliri. Tumahi ako ng mga loop sa paligid ng tatlong mga standoff upang hawakan ang pangunahing board (Tingnan ang larawan # 2) at pagkatapos ay maluwag ang mga loop 3/4 ng paraan pababa sa bawat daliri ng sensor ng pag-flex (# 3 at 4). Tiyaking hindi mo natatahi ang iyong guwantes na sarado. Sumunod ay idinikit ko ang isang piraso ng velcro sa gilid ng aking hinlalaki upang hawakan ang baterya. Natagpuan ko pagkatapos ng pagsubok na talagang nagbabayad upang tahiin ito din dahil ang stick ay hindi nagtatagal ng masyadong mahaba. Susunod na inilagay ko ang isang loop ng velcro sa paligid ng 9v (Larawan 5). Ang pag-setup na ito ay tila gumagana nang maayos. Tulad ng nakikita mo sa mga larawan sa una at huling slide, nagdagdag na ako ng manggas para sa mga flex sensor ngunit kung wala kang oras, ang mga loop ay dapat na maayos. Kapag natapos ka sa iyong proyekto mangyaring mag-post ng mga larawan ng iyong natapos na produkto sa ibaba. Gusto kong makita kung ano ang iyong naisip upang ikabit ang circuit!

Hakbang 10: Ang Tunay na Code

Ang Tunay na Code
Ang Tunay na Code

Salamat sa pagdala sa akin sa ngayon. Mangyaring tandaan na ang aking code ay hindi perpekto. Nalaman ko na tumatagal ng kaunting pag-aaral upang makuha ang signal na tama lamang. Patuloy akong susubukan na gawing perpekto ang aking system at panatilihing nai-update ang pahinang ito ng bagong code sa sandaling isinulat ko ito. Dis 26, 2009: BAGONG CODE! Nai-post kung saan naroon ang dating code. Maraming salamat kay Jacob sa pagpapasimple. Ito ay talagang gumagana nang maayos. Heto na. Salamat sa pagbabasa at huwag kalimutang bumoto! #include #include #include // Sets or Clears bits in registro #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) # tukuyin ang matrixRY (y) (PORTB = y) walang bisa na pagkaantala (unsigned int pagkaantala) {unsigned int x = 0; habang (x <antala) {x ++; }} void initMatrix () {DDRD = 0xFF; // Green control DDRB = 0xFF; // Red control DDRA = 0xE0; // Ground control} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (haligi); int i = 0; para sa (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (redmask & (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); } walang bisa adcInit () {ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (char chan) {ADMUX = 0x60 | chan; ADCSRA | = 0x40; habang (bit_is_clear (ADCSRA, ADIF)); ibalik ang ADCH; } char adcAvg (char chan, char avgnum) // Karaniwan lamang hanggang sa 256 na mga sample {int i = 0; unsigned int total = 0; para sa (i = 0; i <avgnum; i ++) {total + = adcGet (chan); } kabuuang pagbalik / avgnum; } int main () {initMatrix (); adcInit (); habang (1) {habang (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Ang mga halaga ng hex dito ay dapat mabago depende sa pag-set up ng mga gumagamit upang matukoy ang pagiging sensitibo ng mga flex sensor. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } kung (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} ibalik ang 0; } Espesyal na salamat sa Chamberlains, aking mga magulang at kaibigan na tumulong.

Finalist sa Paligsahan sa Homemade Holidays

Inirerekumendang: