Forum: Projekte & Code PicoTerm-TFT, farbiges 4,3"-Terminal mit Pico-Board RP2040


von Mi N. (msx)



Lesenswert?

Zusammengestellt aus diversen Schaltungen und Programmen ist 
"PicoTerm-TFT" entstanden, was als einfaches Terminal zur Textausgabe 
dienen aber auch farbige Grafik mit 64 Farben darstellen kann. Die 
Vorgaben dazu waren: einfach, günstig, Standard 4,3“-Anzeige und 
(unbedingt !) schnell.

Wesentlicher Kern der Hardware ist ein Pico-Board mit RP2040, welches 
die seriellen Befehle umsetzt, Zeichen in den intern vorhandenen 
Bildspeicher schreibt - div. (vollständige !) Zeichensätze sind 
vorhanden - und diesen auf die TFT-Anzeige ausgibt. Eine vorhandene 
Platine dient in reduzierter Form der notwendigen Verdrahtung des 40 
pol. Folienkabelsteckers, der Spannungserzeugung für die 
Hintergrundbeleuchtung sowie RS232-Treiber und eines Piepsers. Die 10 
pol. Anschlussbuchse kann 1:1 an eine D-Sub-Buchse angeschlossen werden. 
Die Polung ist kompatibel zu COMx-Schnittstellen eines PC oder USB-RS232 
Adapterkabeln.

Anbei das Schaltbild, wobei die Bauteile für die Frequenzzähler-Option 
wegfallen können. Schaltbild 2 zeigt den RS232-Anschluß, EEPROM falls 
benötigt und die Konstantstromquelle für die Hintergrundbeleuchtung. Die 
Platine hat Befestigungslöcher für Abstandshalter zum TFT und 
Befestigungslaschen zur Befestigung an der Frontplatte – je nach Bedarf.

Der Quellcode (.zip-Datei) ist noch für eine IAR-IDE geschrieben und 
wird bei Gelegenheit auf Segger Embedded Studio umgestellt. Die 
.u2f-Datei kann direkt verwendet werden.
Um das Programm nicht zu überladen, wurden zunächst Grundfunktionen 
implementiert. Die verwendeten Funktionen können noch ergänzt oder 
verändert werden.

: Bearbeitet durch User
von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Um einen Eindruck zu vermitteln, wie man das PicoTerm-TFT praktisch 
verwenden kann, gibt es im Anhang das Programm "PicoTerm-demo.ino", 
welches für einen ATmega328 geschrieben wurde. Es ist ein reines 
C-Programm, verwendet keine Arduino-IDE spezifischen Befehle und kann 
für 'gewöhnliche' Programmierung einfach in .c umbenannt werden.
Die Code-Grösse ist < 7 kB.

In der Funktion 'main()' wird ein Testprogramm für ein Demo-Menü und die 
zugehörige touch-Bedienung gezeigt. Zuvor werden Timer1 und UART 
initialisiert und die Baudrate von 57,6 kBd auf 250 kBd hochgesetzt.

Da die Option MIT_BLINKEN aktiv ist, die zwei alternierende Seiten 
anzeigt, können damit rot-grüne bzw. grün-rote Herzen in der oberen 
Teile ohne Prozessoreingriff dargestellt werden: siehe Bild 1 und Bild 
2.
Bild 3 zeigt die möglichen Farben, die fortlaufend verändert werden und 
Bild 4 eine Textausgabe mit auto-scroll am Bildende: mit 3 ms/Zeile 
werden 333 Zeilen/s angezeigt.

Bilder 5-7 zeigen die implementierten Zeichensätze mit 8x16.

Die Befehle „tft_xyz“ vom ATmega328 sind gleichlautend auch auf dem 
PicoTerm-TFT vorhanden, sodaß man das Anwenderprogramm bei Bedarf auch 
ohne grosse Änderungen auf dem Pico-Board mit maximaler Geschwindigkeit 
laufen lassen kann. Die begrenzende RS232 Übertragung entfällt und die 
touch-Koordinaten liegen unkodiert vor.

