Inhoudsopgave:

Handheld BASIC Computer - Ajarnpa
Handheld BASIC Computer - Ajarnpa

Video: Handheld BASIC Computer - Ajarnpa

Video: Handheld BASIC Computer - Ajarnpa
Video: DIY Tiny Handheld BASIC Computer 2024, November
Anonim
Handheld BASIC-computer
Handheld BASIC-computer
Handheld BASIC-computer
Handheld BASIC-computer

Dit Instructable beschrijft mijn proces van het bouwen van een kleine draagbare computer met BASIC. De computer is gebouwd rond de ATmega 1284P AVR-chip, die ook de inspiratie vormde voor de gekke naam voor de computer (HAL 1284).

Deze build is ZWAAR geïnspireerd door het geweldige project dat hier te vinden is en de SuperCON BASIC-badge.

De computer draait een aangepaste versie van TinyBasic, hoewel veel van de software gebaseerd is op het project van dan14. Je kunt deze Instructable natuurlijk volgen, of nog beter, verbeteren omdat ik een paar fouten heb gemaakt.

Voor dit project heb ik ook een handleiding gemaakt. Het vermeldt enkele bugs en bijzonderheden voor de gekozen monitor, maar het belangrijkste is dat het de lijst met BASIC-bewerkingen heeft.

Nadat dit was gepubliceerd, heb ik een video gemaakt waarin ik het project presenteerde.

Stap 1: Onderdelen die ik heb gebruikt

Onderdelen die ik heb gebruikt
Onderdelen die ik heb gebruikt
Onderdelen die ik heb gebruikt
Onderdelen die ik heb gebruikt
Onderdelen die ik heb gebruikt
Onderdelen die ik heb gebruikt

Voor de hoofd-IC:

  • ATMega 1284P
  • 16MHz kristal
  • 2x 22pf keramische condensator
  • 10KΩ-weerstand (voor reset pull-up)
  • 4-pins knop (voor reset)
  • 470Ω Reistor (voor composietvideo)
  • Weerstand van 1 kΩ (voor composiet videosynchronisatie)
  • 3-pins jumper (voor videosignaal)
  • Passieve zoemer

Voor toetsenbordbediening:

  • ATmega 328P (zoals die worden gebruikt in de Arduino Uno)
  • 16MHz kristal
  • 2x 22pf keramische condensator
  • 12x 10KΩ-weerstand (voor reset pull-up en knoppen)
  • 51x 4-pins knop (voor het eigenlijke toetsenbord)

Voor kracht:

  • L7805 Spanningsregelaar
  • 3 mm LED
  • 220Ω weerstand (voor LED)
  • 2x 0,1 µF elektrolytische condensator
  • 0,22 µF elektrolytische condensator (Je zou deze 0,22 en één 0,1 kunnen vervangen door één 0,33. Mij is ook verteld dat de waarden er niet echt toe doen, maar ik ben niet zo goed met condensatoren)
  • 2x 2-pins jumper (voor stroomingang en voor hoofdschakelaar)

GPIO (misschien nog een paar redenen toevoegen):

  • 7-pins jumper
  • 2x 8-pins jumper
  • 2-pins jumper (voor 5V en GND)
  • 3-4-pins jumper (voor seriële communicatie)

Niet-PCB:

  • 4" LCD-scherm met composiet video (de mijne had een ingangsspanning tussen 7-30V)
  • 3D-geprinte houder voor weergave
  • Een soort schakelaar

Stap 2: Het circuit

Het circuit
Het circuit

Het circuit is niet erg mooi en een groot deel van de belangrijkste IC-regio is geïnspireerd op dan14. Dat gezegd hebbende, het is een vrij ongecompliceerde Arduino op een Breadboard-circuit. Het toetsenbord is een eenvoudig raster en wordt bestuurd door de ATmega328. De twee AVR-chips communiceren via de UART seriële pinnen.

Zowel een afbeelding als mijn Eagle-bestanden zijn bijgevoegd en zullen hopelijk voldoende zijn om het circuit opnieuw te maken. Als dat niet het geval is, laat het me dan weten en ik zal de Instructable bijwerken.

Stap 3: De printplaat

De printplaat
De printplaat
De printplaat
De printplaat

De PCB is 2-laags en gemaakt met behulp van Auto Route (Oh, wat een gat!). Het heeft knoppen en power-indicator LED aan de voorkant en de rest aan de achterkant. Ik heb mijn PCB laten maken met JCL PCB, en ze hebben er geweldig werk mee gedaan. De bestanden die nodig zijn om de print opnieuw te maken, moeten van tevoren in de Eagle-bestanden staan.

Ik zou willen voorstellen dat je de PCB opnieuw ontwerpt, omdat ik een aantal dingen heb die ik anders zou willen doen. Als je mijn ontwerp leuk vindt, ik heb (op het moment van schrijven) nog vier ongebruikte borden die ik graag wil verkopen.

Het bord heeft vier boorgaten die ik heb gebruikt voor het monteren van het LCD-scherm.

Stap 4: De code uploaden

De code uploaden
De code uploaden
De code uploaden
De code uploaden
De code uploaden
De code uploaden

