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!

Einen neuen Sketch für die All-in-One Platine 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!
}

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!