Warntafel mit 7,5 Zoll ePaper für den Test

Für die Status Anzeige eines laufenden Tests soll eine Ausgabe auf einem ePaper Display angezeigt werden. Nach dem Start erscheint erst ein Logo, dann wird auf eine Tasteneingabe gewartet. Die Ausgaben sind dann je nach Taste:
– Achtung Test läuft
– Testaufbau / Testraum

Die Ausgabe eines Textes wird mit einem Taster (Ein) gestartet, es werden also zwei Taster benötigt. Das System soll mit einem Akku betrieben werden und der Text beliebig oft umschaltbar sein.

Hardware:

  • Arduino Due
  • ePaper Display 7,5 Zoll, schwarz weiß rot
  • 2 Taster (Einschalter) und
  • 2 Pullup Widerstände.

An Stelle der zwei Taster, oder auch parallel dazu, können auch kleine Relais angeschlossen werden. Damit kann dann ein automatischer Testaufbau die Warntafel auch direkt ansteuern.

Software:

Das vorhandene Demo Programm für das Display mit dem Arduino ist sehr einfach gehalten. Nach einigen größeren Anpassungen passt es dann auch zu den obigen Anforderungen. Jede Taste weckt den Prozessor aus dem Sleep-Mode, gibt den dazugehörigen Text aus und legt den Prozessor und das Display wieder in den Sleep Mode. Die zwei Taster lege ich an Pin 2 (Test) und Pin 3 (Aufbau). Beide werden als externe Interrupts registriert und sind damit geeignet aus dem Sleepmodus aufzuwecken. Im Loop muss ich dann nur die Variable abchecken und die jeweilige Routine zum eingetragenen Wert ausführen. Danach geht es wieder in den Sleepmode.

Der zugehörige Sketch: epaper-test-warntafel


Anmerkungen:

  • Wie das Display am Arduino Due angeschlossen wird, läßt sich der Demo für den Arduino entnehmen. Diese findet sich im Link unten für das ePaper.
  • Ein wichtiger Punkt ist die Erstellung des Bitmap Files für die Ausgabe einer Grafik, hier meine Vorgehensweise:
  1. Mit GIMP eine neue Grafikdatei erstellen und speichern als png mit der jeweiligen Auflösung V2: 800 x 480 Pixel, HD: 880 x 528 Pixel. Bei mir ist das ein HD.
  2. Aus dieser Datei dann das Löschen, was Rot dargestellt werden soll, und als Ausgabe für den Schwarz auszugebenden Teil als png speichern.
  3. Aus 1. dann das Löschen, was Schwarz dargestellt werden soll, und als Ausgabe für den Rot auszugebenden Teil als png speichern.
  4. Diese drei Dateien habe ich dann mit Paint umgewandelt in monochrome Bitmap Dateien.
  5. Daraus dann mit dem „LCD Assistant“ jeweils die Ausgabe als C Array erzeugt und abgespeichert, mit folgenden einzustellenden Parametern: Byte Orientation-> Horizontal und 8 Pixels / byte. Im Array die Angabe PROGMEM nicht vergessen einzutragen!
  6. Diese Arrays habe ich dann in imagedata.cpp abgelegt und folgendermaßen aufgerufen: epd.DisplayBlackImage(seap_logo_epaper_bw,0,0,880,528);
    epd.DisplayRedImage(seap_logo_epaper_r,0,0,880,528);
  • Die Paint Ausgaben in ein Array kann nur bis 150 Zeilen maximal im Due für die Y Richtung benutzt werden, da der Prozessor nicht genug RAM zur Verfügung hat, um ein Vollbild auszugeben. Die Ausgabefenster werde ich also alle als Bitmap anlegen, der Due hat dafür reichlich Platz, für HD passen 8 Stück hinein.
  • Um noch mehr Strom zu sparen, ist es sinnvoll die ON Led auszulöten. Stromaufnahme von ca. 120 mA maximal bis ca. 70 mA im Sleepmode. Da wirken natürlich noch der USB / UART Konverter und die Spannungsregler mit hinein. Es ist also zweckmäßig die Hardware für minimalen Stromverbrauch auszulegen.
  • Um herauszufinden, wie der Sleepmode gesetzt wird, empfiehlt sich die Sourcen für den Arduino Core SAM herunterzuladen und unter ……\Downloads\ArduinoCore-sam-master\ArduinoCore-sam-master\system\libsam\include nach pmc.h zu schauen. Die Sourcen stehen ein Verzeichnis zurück unter source\pmc.c. Danach genügt die Funktion void pmc_enable_sleepmode(uint8_t uc_type); uc_type 0 for wait for interrupt, 1 for wait for event. Die Zusammenhänge erschließen sich aus dem Datenblatt.


Links und Literaturhinweise

The Gimp
https://gimp.cc/download-gimp/

LCD Assistant
http://en.radzio.dxp.pl/bitmap_converter/

ePaper 7,5 „
https://www.waveshare.com/wiki/7.5inch_HD_e-Paper_HAT_(B)

Pull Up Widerstand
https://rn-wissen.de/wiki/index.php/Pullup_Pulldown_Widerstand

Arduino Core SAM
https://github.com/arduino/ArduinoCore-sam

Atmel SAM3X8E Datenblatt
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf

 

 

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.