Inhoudsopgave:
- Stap 1: Functies:
- Stap 2: Spullen die je nodig hebt
- Stap 3: De Bootloader branden
- Stap 4: De eenheid bouwen
- Stap 5: SCHEMA
- Stap 6: SOFTWARE DIE AAN BOORD WERKT
- Stap 7: Videoclip van Mini App 'sm' Running
Video: DemUino - Thuiscomputer/controller - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Een op Arduino geïnspireerde computer van DemeterArt Haal het meeste uit je oude PS2-toetsenbord. Hack het in een aangepaste personal computer om dingen te besturen! Ik heb altijd al mijn eigen thuiscomputer willen bouwen, een soort retro-stijl, niets bijzonders, maar met specifieke mogelijkheden die zijn afgestemd op mijn voorkeuren. Dus ik kwam aan de slag met de atmega328 MCU en de Arduino-ontwikkelkit.
Laat me zeggen dat dit project aanzienlijk langer zou hebben geduurd met twijfelachtige eindresultaten als het niet voor de begaafde fans was die egoïstisch minder de freeware-bibliotheken leveren die iedereen kan gebruiken. Bedankt iedereen:-)
bezoek mijn site om het hele verhaal te lezen en alle relevante bestanden te downloaden
www.sites.google.com/site/demeterart
Stap 1: Functies:
- Gebaseerd op de ATMEGA328 met 32KB flash, 2KB SRAM en 1KB EEPROM.
- ondersteuning voor interactieve en batchmodi
- regeleditor en lijst-terwijl-bewerkmodus
- 8 aangepaste tekens voor gebruikersafbeeldingen
- 60 programmastappen genummerd 00, …, 99
- 'If' voorwaardelijke, 'while' en 'for' lussen plus 'goto' en 'sub' statements voor vertakking
- Basis rekenkundige en wiskundige uitdrukkingen plus booleaanse tests
- systeemvariabelen zorgen voor getimede gebeurtenissen, gemiddelde, rms, min en max waarden van analoge pinnen, enz.
- 26 gebruikersvariabelen voor interactie met systeemvariabelen en opdrachten
- 104 bytes van een door de gebruiker adresseerbare array of 52 korte gehele getallen
- mogelijkheid om programmagegevens en code on-the-fly te lezen/schrijven (p-variabele)
- mini-oscilloscoop-app met aangepaste tekens voor pseudo-graphics
- programma's en gegevens opslaan en laden van/naar EEPROM
- programma's en variabelen laden/opslaan van/naar pc
- autoexec in het laden en uitvoeren van een programma vanuit EEPROM na elke reset
- 9 GPIO-pinnen (inclusief SPI) beschikbaar op externe DB15-connector
- BUZZER voor geluidseffecten
Stap 2: Spullen die je nodig hebt
Een oud ps/2-toetsenbord dat dik genoeg is om het pcb-lcd-karakterdisplay (het populaire parallelle formaat) te huisvesten MAX232-chip voor RS232-poort atmel atmega328PU Arduino-ontwikkelkit met IDE 1.0.1 LM7805-regelaar 5V zoemerbruggelijkrichter, condensatoren, een reset-drukknop, connectoren enz
Stap 3: De Bootloader branden
Dus na een 'lege' atmega328PU-chip te hebben gekocht, moet er een beslissing worden genomen. Gebruik ik een speciale programmer, extern of ISP, of brand ik de Arduino-bootloader in het beest en maak ik de eenheid programmeerbaar via de UART-poort? Ik koos voor het laatste om mijn leven gemakkelijker te maken! De nieuwe bootloader neemt slechts een halve kilobyte flash-geheugen in beslag, waardoor er iets meer dan 31 KB aan gebruikersprogramma en statische data beschikbaar is. De Arduino-site behandelt het geval van het branden van de bootloader op een nieuwe chip, als het ging om het gebruik van avrdude om de doelchip daadwerkelijk te branden, mislukte het proces met een fout die de verkeerde id voor de specifieke MCU aangaf. Dus na wat zoeken vond ik deze man die het goed had en ik volgde zijn procedure. Het enige verschil waren 2 configuratiebestanden, avrdude.conf en boards.txt die avrdude en arduino IDE 1.0.1 nodig hadden om het mogelijk te maken. Na het kopiëren van de 2 bestanden naar hun juiste locaties (eerst een back-up van de oude maken) was de optie 'arduino328' van tools->Board beschikbaar en ging avrdude verder met het branden van de zekeringen en de bootloader. Nu is de chip klaar om te worden geprogrammeerd vanuit de nieuwe machine!
Stap 4: De eenheid bouwen
Een geperforeerde plaat met koperen strips werd gebruikt als snelle montageoplossing met DIP-sockets voor de chips, weet je, voor het geval dat! Vervolgens werden de gaten en inkepingen voor de connectoren, de resetknop en het LCD-scherm geopend door het extreem stevige en dikke plastic van het toetsenbord. Ja, dat is 25 jaar geleden gebouwd! Daarna volgde de warboel van draden die van de pcb naar de verschillende randapparatuur kwamen. Een rudimentaire continuïteitscontrole en vervolgens werd de voeding aangesloten zonder chips, alleen om de sockets te controleren op de juiste spanningen. Toen kwamen de 2 IC's en de toetsenbordbehuizing was stevig gesloten via de plastic drukknopen aan de onderkant. De unit was klaar om schetsen in de controller te branden!
Ik stel voor dat men niet-polaire 1uF/16V-condensatoren gebruikt voor de MAX232-laadpompen. Plaats de 100nF ontkoppelcondensatoren voor de twee chips zo dicht mogelijk bij de respectievelijke VCC- en GND-pinnen. Gebruik een sterverbinding voor de voeding en aarde die verwijzen naar de LM7805-regelaar. Switch 2 kan een jumper zijn, afhankelijk van impementatie, maar het is goed om te hebben, al was het maar om in bepaalde gevallen ongewenste MCU-resets van de host-pc te voorkomen. In ieder geval moet de schakelaar gesloten zijn zodat de Arduino IDE de schets kan branden via het resetten van de doel-MCU (pin DTR van RS232). In mijn geval is de verbinding permanent (altijd gesloten). Gebruik een serieweerstand voor de zoemer om de verschillende nF's van capaciteit te isoleren van de aandrijfpoort … je weet maar nooit … Plaats de XTAL en de ladende 18-22 pF-condensatoren zo dicht mogelijk bij de respectieve pinnen van de controller.
Vanwege de gelijkrichtbrug kan het apparaat worden gevoed door zowel AC- als DC-stroomadapters. Bij DC is er een spanningsval van 1,5 V tussen de adapter en de ingang naar de regelaar. In het geval van AC is de ingang van de regelaar ongeveer 1,4 keer de RMS-uitgang van de adapter of minder vanwege belasting. Als het verschil tussen de ingang van de regelaar en de uitgang (+5V) groot is, zeg 7 volt, dan benadert het stroomverbruik van de regelaar 0,5 watt en is het beter om een kleine koelplaat te gebruiken waarop de chip kan worden gemonteerd (mits er is ruimte voor) voor lange gebruiksuren bij warm weer.
De AC-ingangszekering kan worden geselecteerd afhankelijk van uw externe belastingen (via de DB15-connector). Andere factoren die de keuze van de zekering beïnvloeden, zijn de stroombegrenzende weerstand voor de LED-achtergrondverlichting van het LCD-scherm, de brugcondensator voor de laadstroom en de stroomcapaciteit van de voedende transformator.
Stap 5: SCHEMA
Stap 6: SOFTWARE DIE AAN BOORD WERKT
Dit is de schets die het allemaal mogelijk maakt … en 32 KB is NIET genoeg! Je kunt het ongewijzigd gebruiken, in welk geval ik een verwijzing naar mijn naam op prijs zou stellen, of het naar believen veranderen en mij vergeten;-)
Dit is de gedetailleerde documentatie over de machine.
Samenvatting van opdrachten en uitdrukkingen
“: een niet-afdrukbare commentaarregel
ai: voeg interrupt 0 toe (pin D2)
ar: analoog lezen
aw: 'analoog schrijven' per arduino of beter gezegd pwm
ca: analoge opname in een array
cl: wist het scherm cno: return *Prgm index van regelnummer
di: wacht op een reeks pulsen en meet de duur en timing
dl: vertraging
do: in combinatie met 'wh'
dr: digitaal lees elke pin
dw: digitale schrijf elke pin
ed: editormodus / programma laden vanaf pc / regels hernummeren
el: EEPROM-toegangsfunctie
end: de END-instructie van een programma
ensb: beëindigt subroutine
es: EEPROM-toegangsfunctie
fl: eenvoudig voortschrijdend gemiddelde filter
fr: voor-volgende lus (fr-nx)
ga: ga naar programmastap
gosb: ga door met de uitvoering naar de subroutine
gt: wacht op gebruikersinvoer
indien: testconditie en ga naar stap
io: GPIO 1-9 bits
ld: programma laden/samenvoegen vanuit EEPROM
lp:: toetsenbordgestuurde lus in interactieve modus
ls: lijstmodus / programma per regel naar pc verzenden
ml: tijd krijgen
mm: vrij geheugen weergeven
nos: converteert getal naar tekenreeks
nx: in combinatie met 'fr'
pl: plot array cxx
pm: stel pinnen in voor in of output
pr: drukt een bericht of waarde of aangepast teken af
rgc: opdracht voor bereikkopie voor arrays
rgs: range set commando voor arrays
rn: voer het programma uit in RAM
rs: zachte reset
rx: ontvang een karakter via RS232
si: synchrone seriële ingang met klok- en datapinnen
sm: mini-oscilloscoop-app sno: zet string om in getal
dus: synchrone seriële uitgang met klok- en datapinnen
sub: declareert subroutine
sv: programma opslaan in EEPROM
tn: piep een toon
tx: een nummer verzenden via RS232
wh: een do-while-lus die wordt gebruikt in combinatie met 'do'
Stap 7: Videoclip van Mini App 'sm' Running
bezoek mijn site om het hele verhaal te lezen en alle relevante bestanden te downloaden
www.sites.google.com/site/demeterart