TonUINO All-In-One Plus – Die Arduino IDE einrichten

Veröffentlicht am

Inhalt

  1. Arduino IDE runterladen und installieren
  2. USB Bridge Treiber installieren
  3. ATmega4809 Board Support Package installieren
  4. Einstellungen vornehmen

Arduino IDE runterladen und installieren

Die Arduino IDE gibt es zum Download auf arduino.cc. Dort einfach die aktuellste Version für das jeweilige Betriebssystem runterladen und installieren. Während der Installation können alle Optionen so belassen werden wie sie sind.

Es ist möglich, daß es während der Installation unter Windows 10 zu mehreren Nachfragen kommt. Diese bitte mit einem Klick auf Installieren bestätigen. Am Ende die Installation mit einem Klick auf Close abschließen.

Hinweis: Bitte nicht die Arduino IDE aus dem Windows Store verwenden!

Die Arduino IDE kann nun mit einem Doppelklick auf das Arduino Icon auf dem Desktop gestartet werden. Es ist möglich, daß sich beim ersten Starten die Windows Defender Firewall (oder auch andere) meldet. Da die Arduino IDE über eine Update Funktion verfügt (z.B. für benötigte Bibliotheken usw.), ist dies normal und sollte bestätigt werden.

USB Bridge Treiber installieren

Auf der AiO Plus ist eine USB Bridge vom Typ CH340C verbaut. Sollte die AiO Plus beim Anstecken an den Computer nicht automatisch erkannt werden, sind folgende Treiber zu installieren:

ATmega4809 Board Support Package installieren

Die Voreinstellungen der Arduino IDE öffnen:

Unter Windows: Datei -> Voreinstellungen (Strg + Komma)

Unter macOS: Arduino -> Preferences… (CMD + ,)

Nun in den Voreinstellungen unter dem Punkt Zusätzliche Boardverwalter-URLs die folgende URL eintragen:

  • https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json

Sollte dort schon eine andere URL vorhanden sein, einfach die Einträge durch Komma (,) trennen.

Dann mit OK bestätigen.

Jetzt kann der Boardverwalter gestartet werden:

Im Suchfeld nun megacorex eingeben und die Installation der jeweils aktuellen Version mit Klick auf Installieren starten. Nach Abschluss der Installation den Boardverwalter über einen Klick auf Schließen beenden.

Einstellungen vornehmen

Jetzt kann der Boardtyp ATmega4809 ausgewählt werden:

Alle weiteren Einstellungen werden wie folgt vorgenommen:

  • Clock: Internal 16 MHz
  • BOD: BOD disabled
  • EEPROM: EEPROM retained
  • Pinout: 48 pin standard
  • Reset pin: Reset
  • Bootloader: Optiboot (UART0 default pins)
  • Port: Hängt vom System ab!

Der Port kann sich je nach System unterscheiden. Um den korrekten Port auswählen zu können, muss die AiO Plus angeschlossen sein und je nach System auch ein Treiber für die USB Bridge installiert sein (siehe oben).

GANZ WICHTIG: Um eine Firmware auf die Platine zu flashen, wird dauerhaft Spannung benötigt. Dazu ist entweder während des Flashens die Play/Pause Taste gedrückt zu halten (bei AiO Plus >= v2.0 geht auch der Taster auf der Platine) oder der Jumper auf dem Adapter für die Buttons zu stecken.

Der Jumper muss allerdings für den normalen Betrieb nach dem Flashen dann wieder abgezogen werden!

TonUINO All-In-One Plus – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Übersicht
  2. Lieferumfang
  3. Zusammenbau
  4. Netzteil
  5. TonUINO Firmware
  6. TonUINO Community
  7. Pinbelegung

Übersicht

# Beschreibung
1 USB-C Anschluss zum Betrieb, zum Laden und für die Konsole
2 Ladeanzeige (rot lädt, grün geladen)
3 Resettaste
4 Kopfhöreranschluss
5 SD-Karten Slot
6 Erweiterungsleiste (Audio In/Out)
7 Erweiterungsleiste (Female)
8 Lautsprecheranschluss
9 OPT Leiste (Male)
10 Anschluss für den Button Adapter (10 Polig)
11 Akkuanschluss
12 USB-Switch Jumper
13 Anschluss für den NFC Adapter (8 Polig)
14 UPDI Anschluss
15 Anschluss für geplanten Rotary Encoder Adapter (5 Polig)
16 I2CMUX Leiste
17 Power On Taster

Lieferumfang

Enthalten ist die TonUINO All-In-One Plus Platine, ein Adapter für den NFC Leser inkl. 8-Adrigem Kabel, ein Adapter für die Buttons inkl. 10-Adrigem Kabel und ein Kabel für den Lautsprecher.

Zusammenbau

Die mitgelieferten Kabel mit den beiden Adaptern verbinden (diese können einfach auseinander gebrochen werden). Anschließend die Kabel auf die TonUINO All-In-One Plus Platine stecken. Aufgrund der unterschiedlich großen Stecker ist ein Vertauschen nicht möglich.

NFC Adapter

An den NFC Adapter kann nun der NFC Leser angeschlossen werden. Dabei ist zu beachten, daß die Beschriftung der Pins auf dem Adapter 1:1 mit der auf dem Leser übereinstimmt.

Button Adapter

An den anderen Adapter können nun z.B. die beliebten Arcade Taster angeschlossen / angelötet werden (falls man nicht löten möchte, kann man natürlich auch das TonUINO Button Cable 10xQC verwenden). Es stehen 4 Anschlüsse mit je einem GND Pin zur Verfügung, plus PBP/PBN, welche für Play/Pause + Einschalten verwendet werden und deswegen speziell beschaltet sind. Die Reihenfolge ist folgendermaßen: V- < PBP/PBN > V+

  • V- Lautstärke verringern
  • < vorheriger Titel
  • PBP/PBN Play/Pause + Einschalten
  • > nächster Titel
  • V+ Lautstärke erhöhen

Alternativ kann statt des Button Adapters natürlich auch das TonUINO Button Board 1×5 verwendet werden.

GANZ WICHTIG: Um eine Firmware auf die Platine zu flashen, wird dauerhaft Spannung benötigt. Dazu ist entweder während des Flashens die Play/Pause Taste gedrückt zu halten (bei AiO Plus >= v2.0 geht auch der Taster auf der Platine) oder der Jumper auf dem Adapter für die Buttons zu stecken.

Der Jumper muss allerdings für den normalen Betrieb nach dem Flashen dann wieder abgezogen werden!

Lautsprecher

Das letzte Kabel ist für den Lautsprecher und kann an einen beliebigen 4 bis 8 Ohm Lautsprecher gelötet werden. Auf der TonUINO All-In-One Plus Platine befindet sich dafür ein passender Anschluss, der mit SPEAKER beschriftet ist.

Akku

Optional kann ein einzelliger (1S) LiFePo4 Akku angeschlossen werden (der Anschluss ist mit BATTERY beschriftet, hat den Pluspol mit einem + markiert und hat das Format JST-PH 2mm). Empfohlen werden ca. 3000mAh (mehr geht natürlich auch), damit erreicht die TonUINO All-In-One Plus Platine ca. 20-24h kontinuierliche Spielzeit.

Wichtig: Achtet beim Anschließen unbedingt auf die richtige Polung (in aller Regel ist Rot +) und setzt nur LiFePO4 Akkus mit Schutzschaltung ein. Verlasst euch nicht auf den Auslieferungszustand des Akkus. Dieser kann verdreht sein! Bei falscher Polung kann die Platine beschädigt werden.

Netzteil

Kommt der optionale LiFePO4 Akku zum Einsatz, kann zum Aufladen ein USB Netzteil mit 2A verwendet werden. Während des Ladens leuchtet die Ladeanzeige LED neben dem USB-C Anschluss dauerhaft rot. Wenn der Akku voll geladen ist, leuchtet die Ladeanzeige LED dauerhaft grün. Mit einem ausreichend dimensionierten USB Netzteil (s.o.), kann die TonUINO All-In-One Plus Platine auch problemlos während des Ladens betrieben werden. Ein Betrieb gänzlich ohne Akku – nur mit Netzteil – ist natürlich ebenfalls möglich.

TonUINO Firmware

Die offizielle Firmware vom TonUINO Projekt kann ganz einfach über den Browser installiert werden. Befolge dazu einfach die 5 Schritte im TonUINO AiO Plus Online Firmware Updater. Dort findet ihr auch die noch benötigten Sprachdateien zum Download, welche auf die SD Karte kopiert werden müssen.

TonUINO Community

Für Diskussionen rund um den TonUINO gibt es vom TonUINO Projekt ein tolles Community Forum. Schau dort gerne mal vorbei!

Pinbelegung

Die Pinbelegung des ATmega4809 ist interessant für Bastler, die eine eigene Firmware für die TonUINO All-In-One Plus entwickeln wollen.

Wichtig: Die AiO Plus arbeitet wie auch der Vorgänger mit 3V3 Pegeln! Bitte achtet bei der Kommunikation mit externen Baugruppen darauf, daß ihr hier keine 5V Pegel anlegt. Sollten eure externen Baugruppen nur 5V Pegel haben benötigt ihr zwingend einen Pegelwandler!

Audio

Erweiterungsleiste: OutR GND OutL InR GND InL

ATmega4809

Port Arduino Pin Bezeichnung Position / Funktion Hinweis
PA0 0 TX0 (UART0) USB Bridge RX
PA1 1 RX0 (UART0) USB Bridge TX
PA2 2 GPIO / SDA (I2C) Erweiterungsleiste (Female)
PA3 3 GPIO / SCL (I2C) Erweiterungsleiste (Female)
PA4 4 GPIO / MOSI (SPI) NFC Buchse
PA5 5 GPIO / MISO (SPI) NFC Buchse
PA6 6 GPIO / SCK (SPI) NFC Buchse
PA7 7 GPIO / SS/SDA (SPI) / LED_BUILTIN NFC Buchse
PB0 8 TX3 (UART3) AC6082 RX
PB1 9 RX3 (UART3) AC6082 TX
PB2 10 GPIO Erweiterungsleiste (Female)
PB3 11 GPIO / NFC RST NFC Buchse
PB4 12 GPIO / NFC IRQ NFC Buchse
PB5 13 GPIO AC6082 Busy Input, HIGH = Not Busy, LOW = Busy
PC0 14 GPIO / TX1 (UART1) Erweiterungsleiste (Female)
PC1 15 GPIO / RX1 (UART1) Erweiterungsleiste (Female)
PC2 16 GPIO / SDA (I2CMUX) I2CMUX Leiste I2C via Pin Swap (siehe Hinweis unten)
PC3 17 GPIO / SCL (I2CMUX) I2CMUX Leiste I2C via Pin Swap (siehe Hinweis unten)
PC4 18 GPIO (PWM) Button Buchse WS
PC5 19 GPIO AMP Shutdown Output, HIGH = AMP Off, LOW = AMP On
PC6 20 GPIO USB Switch Output, HIGH = SD Card, LOW = ATmega4809
PC7 21 GPIO Jack Detect Input, HIGH = Kopfhörer gesteckt, LOW = Kopfhörer nicht gesteckt
PD0 22 / A0 GPIO Button Buchse PBN/PBP (Play bzw. Power On)
PD1 23 / A1 GPIO Button Buchse BB (Back)
PD2 24 / A2 GPIO Button Buchse FB (Forward)
PD3 25 / A3 GPIO Button Buchse V- (Volume Down)
PD4 26 / A4 GPIO Button Buchse V+ (Volume Up)
PD5 27 / A5 GPIO Power Hold Output, HIGH = Power On, LOW = Power Off
PD6 28 / A6 GPIO Batterie Spannungsmessung Input, UBat/2 durch 2x100K Spannungsteiler
PD7 29 / A7 NC NC
PE0 30 / A8 GPIO Rotary Encoder Buchse SW
PE1 31 / A9 GPIO Rotary Encoder Buchse CLK
PE2 32 / A10 GPIO Rotary Encoder Buchse DT
PE3 33 / A11 GPIO Opt Leiste (Male)
PF0 34 GPIO / TX2 (UART2) Opt Leiste (Male)
PF1 35 GPIO / RX2 (UART2) Opt Leiste (Male)
PF2 36 / A12 GPIO Opt Leiste (Male)
PF3 37 / A13 GPIO Opt Leiste (Male)
PF4 38 / A14 GPIO (PWM) Opt Leiste (Male)
PF5 39 / A15 GPIO (PWM) Opt Leiste (Male)
PF6 40 RST Reset

Hinweis: Standardmässig liegt der I2C Bus (SCL und SDA) auf der Erweiterungsleiste (PA2 und PA3). Die I2C Funktionalität kann aber mit den Pins auf der I2CMUX Leiste (PC2 und PC3) getauscht werden, falls sie auf der Erweiterungsleiste nicht benötigt werden. PA2 / PA3 werden dann zu normalen GPIOs und PC2 / PC3 zu SCL / SDA.

Leiterkartenpiraten Player – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Übersicht
  2. Spezifikationen
  3. Pinbelegung
  4. Verstärker ein / aus
  5. Serielles Interface
  6. Befehle
  7. Ordnerstruktur
  8. Verdrahtungsplan
  9. Firmwareupdate
  10. TonUINO

Übersicht

  • TonUINO kompatibel
  • Verstärker mit bis zu 3W Ausgangsleistung (3-8 Ohm Lautsprecher)
  • Unverstärkter Stereoausgang (für Kopfhörer oder externen Verstärker)
  • Max. 32GB SD Karte, FAT32 formatiert (SD Memory Card Formatter)
  • Unterstützt mp3 und advert Ordner
  • Unterstützt 99 eigene Order mit je 255 MP3s
  • Serielles Interface zur Steuerung via Microkontroller
  • Busy LED (leuchtet wenn etwas abgespielt wird)
  • Verstärker kann stumm geschaltet werden (in eigenen Projekten)
  • Firmware kann aktualisiert werden

Spezifikationen

Name Beschreibung Zustand Min Typisch Max Einheit
VDD Betriebsspannung 5 V
VDDIO Logik Pegel 2,2 3,3 3,6 V
Leerlauf Leistungsaufnahme Mit SD Karte, Ohne Last 17,5 mA
Verbrauch im Betrieb Mit SD Karte, Ohne Last 30 mA
SNR DAC Signal Rausch Abstand 92 dB
THD+N DAC Klirrfaktor Ohne Last -72 dB
DAC PWR DAC Ausgangsleistung 32 Ohm 11 mW
SPK Lautsprecher 3 4 8 Ohm
PO Lautsprecher Ausgangsleistung LS 3 Ohm, VDD 5V 3 W
PO Lautsprecher Ausgangsleistung LS 4 Ohm, VDD 5V 2,5 W
PO Lautsprecher Ausgangsleistung LS 8 Ohm, VDD 5V 1,5 W
Dim Abmessungen (L/B/H) 21x21x12 mm
Unterstützte Dateiformate mp3
Temperaturbereich 0 bis 40 Grad Celsius

Pinbelegung

Pin # Pin Bezeichnung Beschreibung Hinweis
1 VDD Eingangsspannung
2 RX UART Serieller Eingang
3 TX UART Serieller Ausgang
4 DAC R Audio Ausgang Rechts Kopfhörer oder externer Verstärker
5 DAC L Audio Ausgang Links Kopfhörer oder externer Verstärker
6 SPK Lautsprecher
7 GND Masse
8 SPK Lautsprecher
9 NC Nicht angeschlossen
10 GND Masse
11 NC Nicht angeschlossen
12 NC Nicht angeschlossen
13 AMP Verstärker ein / aus HIGH = aus, LOW = ein (default)
14 USB + USB Anschluss
15 USB – USB Anschluss
16 BUSY Wiedergabe Status HIGH = spielt nicht, LOW = spielt

Verstärker ein / aus

Über den Solder Jumper SJ1 kann die Verstärkerkontrolle aktiviert werden. Hierzu ist SJ1 aufzutrennen. Nun kann über den AMP Pin der Verstärker ein- bzw. ausgeschaltet werden (siehe Pinbelegung). Wird SJ1 wieder geschlossen, so ist der Verstärker dauerhaft eingeschaltet (dies ist der Auslieferungszustand).

Serielles Interface

Eigenschaften

  • Speed: 9600 bps
  • Data Bit: 8
  • Parity: None
  • Flow Control: None

Format

Byte # Beschreibung Hinweis
1 Startcode Immer 0x7E
2 Version Immer 0xFF
3 Length Immer 0x06
4 Command Siehe Befehle
5 Feedback Immer 0x00
6 Parameter Highbyte
7 Parameter Lowbyte
8 Checksum Highbyte
9 Checksum Lowbyte
10 Endcode Immer 0xEF

Beispiel

Spiele Ordner 1 Track 2:

7E FF 06 0F 00 01 02 XX XX EF

(Die Prüfsumme ist hier als XX XX dargestellt und muss berechnet werden.)

Prüfsumme

Prüfsumme (2 Bytes) = 0xFFFF – (Version + Length + Command + Feedback + ParaHigh + ParaLow) + 1

Library

Wir empfehlen zum ansteuern des LKP Players die DFMiniMp3 Library von Michael ‚Makuna‘ Miller. Diese unterstützt die u.a. Befehle bereits und übernimmt auch das berechnen der Checksumme. Man muss das Rad hier also nicht neu erfinden. Für alle unterstützten Befehle, siehe nächster Abschnitt.

Befehle

Kontrollbefehle

Befehl Beschreibung Makuna Funktion*
0x01 Next Track nextTrack()
0x02 Previous Track prevTrack()
0x04 Increase Volume increaseVolume()
0x05 Decrease Volume decreaseVolume()
0x06 Set Volume setVolume()
0x07 Set EQ setEq()
0x0A Sleep sleep()
0x0C Reset reset()
0x0D Play start()
0x0E Pause pause()
0x0F Play Folder Track playFolderTrack()
0x12 Play MP3 Folder Track playMp3FolderTrack()
0x13 Play Advertisement playAdvertisement()
0x15 Stop Advertisement stopAdvertisement()
0x16 Stop stop()
0x1A enable/disable DAC enableDac(), disableDac()

Abfragebefehle

Befehl Beschreibung Makuna Funktion*
0x3F Query storage devices getPlaySources()
0x42 Query current status getStatus()
0x43 Query current volume getVolume()
0x44 Query current EQ getEq()
0x48 Query number of tracks (SD card) getTotalTrackCount()
0x4C Query current track (SD card) getCurrentTrack()
0x4E Query number of tracks in a specified folder getFolderTrackCount()
0x4F Query total number of folders (SD Card) getTotalFolderCount()

(*) https://github.com/Makuna/DFMiniMp3/wiki/API-Reference

Ordnerstruktur

Die Dateinamen in den Ordnern mp3 und advert müssen mit einer vierstelligen Nummer beginnen, dürfen danach allerdings weitere Zeichen enthalten (nicht empfohlen, wirkt sich negativ auf die Performance aus).

Die Dateinamen in den Ordnern 01 bis 99 (achtung zweistellig) müssen mit einer dreistelligen Nummer von 001bis 255 beginnen, dürfen danach allerdings weitere Zeichen enthalten (nicht empfohlen, wirkt sich negativ auf die Performance aus).

Beispiel

|
+-mp3
|  |
|  +-0001.mp3
|  +-0002.mp3
|  +-0003.mp3
|  +-...
+-advert
|  |
|  +-0001.mp3
|  +-0002.mp3
|  +-0003.mp3
|  +-...
+-01
|  |
|  +-001.mp3
|  +-002.mp3
|  +-003.mp3
|  +-...
|  +-255.mp3
+-02
+-03
+-...
+-99

Verdrahtungsplan

Firmwareupdate

Die aktuelle Firmwareversion ist: v6.8 (Download)

Updateprozedur mit TonUINO Classic Platine

  1. Die heruntergeladene .zip Datei entpacken und die update.ufw auf eine sonst leere SD-Karte kopieren.
  2. Einen leeren Sketch auf den Arduino Nano flashen.
  3. Die vorbereitete SD-Karte in den Leiterkartenpiraten Player einlegen.
  4. Spannung einschalten.
  5. Es ertönen mehrere Signaltöne aus dem Lautsprecher, danach noch ein paar Sekunden warten.
  6. Das Update ist abgeschlossen.

Im Anschluß kann wieder die TonUINO Firmware auf den Arduino Nano geflasht werden. SD-Karte wechseln nicht vergessen!

TonUINO

Der LKP Player ist voll kompatibel zum TonUINO und kann 1:1 auf der TonUINO Classic Platine verwendet werden.

Button Board 1×5 – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Bild
  2. Lieferumfang
  3. Zusammenbau
  4. TonUINO Community

Bild

Lieferumfang

Enthalten ist das Button Board 1×5, eine 10er Pinleiste (gerade), eine 10er Pinleiste (gewinkelt) und fünf Buttoncaps mit gelaserten Symbolen.

Zusammenbau

Es müssen eigentlich nur die Buttoncaps in der richtigen Reihenfolge (siehe Foto oben) auf die Buttons gedrückt werden. Wenn das Button Board 1×5 an eine TonUINO All-In-One Platine angeschlossen werden soll, ist einfach das dort enthaltene 10-polige Kabel zu verwenden. Für den Anschluss an andere Hardware (z.B. TonUINO Classic) kann eine der beiliegenden 10-poligen Pinleisten eingelötet werden.

TonUINO Classic Platine

Die Pins der 10-poligen Pinleiste entsprechen der Beschriftung und können an die entsprechenden Pins der TonUINO Classic Platine verbunden werden. Hier bitte GND nicht vergessen.

Achtung: Damit der Play/Pause Button (Play_P Pin) funktioniert, ist zusätzlich Play_N zwingend mit GND auf der TonUINO Classic Platine zu verbinden! Alternativ kann dazu auch der Lötjumper SJ1 nahe des Play/Pause Buttons auf der Vorderseite der Platine geschlossen werden (ab v1.1).

TonUINO Community

Für Diskussionen über das Button Board 1×5 gibt es vom TonUINO Projekt ein tolles Community Forum. Schau dort gerne mal vorbei!

Easy Headphone – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Bild
  2. Lieferumfang
  3. Zusammenbau
  4. TonUINO Community

Bild

Lieferumfang

Enthalten ist die Easy Headphone Platine, die Kopfhörerbuchse und eine 20er Pinleiste (gerade).

Zusammenbau

Die Kopfhörerbuchse ist bereits auf die Easy Headphone Platine aufgesetzt und muss nur eingelötet werden. Die 20er Pinleiste wird in zwei 5er und eine 2er Pinleiste aufgeteilt und ebenfalls entsprechend eingelötet. Fertig.

TonUINO Classic Platine

Der Anschluss an die TonUINO Classic Platine, erfolgt gemäß des Anschlußbildes oben. Der Lautsprecher wird ebenfalls an der Easy Headphone Platine angeschlossen.

Achtung: Der Anschluss des JD Pins an einen beliebigen freien Digital Pin der TonUINO Classic Platine ist OPTIONAL und dient zur Erkennung ob ein Kopfhörer eingesteckt wurde (JD wird dann auf GND gezogen). Damit lässt sich in eigenen Firmwareentwicklungen z.B. eine unterschiedliche Lautstärke im Kopfhörerbetrieb realisieren. Für den normalen Betrieb mit der klassischen TonUINO Firmware kann diese Verbindung entfallen.

TonUINO Community

Für Diskussionen über die Easy Headphone Platine gibt es vom TonUINO Projekt ein tolles Community Forum. Schau dort gerne mal vorbei!

Button Board 3×3 – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Bild
  2. Lieferumfang
  3. Zusammenbau
  4. Beispielsoftware
  5. TonUINO Community

Bild

Lieferumfang

Enthalten ist das Button Board 3×3, eine 10er Pinleiste (gerade), eine 10er Pinleiste (gewinkelt) und zehn bunt gemischte Buttoncaps.

Zusammenbau

Es müssen eigentlich nur die Buttoncaps nach Wunsch auf die Buttons gedrückt werden. Wenn das Button Board 3×3 an eine TonUINO All-In-One Platine angeschlossen werden soll, ist einfach das dort enthaltene 10-polige Kabel zu verwenden. Für den Anschluss an andere Hardware (z.B. TonUINO Classic) kann eine der beiliegenden 10-poligen Pinleisten eingelötet werden.

TonUINO All-In-One Platine

Für den Betrieb an der TonUINO All-In-One Platine ist der DIP Switch oben links wie folgt einzustellen:

OFF | OFF | ON | ON

(Oben = ON)

Der Pin für den ADC ist in dem Fall FWRD. Die anderen Pins entsprechen der Beschriftung.

TonUINO Classic Platine

Für den Betrieb an der TonUINO Classic Platine ist der DIP Switch oben links wie folgt einzustellen:

ON | OFF | ON | OFF

(Oben = ON)

Der Pin für den ADC ist in dem Fall FWRD. Die anderen Pins entsprechen der Beschriftung und können an die entsprechenden Pins der TonUINO Classic Platine verbunden werden. Hier bitte GND nicht vergessen.

Achtung: Damit der Play/Pause Button (Play_P Pin) funktioniert, ist zusätzlich Play_N zwingend mit GND auf der TonUINO Classic Platine zu verbinden! Alternativ kann dazu auch der Lötjumper SJ1 nahe des Play/Pause Buttons auf der Vorderseite der Platine geschlossen werden.

Beispielsoftware

Das Button Board 3×3 richtet sich an Bastler. Die folgende Demo kann als Startpunkt für eigene Entwicklungen genutzt werden. Die Demo wurde für die TonUINO All-In-One Platine entwickelt, funktioniert allerdings auch auf einem Ardunino Nano (z.B. TonUINO Classic).

/*
   TU_BB_3x3 v1.0 Demo
   mp3 files go on the sd card in the mp3 folder.
   one mp3 file per one of the nine buttons.
   naming is 0001.mp3, 0002.mp3, 0003.mp3 ... 0009.mp3:
   mp3
   ├── 0001.mp3
   ├── 0002.mp3
   ├── 0003.mp3
   ├── ...
   └── 0009.mp4
   holding vol- for 2s at any time powers off the AiO.
*/

#include <SoftwareSerial.h>
#include <DFMiniMp3.h>
#include <AceButton.h>
using namespace ace_button;

const uint8_t mp3SerialRxPin = 2;
const uint8_t mp3SerialTxPin = 3;
const uint8_t busyPin = 4;
#if defined(__LGT8F__)
const uint8_t powerControlPin = 7;
const uint8_t onboardSdAccessControlPin = A5;
const uint8_t onboardAmpControlPin = 8;
#endif
const uint8_t playPausePin = A0;                    // play/pause/power on
const uint8_t ladderPin = A2;                       // ladder buttons pin
const uint8_t volDownPin = A3;                      // vol- (hold to power off)
const uint8_t volUpPin = A4;                        // vol+
const uint8_t ladderButtonCount = 9;
const uint16_t ladderButtonLevels[ladderButtonCount + 1] = {
#if defined(__LGT8F__)  // values for AiO (2,048V reference, 12bit ADC), TU_BB_3x3 v1.0
  0,
  490,
  945,
  1494,
  1949,
  2480,
  2937,
  3373,
  3691,
  4064
#else                   // values for Arduino Nano (5V reference, 10bit ADC), TU_BB_3x3 v1.0
  0,
  92,
  194,
  307,
  405,
  512,
  608,
  698,
  773,
  1023
#endif
};

void handleButtonEvent(AceButton *button, uint8_t eventType, uint8_t /* buttonState */);

class Mp3Notify {
  public:
    static void OnError(uint16_t returnValue) {}
    static void OnPlayFinished(DfMp3_PlaySources source, uint16_t returnValue) {}
    static void PrintlnSourceAction(DfMp3_PlaySources source, const char* action) {}
    static void OnPlaySourceOnline(DfMp3_PlaySources source) {}
    static void OnPlaySourceInserted(DfMp3_PlaySources source) {}
    static void OnPlaySourceRemoved(DfMp3_PlaySources source) {}
};

SoftwareSerial mp3Serial(mp3SerialRxPin, mp3SerialTxPin);
DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(mp3Serial);
AceButton playPauseButton(playPausePin);
AceButton volDownButton(volDownPin);
AceButton volUpButton(volUpPin);
AceButton ladderButton1((uint8_t) 0);
AceButton ladderButton2(1);
AceButton ladderButton3(2);
AceButton ladderButton4(3);
AceButton ladderButton5(4);
AceButton ladderButton6(5);
AceButton ladderButton7(6);
AceButton ladderButton8(7);
AceButton ladderButton9(8);
AceButton* const ladderButton[ladderButtonCount] = {
  &ladderButton1,
  &ladderButton2,
  &ladderButton3,
  &ladderButton4,
  &ladderButton5,
  &ladderButton6,
  &ladderButton7,
  &ladderButton8,
  &ladderButton9
};
LadderButtonConfig ladderButtons(ladderPin, ladderButtonCount + 1, ladderButtonLevels, ladderButtonCount, ladderButton);

void setup() {
#if defined(__LGT8F__)
  // keep AiO powered
  pinMode(powerControlPin, OUTPUT);
  digitalWrite(powerControlPin, HIGH);
  // sd access off for safety
  pinMode(onboardSdAccessControlPin, OUTPUT);
  digitalWrite(onboardSdAccessControlPin, LOW);
  // enable amp
  pinMode(onboardAmpControlPin, OUTPUT);
  digitalWrite(onboardAmpControlPin, LOW);
  // internal reference voltage 2,048V
  analogReference(INTERNAL2V048);
  // adc resolution 12 bit
  analogReadResolution(12);
#endif

  pinMode(playPausePin, INPUT_PULLUP);
  pinMode(volDownPin, INPUT_PULLUP);
  pinMode(volUpPin, INPUT_PULLUP);
  pinMode(ladderPin, INPUT);

  ButtonConfig* buttonConfig = ButtonConfig::getSystemButtonConfig();
  buttonConfig->setEventHandler(handleButtonEvent);
  buttonConfig->setFeature(ButtonConfig::kFeatureClick);
  buttonConfig->setClickDelay(1000);
  buttonConfig->setFeature(ButtonConfig::kFeatureLongPress);
  buttonConfig->setLongPressDelay(2000);

  ladderButtons.setEventHandler(handleButtonEvent);
  ladderButtons.setFeature(LadderButtonConfig::kFeatureClick);
  ladderButtons.setClickDelay(1000);

  mp3.begin();
  delay(2000);
  mp3.setVolume(10);
}

void loop() {
  playPauseButton.check();
  volDownButton.check();
  volUpButton.check();
  ladderButtons.checkButtons();
  mp3.loop();
}

void handleButtonEvent(AceButton* button, uint8_t eventType, uint8_t /* buttonState */) {
  switch (eventType) {
    case AceButton::kEventClicked: {
        if (button->getPin() == playPausePin) !digitalRead(busyPin) ? mp3.pause() : mp3.start();
        else if (button->getPin() == volDownPin) mp3.decreaseVolume();
        else if (button->getPin() == volUpPin) mp3.increaseVolume();
        else if (button->getPin() == 0) mp3.playMp3FolderTrack(1);
        else if (button->getPin() == 1) mp3.playMp3FolderTrack(2);
        else if (button->getPin() == 2) mp3.playMp3FolderTrack(3);
        else if (button->getPin() == 3) mp3.playMp3FolderTrack(4);
        else if (button->getPin() == 4) mp3.playMp3FolderTrack(5);
        else if (button->getPin() == 5) mp3.playMp3FolderTrack(6);
        else if (button->getPin() == 6) mp3.playMp3FolderTrack(7);
        else if (button->getPin() == 7) mp3.playMp3FolderTrack(8);
        else if (button->getPin() == 8) mp3.playMp3FolderTrack(9);
        break;
      }
    case AceButton::kEventLongPressed: {
        if (button->getPin() == volDownPin) digitalWrite(powerControlPin, LOW);
        break;
      }
  }
}

TonUINO Community

Für Diskussionen über das Button Board 3×3 gibt es vom TonUINO Projekt ein tolles Community Forum. Schau dort gerne mal vorbei!

TonUINO All-In-One – Quick Start Guide

Veröffentlicht am

Inhalt

  1. Explosionszeichnung
  2. Lieferumfang
  3. Zusammenbau
  4. Netzteil
  5. TonUINO Firmware
  6. TonUINO Community

Explosionszeichnung

Lieferumfang

Enthalten ist die TonUINO All-In-One Platine [1], ein Adapter für den NFC Leser [2] inkl. 8-Adrigem Kabel [3], ein Adapter für die Buttons [4] inkl. 10-Adrigem Kabel [5] und ein Kabel für den Lautsprecher [6].

Zusammenbau

Die mitgelieferten Kabel mit den beiden Adaptern verbinden (diese können einfach auseinander gebrochen werden). Anschließend die Kabel auf die TonUINO All-In-One Platine stecken. Aufgrund der unterschiedlich großen Stecker ist ein vertauschen nicht möglich.

NFC Adapter

An den NFC Adapter kann nun der NFC Leser angeschlossen werden. Dabei ist zu beachten, daß die Beschriftung der Pins auf dem Adapter 1:1 mit der auf dem Leser übereinstimmt.

Button Adapter

An den anderen Adapter können z.B. die beliebten Arcade Taster angeschlossen werden. Es stehen 5 Anschlüsse mit je 5 GND Pins zur Verfügung. Die Reihenfolge ist folgendermaßen: V- < PBP/PBN > V+

  • V- Lautstärke verringern
  • < vorheriger Titel
  • PBP/PBN Play/Pause + Einschalten
  • > nächster Titel
  • V+ Lautstärke erhöhen

GANZ WICHTIG: Um eine Firmware auf die Platine zu flashen, wird dauerhaft Spannung benötigt. Dazu ist entweder während des flashens die Play/Pause Taste gedrückt zu halten (bei AiO >= v1.1 geht auch der Taster auf der Platine) oder der Jumper auf dem Adapter für die Buttons zu stecken.

Der Jumper muss allerdings für den normalen Betrieb nach dem flashen dann wieder abgezogen werden!

Lautsprecher

Das letzte Kabel ist für den Lautsprecher und kann einen beliebigen 4 bis 8 Ohm Lautsprecher gelötet werden. Auf der TonUINO All-In-One Platine befindet sich dafür ein passender Anschluss der mit SPEAKER beschriftet ist.

Akku

Optional kann ein LiFePo4 Akku angeschlossen werden (der Anschluss ist mit BATTERY beschriftet, hat den Pluspol mit einem + markiert und hat das Format JST-PH 2mm). Empfohlen werden ca. 3000mAh (mehr geht natürlich auch), damit erreicht die TonUINO All-In-One Platine ca. 20-24h kontinuierliche Spielzeit.

Wichtig: Achtet beim anschließen unbedingt auf die richtige Polung (in aller Regel ist Rot +) und setzt nur LiFePO4 Akkus mit Schutzschaltung ein. Verlasst euch nicht auf den Auslieferungszustand des Akkus. Dieser kann verdreht sein! Bei falscher Polung kann die Platine beschädigt werden.

Erweiterungsleiste

Auf der Erweiterungsleiste stehen folgende Signale bzw. Pins zur Verfügung:

Audio (6 Pins): OutR GND OutL InR GND InL

Diverse (8 Pins): GND A7 A6 D5 RX TX 3V3 5V

Netzteil

Kommt der optionale LiFePO4 Akku zum Einsatz, kann zum aufladen ein USB Netzteil mit 2A verwendet werden. Während des Ladens leuchtet die Ladeanzeige LED neben dem USB-C Anschluss dauerhaft rot. Wenn der Akku voll geladen ist, leuchtet die Ladeanzeige LED dauerhaft grün. Mit einem ausreichend dimensioniertem USB Netzteil (s.o.), kann die TonUINO All-In-One Platine auch problemlos während des Ladens betrieben werden.

TonUINO Firmware

Die offizielle Firmware vom TonUINO Projekt kann ganz einfach über den Browser installiert werden. Befolge dazu einfach die 5 Schritte im TonUINO AiO Online Firmware Updater. Dort findest du auch die noch benötigten Sprachdateien zum Download, welche auf die SD Karte kopiert werden müssen.

