TonUINO-TNG Konfigurationsmöglichkeiten und Funktionen

Der Beitrag ist als Wiki konfiguriert und kann von jedem bearbeitet werden (dazu klickt ihr unten rechts auf Bearbeiten ). Bitte antwortet nicht auf diesen Beitrag.

TonUINO-TNG Konfigurationsmöglichkeiten und Funktionen

Die TonUINO-TNG Software hat gegenüber der vorherigen Software (DEV 2.x) erheblich an Einstellmöglichkeiten und Funktionen hinzugewonnen. Nicht zuletzt auch dadurch, dass beliebte Funktionen aus Forks der DEV integriert wurden.
Dieser Beitrag gibt eine kompakte Übersicht der Einstellmöglichkeiten und Funktionen der aktuellen TonUINO-TNG (3.1.9) .
Die meisten der Einstellungen werden in der Datei „constants.hpp“ durch sog. „defines“ bereits vor der Kompilierung der Software vorgenommen. Einige aber auch erst am betriebsfertigen TonUINO über das Admin-Menü.
Die „defines“ sind in der Reihenfolge gelistet, wie sie auch in der „constants.hpp“ stehen.

Zu den Einstellmöglichkeiten im Admin-Menü gibt es einen gesonderten Beitrag.

Für Details bitte die Hinweise an Punkten mit dem Dreieck ausklappen

Einstellungen über „defines“

„defines“ sind Variable, die aktiviert oder nicht aktiviert werden können, um so Programmteile zu aktivieren oder Parameter für Hardwarekomponenten einzustellen.
Alle „defines“ beginnen mit dem Schlüsselwort „#define“ gefolgt von dem Variablennamen, der eine Beziehung zur seiner Funktion hat.

Aktivierung / Deaktivierung eines „defines“

Ein „define“ ist NICHT aktiv, wenn in der Zeile vor dem Schlüsselwort 2 Schrägstriche stehen (Beispiel: „//#define“)
Das „define“ wird einfach aktiviert, indem die Schrägstriche am Anfang der Zeile vor dem Kompilieren entfernt werden (also von „//#define“ auf „#define“ geändert wird)

Anpassung an vorhandene Hardware

Mit diesen „defines“ werden Parameter in der Software eingestellt, die für eine fehlerfreie Funktion der verbauten Hardware notwendig sind:

Anpassung an Aufbau und Mikrokontroller

//#define TonUINO_Classic

Diese variable ist zu aktivieren, wenn der TonUINO auf der käuflichen Classic-Platine aufgebaut oder selbst verschaltet (auch ev. mit eigener Platine) wurde.

//#define TonUINO_Every

Da der TonUINO eigentlich mit einem Arduino Nano V3 betrieben wird, benötigt die Software die Information, dass der leistungsstärkere Arduino Nano Every eingesetzt wird.

//#define ALLinONE

Es gab Platinen (sind leider nicht mehr vefügbar) mit umfangreichen Hardwareerweiterungen und Features, die entsprechende Anpassung (Freigabe) in der Software erforderten. Für neu aufzubauende TonUINOs also z. Zt. ohne Bedeutung.

/#define ALLinONE_Plus

Es gab Platinen (sind leider nicht mehr vefügbar) mit umfangreichen Hardwareerweiterungen und Features, die entsprechende Anpassung (Freigabe) in der Software erforderten. Für neu aufzubauende TonUINOs also z. Zt. ohne Bedeutung.

Anpassung an das Bedienkonzept

//#define THREEBUTTONS

Dieses Bedienkonzept ist Standard und sieht die Bedienung des TonUINO über 3 Tasten vor, wobei 2 Tasten über eine Doppelfunktion verfügen (kurzer / langer Tastendruck für Lauter / Leiser und Vor / Zurück)

//#define FIVEBUTTONS

Das Bedienkonzept mit 5 Tasten vermeidet die Doppelfunktion von Tasten ( wie in der 3-Tasten Variante) indem für Lauter / Leiser und Vor / Zurück separate Tasten verfügbar sind

//#define BUTTONS3X3

Ein Besonderes Bedienkonzept, bei dem Der TonUINO über eine 3 x 3 Tastenmatrix gesteuert wird
Das 3x3 Buttonboard funktioniert so, dass über ein Widerstandsnetzwerk bei jeder gedrückten Taste der 3x3 Matrix eine andere Spannung am Ausgang ausgegeben wird. Diese Spannung wird je nach Hardware und Konfiguration des Tonuino an einem Analogpin ausgewertet. Durch die map-Funktion kann so jede Taste über die ausgegebene Spannung identifiziert werden und die gewünschte Aktion auslösen. Die Steuerfunktionen des Tonuino werden bei Verwendung des 3x3 Buttonboards im 3 Tasten-Modus ausgeführt.
Über DIP-Schalter auf dem 3x3 Buttonboard wird dieses an das verwendete Tonuino-Board (AiO, AiO+ oder Klassik) angepasst. Bitte die Konfigurationshinweise auf der LKP Website beachten.

Anpassung für den DF-Player

Da die DF-Player, die geliefert werden, mit unterschiedlichen Decoder-Bausteinen (Chips) versehen sind, ergeben sich Inkompatibilitäten, so dass einige Parameter und teilweise auch die Software speziell auf diese Chips für eine einwandfreie Funktion angepasst werden muss.

//#define DFMiniMp3_T_CHIP_GD3200B

Hier erfolgt die Anpassung für den Decoder-Chip „GD3200B“.

//#define DFMiniMp3_T_CHIP_MH2024K16SS

Hier erfolgt die Anpassung für den Decoder-Chip „MH2024K-16SS“.
Ist allerdings ein Chip „MH2024K-24SS“ verbaut, wurde deutlich besseres Verhalten berichtet, wenn der Parametersatz (define) für „LISP3“ verwendet wurde.

#define DFMiniMp3_T_CHIP_LISP3

Hier erfolgt die Anpassung für den Decoder-Chip „LISP3“.
Diese Anpassung hat sich ebenfalls als gut brauchbar für den Chip „MH2024K-24SS“ erwiesen.

//#define DFMiniMp3_T_CHIP_Mp3ChipIncongruousNoAck

Dieser Eintrag ist standardmäßig ausgewählt und ist anzuwenden, wenn der Chip des Players nicht aufgelistet oder die Bezeichnung nicht lesbar ist. Die Software arbeitet dann mit Standardbefehlen und Timings.

Erweiterte Funktionen und Features

Die Software ist bereits für erweiterte Funktionen und zusätzliche Features vorbereitet. In einigen Fällen reicht dazu allerdings die einfache Freigabe in der Software nicht aus, da für einige Features auch zusätzliche oder geänderte Hardware erforderlich ist.
Beachte dazu die besonderen Hinweise bei den betreffenden Punkten.

//#define DISABLE_SHUTDOWN_VIA_BUTTON

Standardmäßig kann der TonUINO mit langem Druck auf die Pause-Taste abgeschaltet (in den Energiesparmodus geschaltet) werden, wenn gerade nichts abgespielt wird. Die anderen Baugruppen (RFID-Reader, DF-Player) werden dabei nicht abgeschaltet. Neustart des TonUINO ist dann nur möglich, wenn er zuvor komplett von der Stromversorgung getrennt wurde.
Ist dieses Verhalten nicht gewünscht, so kann es durch Aktivierung dieses „define“ abgeschaltet werden.

//#define ROTARY_ENCODER

Lautstärkeregelung über Dreh-Encoder
Steuerung der Lautstärke über einen digitalen Dreh-Encoder (bei der Classic-Variante an Pin A3 und A4 angeschlossen). Drehrichtung und Impulse werden von der Software in entsprechende Befehle für den DF‑Player umgesetzt. Der Bedienvorteil eines Dreh-Encoders gegenüber einem Potenziometer liegt darin, dass der Dreh-Encoder über keine Endanschläge verfügt und beschädigungsfrei „endlos“ in beide Richtungengedreht werden kann.
Zusätzliche Hardware erforderlich!
Der allgemein verwendete Dreh-Encoder KY-040 verfügt zusätzlich über einen Drucktaster an der Drehachse, so dass er auch perfekt die Funktion der Play/Pause-Taste übernehmen kann.
notwendige Einstellung im Admin-Menü
Die Funktion „Lautstärketasten umdrehen“ muss so eingestellt sein dass:

  • kurzer Tastendruck = Titelsprung
  • langer Tastendruck = Lautstärkeänderung
//#define ROTARY_ENCODER_LONGPRESS

Lautstärkeregelung und Vor/Zurück über Dreh-Encoder
Mit der (zusätzlichen) Aktivierung dieser Variablen ist der TonUINO in der Lage, zu unterscheiden, ob der Dreh-Encoder nur um eine Raste oder um mehrere Rasten verstellt wurde, womit nun bei Drehung unterschiedliche Befehle (entsprechend kurzem oder langem Tastendruck) ausgeführt werden können:

  • Drehung um nur EINE Raste entspricht Vor- oder Zurück-Taste
  • Drehung um 2 Rasten oder mehr entspricht Lauter- oder Leiser-Taste

notwendige Einstellung im Admin-Menü
Die Funktion „Lautstärketasten umdrehen“ muss so eingestellt sein dass:

  • kurzer Tastendruck = Titelsprung
  • langer Tastendruck = Lautstärkeänderung

In Verbindung mit dem zusätzlich vorhandenen Drucktaster an der Drehachse kann der TonUINO nun mit nur einem einzigen Bedienelement vollständig gesteuert werden.
!! Unbedingt beachten !!
Wird vollständig auf die Installation von Tasten verzichtet, ist der Zugang zum Admin-Menü über den „3-Tasten-Druck“ nicht mehr möglich. Stattdessen muss eine „Admin-Karte“ verwendet werden.

//#define POTI

Lautstärkeregelung über Potentiometer
Steuerung der Lautstärkeregelung mit einem Potentiometer an einem Analoganschluss des Arduino (bei der Classic-Variante Pin A3). Das Potentiometer liegt also nicht, wie sonst üblich, im Stromkreis für die Audiosignale sondern liefert nur Analogwert der Spannung der vom Arduino in entsprechende Befehle für den DF‑Player umgesetzt wird.
Zusätzliche Hardware erforderlich!
Als zusätzliche Hardware ist ein normales Potentiometer mit Drehachse erforderlich.
Empfohlen wird ein Potentiometer mit einem Widerstand von 10 kOhm und einer logarithmischen Kennlinie. Es sind Potentiometer mit Schalter auf der Achse erhältlich, der sehr gut als Ein- / Ausschalter für den TonUINO verwendet werden kann.

//#define NEO_RING

Anzeigen über Mehrfarb-LEDs / Leuchtbänder
Dieses „define“ aktiviert Leuchteffekte über Mehrfarb-LEDs ( nach Standard WS2812, auch Neopixel) während der Wiedergabe, aber auch zusätzlich zur Anzeige verschiedener Betriebszustände.

|    Anzeige / Farbe    |        Funktion / TonUINO Status               |
+-----------------------+------------------------------------------------+
|       rot             |      Startvorgang des TonUINO                  |
+-----------------------+------------------------------------------------+
|  grün, pulsierend     |  Startvorgang abgeschlossen,                   |
|                       |  warten auf neue Karte                         |
+-----------------------+------------------------------------------------+
|  rot                  |  neue Karte erkannt                            |
+-----------------------+------------------------------------------------+
| Regenbogen, umlaufend |  Wiedergabe laufend                            |
+-----------------------+------------------------------------------------+
| Regenbogen statisch   |  Wiedergabe, Pause-Status                      |
+-----------------------+------------------------------------------------+
| blau, pulsierend      |  Admin- Menü                                   |
+-----------------------+------------------------------------------------+
| Leuchtband, grün      |  Lautstärkeeinstellung, länge des Leuchtbandes |
|                       |  proportional zur eingestellten Lautstärke     |
+-----------------------+------------------------------------------------+
| orange, pulsierend +  |  Schlummerfunktion, Timer aktiv                |
| leicht blinkend       |                                                |
+-----------------------+------------------------------------------------+
| orange                |  Shutdowntimer, Timer – 1 Minute erreicht      |
+-----------------------+------------------------------------------------+
| rot                   |  Shutdowntimer, Timer – 30 Sekunden erreicht   |
+-----------------------+------------------------------------------------+
| rot, gedimmt          |  Shutdowntimer, Timer – 15 Sekunden erreicht   |
+-----------------------+------------------------------------------------+```
**Zusätzliche Hardware erforderlich!**
Benötigt wird ein entsprechendes [Anzeigeelemet nach Standard WS2812](https://www.reichelt.de/entwicklerboards-led-ring-rgb-12-leds-ws2812-debo-led-ring12-p376754.html?search=ws2812). Diese Elemente sind als Einzeldioden, aber auch in vorgefertigter Anordnung mit mehreren Dioden in unterschiedlichen Formen erhältlich.
//#define NEO_RING_EXT

Erweiterte Anzeigen über Mehrfarb-LEDs / Leuchtbänder
Vorausgesetzt wird hier bereits die aktivierte Funktion von „//#define NEO_RING“ inklusive der dafür notwendigen Hardware.
Als erweiterte Funktion, wird bei Änderung der Lautstärke die Veränderung als Laufband angezeigt.

//#define NEO_RING_2

Mit Aktivierung dieses „define“ stelt der Arduino Mikrokontroller einen weiteren Ausgang zu Steuerung von Mehrfarb-LEDs bereit (die Pin-Nummer für diesen Ausgang findest Du in den Tabellen der „constants.hpp“).
Das hier angeschlossene Anzeigeelement wird genau gegenläufig zum ersten Anzeigeelement angesteuert.
Zusätzliche Hardware erforderlich!
Benötigt wird ein entsprechend zweites es Anzeigeelemet nach Standard WS2812. Diese Elemente sind als Einzeldioden, aber auch in vorgefertigter Anordnung mit mehreren Dioden in unterschiedlichen Formen erhältlich.

//#define SPKONOFF

Stummschaltung des Lautsprechers
Unterstützung der Lautsprecher-Stummschaltung zur Unterdrückung des Ein- und Ausschaltknackens. Der TonUINO schaltet den Lautsprecher erst nach Beendigung des Bootvorgangs ein, so dass sich alle Spannungen in den Baugruppen stabilisiert haben und das Zuschalten des Lautsprechers geräuschlos funktioniert.
Zusätzliche Hardware erforderlich!
Da die Software den Schaltbefehl für den Lautsprecher an einem Pin des Arduino ausgibt, der DF-Player aber nicht in der Lage ist diesen auszuwerten, ist für diese Funktion eine Hardwareerweiterung notwendig, die den Lautsprecher schalten kann. Dies kann entweder ein kleines Relais sein, das mit TTL-Pegeln arbeitet, oder besser ein Halbleiterschalter.

//#define HPJACKDETECT

Erkennung Kopfhörer
Bei Erkennung von Kopfhörern wird der eingebaute Lautsprecher stumm geschaltet, womit die Aktivierung von " SPKONOFF" zwingend notwendig ist, damit die Kopfhörererkennung sinnvoll ausgewertet werden kann.
Bei aktivierter Kopfhörererkennung wertet der Arduino ein Steuersignal der Kopfhörerbuchse aus und leitet die Stummschaltung des Lautsprechers ein.
Erweiterte Lautstärkeeinstellung
Es lassen sich über das Admin-Menü separate Standard- und Grenzwerte für Kopfhörerbetrieb einstellen (siehe dazu Beschreibung im Admin-Menü)
Zusätzliche Hardware erforderlich!
Es wird natürlich eine Kopfhörerbuchse benötigt. Dies kann aber leider keine Standardbuchse sein, da sie für das Steuersignal zum Arduino einen internen Schalkontakt benötigt, der bei gestecktem Kopfhörer das Steuersignal an den Arduino gibt (Pin 8 auf Masse legt).

Zusätzlich wird der gleiche Schalteinrichtung benötigt, wie sie auch für die Stummschaltung des Lautsprechers verwendet wird.

//#define DONT_ACCEPT_SAME_RFID_TWICE

Gleiche Karte in Folge nicht akzeptieren
Normalerweise unterbricht das Auflegen einer Karte, auch wenn dieselbe Karte erneut aufgelegt wird, die laufende Wiedergabe und startet den auf der Karte angegebenen Track von Anfang an.

Ist diese Variable aktiviert, wird allerdings bei Auflegen derselben Karte (also die, deren Track gerade abgespielt wird) die Wiedergabe nicht unterbrochen und ohne Unterbrechung fortgesetzt.

//#define RESUME_ON_SAME_RFID

Fortsetzung bei gleicher Karte
Diese Variable ist in Verbindung mit „DONT_ACCEPT_SAME_RFID_TWICE“ zu sehen. Wenn nur " DONT_ACCEPT_SAME_RFID_TWICE" aktiviert ist, würde, wenn der TonUINO während der Wiedergabe auf „Pause“ geschaltet wurde, bei Auflegen derselben Karte nichts passieren. Dies erscheint unlogisch und wird als Fehler empfunden, da sonst bei Auflegen einer Karte die Wiedergabe startet.

Ist diese Variable aktiviert, so wird entsprechend „DONT_ACCEPT_SAME_RFID_TWICE“ die Wiedergabe nicht erneut vom Anfang an gestartet, sondern der „Pause“ Status wir beendet und auf „Play“ geschaltet. Die Wiedergabe des unterbrochenen Tracks wird also fortgesetzt (als hätte man die Pause-Taste gedrückt.

//#define REPLAY_ON_PLAY_BUTTON

Wiederholung mit Play-Taste
Mit Druck auf die Pause-Taste wird die letzte Wiedergabe (Karte oder Shortcut) erneut abgespielt, wenn gerade nichts wiedergegeben wird.

#define QUIZ_GAME

QuizSpiel
Die Aktivierung dieser Variablen ermöglicht es, mit dem TonUINO unterschiedliche Quiz-Varianten zu spielen.

  • Quiz mit 2 Antwortvorschlägen
  • Quiz mit 2 Antwortvorschlägen + Erklärung
  • Quiz mit 4 Antwortvorschlägen
  • Quiz mit 4 Antwortvorschlägen + Erklärung
  • Quiz mit Buzzer
  • Quiz mit Buzzer + Erklärung

Für jede Spielvariante sind speziell befüllte Ordner auf der SD-Karte erforderlich.
Zusätzliche Hardware empfohlen!
Für die Quiz-Spiele ist keine besondere Harware erforderlich. Es wird jedoch empfohlen, geeignete und robuste Taster für die Mitspieler parallel zu den Bedientasten des TonUINO anzuschließen, die flexibel positioniert werden können.
Ganz besonders empfehlenswert sind separate Taster, wenn die Buzzer-Variante gespielt werden soll.

#define MEMORY_GAME

Memory-Spiel
Die Aktivierung dieser Variablen ermöglicht es, mit dem TonUINO ein akustisches Memory zu spielen. Hierzu sind speziell befüllte Ordner auf der SD-Karte erforderlich.

Obwohl keine besondere Hardware benötigt wird, sei hier erwähnt dass natürlich die Memory-Karten benötigt werden (min. 16 Karten für ein 4x4 Memory)

//#define STORE_LAST_CARD

Letzte Karte speichern
Daten der zuletzt gespielten Karte werden im EEPROM des Arduino gespeichert und stehen nach dem Einschalten des TonUINO wieder zur Verfügung.

Die Wiedergabe des Tracks kann nach einem Neustart des TonUINO wiedergegeben werden, ohne dass die Karte aufliegen muss. (Die Funktion „Pause, wenn Karte entfernt“ darf natürlich nicht aktiviert sein)

//#define SPECIAL_START_SHORTCUT

Weckersound
Beim SPECIAL_START_SHORTCUT wird beim Einschalten nicht der über das Adminmenü konfigurierte Begrüßungssound abgespielt, sondern ein im Code festgelegter Track. Das ist in der TNG ,Track 001 im Ordner 01. Dies ist nützlich, wenn man den Tonuino über z.B. einen Wecker einschaltet und hier immer dieser Track abgespielt werden soll. Außerdem muss zum Abspielen dieses Special-Shortcuts Pin A6 während des Einschaltvorgangs auf HIGH-Potential gehalten werden.
Um ein ungewolltes Abspielen dieses Special_Shortcuts bei jedem Einschalten zu vermeiden muss PIN A6 über einen 100kOhm Widerstand permanent an Ground geschaltet werden.

//#define BAT_VOLTAGE_MEASUREMENT

Überwachung Akkuspannung
Der TonUINO ist damit in der Lage, die Akkuspannung zu überwachen und bei bestimmten Schwellwerten akustische Signale auszugeben. Bei entladener Batterie wird auf dem ShutdownPin ein Signal ausgegeben, das bei Vorhandensein einer Einschaltelektronik,z.B. PololuPowerswitch, den Tonuino ausschaltet.
Da die Messung beim Arduino Nano nur sehr ungenau sind, wird empfohlen, bei Anwendung dieser Funktion einen Arduino Nano Every zu verwenden.
Zusätzliche Hardware erforderlich!
Damit eine Messung erfolgen kann, muss zusätzlich zur Standardschaltung die Akkuspannung über einen Spannungsteiler,z.B. 100kOhm/100kOhm, auf den Messanschluss des Arduino geführt werden (siehe dazu die Anschlusstabellen in der „constants.hpp“).

//#define USE_POLOLU_SHUTDOWN

Verwendung Pololu-Schalter
Diese Funktion invertiert das Signal von Pin D7 (shutdown) des Arduino für den Pololu-Schalter:

  • Normal = D7 schaltet auf LOW für Shutdown
  • Pololu = D7 schaltet nach HIGH für Shutdown, so dass der OFF-Eingang der Pololu korrekt von D7 mit einem HIGH-Signal zum Abschalten bedient werden kann.

Das Admin-Menü

Die Möglichkeiten, die das Admin-Menü bietet sind sehr umfangreich und sind mit detaillierte Beschreibungen im Beitrag TonUINO-TNG – Admin-Menü und Funktionen zusammengestellt.
Als Übersicht der Möglichkeiten ist ein einfaches Diagramm verfügbar.

1 „Gefällt mir“

Hallo Norbert
Eine sehr schöne Übersicht. wirklich toll gemacht.
Ein Fehler hat sich aber eingeschlichen.

Beim SPECIAL_START_SHORTCUT wird beim Einschalten nicht der über das Adminmenü konfigurierte Begrüßungssound abgespielt, sondern ein im Code festgelegter Track. Das ist in der TNG ,Track 001 im Ordner 01. Dies ist nützlich, wenn man den Tonuino über z.B. einen Wecker einschaltet und hier immer dieser Track abgespielt werden soll. Außerdem muss zum Abspielen dieses Special-Shortcuts Pin A6 während des Einschaltvorgangs auf HIGH-Potential gehalten werden.
Um ein ungewolltes Abspielen dieses Special_Shortcuts bei jedem Einschalten zu vermeiden muss PIN A6 über einen 100kOhm Widerstand permanent an Ground geschaltet werden.

Danke Thomas für die „Blumen“ und den Hinweis.
Ich habe den Text sogleich korrigiert = Deine Erläuterung übernommen.

Inzwischen ist der Beitrag Dank Jana’s Hilfe nun ein Wiki, so dass solche Dinge ohne meine Mitwirkung korrigiert werden können.

1 „Gefällt mir“