lcdprog und raspberry pi

Status
Es sind keine weiteren Antworten möglich.

steins-ursel

Aktives Mitglied
Hallo!

ich möchte an dieser Stelle das Thema Lcdproc und Raspberry pi mal kurz etwas ausführlicher mal darstellen.
Die Idee den Raspberry mit einem zusätzlichem Statusdisplay auszurüsten, kam durch die Beschäftigung mit dem GPS-Deamon. ein kleines unscheinbares Programm Namens lcdgps brachte mich auf die Idee, da ich im Vorfeld schon öfters den Empfang verloren hatte ohne es direkt angezeigt zu bekommen.
Die lcdproc-Website ist mitunter nicht sehr aussagefähig, die man-page, oder auch Diese hier, sind da im Detail aussagefähiger.
Dazu gibt es noch eine weitere Zahl von Seiten, als hilfreich in Bezug auf den Controller konnte diese Seite überzeugen.
Im nächsten Beitrag stelle ich kurz die Hardware vor.
 
Die Hardware gestaltet sich recht übersichtlich, ein Display, ein I2C-Portexpander und Kleinkram. Den Portexpander gibt es hier auch in der klassischen DIL Version. Es gibt beim PCF 8574 eine Normalversion und Eine mit einem Suffix A. Hier wird nur in den vorderen 5 Adressbits ein anderer Adressbereich festgelegt, die letzten Drei sind über die Pins A0-A2 individuell konfigurierbar.
Die 3,3V werden hier aus den 5V vom Raspi gewonnen, ein TS1117 3,3 tut hier hervorragende Dienste. Man soll nicht die 3,3V vom Raspbery stark belasten, dies kann den Betrieb erheblich stören. Am Besten die 3,3V gar nicht nutzen. Der Transistor Q1 ist mit der Diode BPW43 und dem kleinem Widerstandsnetzwerk eine simple Helligkeitsregelung. Die Widerstände R5 und R6 bestimmen die Grundhelligkeit. Die Schaltung geht natürlich komfortabler, aber für die Zwecke im Dunkeln reicht es.
Aufpassen mus man noch bei den Pin-Header vom Display, diese sind im 2mm Raster. Ansonsten soll die Schaltung nur als Beispiel dienen.
Im Nächsten Beitrag nach dem Abendbrot kommt dann die Software dran.
 

Anhänge

Die Software gestaltet sich in mehrere Abschnitte.
1. Die ausführbaren Daten inkl. Installation
Code:
sudo apt install lcdproc lcdproc-extra-drivers cme
cme ist ein graphischer Editor, welcher mit Konfigurationsdateien umgehen kann. Es werden aber nur eine gewisse Anzahl unterstützt, selbst eine total "verhunztes" config-file, kann dieser wieder mit Standartwerden vorbelegen sofern es unterstützt wird. Dabei muss nur eine leere neue Datei angelegt werden, mit dem entsprechenden Namen.

2. Die Konfiguration
Die Adresse des Bausteines bekommt man mittels
Code:
sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
heraus, hier meldet sich z.B. die RTC auf Adresse 68 Hex. Die Adresse ist natürlich abhängig vom IC, ob ohne oder mit A und von der eigenen Adressvergabe A0-A2. Die entsprechende Adresse ist in LCDd.conf unter Port = 0x.. einzutragen.

Man kann es wirklich klassisch editieren oder man nutzt cme (siehe Bild im Anhang)
Code:
sudo cme edit lcdproc
editiert komischerweise /etc/LCDd.conf

Als funktionierende /etc/LCD.conf hat sich folgende Konfiguration ergeben:
Code:
## This file was written by cme command.
## You can run 'cme edit lcdproc' to modify this file.
## You may also modify the content of this file with your favorite editor.


[server]
Driver = hd44780
DriverPath = /usr/lib/arm-linux-gnueabihf/lcdproc/
GoodBye = " "
GoodBye = "    Bye, Bye"
Hello = "     Welcome to"
Hello = "   -------------"
Hello = "    AstroRaspi4 "
Hello = "  ---------------"
NextScreenKey = Right
PrevScreenKey = Left
ReportToSyslog = yes
ToggleRotateKey = Enter

