Turinys:

Rankinis PAGRINDINIS kompiuteris: 6 žingsniai (su paveikslėliais)
Rankinis PAGRINDINIS kompiuteris: 6 žingsniai (su paveikslėliais)

Video: Rankinis PAGRINDINIS kompiuteris: 6 žingsniai (su paveikslėliais)

Video: Rankinis PAGRINDINIS kompiuteris: 6 žingsniai (su paveikslėliais)
Video: Tekstų rengyklė 21 dalis. Iliustracijos tekste. 6 klasei 2024, Gruodis
Anonim
Rankinis BASIC kompiuteris
Rankinis BASIC kompiuteris
Rankinis BASIC kompiuteris
Rankinis BASIC kompiuteris

Šioje instrukcijoje aprašomas mano procesas kuriant mažą rankinį kompiuterį, kuriame veikia BASIC. Kompiuteris sukurtas remiantis ATmega 1284P AVR mikroschema, kuri taip pat įkvėpė kvailą kompiuterio pavadinimą (HAL 1284).

Ši konstrukcija yra sunkiai įkvėpta čia esančio nuostabaus projekto ir „SuperCON BASIC Badge“.

Kompiuteryje veikia modifikuota „TinyBasic“versija, nors daugelis programinės įrangos yra pagrįsti dan14 projektu. Žinoma, galite sekti šią instrukciją arba dar geriau ją patobulinti, nes padariau keletą klaidų.

Šiam projektui taip pat sukūriau vadovą. Jame minimos kai kurios pasirinkto monitoriaus klaidos ir specifika, tačiau svarbiausia, kad jame yra PAGRINDINIŲ operacijų sąrašas.

Po to, kai tai buvo paskelbta, aš padariau vaizdo įrašą, kuriame pristatė projektą.

1 žingsnis: Naudotos I dalys

Naudotos dalys
Naudotos dalys
Naudotos dalys
Naudotos dalys
Naudotos dalys
Naudotos dalys

Pagrindiniam IC:

  • ATmega 1284P
  • 16MHz krištolas
  • 2x 22pf keraminis kondensatorius
  • 10KΩ rezistorius (atstatymui pakelti)
  • 4 kontaktų mygtukas (atstatymui)
  • 470Ω rezistorius (sudėtiniam vaizdo įrašui)
  • 1 kΩ rezistorius (sudėtiniam vaizdo įrašo sinchronizavimui)
  • 3 kontaktų trumpiklis (vaizdo signalui)
  • Pasyvus garsinis signalas

Norėdami valdyti klavišus, atlikite toliau nurodytus veiksmus.

  • ATmega 328P (kaip ir tie, kurie buvo naudojami „Arduino Uno“)
  • 16MHz krištolas
  • 2x 22pf keraminis kondensatorius
  • 12x 10KΩ rezistorius (atstatymui pakelkite ir mygtukus)
  • 51x 4 kontaktų mygtukas (tikrajai klaviatūrai)

Dėl galios:

  • Įtampos reguliatorius L7805
  • 3 mm LED
  • 220Ω rezistorius (LED)
  • 2x 0,1 µF elektrolitinis kondensatorius
  • 0,22 µF elektrolitinis kondensatorius (galite pakeisti šį 0,22, o vieną 0,1 - 0,33. Man taip pat buvo pasakyta, kad vertės tikrai nesvarbios, bet aš nesu puikus su kondensatoriais)
  • 2x 2 kontaktų trumpiklis (maitinimo įėjimui ir pagrindiniam jungikliui)

GPIO (galbūt pridėkite dar porą pagrindų):

  • 7 kontaktų megztinis
  • 2x 8 kontaktų trumpiklis
  • 2 kontaktų trumpiklis (5V ir GND)
  • 3-4 kontaktų trumpiklis (nuosekliam ryšiui)

Ne PCB:

  • 4 colių LCD ekranas su sudėtiniu vaizdo įrašu (mano įėjimo įtampa buvo 7–30 V)
  • 3D spausdintas laikiklis ekranui
  • Kažkoks jungiklis

2 žingsnis: grandinė

Circuit
Circuit

Grandinė nėra labai graži ir didžiąją dalį pagrindinio IC regiono įkvėpė dan14. Tai sakant, tai yra gana tiesus „Arduino“duonos lentos grandinėje. Klaviatūra yra paprastas tinklelis ir valdoma ATmega328. Du AVR lustai bendrauja per UART serijos kaiščius.

Tiek vaizdas, tiek mano „Eagle“failai pridedami ir, tikiuosi, jų pakaks grandinei atkurti. Jei ne, nedvejodami praneškite man ir aš atnaujinsiu „Instructable“.

3 žingsnis: PCB

PCB
PCB
PCB
PCB

PCB yra dviejų sluoksnių ir sukurta naudojant automatinį maršrutą (O, kokia ** skylė!). Priekyje yra mygtukai ir maitinimo indikatorius, kiti - gale. Aš padariau savo PCB su JCL PCB, ir jie padarė nuostabų darbą. Failai, reikalingi norint atkurti PCB, turėtų būti Eagle rinkmenose.

Siūlyčiau pertvarkyti PCB, nes turiu keletą dalykų, kuriuos norėčiau padaryti kitaip. Jei jums patinka mano dizainas, aš vis dar turiu (rašymo metu) keturias nepanaudotas plokštes, kurias aš daugiau nei noriu parduoti.

Plokštėje yra keturios gręžimo angos, kurias naudojau LCD ekranui montuoti.

4 veiksmas: įkelkite kodą

