Talaan ng mga Nilalaman:

DemUino - Home Computer / Controller: 7 Hakbang
DemUino - Home Computer / Controller: 7 Hakbang

Video: DemUino - Home Computer / Controller: 7 Hakbang

Video: DemUino - Home Computer / Controller: 7 Hakbang
Video: Alert😒👍 hard drive not found dell OptiPlex 7010, 100% solved 2024, Hulyo
Anonim
Image
Image
Nasusunog ang Bootloader
Nasusunog ang Bootloader

Isang Arduino Inspired Computer ni DemeterArt Sulitin ang iyong lumang PS2 keyboard. I-hack ito sa isang pasadyang personal na computer upang makontrol ang mga bagay-bagay! Palagi kong nais na bumuo ng aking sariling computer sa bahay, uri ng istilong retro, walang magarbong ngunit may mga partikular na kakayahan na iniakma sa aking mga kagustuhan. Kaya, nakuha ko ito gamit ang atmega328 MCU at ang Arduino development kit.

Hayaan mong sabihin ko na ang proyektong ito ay tatagal nang mas matagal sa mga kaduda-dudang mga resulta kung hindi dahil sa mga may regalong tagahanga doon na mas makasarili na magtustos ng mga freeware library para magamit ng lahat. Salamat sa lahat:-)

bisitahin ang aking site upang basahin ang buong kuwento at i-download ang lahat ng mga kaugnay na mga file

www.site.google.com/site/demeterart

Hakbang 1: Mga Tampok

  • Batay sa ATMEGA328 na may 32KB flash, 2KB SRAM at 1KB EEPROM.
  • suporta para sa mga interactive at batch mode
  • line editor at list-habang-edit mode
  • 8 pasadyang mga character para sa graphics ng gumagamit
  • 60 mga hakbang sa programa na may bilang na 00,…, 99
  • Ang kondisyunal na 'Kung', 'habang' at 'para sa' mga loop plus 'goto' at mga pahayag ng 'sub' para sa pagsasanga
  • Pangunahing mga expression ng aritmetika at matematika kasama ang mga pagsubok sa boolean
  • Pinapayagan ng mga variable ng system para sa mga nag-time na kaganapan, average, rms, min at max na halaga mula sa mga analog pin, atbp
  • 26 mga variable ng gumagamit upang makipag-ugnay sa mga variable ng system at utos
  • 104 bytes ng isang address na maaaring i-address ng gumagamit o 52 maikling integer
  • kakayahang basahin / isulat ang data ng programa pati na rin ang code on-the-fly (p variable)
  • mini oscilloscope app na may na-customize na mga character para sa mga pseudo graphics
  • i-save at i-load ang mga programa at data sa / mula sa EEPROM
  • i-load / i-save ang mga programa at variable mula / sa PC
  • autoexec sa paglo-load at pagpapatakbo ng isang programa mula sa EEPROM pagkatapos ng bawat pag-reset
  • 9 mga pin ng GPIO (kasama ang SPI) na magagamit sa panlabas na konektor ng DB15
  • BUZZER para sa mga sound effects

Hakbang 2: Bagay na Kakailanganin mo

Isang lumang ps / 2 keyboard na sapat na makapal upang maipakita ang pcb LCD character display (ang tanyag na parallel format) MAX232 chip para sa RS232 port atmel atmega328PU Arduino development kit na may IDE 1.0.1 LM7805 regulator 5V buzzer bridge rectifier, capacitors, isang reset pindutan ng push, mga konektor atbp

Hakbang 3: Nasusunog ang Bootloader

