MQTT Subscriber mit OLED Display

Zum Ausgeben der Messwerte braucht es auch noch einen Subscriber für MQTT.

Requirements
Die Meßwerte werden vom MQTT Server gesendet und auf einem Display dargestellt. Im Falle von Fehlern erscheint eine entsprechende Fehlermeldung.
Fehlermeldungen:
– Alles Ok, kein Fehler
– kein DHCP gefunden
– Ethernet Controller kann keine Verbindung aufbauen

Hardware
– Arduino Mega2560
– Ethernet Shield mit einem ENC28J60 Chip als Bausatz
– Ein 0,96″ Oled Display mit einer Auflösung von 128×64 Pixeln
– Ein Prototyping Shield für das Display

Software
– Display
Für das Display war kein Datasheet vom Hersteller zu bekommen. Eine ausgiebige Recherche hat ergeben, das es sich um ein SSD1306 Display handelt. Eine Bibliothek dafür war bei Adafruit zu finden. Das Demo-Programm läuft … Der Zeichensatz auf dem Display (Adafruit_GFX_Library) unterstützt nur 7bit Zeichen. Für die Einheit der Temperatur [°] muss ich mir also etwas einfallen lassen, hmm. Ich versuch es mal mit [`].

– Ethernet Shield
Die Bibliothek Ethercard ist etwas schwieriger zu finden. Der Link zur github ist direkt zu sehen, aber: der Download direkt über den grünen Button „clone or download“ führt zu einer alten Version, die auf neueren IDE’s nicht funktioniert. Weiter unten auf der Seite gibt es einen weiteren Link unter „Library Installation“, der zu einer neueren Bibliothek führt. Die Inbetriebnahme mit dem Webserver hat dann einwandfrei funktioniert. Für die MQTT Software brauche ich allerdings die UIPEthernet Bibliothek.

– MQTT Subscriber
Der Subscriber bekommt seine Messwerte vom MQTT Server und gibt sie dann auf dem OLED Display aus.

Das vollständige ino File: MT1-MQTT-Subscriber-OLED

Links

Ausführliche Beschreibung bei Adafruit
https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples

Das Datenblatt vom SSD1306 Display

Klicke, um auf UG-2864HSWEG01.pdf zuzugreifen

Die Bibliothek für das ENC28J60 Ethernet Shield
https://github.com/jcw/ethercard/archive/master.zip

UIPEthernet Bibliothek für das ENC28J60 Shield
https://github.com/ntruchsess/arduino_uip

MQTT Bibliothek
https://github.com/knolleary/pubsubclient

Besonderheiten beim Anschluß an einem Arduino
http://robotcantalk.blogspot.de/2015/03/interfacing-arduino-with-ssd1306-driven.html

Eigene Bitmaps für das Display erzeugen
http://en.radzio.dxp.pl/bitmap_converter/

MQTT Definitionen

 

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.