[hd44780]
Backlight = on
CharMap = hd44780_euro
ConnectionType = i2c
DelayBus = true
DelayMult = 4
Device = /dev/i2c-1
ExtendedMode = yes
KeyMatrix_4_1 = Enter
KeyMatrix_4_2 = Up
KeyMatrix_4_3 = Down
KeyMatrix_4_4 = Escape
Keypad = no
OutputPort = no
Port = 0x38
RefreshDisplay = 0
Size = 20x4
Speed = 0

[menu]
DownKey = Down
EnterKey = Enter
MenuKey = Escape
UpKey = Up

3. Die Startsequenz
Als Startscript (lcdproc.sh) habe ich folgenden Inhalt
Code:
#!/bin/sh
/usr/bin/sudo /bin/systemctl start LCDd
/usr/bin/sudo /usr/bin/lcdproc C D M N U
/usr/bin/sudo /usr/bin/lcdgps -l s -u m

Um einen Dienst, Script etc. im Raspi zu starten, gibt es mannigfaltige Lösungen, welche Linux von Haus aus mit bringt. Dies würde den Rahmen hier vollkommen sprengen.
Der einfachste Weg, ist die /etc/rc.local. Einfach vor exit 0 in der Datei einen absoluten Pfad zur lcdproc.sh angeben, wichtig ist, dass vorher die I2C Treiber geladen wurden.
Ich starte es per Autostart Eintrag in der grafischen Oberfläche. Eine Datei unter ~/.config/autostart angelegt, Name: LCDd.desktop mit dem Inhalt:
Code:
[Desktop Entry]
Name=Autostart-Script
Comment=Kommentar
Type=Application
Exec=/home/pi/lcdproc.sh
Terminal=false
startet das Script lcdproc.sh, welches im home-Verzeichnis des Users pi liegt automatisch, wenn die grafische Oberfläche sich aufbaut. Das Script muss ausführbar sein. Zu diesem Zeitpunkt sind die I2C Treiber sicher geladen.
Nebenbei weiß man, dass der Raspi in der grafischen Oberfläche gestartet ist.

Frohes Basteln
 

Anhänge

  • cme.png
    cme.png
    765,6 KB · Aufrufe: 367
Erst mal vielen vielen Dank für den ausführlichen LCD-Proc Beitrag!

Ich habe mir jetzt das Display und den Portexpander bestellt.

Der K_LED Pin am Display ist die analoge Referenzspannung für die Helligkeitseinstellung? Ich könnte auch einen Spannungswert vorgeben mit Poti zum Drehen?

Es ist cool, dass Du das Layout auch hochgeladen hast. Ich bin halt noch ein bischen altbacken mit Lochrasterplatinen.
 
Zuletzt bearbeitet:
Der K_LED Pin am Display ist die analoge Referenzspannung für die Helligkeitseinstellung? Ich könnte auch einen Spannungswert vorgeben mit Poti zum Drehen?

K_LED ist die Katode der LED zur Hintergrundbeleuchtung. Diese kann auch über einen einfach Poti gegen Masse zur Helligkeitsregelung genutzt werden. Im Dunkeln reichen da wirklich wenige mA. Und immer mit konstanten Vorwiderstand, selbst mit 3,3V kann man die Hintergrundbeleuchtung grillen.

Es ist cool, dass Du das Layout auch hochgeladen hast. Ich bin halt noch ein bischen altbacken mit Lochrasterplatinen.

Wie schon erwähnt, die 2x9pol Pinleisten des Displays sind im 2mm Raster, Standart ist 1/10 Zoll, 2,54mm, hier aufpassen.
 
Hallo!

Wichtiger Hinweis: lcdproc nutzt als primäre Steuerdatei die /etc/lcdproc.conf oder unter /usr/local/etc/lcdproc.conf. Diese entweder bearbeiten oder sichern als *.bak und dann lcdproc über die Kommandozeilenoptionen starten und steuern.
 
Hallo!

Wichtiger Hinweis: lcdproc nutzt als primäre Steuerdatei die /etc/lcdproc.conf oder unter /usr/local/etc/lcdproc.conf. Diese entweder bearbeiten oder sichern als *.bak und dann lcdproc über die Kommandozeilenoptionen starten und steuern.
Mach ich. Ich setzte einfach einen symbolischen Link vom einen auf das andere und kasper die Zugriffsrechte aus.
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben