TonUINO bekommt Bluetooth

Update 4 (final) zu TonUINO bekommt Bluetooth

Die zuvor beschriebene Huckepack-Lösung ist bei mir bisher stabil und ohne Störungen gelaufen. Durch die extrem Kurzen Verbindungen zum BT-Modul sind auch keinerlei Störgeräusche aufgetreten. So hätte ich es damit eigentlich bewenden lassen können, aber @Thomas-Lehnert und @Boerge1 haben sich auch noch mit dem Thema befasst.

Daraus ist nun die Firmware TonUINO-TNG 3.1.12 entstanden, bei der das BT-Modul über 2 Pins des Arduino gesteuert werden kann:

  • Voraussezung ist der Einsatz eines Arduino Every damit die Pins 2 und 3 frei werden, die sonst den DF-Player über SW-Serial steuern und auf HW-Serial umgestellt werden kann.
  • In der constants.hpp müssen die Pinfunktionen von D2 und D3 noch auf „ActiveLow“
  • Pin 2 schaltet die Betriebsspanung für das Modul ein und aus
  • Pin 3 kann ein erneutes Pairing am Modul erzwingen (erforderlich, wenn ein unbekanntes Bluetooth-Gerät verbunden werden soll).

Mit diesen Möglichkeiten war für mich klar, dass „nachgerüstet“ werden muss:
Der Arduino Every war zwar schon im Einsatz (um auch das Quiz spielen zu können), bediente den DF-Player aber noch immer per SW-Serial. Nach Umbau der Platine ist nun HW-Serial im Einsatz und mit einer kleinen Anpassung der Schaltung kann der Arduino nun auch das BT-Modul steuern:

In dieser Schaltung sind nur die Anschlüsse Rx/Tx am Arduino für den DF-Player ge ändert und die Diode D2 und der Schalt-MOSFET Q4 hinzugefügt.

Die Diode D2 konnte ich noch (durch Bohren zweier Löcher) auf der Hauptplatine unerbringen. Den Schalt-MOSFET habe ich an das Huckepack von DF-Player und BT-Modul (an Stelle der 5 V Verbindung) montiert. und eine Leitung zu D2 des Arduino gezogen.

Damit ist Bluetooth jetzt absolut funktionsfähig und sehr komfortabel zu bedienen in meine Box integriert und das Projekt „Bluetooth“ bei mir (erfolgreich) abgeschlossen.

2 „Gefällt mir“

Hier beschreibst du deine Schaltung, die den Lautsprecher bei bestehender BT-Verbindung trennt. Wenn ich es richtig sehe, verwendest du dafür das Signal der Status-LED bes BT-Moduls. Woher erkennt die Schaltung den Unterschied zwischen „LED ist dauerhaft an, weil Verbindung besteht“ und „LED ist mal kurz an, weil blinkt“? Oder ist das Signal am Ausgang LED anders als die physische LED auf dem Modul?

Ja, die LED ist dauer-an, wenn Verbindung besteht - ist also nicht nur parallel zur Onboard-LED, sondern wird separat angesteuert.

Da hab ich mich falsch ausgedrückt. Meine LED auf dem kcx_bt_emitter blinkt, wenn sie auf die Verbindung mit einem Empfänger wartet und leuchtet durchgehend, wenn eine Verbindung besteht.

Verhält sich das Signal am LED Ausgang des kcx_bt_emitter anders? Oder woher weiß deine Schaltung im „Blinkfall“, dass sie den Lautsprecher anlassen soll und nicht an und aus und an und aus schalten soll?

Hatte ich schon verstanden. Die Led hat eine eigene Ansteuerung:
aus, wenn keine Verbindung
an, wenn Verbindung

Kein blinken

Hm, bei mir heißt der Ausgang nicht link sondern Led. Bin daher davon ausgegangen, dass er das Verhalten der led nachahmt. Werd ich mal vermessen. Danke für die Klarstellung!

Ausgemessen - passt. Konstantes Signal bei bestehender Verbindung. Auch wenn die integrierte LED irgendwas anderes macht. Ich mache mich dann mal an den Aufbau.

Allerdings ein paar Fragen von einem Elektronik-Laien. Ich hoffe, dass ich nicht nerve…

  • Ich brauche die LED D1 nicht. Die und den Widerstand R5 schmeiße ich dann raus. Muss ich etwas beachten? Oder wird noch etwas anderes dadurch obsolet oder muss ersetzt werden?

  • Muss ich bei dem Mosfet 2N7000 und IRFU9024 etwas beachten? Da gibt es diverse Varianten…

Natürlich kannst Du D1 und R5 weglassen, wenn Du die Anzeige nicht brauchst.

Für die beiden MOSFETs habe ich auf keine besonderen Werte geachtet.
Nur dran denken, dass die BT-Pins auf „activeLow“ gestellt sein müssen.
Für „Connect“ reicht dann eine simple Diode zu Pin 8 um ein Connect zu einem unbekannten Gerät anzustossen.

Bei einem anderen Aufbau, bei dem das KCX-Modul steckbar ist, musste ich noch einen Pulldown-Widerstand vom Gate Q3 nach Masse legen damit der Lautsprecher auch ohne KCX-Modul eingeschaltet wurde.

Der Widerstand kann zwischen 10kOhm und 100kOhm betragen. Der Wert ist unkritisch.

D1 und R5 weglassen heißt, dass die beiden Bauteile ersatzlos entfallen? Vgl. Bild.

Oder wird anstelle der beiden Bauteile eine Verbindung von LINK nach PGND benötigt?

Und den erwähnten, möglicherweise benötigten Pulldown-Widerstand würde ich ebenfalls so wie auch dem Bild (unten rechts in der roten Box) einbauen?

Schau selbst, was Du gemacht hast: Der Widerstand hängt mit beiden Seiten an PGND und ist damit wirkungslos.

Der Widerstand muss von PGND nach Anschluss 2 von Q3. Damit hängt er gemeinsam mit R3 an diesem Anschluss.
Anschluss 2 von Q3 ist das Gate, also der Steuereingang, von Q3. Dieser würde ohne angeschlossenes KCX-Modul " in der Luft" hängen, wodurch die Lautsprecher abgeschaltet würden.

Wenn Du das KCX-Modul verbaust, benötigst Du den Widerstand nicht, da das Modul diese Funktion übernimmt.

D1 und R5 können ersatzlos entfallen. Auf keinen Fall den Link anschluss mit Gnd verbinden. Das verursacht einen Kurzschluss der dein KCX Modul zerstören kann. Der Zusatzwiderstand, wie Norbert schon schreibt zwischen Gnd und Anschluss2 (Gate) vom Mosfet. Der wird aber nur benötigt, wenn das KCX Modul nicht vorhanden wäre.

:man_facepalming:

Es war gestern zu spät und heute morgen zu früh…