Inhaltsverzeichnis:
- Schritt 1: Funktionen
- Schritt 2: Dinge, die Sie brauchen
- Schritt 3: Brennen des Bootloaders
- Schritt 4: Aufbau der Einheit
- Schritt 5: SCHEMA
- Schritt 6: SOFTWARE LÄUFT ONBOARD
- Schritt 7: Videoclip von Mini App 'sm' Running
Video: DemUino - Heimcomputer/Controller - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Ein Arduino-inspirierter Computer von DemeterArt Machen Sie das Beste aus Ihrer alten PS2-Tastatur. Hacken Sie es in einen benutzerdefinierten PC, um Dinge zu kontrollieren! Ich wollte schon immer meinen eigenen Heimcomputer bauen, irgendwie im Retro-Stil, nichts Besonderes, aber mit besonderen Fähigkeiten, die auf meine Vorlieben zugeschnitten sind. Also bin ich mit der atmega328 MCU und dem Arduino Development Kit dazu gekommen.
Lassen Sie mich sagen, dass dieses Projekt mit zweifelhaften Endergebnissen erheblich länger gedauert hätte, wenn nicht die begabten Fans da draußen wären, die weniger egoistisch die Freeware - Bibliotheken für jedermann zur Verfügung stellen. Danke euch allen:-)
Besuchen Sie meine Website, um die ganze Geschichte zu lesen und alle relevanten Dateien herunterzuladen
www.sites.google.com/site/demeterart
Schritt 1: Funktionen
- Basierend auf dem ATMEGA328 mit 32KB Flash, 2KB SRAM und 1KB EEPROM.
- Unterstützung für interaktive und Batch-Modi
- Zeileneditor und Listen-beim-Bearbeitungsmodus
- 8 benutzerdefinierte Zeichen für Benutzergrafiken
- 60 Programmschritte mit den Nummern 00, …, 99
- Bedingte „If“-, „while“- und „for“-Schleifen sowie „goto“- und „sub“-Anweisungen zum Verzweigen
- Grundlegende arithmetische und mathematische Ausdrücke sowie Boolesche Tests
- Systemvariablen ermöglichen zeitgesteuerte Ereignisse, Durchschnitts-, Effektiv-, Min- und Max-Werte von analogen Pins usw.
- 26 Benutzervariablen zur Interaktion mit Systemvariablen und Befehlen
- 104 Bytes eines vom Benutzer adressierbaren Arrays oder 52 Short Integers
- Fähigkeit, Programmdaten sowie Code on-the-fly zu lesen/schreiben (p-Variable)
- Mini-Oszilloskop-App mit benutzerdefinierten Zeichen für Pseudografiken
- Programme und Daten in/vom EEPROM speichern und laden
- Programme und Variablen vom/auf PC laden/speichern
- autoexec zum Laden und Ausführen eines Programms vom EEPROM nach jedem Reset
- 9 GPIO-Pins (SPI enthalten) am externen DB15-Anschluss verfügbar
- SUMMER für Soundeffekte
Schritt 2: Dinge, die Sie brauchen
Eine alte PS/2-Tastatur, die dick genug ist, um die PCB-LCD-Zeichenanzeige (das beliebte parallele Format) aufzunehmen Anschlüsse usw
Schritt 3: Brennen des Bootloaders
Nach dem Kauf eines „leeren“atmega328PU-Chips muss also eine Entscheidung getroffen werden. Benutze ich einen speziellen Programmierer, entweder extern oder ISP, oder brenne ich den Arduino-Bootloader in das Biest und mache das Gerät über seinen UART-Port programmierbar? Ich habe mich für letzteres entschieden, um mir das Leben zu erleichtern! Der neue Bootloader belegt nur ein halbes Kilobyte Flash-Speicher, so dass etwas mehr als 31 KB Anwenderprogramm und statische Daten zur Verfügung stehen. Die Arduino-Site behandelt den Fall des Brennens des Bootloaders auf einem neuen Chip. Wenn es darum ging, avrdude zum tatsächlichen Brennen des Zielchips zu verwenden, schlug der Prozess mit einem Fehler fehl, der die falsche ID für die jeweilige MCU angibt. Nach einigem Suchen fand ich also diesen Typen, der es richtig gemacht hatte, und ich folgte seinem Verfahren. Der einzige Unterschied waren 2 Konfigurationsdateien, avrdude.conf und board.txt, die von avrdude und arduino IDE 1.0.1 benötigt werden, um dies zu ermöglichen. Nach dem Kopieren der 2 Dateien an die richtigen Speicherorte (zuerst die alten sichern) war die Option ‚arduino328‘von Tools-> Board verfügbar und avrdude fuhr mit dem Brennen der Sicherungen und des Bootloaders fort. Jetzt kann der Chip aus der neuen Maschine heraus programmiert werden!
Schritt 4: Aufbau der Einheit
Als schnelle Bestückungslösung wurde eine Lochplatte mit Kupferstreifen mit DIP-Sockel für die Chips verwendet, für alle Fälle! Dann wurden die Löcher und Schnitte für die Anschlüsse, den Reset-Knopf und das LCD-Display durch den extrem stabilen und dicken Kunststoff der Tastatur geöffnet. Ja, das wurde vor 25 Jahren gebaut! Es folgte das Durcheinander von Drähten, die von der Leiterplatte zu den verschiedenen Peripheriegeräten ausgingen. Eine rudimentäre Durchgangsprüfung und dann wurde die Versorgung ohne bestückte Chips angeschlossen, nur um die Steckdosen auf richtige Spannungen zu überprüfen. Dann kamen die 2 ICs rein und das Tastaturgehäuse wurde über seine Kunststoff-Druckknöpfe an der Unterseite fest verschlossen. Das Gerät war bereit, Skizzen im Controller zu brennen!
Ich schlage vor, für die MAX232-Ladungspumpen unpolare 1uF/16V-Kondensatoren zu verwenden. Suchen Sie die 100nF-Entkopplungskondensatoren für die beiden Chips so nah wie möglich an den jeweiligen VCC- und GND-Pins. Verwenden Sie eine Sternverbindung für Strom und Masse bezogen auf den Regler LM7805. Schalter 2 kann je nach Impementation ein Jumper sein, aber es ist gut, ihn zu haben, allein schon, um in bestimmten Fällen ungewollte MCU-Resets vom Host-PC zu vermeiden. Auf jeden Fall muss der Schalter geschlossen sein, damit die Arduino IDE die Skizze durch Zurücksetzen der Ziel-MCU (Pin DTR von RS232) brennen kann. In meinem Fall ist die Verbindung permanent (immer geschlossen). Verwenden Sie einen Vorwiderstand für den Summer, um die mehreren nFs der Kapazität vom Antriebsgate zu isolieren … man weiß nie.. Platzieren Sie den XTAL und die ladenden 18-22pF-Kondensatoren so nah wie möglich an den jeweiligen Pins des Controllers.
Aufgrund der Gleichrichterbrücke kann das Gerät sowohl über AC- als auch über DC-Netzteile betrieben werden. Bei Gleichstrom liegt zwischen dem Adapter und dem Eingang des Reglers ein Spannungsabfall von 1,5 V vor. Bei Wechselstrom beträgt der Eingang des Reglers aufgrund der Belastung etwa das 1,4-fache des RMS-Ausgangs des Adapters oder weniger. Wenn die Differenz zwischen dem Eingang des Reglers und seinem Ausgang (+5V) groß ist, sagen wir 7 Volt, dann nähert sich die vom Regler aufgenommene Leistung 0,5 Watt und es ist besser, einen kleinen Kühlkörper zu verwenden, auf dem der Chip montiert wird (vorausgesetzt) es ist Platz dafür) für lange Betriebsstunden bei heißem Wetter.
Die AC-Eingangssicherung kann abhängig von Ihren externen Lasten (über den DB15-Anschluss) ausgewählt werden. Weitere Faktoren, die die Sicherungsauswahl beeinflussen, sind der Strombegrenzungswiderstand für die LED-Hintergrundbeleuchtung des LCD, der Brückenkondensator für den Ladestrom und die Strombelastbarkeit des speisenden Transformators.
Schritt 5: SCHEMA
Schritt 6: SOFTWARE LÄUFT ONBOARD
Dies ist die Skizze, die alles möglich macht … und 32 KB sind NICHT genug! Sie können es entweder unverändert verwenden, in diesem Fall würde ich mich über einen Hinweis auf meinen Namen freuen, oder ihn nach Belieben ändern und mich vergessen;-)
Dies ist die ausführliche Dokumentation zur Maschine.
Zusammenfassung der Befehle und Ausdrücke
“: eine nicht druckbare Kommentarzeile
ai: Interrupt 0 anhängen (Pin D2)
ar: analog lesen
aw: 'analog write' per arduino oder richtiger pwm
ca: analoge Erfassung in einem Array
cl: löscht die Anzeige cno: return *Prgm Index der Zeilennummer
di: auf eine Reihe von Impulsen warten und Dauer und Timing messen
dl: Verzögerung
do: in Verbindung mit „wh“
dr: digital jeden Pin lesen
dw: digital jeden Pin schreiben
ed: Editormodus / Programm vom PC laden / Zeilen neu nummerieren
el: EEPROM-Zugriffsfunktion
end: die END-Anweisung eines Programms
ensb: beendet Unterprogramm
es: EEPROM-Zugriffsfunktion
fl: einfacher gleitender Durchschnitt Filter
fr: for-nächste Schleife (fr-nx)
go: zum Programmschritt springen
gosb: Ausführung bis Unterprogramm fortsetzen
gt: wartet auf Benutzereingaben
if: Bedingung testen und zu Schritt springen
io: GPIO 1-9 Bit
ld: Programm aus EEPROM laden/zusammenführen
lp:: tastaturgesteuerte Schleife im interaktiven Modus
ls: Listenmodus / Programm zeilenweise an PC senden
ml: Zeit bekommen
mm: freien Speicher anzeigen
nos: wandelt Zahl in String um
nx: in Verbindung mit „fr“
pl: Plot-Array cxx
pm: Pins für Ein- oder Ausgang setzen
pr: druckt eine Nachricht oder einen Wert oder ein benutzerdefiniertes Zeichen
rgc: Bereichskopierbefehl für Arrays
rgs: Range-Set-Befehl für Arrays
rn: Programm im RAM ausführen
rs: Soft-Reset
rx: ein Zeichen über RS232 empfangen
si: synchroner serieller Eingang mit Takt- und Datenpins
sm: Mini-Oszilloskop-App sno: Wandelt String in Zahl um
also: synchroner serieller Ausgang mit Takt- und Datenpins
sub: deklariert Unterprogramm
sv: Programm im EEPROM speichern
tn: einen Ton piepen
tx: eine Nummer über RS232 übertragen
wh: eine do-while-Schleife, die in Verbindung mit 'do' verwendet wird
Schritt 7: Videoclip von Mini App 'sm' Running
Besuchen Sie meine Website, um die ganze Geschichte zu lesen und alle relevanten Dateien herunterzuladen
www.sites.google.com/site/demeterart