Innehållsförteckning:

DemUino - Hemmadator/styrenhet: 7 steg
DemUino - Hemmadator/styrenhet: 7 steg

Video: DemUino - Hemmadator/styrenhet: 7 steg

Video: DemUino - Hemmadator/styrenhet: 7 steg
Video: DemUino 2024, November
Anonim
Image
Image
Burning the Bootloader
Burning the Bootloader

En Arduino -inspirerad dator från DemeterArt Få ut det mesta av ditt gamla PS2 -tangentbord. Hacka in den i en anpassad persondator för att styra saker! Jag har alltid velat bygga min egen hemdator, i retrostil, inget speciellt men med speciella funktioner anpassade efter mina preferenser. Så jag fick det med atmega328 MCU och Arduino -utvecklingssatsen.

Låt mig konstatera att det här projektet skulle ha tagit betydligt längre tid med tvivelaktiga slutresultat om det inte vore för begåvade fans där ute som mindre egoistiskt tillhandahåller gratisbiblioteken för alla att använda. Tack allihopa:-)

Besök min webbplats för att läsa hela historien och ladda ner alla relevanta filer

www.sites.google.com/site/demeterart

Steg 1: Funktioner

  • Baserat på ATMEGA328 med 32KB blixt, 2KB SRAM och 1KB EEPROM.
  • stöd för interaktiva och batch -lägen
  • radredigerare och list-medan-redigeringsläge
  • 8 anpassade tecken för användargrafik
  • 60 programsteg numrerade 00,…, 99
  • "Om" villkorade, "medan" och "för" slingor plus "gå" och "sub" uttalanden för förgrening
  • Grundläggande aritmetiska och matematiska uttryck plus booleska tester
  • systemvariabler möjliggör tidsinställda händelser, genomsnitt, rms, min och max värden från analoga stift, etc.
  • 26 användarvariabler för att interagera med systemvariabler och kommandon
  • 104 byte i en användaradresserbar array eller 52 korta heltal
  • förmåga att läsa/skriva programdata samt koda i farten (p-variabel)
  • mini -oscilloskop -app med anpassade tecken för pseudografik
  • spara och ladda program och data till/från EEPROM
  • ladda/spara program och variabler från/till PC
  • autoexec för att ladda och köra ett program från EEPROM efter varje återställning
  • 9 GPIO -stift (SPI ingår) tillgängliga på extern DB15 -kontakt
  • BUZZER för ljudeffekter

Steg 2: Saker du behöver

Ett gammalt ps/2 -tangentbord tillräckligt tjockt för att rymma PCB -LCD -teckenskärmen (det populära parallella formatet) MAX232 -chip för RS232 -port atmel atmega328PU Arduino -utvecklingssats med IDE 1.0.1 LM7805 -regulator 5V summer -brygglikriktare, kondensatorer, en återställningsknapp, kontakter osv

Steg 3: Burning the Bootloader

Så efter att ha köpt ett "tomt" atmega328PU -chip finns det ett beslut att fatta. Använder jag en speciell programmerare antingen extern eller Internetleverantör eller bränner jag Arduino bootloader i vilddjuret och gör enheten programmerbar via dess UART -port? Jag valde det senare för att göra mitt liv enklare! Den nya bootloadern upptar bara en halv kilobyte flashminne och lämnar lite mer än 31 KB användarprogram och statisk data tillgänglig. Arduino -webbplatsen täcker fallet med att bränna startladdaren på ett nytt chip, när det gällde att använda avrdude för att faktiskt bränna målchipet misslyckades processen med ett fel som indikerade fel id för den specifika MCU. Så efter lite sökning hittade jag den här killen som fick rätt och jag följde hans procedur. Den enda skillnaden var 2 konfigurationsfiler, avrdude.conf och boards.txt som avrdude och arduino IDE 1.0.1 behövde för att göra det möjligt. Efter att ha kopierat de 2 filerna till sina rätta platser (säkerhetskopiera de gamla först) var alternativet 'arduino328' från verktygs-> Board tillgängligt och avrdude fortsatte med att bränna säkringarna och startladdaren. Nu är chippet klart att programmeras inifrån den nya maskinen!

Steg 4: Bygg enheten

Bygga enheten
Bygga enheten
Bygga enheten
Bygga enheten

En perforerad skiva med kopparremsor användes som en snabb monteringslösning med DIP -uttag för chipsen, du vet, för säkerhets skull! Sedan öppnades hålen och skärningarna för kontakterna, återställningsknappen och LCD -displayen genom tangentbordets extremt robusta och tjocka plast. Ja, den byggdes för 25 år sedan! Det följde röran av ledningar som kom från kretskortet mot de olika kringutrustningen. En rudimentär kontinuitetskontroll och sedan var strömförsörjningen ansluten utan att några marker fyllts i bara för att kontrollera uttagen för korrekta spänningar. Sedan kom de 2 IC: erna och tangentbordshöljet stängdes ordentligt via sina plastsnäppar längst ner. Enheten var redo att bränna skisser i styrenheten!