TonUINO Community

Für Diskussionen rund um den TonUINO gibt es vom TonUINO Projekt ein tolles Community Forum. Schau dort gerne mal vorbei!

TonUINO All-In-One – Einen neuen Sketch erstellen

Veröffentlicht am

Nachdem ihr die Arduino-IDE eingerichtet habt könnt ihr einen neuen Sketch erstellen. Wir haben einige Pins definiert die die Komponenten auf der Platine fest miteinander verbindet.

Damit sich die Platine nicht sofort wieder ausschaltet wird der entsprechende Code in der setup()-Methode benötigt. Ausschalten könnt ihr die Platine indem ihr die powerOff()-Methode aufruft.

/*
   empty sketch to start a project
   D5, A6 and A7 are wired to the extension port.
   D6 is wired to the button breakout board (labled WS(D6)).
   D9 (RST), D10 (SDA), D11 (MOSI), D12 (MISO) and D13 (SCK) are wired to the nfc breakout board.
   the rest of the pins are hard wired as per below.
*/

const uint8_t mp3SerialRxPin = 2;                   // mp3 serial rx, wired to tx pin of the mp3 chip
const uint8_t mp3SerialTxPin = 3;                   // mp3 serial tx, wired to rx pin of the mp3 chip
const uint8_t busyPin = 4;                          // reports play state of the mp3 chip (HIGH = not playing, LOW = playing)
const uint8_t powerControlPin = 7;                  // control pin used to power the system (HIGH = power on, LOW = power off)
const uint8_t onboardAmpControlPin = 8;             // control pin of the onboard amp (HIGH = amp off, LOW = amp on)
const uint8_t button0Pin = A0;                      // play/pause/power on
const uint8_t button1Pin = A1;                      // prev
const uint8_t button2Pin = A2;                      // next
const uint8_t button3Pin = A3;                      // vol-
const uint8_t button4Pin = A4;                      // vol+
const uint8_t onboardSdAccessControlPin = A5;       // control pin of the external sd card access (HIGH = enabled, LOW = disabled)

void setup() {
  // keep board powered
  pinMode(powerControlPin, OUTPUT);
  digitalWrite(powerControlPin, HIGH);
  // switch sd access off
  pinMode(onboardSdAccessControlPin, OUTPUT);
  digitalWrite(onboardSdAccessControlPin, LOW);
}

void powerOff() {
  // set the powerControlPin to LOW to switch off the board
  digitalWrite(powerControlPin, LOW);
}

void loop() {
  // do some cool stuff!
}

TonUINO All-In-One – Die Arduino IDE einrichten

Veröffentlicht am

Inhalt

  1. Arduino IDE runterladen und installieren
  2. LGT Board Support Package installieren
  3. Einstellungen vornehmen

Arduino IDE runterladen und installieren

Die Arduino IDE gibt es zum Download auf arduino.cc. Dort einfach die aktuellste Version für das jeweilige Betriebssystem runterladen und installieren. Während der Installation können alle Optionen so belassen werden wie sie sind.

Es ist möglich, daß es während der Installation unter Windows 10 zu mehreren Nachfragen kommt. Diese bitte mit einem Klick auf Installieren bestätigen. Am Ende die Installation mit einem Klick auf Close abschließen.

Hinweis: Bitte nicht die Arduino IDE aus dem Windows Store verwenden!

Die Arduino IDE kann nun mit einem Doppelklick auf das Arduino Icon auf dem Desktop gestartet werden. Es ist möglich, daß sich beim ersten starten die Windows Defender Firewall (oder auch andere) meldet. Da die Arduino IDE über eine Update Funktion verfügt (z.B. für benötigte Bibliotheken usw.), ist dies normal und sollte bestätigt werden.

LGT Board Support Package installieren

Die Voreinstellungen der Arduino IDE öffnen:

Nun in den Voreinstellungen unter dem Punkt Zusätzliche Boardverwalter-URLs die folgende URL eintragen:

  • https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json

Dann mit OK bestätigen.

Jetzt kann der Boardverwalter gestartet werden:

Im Suchfeld nun lgt8fx eingeben und die Installation der jeweils aktuellen Version mit Klick auf Installieren starten. Nach Abschluss der Installation den Boardverwalter über einen Klick auf Schließen beenden.

Einstellungen vornehmen

Jetzt kann der Boardtyp LGT8F328 ausgewählt werden:

Alle weiteren Einstellungen werden wie folgt vorgenommen:

  • Clock Source: External (assumes 32MHz crystal)
  • Clock: 16 MHz
  • Variant: 328P-LQFP (e.g. MiniEVB nano-style and WAVGAT)
  • Arduino as ISP: Default (64)
  • Port: COM3

Um den korrekten COM Port auswählen zu können, muss die AiO angeschlossen sein. Der COM Port kann sich unterscheiden (siehe Gerätemanager).

GANZ WICHTIG: Um eine Firmware auf die Platine zu flashen, wird dauerhaft Spannung benötigt. Dazu ist entweder während des flashens die Play/Pause Taste gedrückt zu halten (bei AiO >= v1.1 geht auch der Taster auf der Platine) oder der Jumper auf dem Adapter für die Buttons zu stecken.

Der Jumper muss allerdings für den normalen Betrieb nach dem flashen dann wieder abgezogen werden!