Dieses Projekt stammt von unserem Gastautor

Bernhard Mayer

Ich führe diverse größere und kleinere Projekte durch und berichte darüber in meinem Blog. Meistens kommen dafür Arduinos oder Raspberry Pis zum Einsatz. Viele meiner Projekte befassen sich auch mit der Robotik und dem autonomen Fahren.

Scrolling Badge – Ein Badge mit Arduino Uno und DOGM Display  

Scrolling Badge – Ein Badge mit Arduino Uno und DOGM Display

 

Namensschilder gibt es in vielen Ausführungen. In letzter Zeit sind besonders elektronische Schilder (Badges) beliebt geworden. So eines habe ich mit einem Arduino Uno und einen EA DOGM128-6 gebaut.

Das Projekt

Bitte beachten Sie, dass die Redaktion nicht alle hier veröffentlichten Gastbeiträge testen kann, sodass es keinerlei Gewähr gibt. Je nach Projekt und Schwierigkeitsgrad sollten Sie diese nur dann durchführen, wenn Sie über ausreichend Kenntnisse verfügen und sich im Umgang mit elektronischen Projekten sicher fühlen.

Geeignet für: erfahrene Anfänger/Fortgeschrittene (Platine muss mit Bauteilen bestückt werden)

Zeitaufwand: 3 Stunden

Budget: 50 €

Das brauchen Sie: diverse Bauteile, eine Platine und einen Arduino

Das brauchen Sie außerdem: PC mit Arduino-Software, Lötausrüstung

Display mit Hilfe eines Shields auf dem Arduino befestigen

Damit das Display gut auf dem Arduino befestigt werden kann, habe ich dafür extra ein eigenes Display Shield gebaut. Auf dem Shield befindet sich das Display und seine zum Betrieb benötigten Bauteile. Dabei habe ich mich an die Applikationsbeispiele im Datenblatt auf Seite 4 gehalten. Der Arduino läuft mit 5 V, das Display benötigt aber 3,3 V zur Versorgung und Ansteuerung. Deshalb habe ich zum einen einen Spannungsregler LT1117 verbaut, der aus der 5V Versorgungsspannung des Arduinos 3,3 V für das Display generiert. Zum anderen habe ich einen Logicbuffer 74VHC245D verbaut, der als Levelshifter dient.

Dieser Baustein wird mit 3,3 V versorgt, akzeptiert aber an seinem Eingang Pegel mit bis zu 5 V. Am Ausgang erzeugt er dann Pegel mit 3,3 V, passend zum Display. Gegenüber Widerstandsteiler als Levelshifter bietet er den Vorteil, dass er auch bei Taktraten von einigen MHz noch zuverlässig funktioniert und trotzdem wenig Strom verbraucht. Die Platine unterstützt verschiedene Displays: EA DOGS102-6, DOGM132-5 und DOGM128-6. In diesem Fall kommt ein DOGM128-6 zum Einsatz.

Genaueres zur Platine

Zusätzlich befinden sich auf der Platine noch mehrere Taster, die zum Beispiel zur Bedienung eines Menus verwendet werden können. Die Taster sind über Widerstandsteiler am Analogeingang 0 des Arduinos angeschlossen. Dadurch spart man sich Eingangspins am Arduino. Bei diesem Projekt kommen die Taster nicht zum Einsatz.

Die Platine wurde mit KiCAD erzeugt. Die Daten zur Platine inkl. Schaltplan, Gerber-Daten, KiCAD-Projektdaten und Stücklisten finden Sie auf meiner Homepage http://arduhmi.generationmake.de/ und stehen unter einer Open Source Lizenz. Fertige Platinen können im Internet bestellt werden.

Die Software

Bei der Software habe ich mich an der Library von EA orientiert. Die Library enthält zwar Schriftarten, allerdings ist da die Lizenzsituation unklar und die Schriften sind teilweise auch nicht in den passenden Schriftgrößen enthalten. Deshalb habe ich einen Converter programmiert, der aus den Schriftarten auf einem Linux-System passende Schriftdateien erzeugt. Der Converter verwendet dafür die FreeType-Library www.freetype.org. Den Converter und Beschreibung dazu gibt es hier. Für dieses Projekt habe ich die Schriftart UbuntuMono-B.ttf in verschiedenen Größen verwendet.

Die Software wurde mit der Arduino IDE geschrieben. Nach dem Start wird zuerst das Display initialisiert. Dabei kommt die Hardware-SPI-Schnittstelle des Arduinos zum Einsatz, da nur so der Displayinhalt schnell genug übertragen werden kann, ohne dass es flimmert. Anschließend wird in die erste Zeile des Displays „Hello, my name is“ geschrieben. Hier kommt eine Schriftart mit 16 Pixel Höhe zum Einsatz. In die restliche Fläche des Displays wird der Name mit einer Schriftart mit 48 Pixel Höhe geschrieben. Da der Name hier zu lange ist, als dass er komplett auf das Display passt, muss er durchgescrollt werden.

Leider unterstützt die EA library dies nicht. Deshalb habe ich diese ergänzt. Ich habe hier eine string_offset Funktion eingefügt, die einen Offset erlaubt. Dieser Offset kann auch negativ sein, sodass der Text links außerhalb des Displays beginnt. Dieser Offset wird nun bei jedem Durchlauf verringert, wodurch der Text von rechts nach links durch das Display scrollt. Sobald der ganze Text durch ist, wird wieder von vorne begonnen.

Den Quellcode des kompletten Programms inkl. Schriftart und Library gibt es auf meiner Website zum Download unter http://arduhmi.generationmake.de/scrolling_badge.zip

Als Stromversorgung kommt eine USB Power Bank zum Einsatz.

Demonstration des Badges

https://youtu.be/nJfUQROLXB0

 

Was denken Sie zu diesem Thema? Schreiben Sie einen Kommentar:

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