Alle Beiträge von sfambach

Willkommen auf meinem Blog

Ich habe schon ein paar Projekte mit Microcontrollern erfolgreich abgeschlossen. Da ich durch meine Arbeit und Familie manchmal Wochen oder gar Monate lang nicht zum Weitermachen komme, fange ich danach meist wieder von vorne an. Irgendwann war ich es leid, deshalb habe ich mich entschlossen die, dem Internet entlockten Erkenntnisse, aufzuschreiben oder zumindest zu verlinken. Daraus ist dieser Blog entstanden.

Dieser Blog beinhaltet, wie ich hoffen, eine nützliche Sammlung von Beiträgen zum thema Microcontroller. Die Beiträge sind sehr selektiv und meinen aktuellen Interessen geschuldet.

Durch die begrenzte Zeit sind größere Beiträge meinst in thematisch abgeschlossene kleine Stücke unterteilt. Dies ermöglicht mir schnell einen Beitrag abzuschliessen und doppelte Erklärungen zu vermeiden, indem ich sie einfach verlinke.
Leider wirkt sich das nachteilig auf die Navigation aus, leicht kann man den Überblick beim springen zwischen den Beiträgen verlieren.

Inhaltlich liegt ja bekanntlich in der Kürze die Würze, leider aber auch die Missverständnisse. Ich versuche die Sachverhalte immer kurz zu umreissen und mit einen für mich selbstverständlichen Beispielcode oder ähnlichem zu versehen. Dies hilft mir, wenn ich wieder mal nach Monaten neue starte, nicht bei NULL anzufangen.
Leider müssen diese kurzen Skizzen für andere Leser nicht unbedingt verständlich sein. Somit lebt auch dieser Blog von den Kritiken der Leser. Schreibt also wenn euch was nicht klar ist oder nicht gefällt. Positive Kommentare sind natürlich auch was schönes, Kritik ist mir jedoch lieber ;). Der Blog ist so konfiguriert, dass der erste Kommentare von mir freigeben werden muss. Dies soll nicht der Zensur dienen sondern nur den täglichen Spam herausfiltern.

Die Rechtschreibung und ich! Ich bin der deutschen Rechtschreibung nicht wirklich Herr. Auch tendiere ich dazu bestehende Sätze am Anfang zu verändern ohne den Schluss richtig anzupassen. Daraus entstehen dann meist unverständliche Konstrukte. Ich lese die Beiträge 2-3 mal gegen, dennoch fallen mir nach dem Veröffentlichen immer wieder Patzer auf. Diese bitte ich zu entschuldigen. Ich werde sie, sobald sie meine Aufmerksamkeit erringen, korrigieren.

An diese Stelle bleibt mir nicht mehr übig als euch viel Spaß mit meinem Blog zu wünschen, möge die Macht mit euch sein ;).

SFA

Menü Klassen für LCD Displays

Da ein Menü auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalitäten in Klassen gepackt.

Komponenten

Hardware

Software

  • Arduino IDE
  • LiquidChristal Lib (Kann über den Bibliotheksmanager installiert werden, siehe auch hier )
  • Meine Menu Lib (siehe unten)

Ziele

  1. Schritt einfache Header mit Klassen, die in einem Hauptrogramm verwendet werden können (erledigt).
  2. Schritt Verpacken der Klassen  als Arduino Lib welche in die Gui Importiert werden kann. (erledigt)
  3. Weitere Menüpunkt Varianten erstellen. (Kommt vielleicht noch)

Installation

Download

Die Lib kann bei GitHub runter geladen  werden (Hier der Link).

Hier könnt ihr sie direkt als Zip-Datei herunterladen.

Arduino IDE

Das Zip könnt ihr in der Aruino GUI installieren, siehe auch hier.

Testprogramm

Bei der Lib ist ein Testprogramm dabei, welches ihr über die Examples auswählen könnt.

LCD Menu Lib -> LCDSchieldTest

Hier seht ihr wie es geht.

Das Programm kompilieren und auf den Arduino spielen.

Wenn ihr ein andere Board verwendet bzw. nicht die LCD Keypad Platine, müsst ihr die Einstellungen für die Knöpfe und das LCD Display entsprechend euere Konfiguration anpassen.

