Connection Loss

Nachdem die SW-Funktionalität weitestgehend abgeschlossen ist (Video folgt), habe ich das System mal wieder über mehrere Stunden am Stück laufen lassen. Aus meiner Sicht sind solche Langzeittests immer eine gute Idee um die Stabilität des Systems genauer unter die Lupe nehmen zu können – und auch diesmal hat sich das bestätigt.

Immer nach etwa 4h lieft die Anwendung nicht mehr weiter. Der Grund lange Zeit unklar.

Per SSH war der Raspberry gar nicht mehr erreichbar und ich musste davon ausgehen, dass es ein größeres Problem war. Nach wälzen der syslogs bekam ich dann aber einen entscheidenen Hinweis – WLAN disconnect.

Ich vermutete den Grund in meinem neuen WLAN-Router, so dass ich mich auf die Suche nach einer Lösung begab. Momentan sieht der erneute Test gut aus – das System läuft jetzt schon eine ganze Weile länger, bestätigen möchte ich den Erfolg aber nicht nicht.

Ich halte euch weiter auf dem Laufenden…

Nix mit Crontab…

Ich hatte es groß angekündigt, muss jetzt aber etwas revidieren. Auf Grund der Einschränkungen beim parsen und verarbeiten von CronTab-Files bin ich darauf zurückgekommen, den Python-eigenen ConfigParser zu verwenden und stattdessen INI-artige Files zur Konfiguration von Bewässerungsjobs zu verwenden.

Der Vorteil: Szenarien

Hier kurz zum Aufbau:

Es kann mehrere Sektionen geben – diese entsprechen einem Szenario. Es ist also möglich, für das Wochenende andere Profile zu programmieren als für den Rest der Woche – oder für bis zu vier Ventil-Stränge (mehr als vier Ventile sehe ich derzeit nicht vor).

Somit kann die Bewässerung der Rasenfläche getrennt von den der Rosen und des Apfelbaumes geregelt werden, was eine große Flexibilität ermöglicht.

Neuer Projektstatus

Lange Zeit war es ruhig in diesem Projekt – das hatte verschiedenste private Gründe. Dennoch besteht meinerseits ein großes Interesse daran, das Projekt fertig zu stellen. Natürlich ist mir bewusst, dass ich den ursprünglichen Terminplan nicht mehr halten kann. Leider bin ich mit der Erweiterungsplatine nicht wie gewünscht vorangekommen, so dass ich jetzt im kompletten Redesign der Funktionen bin.

Dazu möchte ich eigentlich innerhalb des nächsten Monats eine neue Version im Test haben.

Trotz der Hardware-Mängel ist die Software aber nicht stehen geblieben. Entsprechende Funktionalität zum bedienen der beiden Softkeys ist realisiert. Derzeit arbeite ich gerade an der entsprechenden Bibliothek zum Zugriff auf die Raspberry Pi Hardware, so dass in nächster Zeit tatsächlich etwas zu sehen sein sollte.

Sobald wieder ein schneller Internet-Anschluss zur Verfügung steht, werde ich entsprechende neue Videos und Code-Fragmente dazu bereitstellen.

Ergänzung in eigener Sache:
Ich suche noch eine Gehäuselösung für den Raspberry Pi mit Hardware-Aufbau und Display und habe so richtig noch keine vernüftige Lösung dafür. Wenn sich als ein geneigter Leser dazu berufen fühlt, das Projekt an dieser Stelle zu unterstützen, so können wir uns sehr gerne darüber unterhalten. Vielen Dank für die Teilnahme

GControlPi – Die Platine ist da

Heute kam endlich der lang ersehnte Anruf – die Platine ist da!

Was ist mir aufgefallen?
Zunächst einmal ist der Auschnitt der Platine nicht innen sondern außen – dadurch sind einige Elemente ungeschickt positioniert. Das ist neben der Änderung des OneWire Pins schon die zweite Änderung für die Revision 0 des Boards. Das betrifft vor allem die Spannungsversorgung und die analogen Sensoren. Erstere befindet sich direkt über dem HDMI Port, letztere auf der Innenseite der Platine direkt hinter den USB-Anschlüssen! Beides ungeschickt.

Nach der ersten Bestückung wird man aber sehen, wie sich das genau auswirkt!

IMG_2781 IMG_2783 IMG_2782

 

 

GControlPi – Baschaffunsptoblematik

Puh – das war schwer zu verdauen. Die beiden ICs – also der LM2596S ist in der SOT-263 Version und der MCP3008 – sind offensichtlich nicht in Europa zu beziehen. Hier gibt es quasi nur die Möglichkeit die beiden Kisten in den USA oder in Asien (vornehmlich China) zu ordern.

Ich habe mich für ersteres Entschieden und DigiKey als Lieferanten gewählt. Man hat ja kaum eine andere Wahl…

GControlPi – Oops…

… da hab ich wohl nicht ganz genau aufgepasst. Anstatt GPIO4 ist beim GControlPi Hardware Revision 0 der OneWire Port auf GPIO5. Und jetzt wird’s kompliziert. Oder etwa doch nicht?

