Inhaltsverzeichnis:

Handheld BASIC Computer - Gunook
Handheld BASIC Computer - Gunook

Video: Handheld BASIC Computer - Gunook

Video: Handheld BASIC Computer - Gunook
Video: FASCIQ massage gun mini | FysioTape 2024, Kann
Anonim
Handheld-BASIC-Computer
Handheld-BASIC-Computer
Handheld-BASIC-Computer
Handheld-BASIC-Computer

Dieses Instructable beschreibt meinen Prozess des Bauens eines kleinen Handheld-Computers mit BASIC. Der Computer ist um den ATmega 1284P AVR-Chip herum gebaut, der auch den albernen Namen für den Computer inspiriert hat (HAL 1284).

Dieser Build ist stark von dem erstaunlichen Projekt hier und dem SuperCON BASIC Badge inspiriert.

Auf dem Computer läuft eine modifizierte Version von TinyBasic, obwohl ein Großteil der Software auf dem Projekt von dan14 basiert. Sie können diesem Instructable natürlich folgen oder noch besser, es verbessern, da ich ein paar Fehler gemacht habe.

Für dieses Projekt habe ich auch ein Handbuch erstellt. Es erwähnt einige Fehler und Besonderheiten für den ausgewählten Monitor, aber vor allem enthält es die Liste der BASIC-Operationen.

Nachdem dies veröffentlicht wurde, habe ich ein Video gemacht, das das Projekt vorstellt.

Schritt 1: Teile, die ich verwendet habe

Teile, die ich verwendet habe
Teile, die ich verwendet habe
Teile, die ich verwendet habe
Teile, die ich verwendet habe
Teile, die ich verwendet habe
Teile, die ich verwendet habe

Für den Haupt-IC:

  • ATmega 1284P
  • 16MHz Quarz
  • 2x 22pf Keramikkondensator
  • 10KΩ Widerstand (für Reset Pull-Up)
  • 4-Pin-Taste (zum Zurücksetzen)
  • 470Ω-Reistor (für Composite-Video)
  • 1kΩ Widerstand (für Composite-Video-Sync)
  • 3-poliger Jumper (für Videosignal)
  • Passiver Summer

Zur Tastatursteuerung:

  • ATmega 328P (wie die im Arduino Uno verwendeten)
  • 16MHz Quarz
  • 2x 22pf Keramikkondensator
  • 12x 10KΩ Widerstand (für Reset Pull-Up und Tasten)
  • 51x 4-Pin-Taste (Für die eigentliche Tastatur)

Für die Macht:

  • L7805 Spannungsregler
  • 3mm LED
  • 220Ω Widerstand (für LED)
  • 2x 0,1µF Elektrolytkondensator
  • 0,22 µF Elektrolytkondensator (Sie könnten diesen 0,22 und einen 0,1 durch einen 0,33 ersetzen. Mir wurde auch gesagt, dass die Werte nicht wirklich wichtig sind, aber ich bin nicht gut mit Kondensatoren)
  • 2x 2-poliger Jumper (für Stromeingang und für Hauptschalter)

GPIO (Vielleicht noch ein paar Gründe hinzufügen):

  • 7-poliger Jumper
  • 2x 8-poliger Jumper
  • 2-poliger Jumper (für 5V und GND)
  • 3-4-poliger Jumper (für serielle Kommunikation)

Nicht-PCB:

  • 4" LCD Display mit Composite Video (meiner hatte eine Eingangsspannung zwischen 7-30V)
  • 3D gedruckter Halter für Display
  • Eine Art Schalter

Schritt 2: Die Schaltung

Die Rennbahn
Die Rennbahn

Die Strecke ist nicht sehr schön und ein Großteil der Haupt-IC-Region ist von dan14 inspiriert. Davon abgesehen ist es ein ziemlich unkomplizierter Arduino auf einer Breadboard-Schaltung. Die Tastatur ist ein einfaches Raster und wird vom ATmega328 gesteuert. Die beiden AVR-Chips kommunizieren über die UART Serial Pins.

Sowohl ein Bild als auch meine Eagle-Dateien sind angehängt und werden hoffentlich ausreichen, um die Schaltung neu zu erstellen. Wenn nicht, können Sie mich gerne informieren und ich werde das Instructable aktualisieren.

Schritt 3: Die Platine

Die Platine
Die Platine
Die Platine
Die Platine

Die Platine ist 2-lagig und mit Auto Route erstellt (Oh, was für ein Arschloch!). Es verfügt über Tasten und eine Betriebsanzeige-LED auf der Vorderseite und den Rest auf der Rückseite. Ich habe meine Platine mit JCL PCB herstellen lassen, und sie haben einen tollen Job damit gemacht. Die Dateien, die benötigt werden, um die Platine neu zu erstellen, sollten sich in den Eagle-Dateien von zuvor befinden.

Ich würde vorschlagen, dass Sie die Platine neu gestalten, da ich einige Dinge habe, die ich gerne anders gemacht hätte. Wenn Ihnen mein Design gefällt, habe ich (zum Zeitpunkt des Schreibens) noch vier unbenutzte Boards, die ich gerne verkaufen möchte.

Die Platine hat vier Bohrlöcher, die ich für die Montage des LCD-Displays verwendet habe.

Schritt 4: Hochladen des Codes

Hochladen des Codes
Hochladen des Codes
Hochladen des Codes
Hochladen des Codes
Hochladen des Codes
Hochladen des Codes

