maltepöggel.de

SP USB LCD

USB LCD Prototyp mit EA-DOG für eine Firewall Appliance

Während meines Praktikums bei einem Lüneburger Firewall Hersteller bekam ich die Aufgabe, ein Frontpanel Display in die bestehende Security-Appliance Hardware zu integrieren. Im Inneren des Gerätes war ein USB Port auf einer Stiftleiste herausgeführt, so dass ich auf die Idee kam diesen für mein Display zu verwenden.

Bild: Display Prototyp

Die Firmware für den Mikrocontroller basiert auf einer angepassten Version des LCD2USB von Till Harbaum. Aus Platzgründen zwischen Frontplatte und Mainboard (ca 1cm Luft) wählte ich die EA-DOG Displayserie von Electronic Assembly aus. Electronic Assembly bietet verschiedene Backlights und Chip on Glass Displays an, der Benutzer kann diese je nach Wunsch kombinieren. Das Angebot reicht von FSTN positiv / negativ über STN positiv, negativ, blau bis zu reflektiven LCDs. Es gibt diese mit je 16 Zeichen und ein zwei oder drei Zeilen, außerdem gibt es 6 passende Beleuchtungsmodule.

Es wurde 0,7mm Platinenmaterial verwendet, fast alle Bauteile sind als SMD Komponenten auf der Rückseite bestückt. Bei den Prototypen sind einige wenige Verbindungen als Drähte gezogen, die in der späteren Produktion mit einem doppelseitigen Layout realisiert werden sollen.

Bild: Vorderansicht der Frontplatte
Bild: Rückseite der Frontplatte

Das EA-DOG Display verwendet einen Sitronix ST7036 Controller. Dieser ist "nahezu" mit dem handelsüblichen HD44780 kompatibel, hat jedoch einige Eigenheiten in der Initialisierung. Zum einen ist es möglich das Display mit 3,3 Volt zu betreiben. Die für das Display benötigte Spannung wird dann von der im Controller integrierten Ladungspumpe erzeugt. Außerdem lässt sich diese per Kommando beeinflussen, um so den Kontrast zu regeln. Diese Funktionalität wurde auch im Treiber entsprechend umgeschrieben. Wie im Original lässt sich natürlich auch die Hintergrundbeleuchtung schalten oder dimmen.

In meiner Schaltung versorge ich Atmel und LCD komplett mit 3,3 Volt, um den USB Spezifikationen gerecht zu werden. Da der von Till Harbaum verwendete ATMega8 nur bis 4,5 Volt betrieben werden kann, habe ich diesen durch einen ATMega48 ersetzt.

Bild: Schaltplan

Abweichend zum Original wurden auch noch zwei weitere Tasten hinzugefügt. Da LCDproc die Daten der Tasten nicht als Bitmuster sondern als Scancodes interpretiert, habe ich die Firmware angepasst das diese Scancodes (1 = Taste1 [ESC], 2 = Taste2 [UP], 3 = Taste3 [ENTER], 4 = Taste4 [DOWN]) zurückgibt, um die Kompatibilität zu bestehender Hardware zu erhalten. Das gleichzeitige Betätigen mehrerer Tasten kann dann allerdings nicht mehr ausgewertet werden. (Dies ist aber in LCDproc ohnehin nicht vorgesehen)

Konfiguration von LCDproc

Das zweizeilige LCD ist voll kompatibel. Um das dreizeilige Display anzusteuern müssen einige Anpassungen in der LCDd.conf vorgenommen werden. Da die zweite Zeile im DDRAM unmittelbar nach der ersten startet ergibt sich eine lineare Adressierung. Der Extended Mode muss also aktiviert werden.

Extended_Mode=1

Außerdem startet die jede nächste Zeile 16 Dezimal, bzw 0x10 Hexadezimal Positionen weiter. Default im Extended Mode ist 0x20. Diese Einstellung lässt sich mit dem, ab Version 0.5-dev eingefügten Parameter Line_Address anpassen.

Line_Address=0x10

Faustwerte für die Kontrasteinstellung sind 440 beim dreizeiligen und 200 beim zweizeiligen LCD.

Contrast=440

Alle weiteren Einstellmöglichkeiten lassen sich aus dem Manual von LCDproc entnehmen.

Wichtige Anmerkung zum Compilieren der Atmel Firmware: Im oberen Teil der ea-dog.h befindet sich ein Macro um die Anzahl der Zeilen anzupassen.

//#define LINES 2
#define LINES 3
Fazit

Die fertiggestellten Prototypen wurden in vier Piranja Firewalls integriert. Besonders die dreizeiligen Displays sorgten in der Belegschaft für Begeisterung.

Bild: Piranja Firewalls mit LCD

Downloads