====== Sound Servoplatine ====== \\ Über die Servo-Platine 510 können drei Soundmodule angesteuert werden. \\ Es werden dabei JQ6500 Module oder MP3-TF16-p/DFPlayer Mini Module verwendet. Dabei spielt es keine Rolle ob nur JQ6500 oder nur MP3-TF16-p/DFPlayer Mini oder diese beliebig gemischt, eingesetzt werden. \\ Die drei Module können auch parallel je einen Sound abspielen. \\ \\ Das JQ6500 hat dabei den Vorteil das es bereits 2 MByte Speicher enthält, was für etliche Soundprojekte ausreichend sein dürfte. \\ Das MP3-TF-16p nutzt hingegen eine MicroSD-Karte mit bis zu 32 GByte und vereinfacht durch die mögliche Ordnerstruktur die Verwaltung der Sounddaten. \\ \\ ====== Vorbereitung Hardware ====== ===== ATTiny 85 ===== Als Servoplatine eignet sich jede 510DE-Platine, bestückt als Servoplatine. \\ Die Lötjumper für den Servobetrieb SERVO, SERVO1, SERVO2, SERVO3 müssen geschlossen werden. \\ Zunächst muss der ATTiny für die Servoplatine programmiert werden. Die Anleitung dazu [[anleitungen:spezial:tiny-uniprog|Programmierung von ATTinys für Servo, Charlieplexing oder Sound]] ist im WIKI zu finden. Im Pattern-Configurator unter spezielle Module **Servo-MP3** auswählen. {{:bilder:anleitungen:spezial:servosound:pattern_config1.jpg}} Das folgende Bild zeigt die Pins am Ausgang der Servo-Platine. Der SIG-J1 - Pin ist mit dem Eingang des ersten Soundmodules zu verbinden, entsprechend J2 mit Modul 2 und J3 mit Modul3. {{:bilder:anleitungen:spezial:servosound:servo_led_beschriftung_echtbild_top-detail.jpg?300}} \\ \\ ===== JQ6500 und MP3-TF16-p/DFPlayer Mini ===== \\ {{:bilder:anleitungen:spezial:servosound:jq6500_1.jpg?400| }} {{ :bilder:anleitungen:spezial:servosound:mp3-tf-16p_1.jpg?400|}} \\ \\ ==== Verdrahtung ==== Die drei Ausgänge (SIG) der Servo-Platine werden nun über je einen 1 kOhm Widerstand mit den Eingängen (RX) der Sound-Module verbunden. \\ Die Versorgungsspannung sollte über eine Verteilerplatine mit angeschlossener stabiler Spannungsversorgung erfolgen, da die Leistung an der Hauptplatine zur Versorgung der Sound-Module nicht ausreicht. \\ Die 470µF Elektrolytkondensatoren dienen als Puffer für die recht hohen Einschaltströme der Soundmodule. \\ Eine separate 5V Spannungsversorgung ist ebenfalls möglich. {{ :bilder:anleitungen:spezial:servosound:module1.jpg |}} Als weitere Möglichkeit bietet sich der Umbau einer unbestückten 501de_Soundplatine (MP3-TF-16p) an: |{{:bilder:anleitungen:spezial:servosound:501de_platine_direkt_01.jpg?200|}}| {{:bilder:anleitungen:spezial:servosound:501de_platine_direkt_02.jpg?200|}} |{{:bilder:anleitungen:spezial:servosound:501de_platine_direkt_03.jpg?200|..}} | |Drahtbrücke (rot) an der Oberseite........|__Buchsenleisten:__ 2x8 Soundmodul|Widerstand 1kOhm an der Unterseite| |R6 Widerstand 1Ohm |1x3 rot(VCC), schwarz(GND), gelb(SIG) |Jumper SJ1 schließen | |Keramikkondensator 100nf|ACHTUNG-ServoAnschluss rot/schwarz vertauscht | | |C6 Elko 470µF|1x2 Lautsprecher | | \\ ===== SD Karte ===== Die Verzeichnisstruktur der Sounddateien auf der SD-Karte ist relativ starr vorgeschrieben. Es können Sounddateien (wahlweise im mp3- oder wav-Format) in folgende Verzeichnisse der SD-Karte abgelegt werden: * Wurzelverzeichnis (Dateinamen 4-stellig 0001.mp3 etc.) * Verzeichnis ADVERT (Dateinamen 4-stellig) * Verzeichnis mp3 (Dateinamen 4-stellig) * Verzeichnisse 01 bis 32 – (Dateinamen 3-Stellig 001.mp3 etc.) Es werden nur die ersten Zeichen der Dateinamen ausgewertet. Der tatsächliche Dateiname kann länger sein. Damit sind Dateinamen der Art 0023Yesterday.mp3 möglich. Dieser Dateiname wird vom Soundmodul als „0023.mp3“ behandelt. Das erleichtert den Umgang mit den Sounddateien deutlich und sollte ausgiebig genutzt werden. \\ \\ \\ ====== Programm-Generator ====== Im Prog-Gen gibt es für den Servo-Sound folgende Befehle: {{ :bilder:anleitungen:spezial:servosound:macroauswahl_2.jpg |}} \\ \\ Nach einer **Neuprogrammierung** des ATTiny sind die Ausgänge wie folgt vorbelegt: SERVO1 JQ6500 PIN 5 des ATTiny PB0(MOSI) SERVO2 MP3-TF-16p PIN 6 des ATTiny PB1(MISO) SERVO3 JQ6500 PIN 7 des ATTiny PB2(SCK/ADC1) Möchte man andere Modultypen anschließen, so muss man **einmalig** die verwendeten Module mit dem Befehl //MP3_SET_TYPE// einstellen. \\ Der ATTiny merkt sich diese Einstellung, daher kann man das einmal nach der Installation mit ein paar Zeilen im Programmgenerator machen. \\ Eine Änderung ist nur dann notwendig, wenn die angeschlossenen Modul-Typen verändert werden. \\ Die Einstellungen werden im Beispiel mit den Tastern SwitchD1-D3 auf der Hauptplatine programmiert: {{ :bilder:anleitungen:spezial:servosound:proggen_type_definieren.jpg |}} neu - SERVO1 J1 = MP3-TF-16p Modul neu - SERVO2 J2 = JQ6500 Modul neu - SERVO3 J3 = MP3-TF-16p Modul \\ \\ \\ ---- Beispiel der Soundsteuerung mit den Befehlen: {{ :bilder:anleitungen:spezial:servosound:prog-gen_1.jpg |}} In den Zeilen 100-102 wird der an die Sound-Platine angeschlossene Modultyp festgelegt. Diese Befehle müssen nur einmalig gesendet werden. Der ATTiny speichert die Einstellung. Eine Änderung ist nur dann notwendig, wenn Änderungen bei den angeschlossenen Modul-Typen vorgenommen werden. Im Beispiel * Ch1 -> JQ6500 * Ch2 -> MP3-TF16-p * Ch3 -> MP3-TF16-p Zeile 104 - 106: legt den Ausgang fest auf den der nächste Befehl gehen soll. Hier: * Zeile 104 - Ausgang 1, JQ6500. * Zeile 105 – Ausgang 2, MP3-TF16-p * Zeile 106 – Ausgang 3, MP3-TF16-p **Beispiel:** * DCC Befehl 90 und anschließend 95 spielt Track 1 vom JQ6500 ab. * DCC Befehl 91 und anschließend 95 spielt Track 1 vom ersten MP3-TF16-p ab. * DCC Befehl 92 und anschließend 95 spielt Track 1 vom zweiten MP3-TF16-p ab. * DCC Befehl 91 und anschließend 93 verringert die Laustärke beim zweiten MP3-TF16-p. **Anmerkungen:** * In der Macroauswahl wird der Hinweis „Sendet einen Befehl an ein MP3-TF-16p-Soundmodul welches über SERVO3 an einer Servoplatine angeschlossen ist“ gegeben. Das trifft so nicht zu, da die Befehle an alle drei Ausgänge gesendet werden können und auch für beide Modultypen gelten. Einschränkungen gibt es natürlich beim JQ 6500, da nur fünf Tracks gespeichert werden können. * Alle Befehle an diese ATTiny Soundplatine müssen über __eine__ LED Adresse laufen, im Beispiel LED 1. Sollte es (ungewollt) eine Verschiebung geben mit dem Befehl "next LED -1" wieder auf die LED Adresse der Sound-Platine zurück gehen. [[https://wiki.mobaledlib.de/anleitungen/bauanleitungen/501de_sound_mp3tf16_v1-1#besonderheit_gleicher_led-kanal|Hilfe]] * Über den [[anleitungen:bauanleitungen:100de_hauptplatine_v1-6_zubehoer|Kleinen Verteiler]] mit der Copy-Funktion, Einstellung über den Jumper, kann man parallel Test-LEDs anschließen und optisch die Funktion überprüfen. ===== Steuerung über DCC/CAN-Befehle ===== {{ :bilder:anleitungen:spezial:servosound:logik1.jpg?300 |}} Vor jedem Sound-Befehl kann das Modul ausgewählt werden auf dem sich die Sound-Datei befindet. So können Sound-Dateien in unterschiedlicher Reihenfolge von den drei Modulen abgespielt werden. Die Logik stellt sicher, dass zunächst über den ATTiny das Modul ausgewählt wird, der Befehl umgesetzt werden kann und dann, mit zeitlichem Verzug, der Track ausgewählt oder eine andere Funktion des Moduls aufgerufen wird. \\ \\ **Anmerkung:** \\ \\ Mit den Befehlen //MP3_PLAY_TRACK_ON// und \\ //MP3_PLAY_MP3_ON// wird das Modul mit den eingetragenen Parametern bereits direkt angesprochen und der gewählte Sound abgespielt. \\ Leider funktioniert das mit dem Modul JQ6500 nicht zuverlässig. Hier sollte trotzdem eine Vorauswahl mittels Monoflops (wie im Beispiel) getroffen werden. ===== Beispiele: ===== Im folgenden Beispiel wird bei Aufruf des: * DCC-Befehl "3" der erste Sound des ersten Moduls (JP6500) abgerufen * DCC-Befehl "4" der erste Sound des zweiten Moduls (DFPlayer Mini) abgerufen * DCC-Befehl "5" der erste Sound des dritten Moduls (DFPlayer Mini) abgerufen {{ :bilder:anleitungen:spezial:servosound:prog-gen_3.jpg |}} Über parallel angeschlossene Test-LEDs, Stichwort Mini-Verteiler, kann der Ablauf optisch sehr gut verfolgt werden. Andere/kürzere Zeitintervalle für die MonoFlops sind möglich und ggf. durch Tests zu ermitteln. In Zeile 133 wird über die Variable MF12u13 zeitgleich mit dem dazu gehörigen Geräusch vom Sound-Modul 2 ein Schweißlicht ausgelöst. Geräuschlänge und Länge des Lichts können leicht durch Anpassung des [[anleitungen:spezial:codevorlagen:Schweisslicht|]] über den Pattern-Configurator angepasst werden. Damit man den Schweißer nicht immer persönlich wecken muss, hier eine Lösung mit der Zufallsschaltung (Random-Funktion). {{ :bilder:anleitungen:spezial:servosound:prog-gen_4.jpg |}}