23.01.2020

… aber es fällt einem immer noch etwas ein…

Die gestern implementierte Auswertung der Winddaten und Umsetzung dieser in eine entsprechende Ansteuerung der passenden LEDs auf dem Streifen, wollte heute natürlich noch optimiert werden. Dabei musste ich noch einige kleinere Anpassungen vornehmen und konnte die Funktionalität auch ausführlich testen.

Heute habe ich zudem daran gearbeitet, den Code besser lesbar zu machen und diverse zusätzliche Kommentare eingefügt. Neben diesen eher kosmetischen Anpassungen habe ich mich zudem dafür entschieden, zu den teilweise sehr kompakten und komplizierten Codefragmenten auch die deutlich längeren, aber leichter verständlichen Teile des Python-Scripts zu erhalten. Diese sind vor allem für eine Umsetzung in der Schule deutlich leichter zu verstehen und für Einsteiger geeignet.

22.01.2020

eigentlich ist ja technisch alles fertig…

Da Henrike heute mit dem Design der Holzoberfläche für die Uhr begonnen hat, sind dabei noch ein paar Kleinigkeiten zur Reihenfolge und Anordnung der LEDs aufgefallen. Dementsrechend habe ich heute zuerst noch ein paar Änderungen im Code umgesetzt. Da die Verwendung der Wetterdaten und die Ansteuerung aller LEDs zuverlässig funktioniert, habe ich mich zudem an einige programmiertechnische Optimierungen im Python Script gemacht. Wärend das Modell der Uhr weiter Form annahm und wärend ich mich weiter mit dem Programmcode beschäfftigte, kam mir eine neue Idee: Wäre es nicht super, wenn zusätzlich auch noch Windrichtung und Windstärke angezeigt werden könnten?

Da zum einen, auf der Uhr noch Platz war, als auch, weil die Wetterdaten diese Informationen hergaben, beschloss ich diese kleine Erweiterung noch umzusetzen. Da auch noch genügend LEDs vom LED-Streifen verfügbar waren, versuchte ich nun, die Wanduhr noch um die Anzeige dieser Informationen zu erweitern.

Zuletzt eine gute Nachricht: Unser letztes, lang erwartetes Bauteil war angekommen: Der Raspberry Pi Zero W. Wir konnten uns also nebenbei auch noch damit befassen, unser Projekt auf den richtigen Pi zu übertragen. Dieses Vorhaben erwies sich nach einer kleinen Hürde einfacher als zuvor befürchtet. Die Hürde dabei war, dass wir zuerst noch nicht über das passende Mini-HDMI-Kabel verfügten, sodass wir kein Display an den Pi anschließen konnten. Da uns dieses Problem jedoch bereits gestern Abend aufgefallen war, hatten wir über Nacht bereits ein Kapel bestellt, dass heute Morgen schon ankam.

Mit der umgesteckte Speicherkarte startete der Pi Zero W dann ohne Probleme. Drei Nachteile tauchten jedoch bei der Benutzung des neues Pis auf: Erstens läuft er deutlich langsamer, was sich zum einen auf die Startdauer, aber auch auf die Performance beim Abspielen der Fotos auswirkte. Zweitens verfügt der Pi Zero W über keine integrierte Pin-Bank, an die der LED-Streifen einfach angeschlossen werden können. Stattdessen müssten diese direkt verlötet werden. Der dritte Nachteil sind die fehlenden USB Type A Anschlüsse. Stattdessen sind nur zwei micro-USB-Anschlüsse vorhanden. Demnach konnten wir auch keine Tastatur mehr anschließen. Aufgrund dieser Faktoren beschlossen wir daher, dass wir erst sobald alles fertig ist, auf den Pi Zero W umsteigen und bis dahin weiter mit dem Pi 3 A+ arbeiten werden.

20.01. – 21.01.2020

alles leuchtet, … so schön bunt …

Nachdem in der letzten Woche das Python-Skript zur Umsetzung der Wetterdaten in die Ansteuerung der entsprechenden LEDs auf dem LED-Streifen entwickelt und ausgiebig getestet wurde, stehen nun nur noch Feinheiten und kleine programmier-stylistische Optimierungen des Codes an. Dabei sollen einige Doppelungen im Code in Funktionen ausgelagert und dieser damit übersichtlicher gestaltet werden.

Der letzte Punkt in der Softwareentwicklung zu meiner Hälfe des Projekt ist die Automatisierung des Python Skripts. Da auch dem Display des Pi’s dauerhaft die Diashow angezeigt werden soll und man auch in der Regel keine Tastatur an seine Uhr anschließen möchte, soll das Wetter automatisch abgefragt und im Hintergrund regelmäßig aktualisiert werden. Für die Realisierung der regelmäßigen Ausführung des Python-Skripts habe ich mich dem Raspbian Onboard-Tools Crontab bedient. Dieses ermöglicht eine einfache Umsetzung von geplanten regelmäßigen Ausführungen.

Dabei habe ich zudem darauf geachtet, dass die Ausführung auch bei laufender Diashow funktioniert und diese nicht beeinflusst.

15.01. – 19.01.2020

jetzt geht es an die Hardware…

Nachdem ich zuletzt bereits Abfrage und Auswertung der Wetterdaten aus dem Internet realisieren konnte, musste ich mich nun um die Ansteuerung der LEDs kümmern. Zum Glück war mittlerweile der Großteil unseres Materials angekommen, sodass ich direkt mit den LED-Streifen arbeiten konnte, die wir für unser Projekt eingeplant hatten.

Nach einigen Startschwierigkeiten bezüglich der Ansteuerung und beim Anschließen des LED-Streifens (ich habe mich dann doch zu Testzwecken dazu entschieden, nicht gleich den richtigen sondern unseren kurzen Teststreifen zu verwenden) konnte ich mich damit auseinandersetzen, auf welche Weise einzelne LEDs auf dem Streifen ansteuerbar sind und wie dessen Farbe und Helligkeit angepasst werden kann.

Im Laufe der Arbeit mit dem LED-Streifen festigte sich bei mir zudem die Idee, das ursprüngliche Konzept insofern umzuwerfen, als das ich auf die einzelnen LEDs, die ich vorher zur Beleuchtung der Wettersymbole vorgesehen hatte, verzichten wollte. Stattdessen entschied ich, dass es einfacher und schöner wäre, alle LEDs in der Uhr als Teil des LED-Streifens zu realisieren. Weitere Entscheidungen, die sich erst während der Entwicklung festigten, war die Festlegung, wielang der eingebaute Temperaturstreifen sein sollte, aber dazu gleich mehr. Neue Ideen und Möglichkeiten, wie ein multifunktionales Wettersymbol, dass vier Symbole in sich vereint, entstanden ebenso bei der Programmierung und der Erforschung der Möglichkeiten des LED-Streifens.

Um unsere weitere exakte Planung zur Größe, Form, Anordnung und Zusammensetzung aller Komponenten zu einer richtigen Uhr besser zu managen, fertigten wir aus Papier ein 2D-Modell in Originalgröße an. Da die sichtbaren Komponenten (Uhrwerk, LED-Streifen, Display) nun alle vorhanden waren, konnten wir alle Teile des Modells präzise anfertigen. Dabei stellte sich heraus, dass eine der schwierigsten Komponenten der lange LED-Streifen zur Anzeige der Temperatur war. Wir hatten dabei die fixe Idee, dass jede LED auch genau für ein Grad Celsius stehen sollte, aber auch sicherlich Temperaturen von -15 bis +35 Grad problemlos darstellbar sein sollten. Da die LEDs in verschiedenen Farben leuchten können, entstand daher die Idee, sowol für positive als auch für negative Temperaturen die gleiche Skala zu verwenden, jedoch in einer anderen Farbe zu beleuchten. Auf diese Weise konnten wir die benötigte Länge halbieren. Schlussendlich kamen wir überein, dass es möglich ist, den Temperaturstreifen mit 35 LEDs (Temperaturen bis +/- 35°C) übereinander auf der Uhr unterzubringen, ebenso wie die drei Wettersymbole, das 7″ Display und die analoge Uhr.

Die exakte Ansteuerung der LEDs auf dem LED-Streifen anhand der Wetterdaten war aufgrund der Vorarbeit in Python aus der Vorwoche gut umzusetzen, sodass “nurnoch” die Feinheiten eingearbeitet werden mussten und zu einem guten Ergebnis führten.

Hier ein Beispiel des angesteuerten Streifens bei Gewitter mit Regen und +14 °C:

Ein Beispiel für starken Schneeregen bei 1°C:

Ein letztes Beispiel für klaren Himmel bei -7°:

Hier wird deutlich, dass die LEDs rechts später das enstsprechende Wettersymbol und links die LEDs das Thermometer, bzw. die Temperatur darstellen.

11.01. – 14.01.2020

endlich geht das Programmieren los…

Damit das Projekt jetzt richtig Fahrt aufnehmen kann, muss ich versuchen, mein Wissen über die abgefragten Wetterdaten in Python auszuwerten. Da die Daten im JSON-Format vorliegen, ist der Umgang mit diesen deutlich leichter als befürchtet. Python kann dabei leicht und schnell durch die verschachtelten Listen navigieren. Nach etwas Rumprobieren und Auswerten der verschiedenen Teile der Listen konnte ich dabei die für mich relevanten Daten wie Temperatur und WetterID recht einfach auslesen. Dabei ist die WetterID ein dreistelliger Dezimalwert, der genau die Wetterlage beschreibt. Beispielsweise steht 800 für klaren Himmel und 201 für Gewitter mit Regen. Die Temperatur wird direkt in Kelvin übermittelt.

Zu Beginn habe ich mich dabei ausschließlich auf die Auswertung der übermittelten Daten konzentriert, bevor ich mich mit der Ansteuerung der Hardware beschäftigen wollte. Dies hatte zum Vorteil, dass ich die Programmierung einfach am Computer machen konnte, wärend Henrike direkt am Raspberry Pi an ihrem Teil des Projekts arbeitete.

06.01. – 10.01.2020

Langsam wird es ernst…

Obwohl der Großteil unserer Teile noch nicht da ist, haben wir uns dazu entschlossen, mit der Entwicklung bereits zu beginnen. Zu diesem Zweck haben wir leihweise einen Raspberry Pi 3 A+ mit einer 16GB Speicherkarte bekommen. Wir haben daher damit begonnen, ein Betriebssystem auf den Pi zu spielen. Da es für Anfänger empfohlen ist, haben wir dabei zuerst das Einsteiger-Paket NOOBS verwendet, dass eine einfache Installation des Betriebssystems auf dem Pi ermöglicht. Als Ausgabegerät für den Pi haben wir unseren Fernseher genutzt und diesen per HDMI an den Pi angeschlossen. Dies funktioniert problemlos. Als Eingabegeräte konnte wir sowohl Maus als auch Tastatur an den Pi anschließen.

In dieser Woche hat Henrike auch erste Versuche unternommen, ihre Ideen zur automatischen Anzeige von Bildern mit dem Pi umzusetzen. Ebenso hat sie sich hauptsächlich mit der Installation und Einrichtung des Pi beschäftigt. Dazu mehr in ihrem Entwicklertagebuch.

Parallel habe ich versucht mich mit der “normalen” Installation von Rapsbian Buster auseinanderzusetzen, da ich noch nicht genau wusste, ob es funktionelle Unterschiede oder irgendwelche Nachteile bei der nachfolgenden Benutzung von NOOBS gab. Abgesehen von anfänglichen Schwierigkeiten mit den Downloads von Raspbian Buster, schien die Installation deutlich einfacher als befürchtet.

Schließlich befasste ich mich damit, wie ich Wetterdaten aus dem Internet abfragen konnte. In diesem Kontext stieß ich auf die Möglichkeit, die Wetterdaten via API direkt von https://openweathermap.org/ abzufragen. Diese Schnittstelle ist ausführlich dokumentiert und wurde auch schon in anderen Projekten genutzt. Um diese Wetterdaten zu bekommen, war zwar eine Registrierung auf der Webseite möglich, diese ist jedoch kostenlos. Der unbezahlte Zugang sichert einem 60 Abfragen in der Stunde zu, was für meine Zwecke ausreichen sollte. Es ist zudem möglich, sowohl das aktuelle Wetter, als auch eine Wetterprognose für einen beliebigen Ort zu bekommen.

28.12.2019 – 05.01.2020

… warten, warten, warten…

Die Zeit zwischen den Jahren konnten wir dazu nutzen, unsere Recherche zu bereits umgesetzten Projekten insofern auszubauen, als das wir uns mit unserem Komponenten genauer beschäftigt haben. Dabei ist der spannendste Teil die Programmierung des Raspberry Pi, da wir bisher mit dieser Komponente weder im Seminar, noch anderswo gearbeitet haben. Die Möglichkeiten, die ein Raspberry Pi liefert, sind im Vergleich zu einfachen Mikrocomputern, wie dem von uns ursprünglich eingeplanten Esp8266, noch vielzahliger.

Wir nutzten die Zeit also, um uns bereits ein wenig mit den Betriebssystemen, die für den Rapsberry zur Verfügung stehen, zu beschäftigen.

Zu guter letzt haben wir uns auch noch ein wenig in die Benutzung von WordPress eingearbeitet, damit wir hier eine gute Dokumentation zum Projekt anlegen können. Aus der Vielzahl der von uns im Internet durchsuchten und gelesenen ähnlichen Projekte können wir berichten, dass es häufig die unteschiedlichsten Probleme im Bezug auf unvollständige, ungenaue oder schlicht nicht korrekte Dokumentation der Projekte gibt. Das wollen wir selbstverständlich besser machen.

18.12. – 22.12.2019

Nachdem unsere Bestellung in Auftrag gegeben ist, müssen wir vorerst auf die Komponenten warten. Davon abgesehen haben wir die Zeit genutzt, um im Internet nach Projekten zu recherchieren, die ähnliche Ziele haben, wie unseres. Dabei haben wir kein Porjekt gefunden, dass genau unserem gleicht, was auch zu erwarten war, da die Kombination recht speziell ist. Dennoch konnten wir sowohl Projekte finden, die Wetterstationen bauen, die ihre Daten aus dem Internet beziehen, als auch eine Vielzahl an Projekten zum Bauen eines digitalen Bilderrahmens. Wir hoffen, dass wir von diesen Projekten etwas für unser Projekt lernen können.

16.12. – 17.12.2019

Die Lösung der Krise…

Nach längerer Beratung untereinander und mit Anatolij haben wir uns dazu entschlossen, das Projekt mit einem RaspberryPi umzusetzen. Genauer gesagt mit dem sehr schlanken Raspberry Pi Zero W. Dieser bietet uns alle Funktionalitäten, die wir benötigen und wird kein Problem damit haben, alle Komponenten gleichzeigtig anzusteuern. Er bietet einfache Anschlussmöglichkeiten für ein Display via HDMI.

Abgesehen von dieser wichtigen Entscheidung haben wir auch unsere Materialliste mit den Komponenten finalisiert, die bestellt werden müssen:

  • Raspberry Pi Zero W
  • Micro USB Netzteil 5V/ 3,1A
  • LCD Display 7“, inkl. HDMI- und MicroUSB-Kabeln
  • Kabel: MicroUSB zu MicroUSB zur Stromversorgung des Displays über den Pi
  • Micro SDHC Speicherkarte: 32GB
  • Funk-Uhrwerk

Weitere Komponenten, die bereits bestellt wurden und die wir verwenden werden, sind:

  • LED-Streifen mit 144 LEDs je Meter
  • weitere einzelne LEDs zur Beleuchtung der Wettersymbole
  • Kabel zur Verbindung der Komponenten

Es ist leider nicht wahrscheinlich, dass die Bestellungen über die Universität schnell genug abgewickelt werden können, sodass wir mit dem Material bereits zwischen den Jahren arbeiten können.

12.12. – 15.12.2019

Die erste kleine Krise…

Wir haben uns weiter mit den zu verwendenden Komponenten auseinandergesetzt, um festzulegen, was genau bestellt werden soll. Leider sind wir uns aufgrund fehlender Erfahrung noch sehr unsicher bezüglich der Auswahl einiger Komponenten. Besonders bei der Auswahl des Monitors treten einige Probleme auf. Unsere ursprüngliche Idee war es, für die Ansteuerung von Monitor und Wetterausgabe den Esp8266 zu verwenden. Es is jedoch schwierig, zu diesem passende Displays zu finden, die eine Größe von mindestens 7″ aufweisen. Dies haben wir jedoch für uns als minimale Größe zum sinnvollen Anzeigen von Fotos festgelegt. Wir konnten leider auch keine bereits umgesetzten Projekte finden, die zum einen gut genug dokumentiert sind und zum anderen mit dem Esp8266 ein solches großes Display ansteuern.

Die Großzahl der ähnlichen Projekte, die wir zur Thematik “digitaler Bilderrahmen” finden konnten, nutzen einen RaspberryPi. Auch die Großzahl der im Internet angebotenen Display sind für den RaspberryPi ausgelegt bzw. garantieren eine Kompatiblität zu diesem.

Da wir uns noch sehr unsicher in diesen Dingen sind, werden wir uns dazu nochmal mit Anatolij beraten und seinen Rat einholen, ob wir evtl. doch auch einen RaspberryPi für das gesamte Projekt verwenden sollten.

Leider sitzt uns auch die Zeit im Nacken, da wir urspünglich vorhatten, bereits zwischen den Jahren mit der Umsetzung des Projekts zu beginnen, es jedoch knapp wird, da wir bisher noch keine Komponenten bestellt haben.