Sowohl die 1284 als auch die 328 benötigen natürlich Code und den von mir verwendeten Code finden Sie hier: https://github.com/PlainOldAnders/HAL1284 unter ArduinoSrc/src. Ich habe einfach die Arduino-IDE zum Ändern und Hochladen des Codes verwendet, aber bevor dies möglich ist, müssen Sie Bootloader auf den ICs brennen:

ATMega328:

Dieser ist einfach in dem Sinne, dass es eine Menge Unterstützung gibt, wie man einen Bootloader brennt und Code auf diesen IC hochlädt. Normalerweise folge ich dieser Anleitung, hauptsächlich weil ich die Besonderheiten immer wieder vergesse.

Der Code für den 328 (unter ArduinoSrc/keypad) ist ziemlich einfach. Es verlässt sich vollständig auf die Adafruit_Keypad-Master-Bibliothek. Für den Fall, dass sich an der lib etwas ändert, habe ich die Version, die ich auf meiner Github-Seite verwendet habe, unter ArduinoSrc/lib eingefügt.

ATmega1284:

Das war ein bisschen schwierig für mich, als ich das erste Mal den IC bekam. Ich begann damit, den Bootloader von hier zu bekommen, und folgte der Installationsanleitung. Um den Bootloader zu brennen, habe ich einfach das gleiche wie beim 328 gemacht und mir von hier Hilfe geholt. Für beide ICs habe ich nur ein Arduino Uno verwendet, um sowohl den Bootloader zu brennen als auch den Code hochzuladen (IC vom Arduino Uno beim Hochladen entfernt).

Der Code (unter ArduinoSrc/HAL1284Basic) ist mir viel zu kompliziert, aber ich konnte einige Teile des Codes ändern:

Ich habe ein paar Befehle hinzugefügt (die mit [A] in der manual.pdf gekennzeichneten) und ich habe auch andere Befehle geändert:

Tone: Der Tone-Befehl verwendete zuvor nur die Tonfunktion von Arduino, aber bei Verwendung der TVout-Bibliothek führte dies dazu, dass der Summer nicht richtig funktionierte. Ich habe es geändert, um die Tonfunktion von TVout zu verwenden, aber das bedeutet, dass der Ton-Pin Pin 15 sein muss (für den atmega1284).

Serielle Kommunikation: Da die Tastatur DIY ist, verwendet sie die serielle Kommunikation zum Lesen der Zeichen. Da hier der atmega1284 verwendet wird, stehen zwei serielle Kommunikationsleitungen zur Verfügung, und wenn "sercom" aktiviert ist, ermöglicht der Code auch das Schreiben über die serielle Schnittstelle (von einem Computer oder was auch immer).

Auflösung: Der für dieses Projekt verwendete Monitor ist ziemlich dumm, und es wird eine kleine Auflösung benötigt, sonst flimmert das Bild. Wenn ein besserer Monitor verwendet wird, würde ich vorschlagen, die Auflösung in der Setup-Funktion zu ändern.

Schritt 5: Montage

Montage
Montage
Montage
Montage
Montage
Montage

Nachdem der Code hochgeladen und die Leiterplatte und die Teile fertig sind, ist es jetzt Zeit für die Montage. Alle Teile, die ich verwendet habe, waren Durchgangslöcher, so dass das Löten nicht zu schwierig war (im Gegensatz zu den knallharten SMD-Lötkolben da draußen). Der Monitor wurde mit einem 3D-gedruckten Halter an den vier Bohrlöchern in der Platine befestigt. Wird ein anderer Monitor verwendet, können die vier Bohrlöcher hoffentlich zur Befestigung genutzt werden.

Der hier verwendete Monitorhalter ist auch für die Aufnahme eines Kippschalters (verbunden mit dem Jumper "Switch" auf der Platine) und der drei Bedientasten für den Monitor vorgesehen. Der Halter wird mit Kunststoffschrauben M3 und Distanzstücken befestigt.

Für den Netzstecker habe ich einen JST-Leiterplattenstecker verwendet, obwohl eine glatte Fassbuchse etwas glatter gewesen wäre. Um das Board mit Strom zu versorgen, habe ich zwischen einem 12-V-Netzteil oder drei 18650-Batterien in Reihe geschaltet. Ein ruhigerer Cowboy als ich könnte wahrscheinlich einen glatten Batteriehalter für das Board entwerfen.

Schritt 6: Fehler und zukünftige Arbeit

Pfeiltasten: Die Pfeiltasten wurden versehentlich platziert und haben nicht viel Funktion. Dies erschwert die Navigation

Datei-I/O: Es gibt Datei-I/O-Funktionen, die jedoch nicht implementiert sind. Um dies zu bekämpfen, kann die HAL1284Com-Software Dateien auf das Board hochladen. Es ist auch möglich, in das EEPROM hochzuladen.

PEEK/POKE: PEEK und POKE sind ungetestet, und ich bin mir nicht sicher, wie die Adressen lauten.

Break: Break (Esc) hat manchmal den gesamten Code durcheinander gebracht, wenn er sich in Endlosschleifen befindet.

Pin 7: Der PWM-Pin 7 kann schwierig sein, wenn Sie versuchen, DWRITE High oder AWRITE 255 zu verwenden. Es funktioniert gut mit AWRITE 254.

Idiot: Es wäre ideal, auch über UART1 hochladen zu können, aber das Hochladen ist nur über UART0 möglich, daher muss der Upload durch Extrahieren des Haupt-IC erfolgen. Der Screen and Voltage Regulator 5 wird bei längerem Betrieb etwas zu heiß.

Empfohlen: