Meine ersten Modifikationen des "Dementia friendly music player" sind
schon 2,5 Jahre her. Die Herkunft des Entwurfes, seine traurige
Geschichte und mein Umbau zu einem iRadio mit Raspberry Pi kann hier
nachgelesen werden:
Dementia friendly radio
2 Monate später baute ich den Gehäuseentwurf um zu einem UKW-Radio:
Dementia friendly radio II (Bauanleitung)
Nun bin ich bei der 3. Variante angekommen. Diesmal ist es wieder ein Internetradio, aber mit ESP32 und einem 2,8" SPI-Display.
Die Software hat Norbert geschrieben. Entgegen der allgemein
vorherrschenden Meinung, ein Internetradio mit ESP32 könne keine Skala
simulieren, beweist Norbert hier dass es doch möglich ist! Er benutzt
Bibliotheken von Wolle-Schreibfaul1 und Bodmer. Die MP3-Decodierung
erledigt die Software. Die Ausgabe erfolgt über I2S auf ein
MAX98357A-Modul mit eingebauter 3W-Endstufe. WLAN-Verbindungsdaten und
Radiosender sind hardcodiert. Bedient wird per touch oder per einfachem
webinterface.
Die erste Version benutzte das Bild eines japanischen 70er Jahre solid-state-Radio mit waagerecht geführtem Zeiger.
bei Berührung des Display blenden sich die Bedienfelder für Sender und Lautstärke für eine definierte Zeit ein:
Für das Dementia-Radio schickte Norbert mir dann eine Version mit einer Seibt 23 Skala bei der der Zeiger eine Kreisbewegung ausführt.
Der Zusammenbau:
In der Frontplatte sind Vertiefungen für Einpressmuttern vorgesehen. Es
gibt ausser den Rückwandschrauben keine nach außen sichtbaren
Schraubenköpfe. Das Display wird mit passenden Abstandshaltern direkt
hinter die Front montiert. Die Unsymmetrie des Display wird auch bei
einer 180 Grad-Drehung berücksichtigt. Die Randbereiche ohne Information
sind verdeckt und das Display sitzt immer genau mittig.
Der Lautsprecher mit diagonalem Lochabstand von 84,5mm wird auf einer extra Schallwand ebenfalls wieder per Einpressmuttern montiert.
Die Schallwand kann mit Stoff überzogen werden und wird dann mit der Frontplatte verschraubt.
Die Front wird mit dem Korpus verleimt, das Innenleben bleibt trotzdem wieder demontierbar.
Auf den Geräteboden wird eine Leiste mit 2 Einpressmuttern angeklebt. Diese beiden Schauben halten die Platine. Die gleiche Leiste ist auch innen mit der Platine verschraubt, dient dort aber nur als Auflage und ist wegen der besseren Entnehmbarkeit der Platine nicht verleimt.
Abschlußbilder
eine Gesamtansicht mit der ersten Skala:
und mit der zweiten Skala:
Innenansichten:
ein kleines Video zeigt beide Simulationen
Ich will noch das webinterface zeigen. Einfach aber funktionell:
Bemerkung von Norbert:
es gab mal ein Zauberwort, nämlich Sprite (nicht das Kaltgetränk!).
Bodmer stellt u. a. diese Technik mit einer seiner vielen Libs zur Verfügung, und ich wende sie an.
Der Ablauf findet folgendermassen statt:
- Hintergrundbild / Grafik laden und aufs TFT-Display zeichnen
- Puffer 1 (Sprite) für den Skalenzeiger anlegen
- Puffer 2 (Sprite) gleicher Größe wie Puffer 1 zum "Retten" des Hintergrundbildes anlegen
-> Position des Skalenzeigers berechnen
| - Ausschnitt des Hintergrundbildes von der errechneten Position des
Skalenzeigers in den Puffer 2 (zur Rettung des Hintergrundbildes)
kopieren
| - Puffer 1 des Skalenzeiger an der errechneten Position ins Hintergrundbild schreiben
< - nächste Zeigerposition errechnen
Nicht nur die Zeit für den Daten Transfer ist kritisch. Da die Sprites
RAM belegen, muss auch der Speicherplatz muss im Auge behalten werden.
Üblicherweise sind die Skalenzeiger nicht all zu groß (max. 12 X 80px *
2) * 2, plus Puffer 3 (300x40px) * 2 für Touch-Bedienung, aber es
summiert sich auf.
Plus die meisten Arduino Libs sind auch nicht allzu Speicher effizient programmiert...
hier sind sie alle vereint:
Keine Kommentare:
Kommentar veröffentlichen