Habe den Tonuino mit einem Robotdyn (teilweise) nachgebaut und den entsprechenden Testprogrammen getestet:
- Der RFID-Leser funktioniert mit dem Testprogramm tadellos.
- Der m3-player scheint jedoch Probleme zu bereiten.
Mit dem Testprogramm lasse ich 3 verschiedene mp3-Musikstücke im 10 Sekunden-Rhytmus in einer Endlosschleife abspielen. Dabei kommt es immer wieder zu Abschaltungen. Reset klappt nicht immer. Wenn ich jedoch den nano 1 Minute von der Stromquelle trenne, läuft er wieder 1 Minute bis 5-10 Minuten bevor er wieder abschaltet. Je höher die Lautstärke eingestellt ist, um so früher schaltet er auf Stumm.
Es scheint also ein Stromproblem zu sein. Je nach Hersteller wird bei den Microcontrollern ein sogenanntes Brownout einprogrammiert: dies bewirkt, dass der nano ein jeweils ein Reset durchführt (und demzufolge jedesmal wenn der mp3 Lautsprecher initialisiert wird in einer Endlosschlaufe landet ...).
Abhilfe geschafft haben folgende Massnahmen:
- Zwischen 5V und GND einen Kondensator einbauen (zb 220μF)
- Die 5 Volt direkt einspeisen satt über den USB anschluss des nano :
Das folgende Beispiel macht auf eine gute Stromquelle beim Betrieb des nano mit dem MP3-player wegen des Brown-Out-Effekts aufmerksam (Siehe Zeile 11): https://github.com/re-innovation/SolarSoundUnit/blob/master/Software/Arduino%20Code%20Solar_Bird_Song_Unit/SolarBirdSongUnit_27_05_2016/SolarBirdSongUnit_27_05_2016.ino
Ref: https://forum.arduino.cc/index.php?topic=529183.0
Ferner habe ich eine halbwegs saubere Lösung für den Rx Eingang getroffen: Statt eines 1kΩ Widerstands einen 5V -> 3.3 Spannungsteiler eingebaut:
(habe für die beiden Widerstände 1kΩ resp. 2.2kΩ verwendet)
https://electronics.stackexchange.com/questions/18186/cheapest-way-to-translate-5v-spi-signal-to-3v-spi
Das Setup au einem Breadbuard habe ich mit einer Energizer 10000mAh von Energizer betrieben (Pass trough).
Hoffentlich klappt es so mit dem Robotdyn nano.
P.S. Eine weitere Möglichkeit wäre an der SoftSerial Schnittstelle zu schrauben, da diese oft Probleme bereitet indem die Library AltSoftSerial anstelle der SoftSerial verwendet wird. Siehe Probleme mit der SoftSerial Bibliothek:
https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html bzw.
https://www.arduino.cc/en/Reference/SoftwareSerial