Einfaches I2C-OLED-Display über Firmata ansteuern

Begonnen von wk, 06 April 2017, 12:15:26

Vorheriges Thema - Nächstes Thema

wk

Hallo,

ich habe ein einfaches I2C-OLED-Display mit 128x64 Pixeln an einem Arduino Nano. Ein einfacher Sketch mit der U8g2.h langt um das Display über die USB-Schnittstelle zu beschreiben.

Gerne würde ich Statusanzeigen aus FHEM auf dem Display anzeigen, doch auch nächtelanges Studium des Forums und anderer Webseiten hat mir nicht geholfen.

Es bietet sich an dafür Firmata zu verwenden, da man dann auch noch ein paar LED für zusätztliche Stati ansteuern kann. Zur Ansteuerung des OLED wollte ich auf das Modul I2C_LCD zurückgreifen und es eventuell anpassen. Doch hier komme ich nicht weiter.
Das Beispiel in der commandref für I2C_LCD zeigt ein Display, das mit 6 Datenpins angeschlossen ist und nicht über A4 = SDA und A5 = SCL. Entsprechend ist das PINmapping für mich verwirrend, da es die I2C-Pins gar nicht anspricht.
An dem Display kommt nichts an.

Wer kann mir bitte zum Verständnis helfen und in die richtige Richtung schubsen.
Vielen Dank
Walter

rohlande

#1
Hallo Walter,

Ich habe das mit dem OLED via ESPEasy gelöst. Ist super einfach und sehr stabil.
Bin aber auch gerade dabei zu überlegen ein 128x64 mit I2C via FRM an Fhem zu hängen.
Das Display ist einfach grösser. Damit besser geeignet für die Daten der Photovoltaik.

Gruss Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

jensb

Hallo,

bitte beachtet bei der Planung die Kompatibilität der FHEM-Module mit der Hardware. Das Modul "I2C_LCD" ist eigentlich für Zeichen-Displays (1602 und 2004) und nicht für Punkt-Displays/OLEDs gedacht (siehe Commandref und http://arduino.cc/en/Tutorial/LiquidCrystal). Damit fehlt der passender OLED-Display-Treiber, wenn man Firmata verwendet. Den müsste man dann anhand der Herstellerunterlagen selbst entwickeln.

Wenn du viel Spaß am Programmieren hast, könntest du aber auch versuchen, das Ganze auf der Arduino-Seite selbst zu programmieren, also z.B. Firmata + Arduino-Display-Treiber. Allerdings bleibt dann noch das Problem, von FHEM Texte an Firmata zu senden. Firmata kann das prinzipiell (STRING_DATA), aber es gibt noch kein FRM_STRING Modul.

ESPEasy wiederum unterstützt OLED-Displays mit SSD1306 Chip und dazu gibt es Displays in unterschiedlichen Größen. Allerdings weiß ich nicht, ob alle Auflösungsvarianten unterstützt werden.

Grüße
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

wk

Vielen Dank für Eure Hinweise.

Durch weiteres Studium dieses Forums bin ich auf einen Ansatz mit dem Modul ECMD gestossen und damit konnte ich meine Aufgabenstellung lösen. Mit Firmata bin ich nicht weitergekommen.

Ich habe mir einen eigenen Sketch für den Arduino geschrieben (Anregungen hierfür aus diesem Forum) und dann zu ECMD noch einige ECMDDevices.

Damit kann ich jetzt das Display beliebig ansteuern, 6 Ausgangsports schalten und 6 Eingangsports abfragen.

Nochmals vielen Dank an Alle hier
Walter