Es gibt ja Gott-sei-Dank die  /boot/cmdline.txt  und dort kam man die vorhandene Zeile ergänzt mit  bcm2708.w1_gpio_pin=5 . Damit ist es möglich den Standard Pin für OneWire von GPIO4 auf GPIO5 umzubiegen.

Nach Rücksprache mit meinem Fertiger der Platine, kommt die erste Platine wohl schon am Montag – wenn dem wirklich so ist, geht das ja richtig flott und ich kann beginnen, die erste Bestückung zu testen.

 

GControlPi – Add-On Board Revision 0

Es ist soweit. Die letzten Tage habe ich mich vor allem mit eagle rumgeschlagen, einem Tool mit dem man Schaltungen entwerfen und routen kann. Dabei rausgekommen ist die Revision 0 – die ersten von drei geplanten Boardversionen bis zum fertigen Layout.

gcontrolpi_rev00_3dboard

 

Folgenden Funktionsumfang bietet die Revision 0:

  • Bereitstellen der Eingangsspannung für den Raspberry Pi aus 24V Wechselspannung
  • SPI Analog-Digital Interface (12 Bit Genauigkeit) für die Bodenfeuchte-Sensoren
  • OneWire-Anschluss für die 18S20 Temperatur-Sensoren

gcontrolpi_rev00_routing

 

Was fehlt also noch? Genau – das Schalten der Ventile mit 24V Wechselspannung. Da aber das Schalten von Wechselspannung etwas komplizierter ist, als das Schalten von Gleichspannung habe ich mich entschlossen, diesen Punkt in Revision 0 erstmal außen vorzulassen. Da ich sowieso drei Hardware-Revision bis zum final Design einplane, passt das also genau mit meiner Planung zusammen. Derzeit sieht die Planung folgenden Umfang für die verschiedenen Hardware-Releases vor:

  1. [REV 0] Basis-Funktionalität (AC-DC Conversion, Onewire, ADC)
  2. [REV 1] Bug-Fix Basis-Funktionalität + Feature-Complete Design
  3. [REV 2] Bug-Fix Feature-Complete Design

 

24V AC – 5V DC Spannungsversorgung

Diese wird generell über einen LM2596 Step-Down Konverter erzeugt. Davor ist eine Gleichrichter-Diode geschaltet, die aus der 24V Wechselspannung so etwas wie eine Gleichspannung macht. Erklärung dazu gibt es etwa hier. In einem späteren Release bau ich diesen Teil der Schaltung ggf. nochmal um, so dass hier eine Brücken-Gleichrichterschaltung angewendet wird.

gcontrolpi_rev00_powerregulation

 

Analog-Digital Umwandlung

Auf der Suche nach einem ADC der für den PI tauglich ist, bin ich beim MCP3208 hängen geblieben. Dieser hat ein SPI Interface, dass der PI ebenfalls unterstützt. Dort angebunden sind derzeit zwei Kanäle – aus Platzgründen wird diese Revision erstmal keine weiteren IOs unterstützen.

 

OneWire-Interface

One-Wire kann auf dem Raspberry Pi direkt ohnen zusätzlichen Aufwand gemacht werden. Ich habe daher nur einen IO-Pin nach außen geführt und direkt mit einem 4,7k Widerstand verbunden.

 

GControlPi – Klassentreffen?

Ich war natürlich auch die letzten Tage nicht untätig und so kann ich einen Erfolg nach dem anderen verbuchen. Hier kann man schon fast von einem Klassentreffen sprechen, da neben der Erweiterung der Display-Klasse auch einen neue Klasse hinzugekommen ist, die sich um das Anzapfen der Wetterdaten auf forecast.io bemüht. Ich danke icons8.com für die wunderschönen Icons, die ich in der Anwendung verwende.

 

Folgende Funktion ist nun in der Display-Klasse vorhanden und erweitert den bereits realisierten Umfang des Zeichnen des Rahmens deutlich:

  • Darstellung von Datum und Uhrzeit auf Basis der Systemzeit
  • Darstellung der Temperatur auf Basis eines Dummy Wertes
  • Darstellung der Status- und Lifesign LEDs, wobei erstere zwischen rot und grün die Farbe wechselt und zweitere gelb blinkt
  • Darstellung des Wetter-Icons auf Basis der Informationen aus den Wetterdaten

 

Darüber hinaus gibt es nun – wie gesagt – eine Klasse, die sich um das anzapfen der Wetter-API bemüht. Dies hat bereits folgenden Funktionsumfang:

  • HTTP-Request zum Holen der stundenweißen Forecast-Daten
  • Berechnung der Durchschnitts-Regenwahrscheinlichkeit der nächsten Stunden (kann als Parameter übergeben werden)
  • Übergabe der aktuellen Daten zur Ansicht auf dem Display

 

Langsam wurde es auch nötig das Parsen einer Konfigurationsdatei einzufügen – glücklicherweise bietet Python dafür entsprechende Unterstützung mit der Klassen-Bibliothek ConfigParser  an:

 

Und jetzt noch paar Impressionen zum aktuellen Stand:

IMG_2735 IMG_2737