Kaya, pagkatapos na bumili ng isang 'walang laman' na atmega328PU chip mayroong desisyon na magagawa. Gumagamit ba ako ng isang espesyal na programmer alinman sa panlabas o ISP o sinusunog ko ba ang Arduino bootloader sa hayop at nai-program ang unit na nai-program sa pamamagitan ng UART port? Pinili ko ang huli upang gawing mas madali ang aking buhay! Ang bagong bootloader ay sumasakop lamang sa kalahating kilobyte ng flash memory na nag-iiwan ng kaunti pa sa 31KB ng program ng gumagamit at magagamit na static na data. Sinasaklaw ng Arduino site ang kaso ng pagsunog ng bootloader sa isang bagong maliit na tilad, pagdating sa paggamit ng avrdude upang aktwal na masunog ang target na chip ang proseso ay nabigo sa isang error na nagpapahiwatig ng maling id para sa partikular na MCU. Kaya pagkatapos ng ilang paghahanap ay nahanap ko ang taong ito na tama ang pagkakasunod at sinunod ko ang kanyang pamamaraan. Ang pagkakaiba lamang ay 2 mga file ng pagsasaayos, avrdude.conf at boards.txt na kailangan ng avrdude at arduino IDE 1.0.1 upang magawang posible. Matapos makopya ang 2 mga file sa kanilang mga tamang lokasyon (i-backup muna ang mga luma) ang pagpipiliang 'arduino328' mula sa mga tool-> Magagamit ang board at nagpatuloy sa pagsunog ng mga piyus at bootloader. Ngayon ang maliit na tilad ay handa nang mai-program mula sa loob ng bagong makina!

Hakbang 4: Pagbuo ng Yunit

Pagbuo ng Yunit
Pagbuo ng Yunit
Pagbuo ng Yunit
Pagbuo ng Yunit

Ang isang butas na butas na may mga piraso ng tanso ay ginamit bilang isang mabilis na solusyon sa pagpupulong na may mga socket ng DIP para sa mga chips, alam mo, kung sakali! Pagkatapos ang mga butas at hiwa para sa mga konektor, ang pindutan ng pag-reset at ang LCD display ay binuksan sa pamamagitan ng labis na matibay at makapal na plastik ng keyboard. Yeah, naitayo iyon 25 taon na ang nakaraan! Sinundan ang gulo ng mga wire na nagmumula sa pcb patungo sa iba't ibang mga peripheral. Ang isang panimulang pagsusuri ng pagpapatuloy at pagkatapos ang suplay ay konektado na walang mga chip na pinunan lamang upang suriin ang mga socket para sa tamang mga voltages. Pagkatapos ay dumating sa 2 ICs at ang case ng keyboard ay mahigpit na sarado sa pamamagitan ng mga plastic snap nito sa ilalim. Handa na ang yunit na magsunog ng mga sketch sa controller!

Iminumungkahi ko na ang isang gumagamit ng nonpolar 1uF / 16V capacitors para sa MAX232 charge pump. Hanapin ang 100nF decoupling capacitors para sa dalawang chips hangga't maaari sa kani-kanilang mga pin ng VCC at GND. Gumamit ng isang koneksyon sa bituin para sa lakas at lupa na sumangguni sa LM7805 regulator. Ang switch 2 ay maaaring isang jumper depende sa pagpapatupad ngunit mabuting magkaroon kung maiwasan lamang ang mga hindi gustong pag-reset ng MCU mula sa host PC sa ilang mga kaso. Sa anumang rate, dapat na sarado ang switch upang payagan ang Arduino IDE na sunugin ang sketch sa pamamagitan ng pag-reset sa target na MCU (pin DTR ng RS232). Sa aking kaso ang koneksyon ay permanente (laging sarado). Gumamit ng isang serye ng risistor para sa buzzer upang ihiwalay ang maraming mga nF ng capacitance mula sa gate ng pagmamaneho … hindi mo alam.. Hanapin ang XTAL at ang paglo-load ng mga capacitor na 18-22pF na mas malapit hangga't maaari sa kani-kanilang mga pin ng controller.

Dahil sa tulay na nagtuwid ang yunit ay maaaring pinalakas ng parehong mga adaptor ng kuryente ng AC at DC. Sa kaso ng DC, mayroong isang 1.5 V boltahe na drop sa pagitan ng adapter at ang input sa regulator. Sa kaso ng AC ang input ng regulator ay tungkol sa 1.4 beses ang RMS output ng adapter o mas mababa dahil sa pag-load. Kung ang pagkakaiba sa pagitan ng input ng regulator at ang output nito (+ 5V) ay malaki, sabihin na 7 volts, kung gayon ang lakas na natupok ng regulator ay lumalapit sa 0.5 watts at mas mahusay na gumamit ng isang maliit na heatsink kung saan mai-mount ang maliit na tilad (ibinigay may puwang para dito) para sa mahabang oras ng operasyon sa mainit na panahon.

