Mini-Terminal
mit ARDUINO und TFT-Display
StandAlone-Unit zum Senden und Empfangen serieller Daten
10. Mai 2014
QST, April 2014 did publish
article "D-Terminal
Arduino meets D-STAR" written by Abraham Smith, N3BAH. While he was
using a standard 2x16 characters LC-Display, i decided to modify the
available code, so low cost 1.8" TFT graphic display could be used
instead.
Here is automatic translation by GOOGLE:
Abb.1 Musteraufbau mit Arduino
"UNO", TFT-Display auf Proto-Shield und Mini-Tastatur im Hintergrund
Schon länger interessierte ich mich für eine einfache,
PC-unabhängige Einrichtung zum Aussenden und Empfangen serieller
Daten. Meine Aufmerksamkeit erweckte deshalb ein Beitrag mit dem
Titel: "D-Terminal Arduino meets D-STAR". Er stammt aus der Feder von
Abraham Smith, N3BAH und erschien in der US-Zeitschrift "QST" vom April
2014. Das dort
beschriebene Konzept verwendet ein Arduino UNO-Board oder
aequiv. Zur Zeicheneingabe lässt sich daran eine
handelsübliche Tastatur
mit PS/2-Schnittstelle anschliessen. Die Ausgabe der über sie
eingegebenen und ggf. auch der über
die serielle Prozessorschnittstelle empfangenen Zeichen erfolgt
über ein
Standard-16x2-Zeichen-LC-Display.
Unter Verwendung eines UNO-Boards war das Terminal nach N3BAH schnell
nachgebaut. Zur Vereinfachung
des
Hardwareaufwandes wollte ich dabei allerdings abweichend vom Originalkonzept ein fertig erhältliches, direkt auf
die Prozessorplatine steckbares LCD-Shield nach [1],[2] verwenden.
Das bedingte einige Änderungen bei der Portbelegung
und hatte dadurch zwangsläufig auch Auswirkungen auf den benutzten
Programmcode. Die aufgebaute Terminalanordnung funktionierte
ansonsten soweit problemlos, wobei man sich für die Zukunft
allerdings
auch noch einige Verbesserungen und Verfeinerungen in der Bedienbarkeit
( z.B. eine Backspace-Funktion ) vorstellen könnte. Was
mich allerdings doch störte, war die sehr
begrenzte Anzeigekapazität des verwendeten 2x16 Zeichen-Displays.
Mit relativ wenig
zusätzlichem Aufwand hätte
man an dieser
Stelle zwar auch
eine etwas größere Displayversion mit
Darstellungsmöglichkeit von z.B. 4x20 Zeichen wählen
können, aber ich beschritt einen anderen Weg. Zum Einsatz kam
stattdessen ein 1.8"-Grafikdisplay mit einer Auflösung von 128x160
Pixeln ( siehe Abb.2 ). Derartige Displays sind z.B. via EBAY
oder auch hier [3],[4] preiswert erhältlich und lassen sich
unkompliziert
einsetzen. Sie gestatten u.a. alphanumerische Zeichendarstellungen in
unterschiedlichen Größen, wobei ich mich für eine
achtzeilige Darstellung von je max. 13 Zeichen pro Zeile entschied.
Durch eine kleine Änderung im Programmcode ist an dieser Stelle
aber auch
eine Umstellung auf Darstellbarkeit von 16 Zeilen mit je max. 26
Zeichen möglich. Bereits in der gegenwärtigen Konstellation
und der sich dabei ergebenden
Gesamtzahl von max. 104 Zeichen kommt man aber auf das mehr als
Dreifache
gegenüber dem ursprünglichen Konzept.
Dennoch ist anzumerken, dass die Anordnung nur zur Übermitlung von
Kurztexten geeignet ist.
Für mein erstes Musterexemplar wurde erst einmal wieder ein
UNO-Board benutzt ( siehe Abb.1 und 2 ). Denkbar ist aber auch die
Verwendung anderer Arduino-Varianten. So können
z.B auch die gegenüber dem "UNO" wesentlich kleineren
NANO-Boards zum Einsatz kommen ( siehe Abb.3 ). Die verfügbaren
Ports
sind bei beiden Versionen weitgehend identisch und nachdem in beiden
Fällen auch der
gleiche Prozessortyp zum Einsatz kommt, ergeben sich auch für die
zu
verwendende Software keine nennenswerten Unterschiede.
Die seriellen Ein- und Ausgangsdaten stehen an den Ports "RX0" (
Eingang ) und "TX1" ( Ausgang ) mit TTL-Pegel zur Verfügung. Die
Anordnungen mit den Transistoren "Tr1" und "Tr2" bewirken eine
Anpassung an mit RS-232-Schnittstelle ausgestattete Peripherie.
Selbstverständlich lassen sich an dieser Stelle aber auch
Pegelwandlerbausteine wie z.B. "MAX232" o.ä. verwenden. Ein Wort
noch zur
von mir benutzten Tastatur. Es handelt es sich bei
ihr um eine sehr kompakte Ausführung, die aus folgender Quelle
stammt [5]. Grundsätzlich sollten an dieser Stelle aber alle
Tastaturen mit PS/2-Schnittstelle nutzbar sein.
Abb.2 Beispiel für eine
TFT-Displayanzeige
Bedienfunktionen
Nach dem Einschalten
der Terminal-Anordnung wird für einige Sekunden eine
Startmeldung sichtbar. Mit ihrer Hilfe lässt sich die
grundsätzliche Betriebsbereitschaft kontrollieren. Danach
verlischt die Bildschirmanzeige wieder. Das Ausführungsprogramm
wartet jetzt auf ankommende Zeichen. Diese können entweder
über die serielle Schnittstelle gelesen oder über die
angeschlossene Tastatur eingegeben worden sein. Letztere sind dabei
sofort auf dem
Display sichtbar und lassen sich durch Betätigung der ENTER-Taste
seriell aussenden. Standardmäßig wird dabei eine Datenrate
von 9600bps verwendet, wobei sich dieser Wert im Bedarfsfall aber auch
sehr leicht im Programmcode ändern lässt. Nachdem ein
häufiger Wechsel der verwendeten Datengeschwindigkeit nicht der
üblichen Betriebspraxis entspricht, wurde auf die in der
ursprünglichen Version vorhandene Routine zur Baudratenauswahl
verzichtet. Die Programmbedienung vereinfacht sich hierdurch deutlich.
Über die ESC-Taste lassen sich
komplette Bildschirminhalte ( z.B. nach Fehleingaben ) jederzeit
löschen.
Eine Backspace-Funktion ist hierbei derzeit noch nicht realisiert,
sollte
für spätere Programmerweiterungen aber angestrebt
werden.
Seriell empfangene Daten werden nicht direkt angezeigt, sondern vorerst
nur in einem Eingangspuffer ( Kapazität: 128 Zeichen )
zwischengespeichert. Damit wird auf einfache Weise verhindert, dass
es zwischen
empfangenen und via Tastatur eingegebenen Zeichen zu einem
Darstellungskonflikt kommen kann. Eine LED signalisiert dabei das
Vorhandensein eingetroffener Daten. Wird danach die MESSAGE-Taste
betätigt,
so werden zuerst eventuell noch vorhandene Bildschirminhalte
gelöscht und das Display dann mit den Daten aus dem
Eingangspuffer beschrieben.
Abb.3 Gesamtschaltbild der
Terminalanordnung mit Verwendung eines Boards: Arduino "NANO"
Portbelegung gilt auch für andere Arduino-Boards, die den
gleichen Prozessor ( ATMEGA328P ) verwenden; z.B.:
Arduino "UNO"
WICHTIG!
Die Verbindung "JP1" muss
geöffnet sein, wenn Programme via USB-Schnittstelle zum Prozessor
hochgeladen werden sollen. Durch Doppelnutzung des seriellen
Prozessoreingangs kommt es ansonsten zu einer Konfliktsituation, die
auch zu einer Fehlermeldung von Seiten der Arduino-IDE führt.
Arduino-Software
Neben der
Softwareversion V1.1,
die
sowohl Sende, als auch Empfangsbetrieb zulässt, wurde auch noch
eine Version V2.1 realisiert. Sie erlaubt NUR Empfangsbetrieb, so dass
hierbei die
mit der
Eingabetastatur in Verbindung stehenden Bauteile, die Signal-LED und
Transistor "Tr2" entfallen können. Seriell empfangene Daten
werden jetzt
direkt auf dem Display sichtbar und die MESSAGE-Taste dient nur
noch als
Löschtaste für die Bildinhalte.
V1.1:
MINI-Terminal TFT-Displayversion für den Sende- und
Empfangsbetrieb
V2.1:
MINI-Terminal TFT-Displayversion nur für den
Empfangsbetrieb
Beide Versionen lassen sich
hier
herunterladen
Linkliste
E-Mail
contact via: