Tonuino Fernsteuerung über NodeMCU?

Hallo Zusammen,

ich habe mittlerweile 2 Tonuinos umgesetzt und einer von Ihnen ist hier im Haus noch im Einsatz.
Jetzt kommt immer öfter mal der Wunsch auf den Tonuino fernzusteuern (Lautstärke, Max Lautstärke, etc) oder auch zu sperren.

Jetzt habe ich hier noch ein paar NodeMCUs rumliegen und hatte überlegt, ob man nicht eine Fernsteuerung erreichen kann wenn man den NodeMCU an den Arduino-Nano über die GPIOs anschliesst und so Kommandos weitergibt die der NodeMCU zum Beispiel über MQT erhält (hab einen iobroker laufen für mein Smarthome)

Jetzt bin ich ich zwar Programmierer aber ehrlich gesagt kenne ich mich nicht so in der Materie mit den Ein und Ausgängen und wie man da eventuell auch komplexere Signale als 1 und 0 übertragen könnte.

Deshalb frage ich mich ob jemand so was schon mal probiert hat und falls nicht, ob es generell denkbar ist? Worauf müsste ich hier achten?

Die absolute Kür wäre natürlich, wenn man auch signale zurücksenden kann und dann der NodeMCU per MQTT den Status an den Iobroker sendet und man so sieht ob der Tonuino im Einsatz ist (abends hörspiel zum einschlafen überwachen)

Mir ist klar, dass es eine ESP32 Umsetzung gibt, aber wie gesgat liegen die NodeMCUs noch rum und ich würde es gerne damit versuchen (wenn es geht)

Danke schon mal im vorraus.

Und wenn du die Software erstmal ohne Nano auf dem nodemcu zum laufen bekommst?

Ich dachte das funktioniert nicht. Ich habe da nur was im Forum gefunden wo dann die rede von einem expander ist. Deshalb dachte ich das es ohne hardware-erweiterung (womit ich mich nicht auskenne) nicht auf dem nodemcu laufen wird. Liege ich da falsch?

Ich habe nicht durchgezählt, war nur eine Idee

Welchen hast du denn?
Du brauchst rx, tx und den play für den Player.
Mosi, miso, sck, sda, rst für den Reader
3 oder 5 Buttons.

Also 11 oder 13 IOs.
bzw ist ja rx tx schon extra ausgeführt

Hallo,
Die ESp8266 sind ziemliche Stromfresser! Auch wenn sie nur drauf warten dass per WLAN ein Kommando kommt.
Bei Akkubetrieb ist der Spaß schnell vorbei.

Hat schonmal jemand probiert die Software um einen infrarot Empfänger zu erweitern?

Es gibt doch diese ganz einfachen Fernbedienungen:
€ 1,14 48%OFF | Copy IR Remote for TV STB Universal 6 Big Yellow Button Learning Remote Control Electronic Smart Home Accessories

Für infrarot gibt es schon einen Fork, leider habe ich da keinen Überblick

@stephan in seiner alternativen Firmware und
@marco-117 im Affenboxfork

1 „Gefällt mir“

Akku Betrieb wäre hier erst mal nicht angedacht. denkbar wäre hier später ja auch eine möglichkeit, dass man nur wenn beim Tonuino was abgespielt wird, das WLAN aktiviert wird und ansonsten deaktiviert bleibt.

Wegen IR Fernbedienung. Ja ist natuerlich auch ne Möglichkeit, aber ich würde mich in eine Integration in meinen iobroker freuen und dann auch sehen können ob der Tonuino im Betrieb ist und was darauf gerade gemacht wurde, welche lautstärke eingestellt ist. etc.

Ich werde mal versuchen ob ich da was hinkriege. Hab da was zur Seriellen Kommunikation zwischen 2 boards gefunden und werde das mal ausprobieren.

Falls so was jemand schon mal gemacht hat, freue ich mich über Hinweise.

Kleines Update, falls es jemanden interessiert:

  • Ich habe den NodeMCU mit 3 Jumperkabeln an den Nano angeschlossen (GND, TX und RX für serielle Kommunikation)
  • Zur zeit ist nur senden vom Nano an den NodeMCU möglich, weil mir noch ein Pegelwandler fehlt. Der kommt aber am Dienstag und dann schaue ich mal weiter.
  • Als Test habe ich mal die Übetragung von Lautstärke-Informationen implementiert. Ein JSON-Objekt (ArduinoJson), das aktuelle Lautstärke , min und max enthält, wird per serieller Schnittstelle an den NodeMCU überrtragen immer wenn die Lautstärke geändert wird.
  • Auf dem NodeMCu habe ich einen MQTT-Client implementiert, der sich mit meinem iobroker verbindet und die Daten in die entsprechenden Felder schreibt.
  • Funtkioniert einwandfrei bis jetzt
  • Nächster Test wird dann Daten vom NodeMCU auf den Nano zu schicken (wenn der Pegelwandler da ist) und dann entsprechnd Aktionen auszuführen. Die Daten kommen dann auch per MQTT und subscription vom iobroker.

Soweit der Zwischenstand. Gerne ausführlicher, wenn jemand Interesse daran hat.

Wieso brauchst du den? Der Nano macht 5V und ihm reichen die 3.3V, die vom Reader kommen auch aus…

Schieb doch gleich den ganzen Tonuino auf den ESP. Das Bischen Card-Reader und DF Player mach der doch ganz nebenbei. Es gibt auch ein fertiges Projekt, dass hat schon MQTT Onboard und erledigt dem MP3 Decoder gleich mit auf nem ESP.

1 „Gefällt mir“

Ich bekomme zur zeit ohne Pegelwandler keine Signale vom Nodemcu an den Nano. Ich habe auf mehreren Seiten als Lösung den Pegelwandler gesehen und wollte es nun mal probieren.

Wie oben geschrieben, habe ich eine fertigen Tonuino den ich erweitern möchte. Dieser benutzt auch die alte Platine von Thorsten.
Ich möchte nicht wieder mit dem gesamten aufsetzen, löten usw anfangen müssen. Meine Box hat viel Platz innen, also kann da ein nodemcu gut dazu. Vom hardware-aufwand sind es 3 Jumper-Kabel die ich stecken muss. (und eventuell der Pegelwandler)
Zusätzlich habe ich auch keine konkrete Umsetzung mit Nodemcu gesehen und bin da zu sehr Laie um das dann auf dem Board zu probieren.

Valide argumente. Ich lauere noch auf eine Lösung die Karte remote per WLan zu bespielen.

Bin gespannt, wies bei dir klappt.

Also das mit dem Spannugswandler ist wohl doch nicht notwendig.
Habe es mit 2 cleanen skripten hinbekommen, dass der Nano mit dem Nodemcu in beide richtungen kommuniziert.

Jetzt habe ich aber doch ein Problem mit der speziellen Tonuino-Implemtierung.
Ich mache die Kommunikation mit SoftwareSerilal über D5(SRX) und D6(STX) und das läuft auch soweit gut, bis zu dem Punkt wo im setup der mp3 player initialisiert wird.

Da der Mp3 Player ja auch über softwareserial angesteuert wird, kann es da zu problemen mit einem weiteren SoftwareSerial kommen?

Oder wird D5 irgendwie noch benutzt und ist für meine Kommunikation gar nicht frei?
Senden über D6 funktioniert, aber über D5 kommt nichts an. Ich habe alle Setup-Schritte nach und nach aus kommentiert und es war nachvollziehbar, dass es nach mp3.begin() nicht mehr funktioniert.

Hat da einer eine Idee?

Mit mp3.begin, wird auch die Softserial vom player initialisiert. Kann also gut sein, dass diese dann ressourcen in Anspruch nimmt, die du brauchst.
Es gibt glaube ich zwei Varianten der Soft serial. Und ich meine die Standardvariante kann nur eine Serial bedienen.
Zum parallelbetrieb mehrer softserials gibt es im Netz diverse Abhandlungen. Es gibt eine Implementierung, mir fällt der Name grad nicht ein, die mit Interrupts arbeitet und so beliebig viele umsetzen kann.

Man kann problemlos mehrere softserials haben. Es können nur nicht beide gleichzeitig auf Daten horchen. Man muss mit .listen() zwischen den Instanzen umschalten. Ja nach Zweck kann das natürlich ungünstig sein.

Gefühl prinzupiel ungünstig, weil man gerade beim Empfang keine Ahnung hat, wann da was rein kommen könnte, oder?

@Stephan, siehst du eine Möglichkeit, wie man das sinnvoll koordinieren kann. Immerhin findet ein Aufruf innerhalb einer Bibliothek statt? Man müsste erstmal wissen, ob die noch auf Antwort wartet. Und dann jeden Aufruf der Bibliothek instanzen unterdrücken, bis die Schnittstelle freigegeben werden kann. Wirkt irgendwie kompliziert. Oder sehe ich das zu kompliziert?

Hier noch nen Link zu den Randbedingungen.
https://www.arduino.cc/en/Reference/SoftwareSerial

@DennisF Stell erstmal sicher, das beide mit der gleichen Boudrate laufen.

Und dann wirst du mit Listen() umschalten müssen. Da die DFMini Library in einer Loop wartet, bis nichts mehr kommt, dürfen wir davon ausgehen, dass die Schnittstelle frei ist, sobald ein Funktionsaufruf der Lib durch ist.
Probier mal, deine Kommunikation direkt vor das mp3.update() zu hängen. Also:

MySerialPort. Listen() ;
Hier kommunizierst du mit dem ESP
Mp3Serial.listen();
Mp3.update();

Sinnvoll kann man das find ich nur da nutzen wo eine der serials nicht unaufgefordert Daten liefert. Ich wollte lediglich drauf hinweisen das man durchaus technisch gesehen mehrere Softserial Instanzen haben kann.