DS3231 RTC – Time is running slow

With my Nixie clock I had a problem while using the DS3231 module as RTC. The more often I query the RTC, the slower the time runs. In worst case you cold see a drift of some seconds just after one minute.

I tried tons of libraries and different coding solutions, but in the end it was the prepared module which I had to fix in hardware.
On the module there is a circuit for charging the battery – but mine was not chargable, also I don’t need to charge it so I removed this resistor.
Also there is a resistor-array as pull-up for the data lines SDA & SCL. I already heave external pull-up’s, so I removed this array too.
In the internet you find many pictures of people removing these resistors.

Picture of the module – found here.

 

 

MQTT Verstärkerumschalter mit dem ESP8266

Sonos ist ein geiles System, aber … Von Flexibilität haben die da leider noch nichts gehört. Auch die wollen Geld schöffeln und für jeden Zweck ein eigenes Gerät verkaufen. Unser Problem: Wir haben einen Sonos Connect Amp im Wohnzimmer und zusätzlich einen AVReceiver als Verstärker und HDMI-Umschalter für den Beamer. Jeder für sich braucht ein Lautsprecherpaar, d.h. es stehen vier Lautsprecher in der Gegend rum. Wir haben uns unterschiedliche Konfigurationen überlegt, auch mit anderen Sonos Geräten, kamen aber nie auf eine Zufriedenstellende und/oder bezahlbare Lösung. Also durfte ich endlich wieder was basteln 😀

Problem beim Umschalten zwischen zwei Verstärkern ist, dass die Verstärker niemals miteinander verbunden werden dürfen. Bei einem Lautsprecherumschalter ist dies nicht gegeben, da wird nicht darauf geachtet weil es unwichtig ist. Die am Markt verfügbaren Verstärkerumschalter sind alle technisch veraltet (Automation? Schnittstellen?) oder wieder sehr sehr teuer. Wir haben so viel Zeit in die Hausautomation gesteckt, da will ich doch nicht immer von Hand umschalten müssen. Vor allem nicht wenn ich bereits auf dem Sofa liege 😉

Also ging es an einen Plan für einen Umschalter über Relais mit dem ESP8266 (Microcontroller mit WLAN). Ich arbeite bewusst mit vier Relais, um ein zeit verzögertes aus- und einschalten beim Wechsel zwischen den beiden Verstärkern realisieren zu können. Zudem wurde eine Schutzschaltung in Hardware eingebaut die beim Schalten des einen Verstärkers die Schalteingänge für die Relais des zweiten Verstärkers auf Masse zieht, damit diese nicht versehentlich gleichzeitig geschaltet werden können. Sollte es nun passieren, dass alle Relais gleichzeitig geschaltet werden, gibt es keinen Kurzschluss, sondern ein Verstärker gewinnt immer.

MQTTAmpSwitch

Neben den im Schaltplan ersichtlichen Bauteilen kam noch folgendes dazu:

Da die Front- und Rückseite des Gehäuses aus Metall ist und die Anschlussklemmen nicht isoliert sind, habe ich die Rückseite durch eine Epoxy-Platte ersetzt.

 

Als Software kommt MicroPython für den ESP8266 zum Einsatz. Aktuell gibt es das Binary noch nicht öffentlich sondern nur eine Preview für Unterstützer über Kickstarter.

Fazit: Die Preview ist schon mega geil! Macht viel mehr Laune damit den ESP zu bestücken als mit der ArduinoIDE. Zudem hat man eine direkte Python-Konsole auf dem ESP und kann per Kommandozeile mit dem Microcontroller arbeiten. Das macht das Programmieren und Debuggen um einiges einfacher.

Hier ein erster Entwurf des Python Codes für den Umschalter – ist aber eher ein Proof of Concept – vernünftiger Code muss noch nachträglich gebaut werden 😀
Den jeweils aktuellsten Code gibts auf github: https://github.com/Torsten-/MicroPython_MQTTAmpSwitch