Įkeliamas kodas
Įkeliamas kodas
Įkeliamas kodas
Įkeliamas kodas
Įkeliamas kodas
Įkeliamas kodas

Žinoma, ir 1284, ir 328 reikia kodo, o kodą, kurį naudoju, rasite čia: https://github.com/PlainOldAnders/HAL1284, esantį „ArduinoSrc/src“. Aš tiesiog naudoju „Arduino IDE“kodui modifikuoti ir įkelti, bet prieš tai galite padaryti, turėsite įrašyti įkrovos įkroviklius IC:

ATMega328:

Tai lengva, ta prasme, kad yra daug palaikymo, kaip įrašyti įkrovos įkėlimo programą ir įkelti kodą į šį IC. Paprastai vadovaujuosi šiuo vadovu, dažniausiai todėl, kad vis pamirštu specifiką.

328 kodas (naudojant „ArduinoSrc“/klaviatūrą) yra gana paprastas. Tai visiškai priklauso nuo „Adafruit_Keypad-master“bibliotekos. Jei kas nors pasikeis dėl lib, aš įtraukiau versiją, kurią naudoju savo „github“puslapyje, esančiame „ArduinoSrc/lib“.

ATmega1284:

Man tai buvo šiek tiek sunku, kai pirmą kartą gavau IC. Pradėjau iš čia parsisiuntęs įkrovos tvarkyklę ir vadovavausi diegimo vadovu. Norėdami įrašyti įkrovos įkroviklį, aš tiesiog padariau tą patį, ką ir su 328, ir gavau pagalbą iš čia. Abiejuose IC aš tiesiog naudoju „Arduino Uno“tiek įkrovos įkėlimui, tiek kodo įkėlimui (įkėlus pašalintas IC iš „Arduino Uno“).

Kodas (pagal „ArduinoSrc“/HAL1284Basic) man yra per daug sudėtingas, tačiau galėjau pakeisti kai kurias kodo dalis:

Pridėjau keletą komandų (kurios vadove pažymėtos [A]), taip pat pakeičiau kitas komandas:

Tonas: „Tone“komanda anksčiau naudojo „Arduino“tono funkciją, tačiau naudojant „TVout“biblioteką, dėl to garsinis signalas netinkamai veikė. Aš jį pakeičiau, kad galėčiau naudoti „TVout“tono funkciją, tačiau tai reiškia, kad tono kaištis TURI būti 15 kaištis („atmega1284“)

Serijinis ryšys: Kadangi klaviatūra yra „pasidaryk pats“, ji naudoja serijinį ryšį simboliams skaityti. Kadangi čia naudojama „atmega1284“, yra dvi galimos nuosekliosios ryšio linijos, o kai įjungta „sercom“, kodas taip pat leidžia rašyti per nuoseklųjį prievadą (iš kompiuterio ar bet ko).

Skiriamoji geba: šiam projektui naudojamas monitorius yra gana kvailas, todėl reikia mažos skiriamosios gebos, kitaip vaizdas mirksės. Jei naudojamas geresnis monitorius, siūlyčiau pakeisti sąrankos funkcijos skiriamąją gebą.

5 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Įkėlus kodą ir paruoštą PCB bei dalis, laikas surinkti. Visos dalys, kurias naudojau, buvo per skylę, todėl litavimas nebuvo per sunkus (priešingai nei ten esantys „badass-SMD-liting-fellas“). Monitorius buvo pritvirtintas prie keturių gręžimo skylių PCB naudojant 3D spausdintą laikiklį. Jei naudojamas kitas monitorius, tikimasi, kad keturios gręžimo skylės bus naudojamos šiam įrengimui.

Čia naudojamas monitoriaus laikiklis taip pat skirtas perjungimo jungikliui (prijungtam prie PCB jungiklio „jungiklio“) ir trims monitoriaus valdymo mygtukams. Laikiklis tvirtinamas plastikiniais M3 varžtais ir tarpikliais.

Maitinimo kištukui naudoju JST PCB jungtį, nors slidus statinės lizdas būtų buvęs kiek sklandesnis. Norėdami maitinti plokštę, perjungiau 12 V maitinimo šaltinį arba tris serijines 18650 baterijas. Lygesnis kaubojus, nei aš, greičiausiai galėtų suplanuoti plokščią baterijos laikiklį.

6 žingsnis: klaidos ir būsimas darbas

Rodyklių klavišai: rodyklių klavišai buvo įdėti atsitiktinai ir neatlieka daug funkcijų. Tai apsunkina navigaciją

Failo įvestis/išvestis: yra failo įvesties/išvesties galimybių, tačiau jos neįgyvendinamos. Norėdami su tuo kovoti, HAL1284Com programinė įranga gali įkelti failus į lentą. Taip pat galima įkelti į EEPROM.

PEEK/POKE: PEEK ir POKE yra neišbandyti, ir aš nesu tikras, kokie yra adresai.

Pertrauka: Pertrauka (Esc) kartais suklaidino visą kodą, kai jis buvo begalinis.

7 kaištis: PWM kaištis 7 gali būti sudėtingas, kai bandoma DWRITE High arba AWRITE 255. Jis puikiai veikia su AWRITE 254.

Idiotas: Būtų idealu, jei taip pat būtų galima įkelti per UART1, bet įkelti galima tik per UART0, todėl įkėlimas turės būti atliktas ištraukiant pagrindinį IC. Ilgai veikiant, ekrano ir įtampos reguliatorius 5 tampa šiek tiek per karštas.

Rekomenduojamas: