Inhaltsverzeichnis:

DemUino - Heimcomputer/Controller - Gunook
DemUino - Heimcomputer/Controller - Gunook

Video: DemUino - Heimcomputer/Controller - Gunook

Video: DemUino - Heimcomputer/Controller - Gunook
Video: Gamepad - Commotron DELUXE WIRELESS GAMEPAD CONTROLLER TURBO 2000 SUPER - [Folge 39] 2024, Juli
Anonim
Image
Image
Brennen des Bootloaders
Brennen des Bootloaders

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

Aufbau der Einheit
Aufbau der Einheit
Aufbau der Einheit
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

SCHEMA
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