Ang AC input fuse ay maaaring mapili depende sa iyong panlabas na pag-load (sa pamamagitan ng konektor ng DB15). Ang iba pang mga kadahilanan na nakakaimpluwensya sa pagpipilian ng piyus ay ang kasalukuyang naglilimita ng risistor para sa LED backlight ng LCD, ang capacitor ng tulay para sa kasalukuyang singilin at ang kasalukuyang kapasidad ng nagbibigay ng transpormer.

Hakbang 5: SKEMATIK

SKEMATIK
SKEMATIK

Hakbang 6: SOFTWARE RUNNING ONBOARD

Ito ang sketch na nagaganap sa lahat … at 32KB ay HINDI sapat! Maaari mo itong gamitin nang hindi nabago, kung saan nais kong pahalagahan ang isang sanggunian sa aking pangalan, o baguhin ito sa nais at kalimutan ang tungkol sa akin;-)

Ito ang detalyadong dokumentasyon tungkol sa makina.

Buod ng Mga Utos at Pagpapahayag

: Isang hindi nalimbag na linya ng komento

ai: ikabit ang makagambala 0 (pin D2)

ar: nabasa na analog

aw: 'analog sulat' bawat arduino o mas maayos pwm

ca: pagkuha ng analog sa isang array

cl: nililimas ang display cno: return * Prgm index ng linya ng linya

di: maghintay para sa isang serye ng mga pulso at sukatin ang tagal at tiyempo

dl: antala

gawin: kasabay ng 'wh'

dr: digital basahin ang anumang pin

dw: digital sumulat ng anumang pin

ed: editor mode / load program mula sa mga linya ng PC / renumber

el: Pag-andar ng pag-access ng EEPROM

pagtatapos: ang END na pahayag ng isang programa

ensb: nagtatapos sa subroutine

es: Pag-andar ng pag-access ng EEPROM

fl: simpleng paglipat ng average na filter

fr: para sa susunod na loop (fr-nx)

pumunta: tumalon sa hakbang ng programa

gosb: ipagpatuloy ang pagpapatupad sa subroutine

gt: naghihintay para sa pag-input ng gumagamit

kung: kundisyon sa pagsubok at tumalon sa hakbang

io: GPIO 1-9 na mga piraso

ld: load / merge program mula sa EEPROM

lp:: loop na kinokontrol ng keyboard sa interactive mode

ls: list mode / magpadala ng programa sa PC ng isang linya nang paisa-isa

ml: kumuha ng oras

mm: ipakita ang libreng memorya

nos: nagko-convert ng numero sa string

nx: kasabay ng 'fr'

pl: plot array cxx

pm: itakda ang mga pin para sa o output

pr: naglilimbag ng isang mensahe o halaga o pasadyang character

rgc: saklaw ang utos ng kopya para sa mga pag-array

rgs: hanay ng hanay ng utos para sa mga arrays

rn: patakbuhin ang programa sa RAM

rs: malambot na pag-reset

rx: makatanggap ng isang character sa pamamagitan ng RS232

si: kasabay na serial input na may orasan at mga data pin

sm: mini oscilloscope app sno: nagko-convert ng string sa numero

kaya: kasabay na serial output na may orasan at mga data pin

sub: nagpapahayag ng subroutine

sv: i-save ang programa sa EEPROM

tn: beep a tone

tx: magpadala ng isang numero sa pamamagitan ng RS232

wh: isang do-habang loop na ginamit kasabay ng 'gawin'

Hakbang 7: Videoclip ng Mini App 'sm' Pagpapatakbo

bisitahin ang aking site upang basahin ang buong kuwento at i-download ang lahat ng mga kaugnay na mga file

www.site.google.com/site/demeterart

Inirerekumendang: