Preisschild

Aus Fingers Wiki
Zur Navigation springen Zur Suche springen

Preisschild - E-Ink Preisschilder aus Sammelbestellung Hightech

  • Hier geht es um die Ansteuerung der E-Ink-Preisschilder, aus der Sammelbestellung, die Hightech organisiert hat (siehe "Bestellthread" weiter unten).
  • Displaygröße 292 x 128, drei Farben (schwarz, weiss, rot). Das Display ist ein reines Pixeldisplay, welches Bilder darstellt. Darzustellender Text muss zuvor in ein Bild gewandelt werden. Das Display ist "nativ hochkant", man muss einen im Querformat zu lesenden Inhalt also vorher um 90° drehen.
  • Typ SOLUM ST-GR29000 (MCU ist ein ZBS243 mit 8051 Core).
  • Versorgung über 2x CR2450 parallel. Im Auslieferzustand fragen die Module alle 15 Minuten nach Änderungen, damit soll ein Batteriesatz bis zu 5 Jahre halten.
  • Betrieb oder Programmieren mit 5V tötet die Module.
  • Allgemein gibt es vier Möglichkeiten sie zu nutzen:
  1. Mit der Custom Firmware wie im 40min video über Zigbee ohne Hardware Änderungen (https://youtu.be/98fOzZs__fc)
  2. Mit einer custom Firmware wodurch man sie über UART ansteuern kann( https://youtu.be/JulhTTR3k4g ) code im zbs_flasher repo [1]
  3. Mit einer Adapter Platine, gibt viele im WWW (Meine: https://youtu.be/wqgvTFwqkeM) und die meisten sind kompatibel mit 24pin Connector, jedoch gibt es Verbinder die nach oben oder unten( oder beidseitig) ans Flexkabel kontaktieren, darauf muss man achten weil manche ePaper Displays nach oben oder nach unten die Goldkontakte haben
  4. Man lötet die SPI und Steuerleitungen direkt an die Originalplatine, ganz ohne Adapterplatine kommt man nicht aus da dort auch ein Boost drauf ist ,als Beispiel dieses video jedoch ein anderes display Prinzip das gleiche: https://youtu.be/c62D3Z-c5IM

Quellen

Schriftarten

Verwendet man TrueType Fonts in Python wird es hässlich. Es klappt, wenn man die ttf in bfd und dann in .pil umwandelt. Man muss sich zuerst eine Schriftart herauspicken und dann in bdf wandeln mit der Ziel-Schriftgröße

otf2bdf /usr/share/fonts/truetype/ttf-bitstream-vera/VeraSe.ttf -p 15 -o test15.bfd

diese wird dann in das Python Format gewandelt und steht dann für Python Pillow als Bitmap Schriftart zur Verfügung

./converts.py test15.bfd

Ansteuerung via Zigbee-Stick und Python-Skript

Der Zigbee Stick

  • Empfohlen wird ein CC2531, der mit einer TIMAC-Firmware ("IEEE802.15.4 Medium Access control (MAC) software stack") bespielt werden muss.
  • TI schreibt dazu: "Support for IEEE 802.15.4-2006, multiple platforms: CC2630, CC2538, CC2530 and CC2531 wireless MCUs, CC2592 and CC2590 range extenders)", es werden also auch andere Sticks unterstützt.
  • Download der Firmware bei TI, man muss sich dort aus Exportkontrollgründen zuvor namentlich anmelden.
  • Flashprozeduren sind hier zu finden.
  • Zigbee-Stick heisst unter macOS (12.6) /dev/cu.usbmodem146101

Python-Skripte

  • Es wird Python 3 benötigt; zusätzlich zu den Modulen im Repository [2] noch python3-serial, python3-pycryptodome, python3-pil (Syntax für Installation des Moduls xxxx ist python3 -m pip install xxxx, Module heissen je nach Plattform u.U. etwas anders, notfalls bei pypi.org nachsehen); Mit Python3 unter Windows heißen die Module serial, pycryptodome und pillow
  • Die Module liefern auch einen Temperaturwert und den Spannungswert der Stromversorgung mit. Alles >2,6V wird als 2,6V gemeldet.
  • Die Displays paaren sich meist von Alleine. Passiert das nicht, müssen die Batterien herausgenommen werden und entweder etwas gewartet oder die Batterieklemmen des Module kurzgeschlossen werden. Dann Batterien einsetzen und warten, bis das Display sich mit dem Script gepaart hat (Austausch von Krypto-keys). Danach erkennen sie sich und das Display fragt alle 15 Minuten nach neuem Inhalt.
  • Bei <2,8 V klappt das Paaren nicht.
  • Hat sich das Display "ent-paart", sieht man einem der schmalen Bildränder einen ca. 2 mm breiten schwarzen Streifen.

discovery.py --d

  • Das Skript ist eine Modifikation des im Github-Repo liegenden Skripts "station.py", die um den Schalter "--d" erweitert wurde.
  • Im Discovery Modus legt die Station eine MAC-ID.png an, wenn noch keine Datei vorhanden ist, die man dann nach Belieben bearbeiten kann.
  • Auf dem Display wird bei Erfolg dann "DISCOVERY" und die MAC-ID angezeigt. Die MAC-ID hat nichts mit den MAC-Adressen zu tun, die man von Ethernet kennt.
  • Im Skript muss man definieren: Device-Namen für den Stick und Arbeitsverzeichnis.
  • Die erzeugten *.png-Dateien liegen leider in keinem definierten Verzeichnis, sondern vermutlich direkt im Home-Verzeichnis des angemeldeten Benutzers.

station.py

  • Der (neue) Bildschirminhalt muss als *.png Datei vorliegen und die MAC-ID des Schild als Namen haben, z.B. 00E0334F1986.png.
  • Akzeptiert werden *.png-Dateien mit zwei Farben (schwarz/weiss, entsprechend RGB 0,0,0 und 255,255,255) oder *.bmp-Dateien mit drei Farben (schwarz, weiss, rot; letzteres entsprechend 255,0,0).
  • Bilddateien mit Graustufen werden "gerundet" geschrieben.
EInkDisplayGR29000.jpg
  • Ist der Bildinhalt unverändert passiert nichts, ist der Inhalt verändert, wird das Display mit dem neuen Inhalt aktualisiert. Die Unterscheidung wird nach dem Dateidatum getroffen (siehe Skript-Code).
  • Im Skript muss man angeben: Device-Namen für den Stick, Arbeitsverzeichnis und auch den Timeout, den das Schild ab dem nächsten pairing (Association) benutzt, um nach neuen Bildern zu fragen (geht auf die Batterielaufzeit).
  • Die Dateien werden im Skript-Verzeichnis erwartet. Das ist nicht notwendigerweise das Gleiche, wo discovery.py seine Ergebnisse ablegt.

Ansteuerung via UART

  • Beispielprogramm [3] heisst EinkSD_1.54_2.9_4.2_Standalone_Library_HINK.ino
  • Achtung, EinkDisplay.h muss für die 2,9" Displays geändert werden. Es werden die Pins OLED_DC, OLED_CS, OLED_RESET und OLED_BUSY verwendet.