Erklärung

Das Menü wird in der Funktion buildMenu() aufgebaut. Hier wird ein Haupmenüknoten erstellt, an den dann der Rest angehängt wird.

Folgende Knoten stehen aktuell zur Verfügung:

ItemMenu – Menü  -> Kann alle anderen Menüpunkte als Kind bekommen. Kann auch als Untermenüpunkt verwendet werden.

ItemBool – Schalter -> Dieser Menüpunkt kann ein und ausgeschaltet werden.

ItemInt – Ganzzahlenwert -> Hier können integer Werte erhöht oder vermindert werden. Min und Max geben die Schranken an.

Die Callbacks werden im Beispiel nicht benutz, diese könne dazu verwendet werden eine Funktion in eurem Programm aufzurufen wenn sich der Wert eines Menüpunktes ändert.

Navigation im Menü

Oben steht am Anfang das Hauptmenü.

Unten steht der 1. Menüpunkt. Mit den rechts/links Tasten könn ihr den ensprechenden Menüpunkt auswählen. Mit runter springt ihr in den Menüpunkt, mit hoch springt ihr wieder raus.

Die Menüs können beliebig verschachtelt werde, wie ihr an Submenue 1 und 2 seht.

Ausblick

Für mich reicht die Bibliothek erst mal, ich habe aber noch ein Paar Ideen vielleich werde ich die bei Gelegenheit nochmal umsetzen:

  • Gleitkomma Menüeintrag
  • Balken  Menüeintrag, für kleine Intwerte wird ein Balken angezeigt der die Einstellung symbolisiert.
  • Auswahlliste Menüpunkt (.. Wähle A, B oder C …)
  • zusätzlichen Beispiel für Callbacks

Probleme

Aktuell klappt das entprellen der Tasten im Beispiel nur bedingt. Den Fehler muss ich noch finden und beheben.

Quellen

Arduino LCD Keypad Shield

 

Arduino LCD Keypad Shield

Die LCD, Keypad Zusatzplatine passt auf den Arduino Uno und kompatible Boards.

Es hat wie der Name schon impliziert ein blaues 2×16 Zeichen LCD Display und 6 Tasten.

Ansichten

Oben

  • Ein grosses Display in der Mitte
  • Links oben die Einstellung für den Kontrast
  • Unten die Knöpfe (Select, Left, Up, Down, Right und Reset)

Unten

Unten gibts ausser den Pins nicht viel zu sehen.

Beschaltung

Pin Function
Analog 0 Köpfe (select, up, right, down and left)
Digital 4 DB4
Digital 5 DB5
Digital 6 DB6
Digital 7 DB7
Digital 8 RS (Daten oder Singalanzeige)
Digital 9 Enable (Aktivierung)
Digital 10 Beleuchtungssteuerung

Bibliothek

Im Bibliotheksmanager nach Liquid Crystal suchen und die Bibliothek installieren.

Wie es geht seht ihr hier.

Testprogramm

Das Testprogramm habe ich nicht selbst geschrieben, sondern ich verwende das von DFRobot.

Hier der Code ArduinoLCDKeypadShieldTest

Einfach kompilieren und aufs board laden. Wie es geht seht ihr hier.

So solltes es aussehen:

Wird ein Knopf gedrück, wird dieser links unten angezeigt.
Rechts werden die Sekunden seit dem Programmstart hochgezählt.

Fehlersuche

Das Display zeigt nicht ans

Links oben ist eine Einstellschraube für den Konstrast. Diese nach rechts drehen bis die Buchstaben und Ziffern sichtbar sind.

Quellen

https://www.arduino.cc/en/Reference/LiquidCrystal

Nr.01 – Keypad Shield

https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

https://forum.arduino.cc/index.php?topic=424620.0

http://arduino-projekte.de/index.php?n=25

 

Arduino SSD1306 Monochrom OLED 128×64 I2C

Ich möchte für ein kleinen Projekt ein kleines 128×64 Pixel großes Oled Display anschliessen. Hierfür habe ich mir einen kleinen Prototyp erarbeitet den ich hier gerne vorstellen möchte.

Ich betreibe das Display an einem Arduino Uno über den Wird Bus.

Komponenten

Hardware

  • Arduino Uno oder ähnlich
  • Oled Display SD1306
  • Prototyp shield oder ein Steckbrett
  • Ein paar Verbindungskabel

Software

  • Arduino IDE (Installation)
  • Adafruid Adafruit_SSD1306 Unified Bibliothek
  • Testprogramm aus der Bibliothek

Versuchsaufbau

Ich verwende die Prototypzusatzplatine (siehe hier).

Das Display wird über den Arduino mit Strom versorgt. Zusätzlich findet die Datenkommunikation über den Wire Bus statt, dieser liegt auf Port A4 und A5 des Arduino Uno.

Schaltplan

Bibliothek

Es gibt auch andere Bibliotheken für das SD1306 aber die Adafruit war mit geringen anpassungen die für mich die am leitesten zu verwendende.  Bei anderen hatte ich zusätzlich das Problem, dass der Speicher des Arduino zu klein ist.

Entweder über GITHUB die neuste Version holen oder über den Bibliotheksmanger installieren.

https://github.com/adafruit/Adafruit_SSD1306

Wie es geht steht hier.

Programmierung

Vorbereitung der Bibliothek

Eine sehr lästige Eigenschaft der Adafruit Bibliothek ist, das hier das define der Displaygröße für den Präprozessor in der Bibliothek geändert werden muss. Dieses steht standardmässig auf 128×32 Pixel.

Also Bibliothek auf der Festplatte suchen, die Datei heist:

Adafruit_SSD1306.h

In der aktuellen Version wird die Zeile74 Ausdokumentiert und die Zeile 73 reingenommen.

Beispielprogram

Ich verwende ein Beispielprogramm, welches zur Bibliothek gehört:

Pfad: Adafruit SDD 1306 -> sdd1306_128x64_i2c

Wie ihr ein Tesprogramm auswählt, findet ihr hier.

Das Programm auf den Arduino schieben, und schon sollte es klappen.

Weitere Projekte

NodeMCU V3 mit Oled Display aufmotzen

Quellen

https://github.com/adafruit/Adafruit_SSD1306

 

 

Arduino IDE

Ich habe festgestellt, dass sich in meinen Beiträgen, Anleitungen welche die Arduino IDE betreffen, wiederholen. Diese möchte ich hier sammeln. Es wird hier keine kommplette Beschreibung der IDE geben, ich werde den Artikel aber bei Bedarf ergänzen um ihn zu verlinken.

Die Arduino IDE wurde ursprünglich zur Programmierung der Arduino Boards (Uno, Mega, Leonardo …. ) entwickelt und für diese kostenlos zur Verfügung gestellt.
Mittlerweile ermöglicht sie auch das Programmieren anderer Boards wie Beispielsweise diverse ESP Boards.

Installation

Die Arduino IDE kann über folgenden Link gedownloaded werden:

https://www.arduino.cc/en/Main/Software

Wenn der Windows Installer lässt sich per Doppelklick starten und ist selbsterklären.

Auf der Arduino Seite gibt es hierzu eine detailierte Anleitung, weshalb ich an dieser Stelle auf sie verweisen möchte (Link).

Bibliotheken installieren

Die Arduino IDE liefert einen Satz von Biblitheken, wie zum Beispiel das Ansprechen des seriellen Ports, mit. Sobald es aber um Periferie geht, die etwas komplizierter ist, müssen sog. Softwarebibliotheken installiert werden. Diese dienen meist einen besonderen Zweck, wie das Ansprechen einer OLED Anzeige oder eine bestimmten Sensors.

Diese könne auf unterschiedliche Arten installiert werden. Entweder Arduino kennt die Bibliothek, dann kann der Bibliotheksmanager verwendet werden oder sie ist nicht bekannt, dann muss sie manuell installiert werden.

Bekannte Bibliotheken

Bekannte Bibliotheken sind solche, welche die Arduino IDE kennt. Diese können über den Bibliotheksmanger gesucht und installiert werde.

Wähle den Bibliotheksmanager im Menü aus (Sketch -> Include Library -> Manage Libraries).

Danach erscheint ein neues Fensster mit dem Manger. Die einfachste Möglichkeit eine Bibliothek zu finden ist das Suchfeld oben links.
Hier den Namen des Sensors oder anderen Moduls eingeben. Falls das Modul bekannt ist, folgt eine Auswahl von ein odere mehreren Bibliotheken.

Eine davon auswählen und den Installation-Knopf drücken.

 

Unbekannte Bibliotheken

Ihr benötigt eine Zip Bibliothek für den entsprechenden Zweck. Diese könnt ihr zum beispiel bei GITHUB herunterladen.

Nach dem Download wählt ihr den Menüeintrag Sketch -> Include Library -> Add .Zip library.

 

Dort könnt ihr die heruntergeladenen Datei auswählen und mit dem Knopf Open installieren.

Wenn alles gut gegangen ist könnt ihr nun die Bibliothek auswählen, und deren Beispielprogramme wählen.

Tips

Manchmal muss man mehrer Bibliotheken ausprobieren um die, für den Zweck richtige, zu finden.

Achtet darauf für welche Boards die Bibliotheken sind, nicht jedes Board arbeitet mit jeder Bibliothek zusammen.

Beispielprogramm auswählen

Jede gute Bibliothek hat ein oder mehrere Beiepielprogramme mit dabei. Diese können über den Menüpunkt File -> Examples ausgeählt werden. Sie sind nach den Installierten Bibliotheken gruppiert.

Nach Auswahl eines solchen Testprogramms, erscheint ein neues Fenster mit dem dem entsprechenden Code.

Quellen

https://www.arduino.cc/en/Main/Software

https://www.arduino.cc/en/Guide/HomePage

Sensor KY-018 Photowiderstand

Das Board KY-018 ist mit einem Licht abhängiger Widerstand und einen Vorwiderstand bestückt.

Daten

Spannung: 3V-5V
Ausgang: analoger Spannungswert

Ich vermute das hier ein GL5528  verbaut wurde.

Ansicht

 

(Front/Rückansicht)

 

 

Beschaltung

Masse
+ V+ (3V-5V)
S Signal

3 G V S.png

Funktionsweise

Verändert sich die Lichtstärke die auf den Sensor trifft, verändert dieser seinen Widerstand. Dies ist am Signalausgang als analoge Größe messbar.

Anwendungsgebiete

Das Sensorboard kann zur Messung der Herzfrequenz, als  Optokoppler oder einfache als Lichtschranke verwendet werden.

Versuchsaufbau

Testprogramm

Hier ein kleines Testprogramm welches den analogen Port 0 ausliest. Hierbei ist zu beachten, dass die Ausgabe invertiert ist (wenig Licht hoher Wert).

void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
}
void loop() {
  int LDR = analogRead(A0);
  Serial.println(LDR);
}

Ausgabe

Bibliotheken

Arduino Bibliothek

Quellen

http://sensorkit.joy-it.net/index.php?title=KY-018_Fotowiderstand_Modul

https://github.com/rdiot/rdiot-s002

http://home.roboticlab.eu/de/examples/sensor/photoresistor

Datenblatt zum GL5528

Datenblatt zur GL55 Serie

Arduino Bibliothek

Gut erklärte Lux berechnung (eng)

Raspberry Pi Mirror OS

Kurzbeschreibung

Mirror OS ist ein Betriebssystem, entwicket für smarte Spiegel. Dies sind Spiegel die eine Art Handy Funktionaltität bieten.

Was wird gebraucht

Vorkenntnisse mit dem Raspberry Pi und Linux können nicht schaden ;). Auch hilft es sicherlich schon mal SSH verwendet zu haben.  Ansonsten braucht ihr folgendes.

Hardware

  • Ich habe noch einen Pi B+ V1.2 rumliegen der soll als erstes Versuchsobjekt dienen.
  • Eine 65GB Microsdkarte.
  • WiFi Adapter 😉

Software

  • Mirror OS hier downloaden.
  • SD Formater hier downloaden.
  • Etcher zum beschreieben der SD Karte hier.

Sonstiges

  • Windows PC

Installation

SD Vorbereiten

Die folgenden Aktionen passieren auf deinem Windows PC. Die Installation über Mac ist auch möglich, dafür bitte den original Link zum Mirror OS folgen.

Formatieren

Ich bin nicht sicher ob dieser Schritt wirklich nötig ist, aber ich habe es, wie auf der mirror OS Seite, beschrieben einfach mal gemacht.

SD Card formater installieren. Hier gibts ne Anleitung.
SD Karte mit „Quick format“ formatieren.

Danach kurz die SD Karte aus dem PC entfernen und wieder einstecken. Da der Formater ein Autoauswurf auslöst ;).

Falls noch nicht geschehen das mirror OS image downloaden.

Nun Etscher installieren, falls noch nicht getan.

Das image auf die SD karte schreiben. Hierfür Etscher starten

Image auswählen

Auf Flashen drücken …

und warten …

Und fertig … ab mit der SD Karte in den PI und starten.

Leider funktioniert mein Raspberry Pi 2B nicht richitig. Ich bekomme keine Verbindung, liegt wahrscheinlich an meine Wifi Adapter.

Somit habe ich mir schnell einen PI3 noch bestellt und siehe das ich bekomme nach einer Weile ein Bild. Jetzt nur noch den Anweisungen auf dem Bildschirm folgen.

  • Über das Handy mit dem angegebenen Netz verbinden
  • Webseite http://glancr.conf öffnen
  • Netzwerk einstellen und eine richtige E-Mail angeben
  • Wenn alles klappt bekommt ihr eine E-Mail in der links zur Konfiguration stehen.
  • Dann noch Module runter laden und installieren
  • Die Module anordnen …

und das wars. Die Bedienung ist einfach und intuitiv. Evtl in der Konfiguration noch das Bild drehen, hier steht wie es geht.

Der Fernsehertest

So kanns aussehen, die Temperatur stimmt wohl noch nicht ganz. Aber wie man sieht spiegelt mein Fernseher auch ;).

Fazit

Wenns mal geklappt hat das Mirror//OS zu installieren, ist es ein wirklich nettes System. Es gibt auch schon ein paar Module die von der Website heruntergeladen und einfach auf der Konfigurationsseite installiert werden können.

Das Arrangieren der einzelen Module ist sehr einfach gehalten. Es kann nur bestimmt werden ob das Modul über den halben oder den ganzen Bildschirm gehen soll und die Reihenfolger untereinander. Was durch dies Anordnung am Ende Rauskommt sieht dann überaschend gut aus ;). So scheinen die Halbbildschirmmodule nach ihrem Platzaufbedarf fliessend nebeneinander angeordnet zu werden.

Alles in allem ein gelungenes OS, gut zu Installieren und zu Konfigurieren.

Problem

Mit dem PI 2 hats bei mir nicht funktiniert, was aber eher den WIFI Adapter geschuldet ist.

Beim ersten Anlauf hat es auch nicht mit dem PI3 Funktioniert. Habe dann das Image nochmal neu auf die SD Karte geschrieben und von Vorne angefangen.

 

Quellen

https://www.sdcard.org/downloads/formatter_4/

https://etcher.io/

mirr.OS

FAQ https://glancr.de/hilfe/

Den ESP8266 schlafen legen

Sensorknoten sollen möglichst lange und unabhängig arbeiten können. Dennoch benötigen sie Strom, um mit der vorhandenen Energie möglichst effizient umgehen zu können, hat der ESP8266 und andere Controller die Möglichkeit in den Tiefschlaf zu gehen. Das schöne ist er kann sich nach fast beliebiger Zeit selbst wieder aufwecken. Ein Nachteil beim ESP8266 ist das er maximal 71 Minuten schlafen kann.

In diesem Beitrag wird gezeigt wie der ESP einschafen kann und auch wieder aufwacht.

Bauteile

1x ESP8266 Node Lua V2
1x Pinheaderkabel (Buchse : Buchse)

Schaltungsaufbau

(Von Quelle geklaut)nodemcu-deep-sleep.png

Der Reset wird hierbei mit dem GPIO 16 (Pin D0) verbunden.

So sieht es bei mir in der Realität aus

Testprogramm

 


void setup() {
  Serial.begin(115200);
  Serial.setTimeout(2000);

  // Wait for serial to initialize.
  while(!Serial) { }
  
  Serial.println("I'm awake.");

  Serial.println("Schlafe 20 Sekunden ");
  ESP.deepSleep(20e6); // 20e6 = 20 microseconds

}

void loop() {
  // nichts zu tun

}

Der ganze Spuk passiert durch eine Zeile Code (hier rot makiert).

… und das kommt bei mir auf der Konsole an:

Man kann gut am Textschrummel erkennen, dass der ESP alle 20 Sekunden neu startet.

Weiterführende Projekte

Quellen

https://www.losant.com/blog/making-the-esp8266-low-powered-with-deep-sleep

MQTT Protokoll + Versuchsaufbau

Ich bin im Netz auf den Begriff MQTT gestossen und fand den Ansatz dahinter richtig gut. Deshalb habe ich mir mal einen kleinen Versuchsaufbau gegönnt, den ich im folgenden beschieben habe.

Vorab ein paar Details zu MQTT

Infos zu MQTT

Allgemeines

MQTT regelt die Kommunikation zwischen Datenquellen und Datensenken mittels eines Brokers.

Datenquelle

Quellen für Daten können ganz unterschiedliche Geräte sein, eines haben sie jedoch alle gemeinsam, sie können Netzwerkverbindungen aufbauen um Ihre Daten weiter zu geben und sie haben was, was sie mitteilen wollen.

In der IoT können dies Sensor-Knoten sein, welche ihre Daten an einen oder mehrere Empfänger senden wollen.  Die Liste der möglichen Daten ist hierbei nahe unendlich. Beispiele sind Temperaturwerte, Schaltzustände,  Helligkeitswerte usw.

Die Quelle meldet sich an einem (oder mehreren Brokern?) an. Ihre Daten sendet sie so lange bis diese vom Broker quittiert wurden.

Datensenken (Interessenten)

Senken für Daten sind bei MQTT die sog. Interessenten. Diese möchten bestimmte Informationen von Quellen erhalten und diese dann Auswerten (Berechnung) oder einfach nur Präsentieren (Bildschirmanzeige). Beispiele sind Handy Apps, eine Lampe die wissen will wann sie eingeschaltet wird usw.

Broker

Der Broker dient als Bindeglied zwischen den Quellen und den Senken. Er hat die Aufgabe, Daten von Quellen zu sammeln und diese an die Interessenten weiter zu reichen.  Eine Auswertung/ Aufbereitung der Daten ist ihm nicht gestattet, jedoch darf er die Daten zwischenspeichern, um zum Beispiel neuen Interessenten mit dem zuletzt empfangenen oder auch mit historischen Werten zu versorgen.

Die Idee hinter dem Protokoll ist, dass Leistungsschwache Sensorknoten nur eine Verbindung mit einem Broker (Empfänger Server) aufbauen und nur an diesen senden sie ihre Daten. Der leistungstärkere Broker verteilt die Informationen dann an die Interessenten.

Ein kleines Projekt

Ich habe ein kleines Projekt aufgesetzt, mit einem Sensorknoten als Quelle, einem Broker auf einem Raspberry Pi und meinem Handy als Senke.

Quelle

  • Board Node MCU ESP8266
  • Temperatursensor DHT11
  • Bibliothek pubsubclient

Der genaue Aufbau ist in einem anderen Beitrag bereits beschrieben, weshalb ich mich hier nur auf die MQTT basierten Fakten stürze.

http://fambach.net/dht10-mit-esp8266/

Die Bibliothek installieren:

Hier ist der nach MQTT angepasste Quellcode:

ESP8266TempSensorMQTT

Bitte die Netzwerkdaten und die Brokerdaten an eure Topologie anpassen. Achtung der DHT Sensor benötigt auch eine Bibliothek wie im gelinkten Beitrag beschrieben.

Broker

Raspberry nach belieben aufsetzten oder so wie hier:

http://fambach.net/raspberry-pi-zero-w-headless-installation/

Auf dem Pi dann die Mosquitto software installieren.

Software Download

Link: http://mosquitto.org/download

Die letzte Version holen, der Link kann von der obigen Seite kopiert werden. Die aktuelle Version kann mit wget direkt auf den PI geholt werden:

sudo wget <direkter link zum paket>

in meinem Fall war das

sudo wget http://mosquitto.org/files/source/mosquitto-1.5.tar.gz

Installation

Benötigte libs installieren mit

sudo apt-get install libwrap0-dev libcurl4-openssl-dev libmysqlclient-dev libssl-dev apt-get install uuid-dev 

Paket auspacken:

tar zxf ./mosquitto-1.5.tar.gz

In den ausgepackten Ordner springen und mosquitto …

cd mosquitto-1.5/

… bauen und Installieren …

make
sudo make install
sudo ldconfig

… noch starten

Den ESP8266 starten und die erste Verbindung sollte klappen:

Senke

Ich verwende mein Handy als Senke und einen MQTT Empfänger APP. Ich habe ein paar probiert, bin dann aber erstmal mal bei „IoT MQTT Panel“ hängen geblieben, weil sie auf Anhieb funtkionierte und auch Platzhalter unterstüzt.

Hier der Link

Folgende Einstellungen habe ich vorgenommen, ihr müsst diese natürlich an eure Applikation und Netzwerktopoligie anpassen.

Erstmal eine neue Verbindung erstellen mit den Verbindungsdaten des Mosquitto Servers.

Die Neue Verbindung öffnen

Fazit

Solch ein MQTT Projekt ist in wenigen Stunden aufgebaut und macht Spaß. Dabei hat es noch großes Potential, denn man kann leicht mehrere Knoten mit einem standard Server verbinden und sich die Daten z.B. auf dem Handy anzeigen lassen.

Quellen

https://de.wikipedia.org/wiki/MQTT

Java Client Phao

MQTT Git-hub Community Wiki
https://github.com/mqtt/mqtt.github.io/wiki

Github Seite mit MQTT libs
https://github.com/mqtt/mqtt.github.io/wiki/libraries

Lib für ESP8266 und Andere
https://github.com/knolleary/pubsubclient

Mosquitto Broker Konfigurationhilfe
http://www.steves-internet-guide.com/mossquitto-conf-file/

MQTT best practice
https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices

 

NodeMCU V2 Motorplatine

Für den NodeMCU V2 gibt es ein Erweiterungsplatine mit Motortreiber. Mit ihr können zwei kleine Motoren (bis 1,2 Ampere) über eine Motorbrücke L293DD angesteuert werden.  Auch der Anschluss eines Schrittmotors ist möglich.

Sie bietet weiterhin zwei getrennte Anschlüsse für die Stromversorgung der Platine und die der Motoren. Die meisten Pins des ESP sind mit einem zusätzlichen Masse/Strom Pin herausgeführt, was den Anschluss von Peripherie erleichtert.

Die Pins D1, D2, D3, and D4 sind von der Motorbrücke belegt.

Daten

Stromversorgung: 4,5V bis 9 V
Motorspannung: 4,5V – 36V
Maximaler Motor Strom: 1,2 A

Ansicht

Frontansicht

Rückansicht

Anschlüsse

Pin-Belegung

Mit den Pins D1 -D4 können die Motoren angesteuert werden weitere Belegungen können der Tabelle unten entnommen werden.

Programmierung

Der Versuchsaufbau gestaltet sich simpel. Den ESP8266 aufs Board stecken, zwei Motoren an die entsprechenden Kontakte anschliessen und das Beispielprogramm unten, auf den ESP laden.

Bibliothek

… habe nach kurzer Suche keine gefunden, für jeden Tip bin ich dankbar.

Eigenes Testprogramm

Hier ein simpler Test. Er lässt beide Mortoren vorwärts drehen, rückwärts drehen und stoppen.

ESP8266MCUV2Motorplatine

Eigene Lib

Werde mir wohl in naher Zukunft mal eine Klasse schreiben, welche alle Funktionen kapselt.

 

Quellen

https://cdn.hackaday.io/files/8856378895104/user-mannual-for-esp-12e-motor-shield.pdf

http://www.instructables.com/id/Motorize-IoT-With-ESP8266/

ESP8266: NodeMCU Motor Shield Review