Zowel de 1284 als de 328 hebben natuurlijk code nodig en de code die ik heb gebruikt vind je hier: https://github.com/PlainOldAnders/HAL1284 onder ArduinoSrc/src. Ik heb gewoon de Arduino IDE gebruikt om de code aan te passen en te uploaden, maar voordat dat kan, moet je bootloaders op de IC's branden:

ATMega328:

Deze is eenvoudig, in die zin dat er veel ondersteuning is voor het branden van een bootloader en het uploaden van code naar dit IC. Ik volg meestal deze handleiding, vooral omdat ik de details steeds vergeet.

De code voor de 328 (onder ArduinoSrc/keypad) is vrij eenvoudig. Het is volledig afhankelijk van de Adafruit_Keypad-master-bibliotheek. Voor het geval er iets verandert aan de lib, heb ik de versie die ik gebruikte op mijn github-pagina onder ArduinoSrc/lib opgenomen.

ATmega1284:

Dit was een beetje moeilijk voor mij toen ik voor het eerst de IC kreeg. Ik begon met het ophalen van de bootloader vanaf hier en volgde de installatiehandleiding. Om de bootloader te branden, deed ik gewoon hetzelfde als bij de 328 en kreeg ik hier hulp. Voor beide IC's heb ik zojuist een Arduino Uno gebruikt voor zowel het branden van de bootloader als het uploaden van de code (IC verwijderd van Arduino Uno bij het uploaden).

De code (onder ArduinoSrc/HAL1284Basic) is veel te ingewikkeld voor mij, maar ik heb enkele delen van de code kunnen wijzigen:

Ik heb een aantal commando's toegevoegd (die gemarkeerd met [A] in de manual.pdf), en ik heb ook andere commando's gewijzigd:

Toon: Het tooncommando gebruikte eerder de toonfunctie van Arduino, maar bij gebruik van de TVout-bibliotheek werkte de zoemer niet goed. Ik heb het gewijzigd om de toonfunctie van TVout te gebruiken, maar dit betekent dat de toonpin pin 15 moet zijn (voor de atmega1284)

Seriële communicatie: aangezien het toetsenbord zelfgemaakt is, gebruikt het seriële communicatie voor het lezen van de karakters. Aangezien de atmega1284 hier wordt gebruikt, zijn er twee beschikbare seriële communicatielijnen, en wanneer "sercom" is ingeschakeld, maakt de code het ook mogelijk om via de seriële poort te schrijven (vanaf een computer of wat dan ook).

Resolutie: de monitor die voor dit project wordt gebruikt, is behoorlijk dom en er is een kleine resolutie nodig, anders flikkert het beeld. Als een betere monitor wordt gebruikt, raad ik u aan de resolutie in de setup-functie te wijzigen.

Stap 5: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Met de code geüpload en de printplaat en onderdelen klaar, is het nu tijd voor montage. Alle onderdelen die ik gebruikte waren doorlopende gaten, dus het solderen was niet al te moeilijk (in tegenstelling tot de badass-SMD-soldeer-jongens die er zijn). De monitor werd met een 3D-geprinte houder op de vier boorgaten in de print bevestigd. Als er een andere monitor wordt gebruikt, kunnen de vier boorgaten hopelijk worden gebruikt om deze te monteren.

De monitorhouder die hier wordt gebruikt, is ook ontworpen om een tuimelschakelaar (aangesloten op de "switch"-jumper op de print) en de drie bedieningsknoppen voor de monitor te huisvesten. De houder wordt vastgezet met kunststof M3 bouten en afstandhouders.

Voor de stekker heb ik een JST PCB-connector gebruikt, hoewel een gladde barrel-jack wat soepeler zou zijn geweest. Om het bord van stroom te voorzien, schakelde ik tussen een 12V-voeding of drie 18650-batterijen in serie. Een vlottere cowboy dan ik zou waarschijnlijk een gelikte batterijhouder voor het bord kunnen ontwerpen.

Stap 6: Bugs en toekomstig werk

Pijltjestoetsen: De pijltjestoetsen zijn per ongeluk geplaatst en hebben niet veel functie. Dit maakt navigatie moeilijk

Bestands-I/O: Er bestaan bestands-I/O-mogelijkheden, maar deze zijn niet geïmplementeerd. Om dit tegen te gaan, kan de HAL1284Com-software bestanden uploaden naar het bord. Het is ook mogelijk om te uploaden naar de EEPROM.

PEEK/POKE: PEEK en POKE zijn niet getest en ik weet niet zeker wat de adressen zijn.

Break: Break (Esc) heeft soms met de hele code geknoeid, in oneindige lussen.

Pin 7: De PWM-pin 7 kan moeilijk zijn bij het proberen om DWRITE High of AWRITE 255 te gebruiken. Het werkt prima met AWRITE 254.

Idioot: Het zou ideaal zijn om ook via UART1 te kunnen uploaden, maar uploaden kan alleen via UART0, dus uploaden zal moeten gebeuren door het hoofd-IC uit te pakken. Het scherm en de spanningsregelaar 5 worden iets te warm bij langdurig gebruik.

Aanbevolen: