smarthome-tricks.de

Servosteuerung für ioBroker über ESP8266 und MQTT

In diesem Artikel zeige ich Dir, wie Du einen Servo über einen ESP8266 und MQTT mittels ioBroker steuern kannst.

Für ein neues Projekt habe ich eine kleine Steuerung gesucht, über die ich in ioBroker mehrere Servos steuern kann. Ein erster Ansatz über Tasmota hat leider nicht funktioniert, da ich hier über PWM die Servos nicht ansteuern konnte. Also entschied ich mich dazu, doch einen kleinen Sketch für den ESP8266 zu entwickeln. Dabei waren folgende Anforderungen gegeben:

Als Kommunikationsprotokoll setze ich, wie in den meisten Projekten, auch hier auf das MQTT-Protokoll.

Hier zunächst die Liste der benötigten Produkte:

Der verwendete Servo SG90 wird mit einer Betriebsspannung von 5V betrieben. Für den Anschluss habe ich einfache Male-Male Stecker verwendet, die ich mit der Buchse und dem Breadboard verbinde. Der braune Pin wird am ESP8266 an GND angeschlossen, rot an VIN und der gelbe Pin an den digitalen Pin D2.

Im folgenden Schaubild seht ihr die genaue Verkabelung der einzelnen Servos mit dem ESP8266.

Im nächsten Schritt können wir dann mit der Implementierung des Sketch beginnen. Ich habe den Sketch als Download hier bereitgestellt:

Sketch - ioBroker Servo Steuerung (2012 Downloads)


Im Sketch müssen wir zunächst die Konfiguration vervollständigen. Hierfür muss die WLAN_SSID sowie das Kennwort eingetragen werden. Zudem muss die IP-Adresse des MQTT-Brokers (in meinem Fall die IP-Adresse von ioBroker) sowie der entsprechende Port definiert werden.






Im Sketch werden nun in der setup-Funktion die entsprechenden Servo-Objekte aufgebaut und an die digitalen Anschlüsse D2 bis D4 zugeordnet. Zudem wird eine Verbindung zum WLAN-Netzwerk sowie MQTT-Broker hergestellt. Alles weitere läuft nun in der MQTT-Callback Funktion. Hier werden die entsprechenden Topics verarbeitet und somit die Servos gesteuert.

Nach dem Flashen des ESP8266 können wir in ioBroker auch schon in die Objekte wechseln. In den Objekten unterhalb des MQTT-Adapters sehen wir die Datenpunkte ServoControl\Servo1 bis Servo3. Hier können wir nun über den Datenbank Angle den Winkel des jeweiligen Servos steuern. Der Winkel geht hierbei von 0 bis 180°

Für den Test des Sketch habe ich eine kleine Visualisierung erstellt, mit dem ich ein CircleKnob Widget zur Servo-Steuerung verwendet habe. Das Widget stellt dabei denWinkelbereich von 0 bis 180° dar und lässt per Klick auch Änderungen zu. Als Datenpunkt habe ich den Angle-Datenpunkt eines Servos verwendet. Bei einer Änderung des Datenpunkts wird somit auf dem ESP8266 die Callback Funktion aufgerufen und der Servo entsprechend bewegt.

Im folgenden Bild siehst Du die verschiedenen Werte des Datenpunkts sowie die Servo-Stellung.

Ich hoffe Dir gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Die mobile Version verlassen