Mein Tonuino ist jetzt seit eineinhalb Jahren quasi im Dauerbetrieb und wird täglich mehr geliebt. Vielen Dank für das tolle Projekt!
Ich möchte jetzt als Weihnachtsgeschenk Bluetooth nachrüsten. Allerdings möchte ich nicht groß löten oder umbauen. Wenn ich es richtig sehe, dann ist ein Transmitter/Receiver, den man an die Klinke anschließt, die einzige Möglichkeit. Hier gibt es hunderte Produkte. Kann jemand eines empfehlen oder von einem abraten?
Oder gibt es noch andere charmante und aufwandsarme Möglichkeiten der Umsetzung?
Waa möchtest du genau? Das, was der TonUINO spielt, an einen Bluetooth Kopfhörer senden oder etwas per Bluetooth an den TonUINO senden, damit es dort aus dem Lautsprecher kommt?
In meinem Beitrag „TonUINO bekommt Bluetooth“ habe ich eine Möglichkeit vorgestellt, die fast keine Umbauten oder Codeänderungen am TonUINO erfordert. Zur Umsetzung ist allerdings etwas " feinmotorisches Geschick" erforderlich.
Als Vorteil dieser Lösung sehe ich im Falle eines Umbaus eines TonUino in Benutzung dass bei Verfügbarkeit eines 2ten DF-Players die Vorbereitung quasi offline erfolgen kann, da später Player mit BT-Modul einfach gegen den Player im TonUINO ausgetauscht werden können (steckbar, wenn Sockel verwendet wurden!). Bei „normalem“ inneren Aufbau eines TonUINO sollte die etwas größere Bauhöhe des Player-Packs keine Probleme bereiten.
Wenn du diese Bastelei nicht machen möchtest/kannst, empfehle ich dennoch das verwendete KCX-Modul, da es bei mir sehr zuverlässig arbeitet und obendrein auch noch kostengünstig ist.
Für die angedachte Lösung mit Anschluss über die Kopfhörerklinke musst du nur die Anschlüsse DAC_L, Dac_R und GND auf einen 3,5 mm Klinkenstecker Verbinden und noch für eine 5V Versorgung des Moduls sorgen. Das Modul kannst du auch einfach mit 3 Batterien (= 4,5 V) versorgen, da es nur einen sehr geringen Stromverbrauch hat.
Ich vergaß zu sagen: Mit dieser Lösung wird der TonUINO zum BT- Sender, also geeignet um einen BT-Kopfhörer anzuschließen.
Das Modul kann nach Schlißen einer Lötbrücke aber auch als BT-Empfänger betrieben werden.
Mit kleiner Änderung am Anschluss der Kopfhörerbuchse (der Lautsprecher darf dann nicht mehr abgeschaltet werden) könnte der TonUINO auch zu einem BT- Lautsprecher werden.
Das klingt interessant. Besonders, weil es eine kleine Bastelei ist, weitestgehend isoliert vom Rest funktioniert und noch im Gehäuse untergebracht werden kann.
Ich müsste also L, R und AGnd des Moduls an einen Klinkenstecker basteln. Und PGnd und 5V würde ich an die Stromversorgung des Arduino (Powerbank) hängen, so dass derselbe Schalter alles an und aus schaltet.
Muss AGnd und PGnd noch verbunden werden? Und dann liest man hin und wieder etwas von einem Kondensator. Brauchts den?
Und hab ich etwas falsch verstanden oder übersehen?
AGnd und PGnd muss unbedingt verbunden werden, da sonst Störgeräusche.
Einen Kondensator habe ich bei mir nicht, dafür aber die 5V direkt am DF-Player abgegriffen.
Zusätzlich noch einen Taster von Connect des KCX an Masse vorsehen, damit Du ggf. ein erneutes Pairing (mit einem anderen BT-Gerät) erzwingen kannst, ansonsten versucht das KCX immer mit dem zuletzt gepairten Gerät zu verbinden und sucht kein anderes mehr.
Die Verbindung PGnd zu Agnd habe ich direkt am KCX-Modul gemacht.
Die LED signalisiert erfolgreiches Pairing. Ich benutze das Signal auch, um den internen Lautsprecher abzuschalten (aber das machst Du vermtl. ja über die Klinkenbuchse). Wenn Du intern verdrahtest und nicht die Klinke benutzt, solltest Du einen Schalter o.Ä. für den Lautsprecher vorsehen, da aus technischen Gründen zwischen direktem Signal und dem BT-Signal ein, wenn auch nur geringer, Zeitversatz entsteht. Beides zusammen über Lautsprecher (interner Lautsprecher + BT-Lautsprecher) hört sich grausig an. Bei Kopfhörerbetrieb nicht tragisch, aber die Umwelt würde nicht „entlastet“, wenn der Lautsprecher nicht abgeschaltet wird.
Nach was muss ich denn suchen, wenn ich einen Schalter suche, der 2 Position hat? Allerdings nicht 1 und 0 oder 1, 2, 0 sondern nur 1 und 2? Also Lautsprecher und Bluetooth? Eine 0-Position brauche ich da nicht. Idealerweise rund und möglichst kleiner Durchmesser.
Ich zapfe die Verbindung zwischen Arduino umd Kopfhörerplatine an und setze einen Schalter ein, der wahlweise den Kopfhörer und den Lautsprecher oder das Bluetoothmodul kcx mit dem Sound versorgt. Ist das die sinnvollste Stelle?
Die Stromversorgung des BT Moduls klemme ich hinter den An/Aus-Schalter, parallel zum Arduino.
zu 1:
Du kannst sowohl BT-Modul und Kopfhörer gleichzeitig mit dem Audio-Signal versorgen. Eine Umschaltung ist nicht notwendig. Den Lautsprecher solltest du allerdings schalten können. Der hängt aber an separaten Verstärkerausgängen, so dass ein einfacher Ein-/Ausschalter genügt.
zu 2:
Das BT-Modul benötigt nur sehr wenig Strom, so dass es eigentlich dauerhaft eingeschaltet bleiben kann. Damit wäre der TonUINO dann auch dauerhaft in „Bluetooth-Bereitschaft“ und würde sich sofort koppeln, sobald ein bekanntes Bluetooth-Gerät eingeschaltet wird oder in Reichweite kommt. Das könnte lästig sein, wenn dieses Bluetooth-Gerät auch noch für andere Zwecke verwendet werden soll.
Bei dauerhafter Versorgung mit Spannung bin ich mir auch nicht sicher, ob Deine Powerbank noch zuverlässig abschalten wird, wenn der Arduino vom Timer abgeschaltet wird.
Abschließend benötigts Du noch einen „Connect-Taster“, mit dem Du das BT-Modul zu einem neuen Kopplungsvorgang anstossen kannst (z.B. bei Wechsel von BT-Kopfhörer zu BT-Lautsprecher).
Eine einfache Schaltung könnte dann so aussehen:
Übrigens:
Ab Firmware 3.1.12 besteht auch die Möglichkeit das BT-Modul per SW (Karte oder Shortcut) ein- und auszuschalten sowie auch die erneute Kopplung durch einen langen Tastendruck der Pause-Taste (bei aktivem Bluetooth) anzustossen. Dafür wären dann 2 weitere Transistoren (besser MOSFETs) erforderlich.
Am 5V-Ausgang der Classicplatine habe ich schon den Rotary Encoder angeschlossen. Funktioniert es, wenn ich parallel dazu den kcx emitter schalte? Oder kommen die sich dann in die Quere oder gibt es damit sonst irgendwelche Probleme?
Der Rotary Encoder benutzt die 5 V nur für sog. Pull-Up Widerstände, hat selbst aber keinerlei Elektronik verbaut, die eine Spannungsversorgung benötigt. In Verbindung mit dem Arduino kannst Du die 5 V eigentlich abklemmen (versuch es mal).
Ansonsten sehe ich kein Problem, wenn Du das KCX-Modul zusätzlich dort mit anklemmst.
Ohne die Verbindung zum 5V läuft der rotary encoder nicht mehr. Die Wiedergabe stockt jetzt, wenn ich drehe, bei jedem Raster. Lauter oder leiser wird es nicht mehr. Das wird also scheinbar gebraucht.
Ich hänge das Bluetoothmodul einfach an die Stromversorgung nach dem Einaus-Schalter. Das sollte doch gehen. Probier ich demnächst mal aus. Ich muss mich jetzt erst mal trauen, diese winzigen Verbindungen auf dem Modul zu löten…
So, hab mal alles zusammengelötet. Und es funktioniert sogar. Allerdings:
Ich habe sehr deutliche Störgeräusche. Vergleichbar mit einem nicht richtig eingestellten UKW Sender. Und in etwa genauso laut wie das eigentliche Signal. @NoBl du hattest das auch schon beschrieben. Woran könnte es liegen bzw. wie hast du das behoben?
Das Verbinden nach dem Start dauert ziemlich lange. Eher so in Richtung einer Minute. Auf jeden Fall zu lange für ungeduldige Kinderohren…
Die Störgeräusche kannst du verringern, indem du das Signal von den DAC Ausgängen des DF-Players zum BT-Modul über einen Spannungsteiler reduzierst. Dadurch vergrößert sich der Abstand von Störsignal zu Nutzsignal, weil die Lautstärke des DF-Players höher eingestellt werden muss. Vielleicht zum Experimentieren mal 5kOhm Potentiometer oder Trimmregler als Spannungsteiler verwenden um das optimalste Teilerverhältnis zu ertesten.
Außerdem solltest du auf eine gute Masseführung achten, weil auch hierdurch eine Verbesserung des Störsignalabstandes erreicht werden kann. Man muss hier aber zwischen den Störgeräuschen unterscheiden, die direkt vom DF-Player kommen, oder durch die Bluetoothübertragung selbst entstehen. Letztere sind sehr schwer zu unterdrücken. Hier kann man nur durch Abblocken der Betriebsspannung mit Elkos so nah wie möglich am Bluetoothmodul etwas erreichen.
Bei meinen Aufbauten habe ich festgestellt, dass es 2 Arten von Störgeräuschen gibt.
Störgeräusche
Leitungsinduzierte Störgeräusche durch zu lange Leitungen and DAC_L und DAC_R zum KCX, eventuell sogar noch mit Steckkontakten. Als besonders kritisch hat sich die Verbindung zu AGND und PGND des Moduls erwiesen. Diese Leitung sollte direkt and GND des DF-Players angeschlossen werden und möglichst nahe am KCX-Modul erst auf AGND und PGND aufgeteilt werden. Diese Art von Störgeräuschen lässt sich nur durch möglichst kurze Leitungen und nahezu perfekte Verbindungen vermeiden.
Digitale Störgeräusche, die direkt im Decoderchip des Players entstehen. Diese Störgeräusche sind veränderlich, wenn z.B. eine Suche auf der SD-Karte erfolgt. Diese Störgeräusche sind vom Pegel her eher konstant und NICHT abhängig von der Wiedergabelautstärke. Das bedeutet, dass bei höherer Lautstärke das Nutzsignal deutlich besser ist, da das Störsignal auf seinem geringen Pegel bleibt.
Hier setzt der Vorschlag von @Thomas-Lehnert an, bei dem durch den Spannungsteiler das gesamte Audiosignal abgeschwächt wird, so dass für „normale“ Wiedergabe eine deutlich höhere Lautstärkeeinstellung erforderlich ist, wodurch das digitale Störsignal zwar nicht verschwindet, aber soweit in den Hintergrund gedrängt ist, dass man es kaum noch wahrnimmt. Damit wäre der Spannungsteiler so zu bemessen, dass bei max. Lautstärkeeinstellung (30) des TonUINO der Wiedergabepegel nur etwas über Zimmerlautstärke (oder zumutbarer Kopfhörerlautstärke) liegt. Das ergäbe m. M. nach die wirksamste Unterdrückung des digitalen Störsignals.
Gleichen Effekt kann man auch erreichen, wenn das BT-Gerät über eine eigene Lautstärkeregelung verfügt und diese etwas leiser eingestellt wird.
Zeit bis zur Bluetooth-Verbindung
Die von Dir angesprochene Zeit (bis zu 60 Sekunden) habe ich nur bei der Erstverbindung zu einem noch unbekannten Gerät festgestellt.
Bei einem bereits bekannten Gerät liegt die Zeit bis zur Verbindung bei meinem Gerät nur bei ca. 10-15 Sekunden.
Nicht wirklich gemessen sondern eher „gefühlt“ ist die Zeit bis zur Verbindung etwas länger, wenn zuerst das BT-Modul des TonUINO eingeschaltet wird und anschließend erst das BT-Gerät eingeschaltet wird. Die Reihenfolge BT-Gerät einschalten und dann TonUINO auf Bluetooth schalten verkürzt die Zeit anscheinend nochmal etwas, wäre also meine Empfehlung.
BT-Geräteeigenschaft
Mein BT-Lautsprecher macht übrigens einen automatischen Re-Connect, wenn die BT-Verbindung unterbrochen wurde. Mein BT-Kopfhörer (JBL) tut dies indes nicht. Der Kopfhörer ist nur unmittelbar nach dem Einschalten paarungsbereit, muss also nach BT-Unterbrechung für ein Re-Connect kurz aus- und wieder eingeschaltet werden.
Will damit nur sagen, dass das Kopplungverhalten und die -zeit offenbar auch noch stark vom angeschlossenen Gerät selbst abhängen können.
Dann mache ich mich mal an die Verkürzung der Verkabelung. Im Moment nehme ich Litzen, wie sie auch in den Jumperkabel verwendet werden. Andere habe ich nicht. Wenn ich die Verbindungen kurz halte und direkt am Player anlöte, dann nehme ich besser massive Kabel ohne Litzen? Ganz so nah wie in der Huckepack-Löung werde ich es nicht schaffen, da mir in meiner Lösung der Platz fehlt. Daher sollte es besser isoliert sein?
Es spielt keine Rolle ob du Litzen oder festen Draht nimmst. Die Litzen sind insofern besser, weil sie nicht so leicht an den Lötstellen abbrechen können.
Für die Huckepackmontage wären aber starre Drähte besser.
Ab Firmware 3.1.12 besteht auch die Möglichkeit das BT-Modul per SW (Karte oder Shortcut) ein- und auszuschalten sowie auch die erneute Kopplung durch einen langen Tastendruck der Pause-Taste (bei aktivem Bluetooth) anzustossen. Dafür wären dann 2 weitere Transistoren (besser MOSFETs) erforderlich.
Ich benutze einen Nano auf der Classic Platine. Da ich die Pins D5 bis D8 nicht verwende, müsste ich zwei davon doch missbrauchen können, um sie anstatt der im Code vorgesehenen Pins D2 und D3 zur Steuerung zu verwenden, oder?
Dazu müsste ich in der constants.hpp in Zeile 282 und 284 dann z.B. 5 und 6 eintragen und entsprechend in die von dir beschriebene Schaltung integrieren. Oder sehe ich das falsch?