Innehållsförteckning:
- Steg 1: Delar jag använde
- Steg 2: Kretsen
- Steg 3: Kretskortet
- Steg 4: Ladda upp koden
- Steg 5: Montering
- Steg 6: Buggar och framtida arbete
Video: Handhållen BASIC -dator: 6 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:35
Denna instruktionsbok beskriver min process för att bygga en liten handdator som kör BASIC. Datorn är byggd kring ATmega 1284P AVR -chipet, vilket också inspirerade det dumma namnet på datorn (HAL 1284).
Denna konstruktion är TYCKLIGT inspirerad av det fantastiska projektet som finns här och SuperCON BASIC -märket.
Datorn kör en modifierad version av TinyBasic, även om mycket av programvaran är baserad på projektet av dan14. Du kan naturligtvis följa den här instruerbara, eller ännu bättre, förbättra den eftersom jag gjorde några misstag.
För detta projekt skapade jag också en manual. Det nämner några buggar och detaljer för den valda bildskärmen, men viktigast av allt, det har listan över BASIC -operationer.
Efter att detta publicerades gjorde jag en video som presenterade projektet.
Steg 1: Delar jag använde
För huvud IC:
- ATmega 1284P
- 16 MHz kristall
- 2x 22pf keramisk kondensator
- 10KΩ motstånd (för återställning pull up)
- 4-stifts knapp (för återställning)
- 470Ω Reistor (för kompositvideo)
- 1kΩ motstånd (för kompositvideosynkronisering)
- 3-stifts bygel (för videosignal)
- Passiv summer
För tangentbordskontroll:
- ATmega 328P (som de som används i Arduino Uno)
- 16 MHz kristall
- 2x 22pf keramisk kondensator
- 12x 10KΩ motstånd (för återställning uppåt och knappar)
- 51x 4-stifts knapp (för det faktiska tangentbordet)
För kraft:
- L7805 spänningsregulator
- 3 mm LED
- 220Ω motstånd (för LED)
- 2x 0,1µF elektrolytkondensator
- 0,22 µF elektrolytkondensator (Du kan ersätta denna 0,22 och en 0,1 med en 0,33. Jag har också fått veta att värdena inte spelar någon roll, men jag är inte bra med kondensatorer)
- 2x 2-polig bygel (för strömförsörjning och för huvudströmbrytare)
GPIO (Kanske lägga till ett par skäl till):
- 7-polig bygel
- 2x 8-polig bygel
- 2-polig bygel (för 5V och GND)
- 3-4-stifts bygel (för seriell kommunikation)
Icke-PCB:
- 4 "LCD-skärm med kompositvideo (min hade en ingångsspänning mellan 7-30V)
- 3D -tryckt hållare för display
- Någon slags omkopplare
Steg 2: Kretsen
Kretsen är inte särskilt vacker och mycket av IC-huvudregionen är inspirerad av dan14. Med detta sagt är det en ganska rak Arduino på en Breadboard-krets. Tangentbordet är ett enkelt rutnät och styrs av ATmega328. De två AVR -chipsen kommunicerar via UART Serial -stiften.
Både en bild och mina Eagle-filer bifogas och kommer förhoppningsvis att räcka för att återskapa kretsen. Om inte, meddela mig gärna så uppdaterar jag instruktionsboken.
Steg 3: Kretskortet
Kretskortet är tvåskiktat och skapat med hjälp av Auto Route (Åh, vilket helvete!). Den har knappar och strömindikator -LED på framsidan och resten på baksidan. Jag fick mitt PCB tillverkat med JCL PCB, och de gjorde ett fantastiskt jobb med det. Filerna som behövs för att återskapa kretskortet bör finnas i Eagle-filerna från tidigare.
Jag föreslår att du gör om kretskortet, eftersom jag har några saker som jag skulle vilja ha gjort annorlunda. Om du gillar min design har jag fortfarande (i skrivande stund) fyra oanvända brädor som jag mer än gärna vill sälja.
Brädet har fyra borrhål som jag har använt för att montera LCD -skärmen.
Steg 4: Ladda upp koden
Både 1284 och 328 behöver naturligtvis kod och koden jag använde finns här: https://github.com/PlainOldAnders/HAL1284 under ArduinoSrc/src. Jag använde helt enkelt Arduino IDE för att ändra och ladda upp koden men innan det kan göras måste du bränna startladdare på IC: erna:
ATMega328:
Den här är lätt, i den bemärkelsen att det finns mycket stöd där ute om hur man bränner en bootloader och laddar upp kod till denna IC. Jag brukar följa den här guiden, mest för att jag hela tiden glömmer detaljerna.
Koden för 328 (under ArduinoSrc/knappsats) är ganska enkel. Det är helt beroende av Adafruit_Keypad-master-biblioteket. Om något ändras om lib har jag inkluderat den version som jag använde på min github-sida under ArduinoSrc/lib.
ATmega1284:
Detta var lite svårt för mig när jag först fick IC. Jag började med att hämta startladdaren härifrån och följde installationsguiden. För att bränna startladdaren gjorde jag helt enkelt samma sak som med 328 och fick hjälp härifrån. För båda IC: erna använde jag bara en Arduino Uno för både bränning av bootloader och uppladdning av koden (tog bort IC från Arduino Uno vid uppladdning).
Koden (under ArduinoSrc/HAL1284Basic) är alldeles för komplicerad för mig men jag kunde ändra några delar av koden:
Jag lade till ett par kommandon (de markerade med [A] i manualen.pdf), och jag ändrade också andra kommandon:
Ton: Tonkommandot använde precis Arduinos tonfunktion tidigare, men när du använde TVout-biblioteket orsakade detta att summern inte fungerade korrekt. Jag ändrade den för att använda TVouts tonfunktion, men det betyder att tonstiftet måste vara stift 15 (för atmega1284)
Seriell kommunikation: Eftersom tangentbordet är DIY, använder det seriell kommunikation för att läsa karaktärerna. Eftersom atmega1284 används här finns det två tillgängliga seriella kommunikationslinjer, och när "sercom" är aktiverat tillåter koden också skrivning via serieporten (från en dator eller vad som helst).
Upplösning: Bildskärmen som används för detta projekt är ganska dum, och en liten upplösning behövs, annars flimrar bilden. Om en bättre bildskärm används föreslår jag att du ändrar upplösningen i installationsfunktionen.
Steg 5: Montering
Med koden uppladdad och kretskortet och delar redo är det nu dags för montering. Alla delar jag använde var genomgående hål, så lödningen var inte så svår (i motsats till badass-SMD-lödningsgubbarna där ute). Monitorn fästes på de fyra borrhålen i kretskortet med en 3D -tryckt hållare. Om en annan bildskärm används kan de fyra borrhålen förhoppningsvis användas för att montera detta.
Bildskärmshållaren som används här är också utformad för att inrymma en vippströmbrytare (ansluten till "switch" -bygeln på kretskortet) och de tre kontrollknapparna för monitorn. Hållaren fästs med plast M3 -bultar och distanser.
För strömkontakten använde jag en JST PCB -kontakt, även om en smal fatuttag hade varit lite smidigare. För att driva kortet växlade jag mellan en 12V strömförsörjning eller tre 18650 batterier i serie. En mjukare cowboy än jag själv skulle nog kunna utforma en smidig batterihållare för brädet.
Steg 6: Buggar och framtida arbete
Piltangenter: Piltangenterna placerades av misstag och tjänar inte mycket funktion. Detta gör det svårt att navigera
File I/O: Det finns File I/O -funktioner men dessa implementeras inte. För att bekämpa detta kan programvaran HAL1284Com ladda upp filer till kortet. Det är också möjligt att ladda upp till EEPROM.
PEEK/POKE: PEEK och POKE är otestade, och jag är inte säker på vad adresserna är.
Break: Break (Esc) har ibland bråkat med hela koden i oändliga loopar.
Pin 7: PWM pin 7 kan vara svårt när du försöker att DWRITE High eller AWRITE 255. Det fungerar bra med AWRITE 254.
Idiot: Det skulle vara idealiskt att också kunna ladda upp via UART1 men uppladdning är endast möjlig via UART0, så uppladdning måste göras genom att extrahera huvud -IC. Skärm- och spänningsregulatorn 5 blir lite för varm när den körs länge.
Rekommenderad:
Handhållen nattlampa: 7 steg (med bilder)
Handhållen nattlampa: Min 5-åring fortsatte att väcka oss på natten, och vi fortsatte att föreläsa honom om att låta mamma och pappa sova tills jag insåg att han faktiskt inte kunde avgöra själv om det var sömntid eller lek Dessutom ber han oss att tända lampan.
MutantC_v2 - en enkel att bygga Raspberry Pi handhållen/UMPC: 8 steg (med bilder)
MutantC_v2 - en enkel att bygga Raspberry Pi handhållen/UMPC: En Raspberry -pi handhållen plattform med ett fysiskt tangentbord, Display och Expansion header för anpassade kort (som Arduino Shield) .mutantC_V2 är efterföljare av mutantC_V1. Kolla in mutantC_V1 härifrån. Https://mutantc.gitlab.io/https: //gitlab.com/mutant
DIY Raspberry Pi Zero handhållen spelkonsol: 6 steg (med bilder)
DIY Raspberry Pi Zero handhållen spelkonsol: I det här projektet kommer jag att visa dig hur jag använde en Raspberry Pi Zero, NiMH-batterier, en hemlagad överladdningsskyddskrets, en bakre lcd och en ljudförstärkare för att skapa en handhållen spelkonsol som kan spela retro spel. Låt oss börja
ESP32 handhållen spelkonsol: 21 steg (med bilder)
ESP32 Handheld Game Console: Denna instruktion visar hur man använder en ESP32 och ATtiny861 för att bygga en NES -emulator spelkonsol
Handhållen konsol med trådlösa kontroller och sensorer (Arduino MEGA & UNO): 10 steg (med bilder)
Handhållen konsol med trådlösa kontroller och sensorer (Arduino MEGA & UNO): Vad jag använde:- Arduino MEGA- 2x Arduino UNO- Adafruit 3.5 " TFT 320x480 pekskärm HXD8357D- summer- 4Ohm 3W högtalare- 5mm LED-lampor- Ultimaker 2+ skrivare m/ svart PLA-filament- Laserskärare m/ MDF-trä- Svart sprayfärg (för träet)- 3x nRF24