Jag föreslår att man använder opolära 1uF/16V kondensatorer för MAX232 laddningspumpar. Leta reda på 100nF -avkopplingskondensatorerna för de två chipsen så nära som möjligt till respektive VCC- och GND -stift. Använd en stjärnanslutning för ström och mark som refereras till LM7805 -regulatorn. Switch 2 kan vara en bygel beroende på impementation men det är bra att ha, om än bara för att undvika oönskade MCU -återställningar från värddatorn i vissa fall. Hur som helst måste omkopplaren vara stängd för att Arduino IDE ska kunna bränna skissen genom att återställa mål -MCU (stift DTR på RS232). I mitt fall är anslutningen permanent (alltid stängd). Använd ett seriemotstånd för summern för att isolera flera nF-kapacitans från drivporten … du vet aldrig.. Lokalisera XTAL- och laddnings 18-22pF-kondensatorerna så nära som möjligt till respektive stift på regulatorn.

På grund av likriktarbryggan kan enheten drivas av både AC- och DC -nätadaptrar. Vid DC finns det ett 1,5 V spänningsfall mellan adaptern och ingången till regulatorn. Vid AC är ingången till regulatorn cirka 1,4 gånger RMS -utgången från adaptern eller mindre på grund av laddning. Om skillnaden mellan regulatorns ingång och dess utgång (+5V) är stor, säg 7 volt, närmar sig den effekt som regulatorn förbrukar 0,5 watt och det är bättre att använda en liten kylfläns för att montera chipet (förutsatt att det finns plats för det) för långa drifttimmar i varmt väder.

AC -ingångssäkringen kan väljas beroende på dina externa belastningar (via DB15 -kontakten). Andra faktorer som påverkar valet av säkringar är strömbegränsningsmotståndet för LED -bakgrundsbelysningen på LCD -skärmen, bryggkondensatorn för laddningsströmmen och strömkapaciteten hos matningstransformatorn.

Steg 5: SCHEMATISK

SCHEMATISK
SCHEMATISK

Steg 6: PROGRAMVARA KÖR OMBORD

Detta är skissen som får allt att hända … och 32KB räcker INTE! Du kan antingen använda det omodifierat, i så fall skulle jag uppskatta en referens till mitt namn, eller ändra det efter behag och glömma bort mig;-)

Detta är den detaljerade dokumentationen om maskinen.

Sammanfattning av kommandon och uttryck

“: En kommentar som inte går att skriva ut

ai: fäst avbrott 0 (stift D2)

ar: analog läsning

aw: 'analog skrivning' per arduino eller mer korrekt pwm

ca: analog fångst i en array

cl: rensar displayen cno: return *Prgm index för radnummer

di: vänta på en serie pulser och mät varaktighet och timing

dl: fördröjning

göra: i samband med ‘wh’

dr: digital läs vilken pin som helst

dw: digital skriva vilken pin som helst

ed: editor mode / load program from PC / renumber lines

el: EEPROM -åtkomstfunktion

slut: END -uttalandet för ett program

ensb: slutar subrutin

es: EEPROM -åtkomstfunktion

fl: enkelt filter för glidande medelvärde

fr: för-nästa slinga (fr-nx)

gå: hoppa till programsteg

gosb: fortsätt körningen till underrutin

gt: väntar på användarinmatning

if: testa skick och hoppa till steg

io: GPIO 1-9 bitar

ld: ladda/slå samman program från EEPROM

lp:: tangentbordstyrd slinga i interaktivt läge

ls: listläge / skicka program till dator en rad i taget

ml: få tid

mm: visa ledigt minne

nr: konverterar tal till sträng

nx: i samband med ‘fr’

pl: plot array cxx

pm: ställ in stift för in eller ut

pr: skriver ut ett meddelande eller värde eller anpassat tecken

rgc: kommando för områdeskopiering för matriser

rgs: range set -kommando för matriser

rn: kör programmet i RAM

rs: mjuk återställning

rx: ta emot ett tecken via RS232

si: synkron seriell ingång med klocka och datapinnar

sm: mini oscilloskop app sno: konverterar sträng till tal

alltså: synkron serieutgång med klocka och datapinnar

sub: förklarar subroutine

sv: spara programmet i EEPROM

tn: pip en ton

tx: skicka ett nummer via RS232

wh: en do-while-slinga som används tillsammans med "do"

Steg 7: Videoklipp av Mini App 'sm' Running

Besök min webbplats för att läsa hela historien och ladda ner alla relevanta filer

www.sites.google.com/site/demeterart

Rekommenderad: