Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Programmieren der OLED UNIT SH1107 am M5Stack ATOM

Posted on 26. Juli 20218. November 2023 by Stefan Draeger

In diesem neuen Beitrag möchte ich dir zeigen wie du die OLED UNIT SH1107 am M5Stack ATOM programmieren kannst.

OLED UNIT Verpackt inkl. RFID Card
OLED UNIT Verpackt inkl. RFID Card
OLED UNIT SH1107 mit Grove Kabel
OLED UNIT SH1107 mit Grove Kabel
Rückseite der OLED UNIT SH1107
Rückseite der OLED UNIT SH1107

Dieses kleine Display habe ich mir von einem Coupon der Firma M5Stack gekauft. D.h. dieser Beitrag ist indirekt durch die gleichnamige Firma gesponsert geworden.

Für diesen Beitrag verwende ich zusätzlich den M5Stack ATOM Lite welchen ich ebenfalls bereits im gleichnamigen Beitrag ATOM Lite von M5Stack vorgestellt habe.

M5Stack - Atom Lite
M5Stack – Atom Lite
M5Stack - Atom Lite
M5Stack – Atom Lite
programmieren der OLED UNIT SH1107 von M5Stack mit UIFlow
Dieses Video auf YouTube ansehen.

  • Bezug
    • Lieferumfang
  • Technische Daten
  • Anschluss an den M5Stack ATOM
  • M5Stack OLED UNIT SH1107 über UIFlow programmieren
    • Einrichten der Web-App UIFlow
    • Ausgeben eines Zählers auf der UNIT SH1107
      • Video
    • Anzeigen von langen Texten auf dem OLED Display
      • Video
    • Ausgeben von Datum & Zeit eines NTP Servers auf dem OLED Display
      • Aufbau der WiFi Verbindung zum lokalen WLAN Netzwerk
      • Funktion zum Anzeigen von Datum & Uhrzeit
      • Video
  • Programmieren des OLED Displays SH1107 mit MicroPython
  • Einbinden des OLED Displays
  • Programmieren eines Zählers und Anzeigen auf der OLED UNIT SH1107 mit MicroPython
  • Ausblick & Fazit

Bezug

Dieses kleine OLED Display bekommst du über den offiziellen Shop auf https://shop.m5stack.com für 10,95 $ zzgl. Versandkosten.

Lieferumfang

Zum Lieferumfang gehört neben dem OLED Display noch ein Grove Kabel (HY2.0-4P) sowie eine RFID – Karte mit nettem Aufdruck.

Technische Daten

  • Stromaufnahme – 58 mA
  • I²C Adresse – 0x3C
  • Umgebungstemperatur 0 °C bis max. 40 °C bzw. 32 °F bis 104 °F
  • Auflösung 128 x 64 Pixel
  • Abmaße
    • Display (L x B) – 14,7 mm x 29,42 mm
    • inkl. Gehäuse (L x B x H) – 24 mm x 56 mm x 8 mm
    • Pixelgröße – 0,15 mm x 0,15 mm
  • Gewicht – 20g

Wie für ein OLED Display üblich kann man den Inhalt des Displays aus jedem Blickwinkel auf das Display erkennen.

Anschluss an den M5Stack ATOM

Die OLED UNIT SH1107 verfügt wie bereits erwähnt über eine Grove Schnittstelle und wird über das mitgelieferte Kabel an ein passenden Mikrocontroller angeschlossen.

Grove Schnittstelle an der OLED UNIT SH1107
Grove Schnittstelle an der OLED UNIT SH1107

Du kannst dieses Display auch an den M5Stack ATOM Matrix anschließen, dieser verfügt ebenfalls über eine Grove Schnittstelle.

M5Stack ATOM Matrix & ATOM Lite
M5Stack ATOM Matrix & ATOM Lite

M5Stack OLED UNIT SH1107 über UIFlow programmieren

Die wohl einfachste Art einen Mikrocontroller von M5Stack zu programmieren ist über UIFlow. Hier musst du lediglich die entsprechenden Elemente zusammenstecken und so baut sich der Quellcode einfach und übersichtlich auf.

Auf dem GitHub Repository StefanDraeger / m5Stack findest du alle hier dargestellten Beispiel zum einfachen Download.

Einrichten der Web-App UIFlow

Damit wir das OLED Display in UIFlow verwenden können, müssen wir dieses zunächst aktivieren. Das geschieht, indem wir unten links auf das „+“ Symbol klicken.

Schaltfläche zum hinzufügen einer UNIT in UIFlow
Schaltfläche zum Hinzufügen einer UNIT in UIFlow

Aus dem neu geöffneten Fenster wählen wir nun das OLED das entsprechende Modul auswählen.

M5Stack UIFlow OLED UNIT
M5Stack UIFlow OLED UNIT

Ausgeben eines Zählers auf der UNIT SH1107

Als Erstes möchte ich dir zeigen wie du im Takt von 250ms einen Zähler inkrementierst und diesen Wert auf dem Display ausgeben kannst.

UIFlow Programm zum Anzeigen eines Zählers auf der SH1107 Unit
UIFlow Programm zum Anzeigen eines Zählers auf der SH1107 Unit

Video

Anzeigen von langen Texten auf dem OLED Display

Das OLED Display kann nur eine maximale Anzahl von Zeichen auf einmal pro Zeile anzeigen. Wir können aber den Text durch das Display scrollen lassen.

UIFlow Programm zum Scrollen von langem Text auf dem Display
UIFlow Programm zum Scrollen von langem Text auf dem Display

Video

Ausgeben von Datum & Zeit eines NTP Servers auf dem OLED Display

Ein etwas komplexeres Beispiel ist das Ausgeben von Datum & Uhrzeit auf dem Display. Für dieses kleine Beispiel benötigst du zusätzlich eine WiFi Verbindung für den Mikrocontroller!

Eigentlich ist die „programmierung“ mit UIFlow recht einfach aber dieses Beispiel wird etwas komplexer aber dazu an entsprechender Stelle mehr.

Aufbau der WiFi Verbindung zum lokalen WLAN Netzwerk

Als Erstes bauen wir die lokale WiFi Verbindung auf, dazu benötigen wir lediglich die SSID sowie das Passwort. Das Element dazu finden wir unter „Hardwares“ (1) > „Network“ (2) > „Verbinde mit ….“(3).

Einrichten der WiFi Verbindung - Schritt 1
Einrichten der WiFi Verbindung – Schritt 1

In diesem Element setzen wir in die Platzhalter die Werte für die Verbindung ein.

SSID & Passwort zum lokalen WLAN
SSID & Passwort zum lokalen WLAN

Damit wird die Verbindung aufgebaut, sobald der Mikrocontroller gestartet wird. Im nächsten Schritt müssen wir nun prüfen, ob diese Verbindung erfolgreich aufgebaut wurde oder eben nicht.

Wenn eine Verbindung nicht aufgebaut werden konnte, wird dieses leider erst nach ca. 2 Minuten im Programm erkannt und behandelt.

prüfen des WiFi Status
prüfen des WiFi Status

Wenn die Verbindung erfolgreich war, dann wird „OK“ auf dem Display ausgegeben und andernfalls „FAIL!“.

Funktion zum Anzeigen von Datum & Uhrzeit

Wenn der Aufbau der Verbindung erfolgreich war, wollen wir die Verbindung zum NTP Server aufnehmen und dort Datum & Uhrzeit empfangen. Diese Werte wollen wir dann formatiert auf dem Display anzeigen lassen.

Zunächst erstellen wir die Funktion „display_datetime“ und rufen diese im positiven Fall der if-Bedingung auf.

In der Funktion „display_datetime“ wird zunächst die Verbindung mit dem NTP Server „cn.pool.ntp.org“ aufgebaut (1). Alternativ kann man auch den deutschen NTP Server unter „de.pool.ntp.org“ verwenden. Jedoch wird jeweils als Timezone der Wert „2“ gesetzt das bedeutet die „Greenwich Mean Time“ +2 Stunden.

In einer Schleife (2) welche 100 mal durchlaufen wird sorgen wir dafür das der lange Text durch das Display von rechts nach links scrollt. Dazu dekrementieren wir eine Variable „x“ um -1 (3) und positionieren den Text an dieser Position (4). Danach wird der Text angezeigt bzw. das Display aktualisiert und eine Pause von 25ms eingelegt (5).

Funktion zum anzeigen von Datum & Uhrzeit auf dem OLED Display SH1107

Video

Programmieren des OLED Displays SH1107 mit MicroPython

Neben der Möglichkeit den Mikrocontroller M5Stack ATOM mit UIFlow zu programmieren gibt es noch die Skriptsprache MicroPython. Für die Programmierung in MicroPython brauchst du keine extra Software installieren, denn du kannst einfach in UIFlow von der grafischen Programmierung mit Blockly zu Python mit einem klick wechseln.

Einbinden des OLED Displays

Zunächst müssen wir das OLED Display einbinden. Hier ist es am einfachsten, wenn wir zurück zur Ansicht „Blockly“ wechseln und dort die entsprechende UNIT aktivieren.

Alternativ kann man natürlich auch den Import Befehl selber implementieren.

import unit

oled_0 = unit.get(unit.OLED, unit.PORTA)

Programmieren eines Zählers und Anzeigen auf der OLED UNIT SH1107 mit MicroPython

Wollen wir nun ein kleines Programm schreiben, um einen Zähler im Takt von 250ms um eins zu inkrementieren und diese auf dem Display anzeigen zu lassen.

from m5stack import *
from m5ui import *
from uiflow import *
import time
import unit

# OLED Display am Port A angeschlossen
# sollte ein Grove Hub verwendet werden muss hier der entsprechende Port eingestellt werden
oled_0 = unit.get(unit.OLED, unit.PORTA)

# Zähler initial auf 0 setzen
counter = 0
# Endlosschleife
while True:
  # Zähler um eins inkrementieren
  counter = counter + 1
  # füllen des Displays mit der Farbe "schwarz"
  oled_0.fill(0x000000)
  # umwandeln des Zahlenwertes in eine Zeichenkette und setzen des Textes an Spalte 0 & Zeile 0
  # in der Farbe Schwarz
  oled_0.text(str(counter), 0, 0, 0xffffff)
  # Anzeigen des zuvor positionierten Textes
  oled_0.show()
  # eine Pause von 250ms einlegen
  wait_ms(250)

Ausblick & Fazit

Da meine kleinen M5Stack ATOM Lite & ATOM Matrix nur über eine Grove Schnittstelle verfügen muss ich mir noch ein passenden Grove Hub besorgen.

M5Stack Grove Hub auf aliexpress.com
M5Stack Grove Hub auf aliexpress.com

Diese „M5Stack I2C Hub 1 to 6 Expansion Unit“ habe ich mir bei Eckstein Komponente für 5,99 € zzgl. 1,99 € Versandkosten bestellt und sobald dieser da ist, werde ich mit ein paar Sensoren und Aktoren ein kleines Beispiel aufbauen und auf diesem Blog präsentieren.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}