Der Code schickt übrigens auch jede Statusänderung über MQTT raus – egal ob manuell über den Taster, oder ob automatisiert über MQTT. So ist FHEM immer auf dem aktuellsten Stand.

 

In FHEM wird dann ein neues Device angelegt:

 

Zu den Schaltregeln – für den Anfang gibt es folgende:

  • Wenn ein Entertainment-Programm gestartet wird (Leinwand runterfahren, Beamer an, ..) wird der Umschalter auf den AVReceiver umgestellt
  • Beim Beenden des Entertainment-Programms wird der Umschalter wieder auf Sonos zurück gestellt
  • Wenn der Umschalter auf den AVReceiver umgeschaltet wird, wird die Wiedergabe des Sonos gestoppt

Lego Mindstorms – Baustellenkran

Bei diesem Lego-Projekt lag das Konstruieren im Vordergrund. Software gibt es zu dem Projekt nicht, mir reichte die Möglichkeit über Bluetooth und einer Android App fern zu steuern – das bietet der EV3 Controller auch ohne extra Programm an.

2015-01-01 14.05.18

Alle drei Motoren des Mindstorms-Sets haben ihre Funktion. Einer der zwei großen Motoren dreht den kompletten Kran, der zweite ist zuständig für die Seilwinde. Der kleine Motor bewegt den Haken auf dem Ausleger nach vorne und hinten. Der Haken selbst ist als Flaschenzug konstruiert (weil es geht – nicht weil es notwendig ist 😉 ).

Die meisten Probleme hat die Gewichtsverteilung gemacht. Etwas Spiel haben die zusammengesteckten Bauteile immer, deswegen ist der schwere Kran teilweise eine wackelige Angelegenheit. Beim drehen merkt man, dass der Fuß viel zu leicht ist. Wenn der Motor voll loslegt, dreht sich eher der Fuß auf dem Boden. Insgesamt bin ich mit dem Ergebnis aber zufrieden.

Lego Mindstorms – Farbsortierer

Mir wurde eine Leihstellung Lego Mindstorms Education zur Verfügung gestellt. Damit kann man auf die etwas andere Art experimentieren und basteln – und ganz wichtig: endlich wieder mit Lego Technik spielen 😀

 

Der erste „Gehversuch“ war dann direkt ein balancierender Roboter.

2014-12-24 22.53.47

Der Roboter balanciert auf den zwei Rädern und weicht Hindernissen aus, wenn er diese durch den Ultraschall- oder Lichtsensor erkennt.
Das ganze wurde jedoch nach Anleitung gebaut und die Software war auch schon fertig.

 

 

Heute ging es dann an den ersten freien Versuch ohne Anleitung und mit eigener Software. Es sollte ein kleiner Sortierer werden, der die Bausteine nach Farbe sortiert. (UPDATE: Ich habe mittlerweile gesehen, dass es einen Farbsortierer als Beispielprojekt gibt – deren Lösung ist anders, aber auch interessant 😉 ) Ein Motor legt Baustein für Baustein einzeln auf das Fließband. Vorher nimmt der Farbsensor die Farbe auf. Danach dreht ein zweiter Motor das Fließband für x Sekunden weiter, wobei x durch die zuvor erkannte Farbe bestimmt wird. Zum Schluss wird über einen dritten Motor ein Schieber bewegt, der den farbigen Baustein vom Fließband schiebt.
Das Display zeigt die jeweils erkannte Farbe und zum Schluss eine Statistik der gezählten Bausteine pro Farbe.

Hier gibt es den „Quelltext“: Farbsortierer
Bildschirmfoto vom 2014-12-26 11:45:12

Und hier ein Video mit der Maschine in Aktion.

Erste Erkenntnisse:
– Konstruktionen sind gar nicht so einfach – es fehlt immer ein bestimmter Stein, den es nicht gibt 🙂
– Die Programmierung ist echt super einfach gestaltet
– Die super einfache Programmierung ist manchmal etwas umständlich, wenn man schon programmieren kann