Anmerkung: bei "PicoTerm-TFT" sind die Pins für den RS232-Treiber 
invertiert. Txd vom ATmega328 kann daher direkt an RS232-Rxd vom RP2040 
angeschlossen werden. Zwischen RS232-Txd vom RP2040 zum Rxd vom 
ATmega328 sollte ein Widerstand (3k3) geschaltet werden, um den Strom in 
den Eingang zu begrenzen. Damit erspart man sich einen zusätzlichen 
RS232-Treiber auf Seite des ATmega.
Im 'realen' Leben sollte die Invertierung abgeschaltet werden.

: Bearbeitet durch User
von Dddns (dddns)


Lesenswert?

Hallo!

ich finde deine Idee grundsätzlich sehr gut!

Was mich abhält ist das Display selbst, da es zu exotisch ist.
Gibt es das noch zu kaufen?

Wünschen würde ich mir, wenn es noch ein SPI/I2C slave Modus gäbe,
der alle gängigen chipsätze emulieren kann.

von Mi N. (msx)


Lesenswert?

Dddns schrieb:
> Was mich abhält ist das Display selbst, da es zu exotisch ist.
> Gibt es das noch zu kaufen?

Die gezeigte Platine bietet die Option, Displays mit unterschiedlichem 
Anschluß der Hintergrundbeleuchtung per Lötbrücken einzustellen. Es gibt 
Ausführungen, die einen separaten 4-pol. Anschluß benötigen, wozu man 
dann die Lötbrücken BR4-BR6 aktiviert. (Davon hatte ich bei Pollin vor 
einiger Zeit EDT-Displays für 4 Euro beschafft - jetzt wohl 
ausverkauft.)

Mit den Lötbrücken BR1-BR3 wird Vled über den 40-pol. Stecker geführt. 
Und diese Polung ist "internationaler Weltstandard". Dazu gibt es 
Displays wie Sand am Meer. Nur als günstige Beispiele: 
https://www.buydisplay.com/tft-display/tft-display-panel?diagonal_size=290
Neben 4,3" gibt es auch 5" Ausführungen mit 480x272. 7" TFTs gibt es mit 
800x480, die man als 400x240 Anzeige ansteuern kann, um eine große, gut 
ablesbare Anzeige zu erhalten.
Alle mit der gleichen Anschlussbelegung!


> Wünschen würde ich mir, wenn es noch ein SPI/I2C slave Modus gäbe,
> der alle gängigen chipsätze emulieren kann.

SPI/IIC muß man nur implementieren. Das geht über den Steckverbinder 
SPI1. Das Auslesen der touch-Koordinaten müßte anders organisiert 
werden, als einfach nur RS232-Daten per ISR zu erhalten. Mit RS232 ist 
es kein Problem, ein Bedienteil auch einige Meter entfernt von der 
eigentlichen Steuerung oder auch per Funk an einer Powerbank zu 
betreiben.

Zur Emulation: Meine Intension war zum einen 'einfach' und damit keine 
eierlegende Wollmilchsau und zum anderen 'schnell', was dann wohl auch 
nicht mehr der Fall wäre.
Nur was soll das bringen? C-Routinen zur Ansteuerung liegen ja vor und 
müssen nicht neu erfunden werden.
Oder anders gefragt: "Welcher Chipsatz liefert denn mit eintreffenden 
seriellen Daten eine lesbare Schrift/Anzeige?"
Du könntest Dir Deine Wünsche aber auch selber erfüllen.

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Das Programm ist jetzt für die (kostenfreie) IDE Segger ES angepaßt und 
das Arduino Demoprogramm leicht modifiziert worden. Für die 
Platinenfertigung gibt es die notwendigen Dateien, wobei man die 
Bauteile für den Frequenzzähler wegläßt.
http://mino-elektronik.de/TFT-direct-drive/TFT-direct-drive.htm#tft-6
Bei 'dringendem' Bedarf hätte ich ein paar Leerplatinen nebst speziellen 
Bauteilen wie TS19371 und 40-pol. Folienstecker vorrätig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.