Linux-Projekte
für den Raspberry Pi,
die mit Python realisiert
wurden
Vorgestellt
von J. Hoppe
|
Angefangen
hat alles schon, als ich noch im Kindergartenalter war, so die
Erzählungen. Da gab es bei den LEGO-Bausteinen so einen
durchsichtigen, den konnte man von innen beleuchten. Dazu wurden
zwei kleine Kabel, mit Steckerchen auf jeder Seite, angeschlossen
und an eine Batterie (ich glaube so eine 4,5 Volt Flachbatterie)
angeschlossen. Hochinteressant (in dem Alter!). Irgendwann gab es
keine volle Batterie zu Hause, da kam ich auf die vermeindlich
gute Idee, das Ding mit den Kabeln an eine Steckdose
anzuschließen (Schukosteckdosen gab es zu der Zeit bei uns noch
nicht, Kindersicherungen: völlig unbekannt). Was soll ich sagen?
DANACH ging das Licht nie wieder!
|
Alles
was mit Technik zu tun hatte, hat mich damals schon
fasziniert. Da gab es (als Schulanfänger) so eine kleine
Quasi-Uhr mit Aufziehwerk. Wenn man da einen Knopf gedrückt
hat, sind die Zeiger gelaufen, bis man einen anderen Knopf
gedrückt hat. Habe ich dann wohl auseinandergenommen um zu
sehen, wie das ganze funktioniert. Danach hatte ich Teile
übrig und nichts ging mehr.....
Kennt ihn noch jemand,
den TRIX Metallbaukasten? Hatte ich! Sogar mit Elektromotor.
Wen wundert's, der ging nicht sehr lange.
|
In
meiner Lehrzeit kam ich dann mal irgendwann mit IC's in Kontakt.
Ich war begeistert, was konnte man damit alles machen! Damals
gab's nur 'freifliegende' Verdrahtungen. Kein Experimentierboard,
keine Pertinax- oder Lochraster-Platine, nichts. Die Drähte
wurden einfach von Pin zu Pin, von IC zu IC gelötet. Fertig! Gab
schöne Sachen dabei: Klatschschalter, elektronische Würfel,
Digitaluhr (mit Ziffernanzeigeröhren und Weckfunktion.
Ach ja: DIE war auf einer Lochrasterplatte zusammengebaut),
später kam dann noch ein Frequenzmesser dazu, und und und ......
Meinen
ersten 'Rechner' habe ich mir dann auch irgendwann zugelegt:
Einen TI 57. Na ja, kein Rechner im heutigen Sinne. Eher das, was
man heutzutage einen Taschenrechner nennt. Der hatte schon
7-Segment LED-Anzeigen! War aber programmierbar und hatte etliche
Speicherregister. Damit habe ich meine ersten Programmierschritte
gewagt.
In der ersten Arbeitsstelle kamen dann die
Personalcomputer auf. Tolle Dinger. Wir hatten dort so einen PET
(wer den noch kennt) mit integriertem Bildschirm und
Kassettenrecorder für Programme. Wenig später habe ich in
irgendeiner Zeitung dann den Sinclair ZX 80 gesehen. Den ersten
Rechner für unter 500 D-Mark! DEN
MUSSTE ICH HABEN! Was man als Zubehör dafür
benötigte? Einen Fernseher, an den der Rechner per
Antennenkabel angeschlossen wurde und einen separaten
Kassettenrekorder, um Programme speichern und laden zu können.
Hatte einen Hauptspeicher von 4KB (in Worten: vier
Kilobyte). Darin war aber auch noch der Grafikspeicher enthalten.
Man kam damit vielleicht auf ein paar Dutzend Programmzeilen.
Dann war Schluss. Ach ja, er konnte nur ganze Zahlen verarbeiten.
Kommazahlen war nicht! Als Zusatz konnte man einen externe
Speichererweiterung anstecken. Die hatte ganze 64kB. Damit konnte
man dann aber auch recht lange Programme erstellen. Nach geraumer
Zeit gab es das EPROM vom Nachfolger (ZX81), auch für den ZX 80
zu kaufen. Der konnte dann viel mehr, auch Gleitkomma!
Über
Spectrum und QL bin ich dann über die Jahre zum ersten
DOS-Rechner gekommen. Glaube es war der Amstrad 1620 mit 8086
Prozessor und 640k (ja, kilo!) Hauptspeicher. Sogar eine
Festplatte mit 20 MB (MegaByte) war integriert! Ein Bildschirm
war genauso dabei wie ein Floppy-Laufwerk (5“ mit 360k
maximaler Speichergröße). Hat damals so um die
Zweieinhalbtausend D-Mark gekostet. Muß wohl so um die Mitte
der 80-er Jahre gewesen sein.
Ach ja, der mitgelieferte
Monitor war natürlich schwarz/weiß, bzw. 'Amber'.
|
|
Irgendwo
habe ich noch ein Angebot aus dieser Zeit für einen der gerade
neu auf den Markt gekommenen 80386-er Rechner gefunden. Der
sollte damals so ca. 12.000 D-Mark kosten (für diejenigen, die
den Umrechnungskurs nicht mehr kennen: das wäre heut so ca
6.000,-- Euro).
Meine Rechner wurden nach und nach
immer schneller, mit immer mehr Hauptspeicher und immer größeren
Festplatten. Klar, daß ich das Aufrüsten selbst übernommen
habe: neues Motherboard, Festplatte, Floppy (3,5“ mit 1,44 MB
Kapazität). Hin und wieder mußte wegen höherem
Energieverbrauch ein neues Netzteil her, …...
Der
erste Rechner (Sinclair) hatte ein eigenes Betriebssystem, das
nicht verändert werden konnte . Programmiert wurde im
Sinclair-eigenen Basic. Beim ersten DOS-Rechner war schon Windows
3.1 vorhanden. Natürlich nicht Multitaskingfähig. Wenn
ich Word 5.0 offen hatte und mal eben eine andere Datei ansehen
wollte: erst Word beenden, dann die Textdatei (oder was sonst)
öffnen. Mehrere Fenster ? Aber nicht doch!
Nach
etlichen Windows-Versionen (95, 98, NT) [später dann auch 2000
und XP] hatte ich zufällig im Radio von einem neuen
Betriebssystem gehört. Es nannte sich OS-halbe. Nein, Spaß
beiseite es war OS/2 (OS Zwei). Hab's natürlich gekauft und
ausprobiert. Schöne Sache. Da gab's sogar eine Sprachsteuerung,
die ganz passabel funktionierte. Und wenn ein Programm mal
abstürzte, mußte man nicht gleich den gesamten Rechner neu
starten, wie sonst bei Windows üblich! Zu der Zeit kam so
langsam das Internet auf. OS/2 hatte auch eine Browser, mit dem
man dort surfen konnte. Aber kein Vergleich zu heute!
Neue
Betriebssysteme waren für mich schon immer hochinteressant. Da
gab es so viel neues zu entdecken. Daher habe ich mir dann auch
mal SuSE-Linux geleistet. Viele neue Funktionen und Programme.
Neue Versionen gab es als Downloads immer UMSONST (Windows???).
Aber eines hatten bisher alle Rechner gemeinsam. Bei externen
Geräten war man auf das angewiesen, was es auf dem Markt gab.
Das wurde zunächst per serieller Schnittstelle oder Parallelport
und dann per USB abgeschlossen. Eigene Geräte? War SCHWIERIG bis
unmöglich (das änderte sich erst mit dem Raspberry. Aber dazu
komme ich später).
Je schneller die Rechner wurden
und je mehr Speicher und Festplattenkapazität sie hatten, um so
mehr Energie benötigten sie natürlich auch und produzierten
dementsprechend Abwärme. Da habe ich manchen Sommertag den
Rechner ausgeschaltet, um die Raumtemperatur nicht noch höher
werden zu lassen. Also kam mir
die Idee, eine abgespeckte PC-Version (evtl. Barebone) zu
erwerben. Bei der Suche fiel mein Augenmerk allerdings bald auf
den Winzling Raspberry Pi, der noch nicht lange auf dem Markt
war. So wurde dann eine Version 1B gekauft, die gerade mal
1-2 Watt Leistung benötigt.
Da ich bereits SuSe Linux
und Linux Mint auf dem 'großen' Rechner installiert hatte, waren
der Download des Betriebssystems und das Aufspielen auf die SD
Karte kein großes Hindernis. Jetzt ging es daran, die Anschlüsse
der GPIO zu erkunden.
Zunächst
mußte ich mich mit der Programmiersprache Python anfreunden.
Diese wurde gewählt, da sie relativ leicht zu erlernen ist und
großenteils an Basic/ Visual Basic erinnert, mit denen ich schon
vertraut war. Zuerst ging es an die 'basics'. Nach und nach
wurden immer mehr (reichlich vorhandene) Module erkundet.
Aus
der Python Anfangs-Zeit stammen auch noch einige Programmteile
die in diesen Präsentationen verwendet werden. Daher erheben die
hier vorgestellten Programme weder Anspruch auf optimale
Funktionalität oder Laufzeit, noch wurde die objektorientierte
Programmierung konsequent angewendet.
Die
dargestellten Projekte haben sich im Laufe der Zeit nach und nach
eigentlich 'von selbst' ergeben. Zunächst war es nur die
Darstellung von Zuständen und Einzelwerten der
Hausautomatisierung (HomeMatic), die (mal wieder) nur über eine
Browseroberfläche zu erreichen waren. Erste Erfahrungen mit der
SPI-Schnittstelle wurden zunächst mit einem 3-zeiligen LCD
Text-Display gemacht. Anschließend wurde ein pixelbasiertes
Grafikdisplay angeschloßen. Da dort Text nur als 'Grafik'
angezeigt werden konnte, mußten dann die ersten Zeichensätze
entwickelt werden. Nach und nach wurden verschiedene Grafiken mit
Werten der HomeMatic dargestellt.
Um
festzustellen, ob häufig auftretende Kopfschmerzen im privaten
Umfeld eventuell mit dem Luftdruck zusammenhängen könnten (oder
der schnellen Luftdruckänderung), wurde dann an einem separaten
RaspberryPi ein Luftdruckmesser über die SPI-Schnittstelle
angeschlossen, der die alle 2 Sekunden gemessenen Werte in einer
Datei abspeicherte. In diesen 7x24h laufenden Rechner wurde dann
auch gleich ein Syslog-Server integriert. Zur besseren Lesbarkeit
der Grafik wurden immer wieder größere LCD-Display erworben und
angeschlossen. Dabei waren meist auch Anpassungen der Treiber
notwendig.
Nebenbei
wurden auch die grafischen Anzeigen von zwei Webseiten mit
Wetterwerten in Angriff genommen. Dabei handelte es sich um die
Wetterdaten vom BR (Bayerischen Rundfunk) und der (damals)
14-tägigen Wettervorhersage von wetter.com.
Nachdem
kürzlich eine PV-Anlage (Solaranlage) mit Stromspeicher
installiert wurde, sollten auch diese Daten wieder grafisch
dargestellt werden. Zunächst waren das die Zählimpulse des neu
installierten Zwei-Wege Zählers (über einen HomeMatic Sensor),
danach wurde die optische SML-Schnittstelle des Zählers
mit einer selbst entwickelten Leseeinheit ausgelesen,
weiterverarbeitet und angezeigt.
Um bei dieser
Programmentwicklung die optischen Daten des Stromzählers
darstellen und beurteilen zu können, wurde dabei auch gleich das
Voltmeter und das Mini-Oscilloskop entwickelt. Hierzu wurde ein
8‑kanaliger AD-Wandler an die SPI-Schnittstelle
angeschlossen. Leider arbeitet hier das interpretative Python so
langsam, daß mit dem Mini-Oszi nicht mehr als ein paar Hundert
Hertz sicher dargestellt werden können.
Vorschau
- heutzutage würde man das wohl als Roadmap bezeichnen -
Was
|
Kurzbeschreibung
|
Aktueller
Stand
|
Spannungswandler
Solar
|
Wenn
die technischen Voraussetzungen geschaffen sind wird der
Spannungswandler der Solarzellen (mit eigenem WEB-Server) in
Angriff genommen
|
Projekt
wird bereits vorgestellt, ist aber noch nicht ganz fertig
(23.01.2017)
|
Akku-speicher
Solar
|
Wenn
die technischen Voraussetzungen geschaffen sind wird der
Akkuspeicher der Solaranlage in Angriff genommen
|
Projekt
wird bereits vorgestellt, ist aber noch nicht ganz fertig
(23.01.2017)
|
E-Mail
Statusanzeige
|
Kann
das Eintreffen neuer E-Mail Nachrichten auf dem LCD angezeigt
werden?
|
Erste
Ergebnisse werden bereits dargestellt. An 'Optik' und
Feinschliff wird noch gearbeitet (23.01.2017)
|
HomeMatic
Status/ Meldungen per E-Mail versenden
|
Können
(ohne Add-On in der HomeMatic) Status-/ Alarmnachrichten per
E-Mail versendet werden?
|
Funktioniert
seit Oktober 2018.
Ist bereits in die Projekt-Übersicht
integriert
|
HomeMatic
Geräte auf LCD darstellen und bedienen
|
Können
einzelne Geräte (Räume) der HomeMatic auf dem LCD
angezeigt und bedient werden?
|
In
Arbeit (07.08.2017):
Die ersten Vorbereitungen laufen.
Per Python-Programm können bereits Licht/ Rollos/ Heizung
ausgelesen und z.T. auch schon bedient werden.
Ob eine
Adaption an das LC-Display sinnvoll ist, wird sich erst noch
erweisen.
|
HomeMatic
Geräte mit LiPo Akku betreiben
|
Können
Stellantrieb und Thermostat der HomeMatic mit LiPo Akkus
(3,7V) betrieben werden?
|
Laut
technischer Info von eQ-3 können Gerätedefekte
auftreten.
Erste Tests laufen trotzdem (seit EINEM
Tag)
LiPo liefert 4.0 Volt. Wird auch im Batteriestatus
angezeigt. (25.08.2017)
|
Die
beigefügten Schaltungen und Programm werden als Beispiele zur
eigenen Programmentwicklung und zum Verständnis verschiedener
Vorgänge zur eigenen Verwendung zur Verfügung gestellt. Die
Programm können frei verwendet und/ oder abgeändert werden.
Eine Gewährleistung kann dafür aber nicht übernommen werden.
Auch übernimmt der Autor keine Haftung für durch diese
Programme oder Schaltungen möglicherweise verursachten Schäden.
Die
dargestellten Schaltpläne, ohne den sichtbaren Schriftzug
'fritzing', und Auszüge aus Datenblättern sind Eigentum der
jeweiligen Hersteller. Eine eventuelle eigene Verwendung muß im
Vorfeld mit diesen abgestimmt werden.
Letzte
Aktualisierung: 25.08.2017