Dienstag, 6. Juni 2017

Rasenroboter Ambrogio

darf ich vorstellen: unser neuer Mitbewohner...

wir haben nun einen Rasenroboter, steinalt, dafür hat er aber auch fast nichts gekostet.

Ambrogio und Katze

es ist ein Ambrogio L200 von 2003, den Begrenzungsdraht habe ich nur mit Kunststoff - Erdnägeln befestigt, da der Garten ja noch ständig verändert wird. (der Bauschutthaufen da hinten ist schon wieder weg) Eingegraben wurde nur ein Begrenzungsdraht auserhalb des Gartens, also hinter dem Zaun. damit besteht die Möglichkeit auch zwischen den Lärchen zu mähen.

Stiga Kabelverlegemaschine

hier ist der Mäher bei der Spiralfahrt zu sehen:


das Video endet mit der Kollision an einem Rechenstiel:

Schnittkraft Mähroboter
einige Veränderungen habe ich an dem Roboter noch durchgeführt, zum einen wurde die original Glühbirne durch eine LED ersetzt und die großen Bleiakkus 12V 7,2Ah habe ich durch kleinere AGM's mit 3,4Ah ersetzt. mit dem halben Gewicht der Akkus fährt er viel besser.

Ambrogio L200 mit kleinen Akkus und 10W LED Licht

allerdings war die Laufzeit mit 1,5h nicht sehr lang, darum habe ich bei Hobbyking zwei Lippo Akkus bestellt:

Zippy 7s 4000mAh LiPo

25.9V

Balancer und Schutzschaltung für 7s Akkus aus China

mit diesen Akkus steigt die Kapazität auf 8Ah bei dem selben Gewicht wie die kleinen 3,4Ah AGM Batterien. die Betriebsspannung steigt auf über 27V, der Roboter fährt damit schneller und mäht besser, da sich auch die Messerscheibe schneller dreht. Laufzeiten von 4 Stunden sind kein Problem.

als nächstes habe ich noch eine neue Messerscheibe gefertigt:


damit geht der Roboter schon leiser, aber im Vergleich zu Husqvarna Automower 450 geht er echt noch laut, ich vermute die Umfangsgeschwindigkeit ist noch zu hoch. mal sehen was ich da noch umbauen kann, ich werde berichten.

Donnerstag, 16. Februar 2017

Wifi led Fluter mit MQTT, ESP8266 und Arduino IDE

im Winter ist es bei uns dunkel 😑:


Abhilfe schafft ein neuer Led Fluter von 100W aus China. dieser bekam noch einen Esp8266, seit einiger Zeit gibt es fertige Relay Boards für wenige Euro.


programmiert wurde der ESP mit der Arduino IDE und fast dem gleichen Sketch wie die anderen SmartHome Arduinos die schon ihre Arbeit seit Jahren tun.

auf Bewegungsmelder haben wir bewusst verzichtet, die Praxis zeigt, sie gehen kaputt, sie gehen am Tag an, oder reagieren schon auf Katzen - alles Mist.
also muss das Licht per Hand angeschalten werden.
aber Handy anschalten - warten bis es sich per Wlan verbunden hat - App öffnen - Licht anschalten, dass ist auch nicht smart 😂

hier kommt der Amazon Dash Button ins Spiel


für 5€ bekommt man dann einen Wifi Schalter

hier der ganze Aufbau:



😀

Donnerstag, 9. Februar 2017

Arduino Speicherproblem, kein RAM mehr, out of free RAM

bei großen Projekten geht der Ram eines Arduino uno schneller zu neige als man denkt.
unsere Frischwasserstation nutzt einen Arduino und dort gab es mitlerweile Probleme.
der Funktionsumfang ist seit dem Bau erheblich gewachsen:

Frischwasserstation Anzeige im smarthome fhem
als es dann beim kompillieren die Warnung für wenig freien Ram gab, folgten auch die ersten Abstürze:



das eigentliche Problem sind nicht etwa Variablen, sondern die vielen Zeichenketten, die über die serielle Schnittstelle und über MQTT zum smarthome übertragen werden.
folgendes Beispiel soll dies verdeutlichen:


dieser Sketch macht nichts anderes als etwas Text auf der Schnittstelle auszugeben. der avr lädt aber die Literale beim Start in den RAM, somit sind 21% einfach weg. um dieses Problem zu beheben kann man sich des F() Makros behelfen:


nun werden die Literale nicht mehr in den RAM geladen, leider funktioniert das nur bei den print Befehlen.

andere Funktionen die eine Zeichenkette (char) erwarten, wollen sie auch im RAM liegen haben.

dazu kann man sich ein eigenes Makro schreiben:

char StringBuffer[80];
#define P(str) strncpy_P(StringBuffer, PSTR(str), sizeof(StringBuffer))

ab jetzt können Literale auch an Funktionen übergeben werden die einen char im RAM erwarten, da er ja vorher ins RAM kopiert worden ist. die größe des StringBuffer sollte man etwas größer wählen als die längste Zeichenkette [80].

ein Beispiel sähe dann so aus:
client.publish(P("/Frischwasserstation1/VorlaufHeizung"), [char] );


in diesem Sinne frohes programmieren.