Innholdsfortegnelse:

Håndholdt BASIC datamaskin: 6 trinn (med bilder)
Håndholdt BASIC datamaskin: 6 trinn (med bilder)

Video: Håndholdt BASIC datamaskin: 6 trinn (med bilder)

Video: Håndholdt BASIC datamaskin: 6 trinn (med bilder)
Video: СВИСТОК СМЕРТИ ночью НА КЛАДБИЩЕ / Призрак ребёнка в видео / Aztec Death Whistle 2024, November
Anonim
Håndholdt BASIC datamaskin
Håndholdt BASIC datamaskin
Håndholdt BASIC datamaskin
Håndholdt BASIC datamaskin

Denne instruksjonsboken beskriver prosessen min med å bygge en liten håndholdt datamaskin som kjører BASIC. Datamaskinen er bygget rundt ATmega 1284P AVR -brikken, som også inspirerte det dumme navnet på datamaskinen (HAL 1284).

Denne bygningen er STORT inspirert av det fantastiske prosjektet som er funnet her og SuperCON BASIC -merket.

Datamaskinen kjører en modifisert versjon av TinyBasic, selv om mye av programvaren er basert på prosjektet av dan14. Du kan selvfølgelig følge denne instruksjonsmessige, eller enda bedre, forbedre den siden jeg gjorde noen feil.

For dette prosjektet laget jeg også en manual. Den nevner noen feil og spesifikasjoner for den valgte skjermen, men viktigst av alt, den har listen over BASIC -operasjoner.

Etter at dette ble publisert, laget jeg en video som viste prosjektet.

Trinn 1: Deler jeg brukte

Deler jeg brukte
Deler jeg brukte
Deler jeg brukte
Deler jeg brukte
Deler jeg brukte
Deler jeg brukte

For hoved -IC:

  • ATmega 1284P
  • 16MHz krystall
  • 2x 22pf keramisk kondensator
  • 10KΩ motstand (for tilbakestilling trekk opp)
  • 4-pinners knapp (for tilbakestilling)
  • 470Ω reistor (for komposittvideo)
  • 1 kΩ motstand (for sammensatt videosynkronisering)
  • 3-pinners jumper (for videosignal)
  • Passiv summer

For keybaord -kontroll:

  • ATmega 328P (Som de som ble brukt i Arduino Uno)
  • 16MHz krystall
  • 2x 22pf keramisk kondensator
  • 12x 10KΩ motstand (for tilbakestilling av pull up og knapper)
  • 51x 4-pinners knapp (for selve tastaturet)

For strøm:

  • L7805 spenningsregulator
  • 3 mm LED
  • 220Ω motstand (for LED)
  • 2x 0,1µF elektrolytisk kondensator
  • 0,22 µF elektrolytisk kondensator (Du kan bytte ut denne 0,22 og en 0,1 for en 0,33. Jeg har også blitt fortalt at verdiene egentlig ikke spiller noen rolle, men jeg er ikke flink med kondensatorer)
  • 2x 2-pinners jumper (For strøminngang og for hovedbryter)

GPIO (Kan legge til et par flere begrunnelser):

  • 7-pinners genser
  • 2x 8-pinners genser
  • 2-pinners genser (for 5V og GND)
  • 3-4-pinners jumper (for seriell kommunikasjon)

Ikke-PCB:

  • 4 "LCD-skjerm med komposittvideo (min hadde en inngangsspenning mellom 7-30V)
  • 3D -trykt holder for visning
  • En slags bryter

Trinn 2: Kretsen

Kretsen
Kretsen

Kretsen er ikke veldig pen, og mye av IC-hovedområdet er inspirert av dan14. Når det er sagt, er det en ganske rett frem Arduino på en Breadboard-krets. Tastaturet er et enkelt rutenett og styres av ATmega328. De to AVR -brikkene kommuniserer via UART Serial -pinnene.

Både et bilde og mine Eagle-filer er vedlagt og vil forhåpentligvis være nok til å gjenskape kretsen. Hvis ikke, vennligst informer meg, så oppdaterer jeg instruksjonsboken.

Trinn 3: PCB

PCB
PCB
PCB
PCB

PCB er to-lags og laget med Auto Route (Oh, for et ** hull!). Den har knapper og strømindikator LED foran og resten på baksiden. Jeg hadde min PCB laget med JCL PCB, og de gjorde en fantastisk jobb med det. Filene som trengs for å gjenskape kretskortet, skal være i Eagle-filene fra før.

Jeg vil foreslå at du redesigner kretskortet, ettersom jeg har noen ting jeg gjerne skulle ha gjort annerledes. Hvis du liker designet mitt, har jeg fremdeles (når jeg skriver) fire ubrukte brett som jeg er mer enn villig til å selge.

Brettet har fire borehull som jeg har brukt til montering av LCD -skjermen.

Trinn 4: Last opp koden

Laster opp koden
Laster opp koden
Laster opp koden
Laster opp koden
Laster opp koden
Laster opp koden

Både 1284 og 328 trenger selvfølgelig kode og koden jeg brukte finner du her: https://github.com/PlainOldAnders/HAL1284 under ArduinoSrc/src. Jeg brukte ganske enkelt Arduino IDE for å endre og laste opp koden, men før det kan gjøres, må du brenne oppstartsladere på IC -ene:

ATMega328:

Denne er enkel, i den forstand at det er mye støtte der ute om hvordan du brenner en oppstartslaster og laster opp kode til denne IC. Jeg følger vanligvis denne guiden, hovedsakelig fordi jeg stadig glemmer detaljene.

Koden for 328 (under ArduinoSrc/tastatur) er ganske enkel. Det er helt avhengig av Adafruit_Keypad-master- biblioteket. Hvis noe endres om lib, har jeg inkludert versjonen jeg brukte på min github-side under ArduinoSrc/lib.

ATmega1284:

Dette var litt vanskelig for meg da jeg først fikk IC. Jeg begynte med å få oppstartslaster herfra, og fulgte installasjonsveiledningen. For å brenne bootloaderen gjorde jeg ganske enkelt det samme som med 328 og fikk hjelp herfra. For begge ICene brukte jeg nettopp en Arduino Uno for både brenning av oppstartslaster og opplasting av koden (fjernet IC fra Arduino Uno ved opplasting).

Koden (under ArduinoSrc/HAL1284Basic) er altfor komplisert for meg, men jeg klarte å endre noen deler av koden:

Jeg la til et par kommandoer (de merket med [A] i manualen.pdf), og jeg endret også andre kommandoer:

Tone: Tone-kommandoen brukte nettopp Arduinos tone-funksjon før, men når du brukte TVout-biblioteket, forårsaket dette at summeren ikke fungerte som den skulle. Jeg endret den for å bruke TVouts tonefunksjon, men dette betyr at tonepinnen MÅ være pin 15 (for atmega1284)

Seriell kommunikasjon: Siden tastaturet er DIY, bruker det seriell kommunikasjon for å lese karakterene. Siden atmega1284 brukes her, er det to tilgjengelige serielle kommunikasjonslinjer, og når "sercom" er aktivert, tillater koden også skriving via serieporten (fra en datamaskin eller hva som helst).

Oppløsning: Skjermen som ble brukt til dette prosjektet er ganske dum, og en liten oppløsning er nødvendig, ellers flimrer bildet. Hvis en bedre skjerm brukes, vil jeg foreslå at du endrer oppløsningen i oppsettfunksjonen.

Trinn 5: Montering

montering
montering
montering
montering
montering
montering

Med koden lastet opp og PCB og deler klar, er det nå tid for montering. Alle delene jeg brukte var gjennom hull, så lodding var ikke så vanskelig (i motsetning til badass-SMD-lodding-fellas der ute). Skjermen ble festet til de fire borehullene i kretskortet med en 3D -trykt holder. Hvis en annen skjerm brukes, kan de fire borehullene forhåpentligvis brukes til å montere dette.

Monitorholderen som brukes her, er også designet for å huse en vippebryter (koblet til "bryter" -hopperen på kretskortet) og de tre kontrollknappene for skjermen. Holderen er festet med plast M3 bolter og avstandsstykker.

For strømpluggen brukte jeg en JST PCB -kontakt, selv om en glatt fatkontakt ville vært litt mer jevn. For å drive kortet, byttet jeg mellom en 12V strømforsyning eller tre 18650 batterier i serie. En mykere cowboy enn meg selv kan sannsynligvis designe en glatt batteriholder til brettet.

Trinn 6: Bugs og fremtidig arbeid

Piltaster: Piltastene ble plassert ved et uhell og tjener ikke mye funksjon. Dette gjør navigasjonen vanskelig

File I/O: Det finnes File I/O -funksjoner, men disse er ikke implementert. For å bekjempe dette kan HAL1284Com -programvaren laste opp filer til brettet. Det er også mulig å laste opp til EEPROM.

PEEK/POKE: PEEK og POKE er uprøvd, og jeg er ikke sikker på hva adressene er.

Break: Break (Esc) har noen ganger rotet med hele koden, i uendelige sløyfer.

Pin 7: PWM pin 7 kan være vanskelig når du prøver å DWRITE High eller AWRITE 255. Det fungerer fint med AWRITE 254.

Idiot: Det ville være ideelt å også kunne laste opp via UART1, men opplasting er bare mulig via UART0, så opplasting må gjøres ved å trekke ut hoved -IC. Skjermen og spenningsregulatoren 5 blir litt for varm når den kjører i lang tid.

Anbefalt: