Hi,
ich habe meine erste Platine zusammengelötet und wollte nun die Firmware aufspielen und testen, ob alles läuft. Die ersten Fehler traten beim Installieren des Treibers und beim Upload der Datei Tonuino.ino auf. Anschließend habe ich getestet, ob es vielleicht trotzdem funktioniert und aus meiner Box kam lediglich ein Maschinengewehrknattern.
Zunächst einmal ein Foto meiner Platine von oben und unten:
Aktuell verhält es sich so, dass aus dem Lautsprecher ein schnelles Knattern kommt, sobald ich das zweite Weise Kabel in die zugehörige Buchse des Lautsprechers stecke. Sonst passiert nichts.
Was habe ich getan und welche Fehlermeldungen kamen auf dem Weg dorthin:
Ich nutze Ubuntu und habe als Erstes versucht den Treiber zu installieren. Dabei trat folgende Fehlermeldung auf:
jojo@jojo-HP-EliteBook:~/Tonuino/CH341SER_LINUX$ sudo make
[sudo] Passwort für jojo:
make -C /lib/modules/5.4.0-48-generic/build M=/home/jojo/Tonuino/CH341SER_LINUX
make[1]: Verzeichnis „/usr/src/linux-headers-5.4.0-48-generic“ wird betreten
CC [M] /home/jojo/Tonuino/CH341SER_LINUX/ch34x.o
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c: In function ‘ch34x_close’:
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c:591:2: error: unknown type name ‘wait_queue_t’; did you mean ‘wait_event’?
wait_queue_t wait;
^~~~~~~~~~~~
wait_event
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c:591:15: warning: unused variable ‘wait’ [-Wunused-variable]
wait_queue_t wait;
^~~~
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c:590:7: warning: unused variable ‘timeout’ [-Wunused-variable]
long timeout;
^~~~~~~
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c:589:6: warning: unused variable ‘bps’ [-Wunused-variable]
int bps;
^~~
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c: In function ‘wait_modem_info’:
/home/jojo/Tonuino/CH341SER_LINUX/ch34x.c:797:7: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit-function-declaration]
if( signal_pending(current) )
^~~~~~~~~~~~~~
timer_pending
cc1: some warnings being treated as errors
scripts/Makefile.build:273: recipe for target '/home/jojo/Tonuino/CH341SER_LINUX/ch34x.o' failed
make[2]: *** [/home/jojo/Tonuino/CH341SER_LINUX/ch34x.o] Error 1
Makefile:1734: recipe for target '/home/jojo/Tonuino/CH341SER_LINUX' failed
make[1]: *** [/home/jojo/Tonuino/CH341SER_LINUX] Error 2
make[1]: Verzeichnis „/usr/src/linux-headers-5.4.0-48-generic“ wird verlassen
Makefile:5: recipe for target 'default' failed
make: *** [default] Error 2
jojo@jojo-HP-EliteBook:~/Tonuino/CH341SER_LINUX$ sudo make load
modprobe usbserial
insmod ch34x.ko
insmod: ERROR: could not load module ch34x.ko: No such file or directory
Makefile:9: recipe for target 'load' failed
make: *** [load] Error 1
Hat also nicht funktioniert. Ich habe anschließend auch versucht den Treiber unter Windows 10 zu installieren, aber das hat auch nicht geklappt. Dort habe ich die Setup.exe gestartet, auf installieren geklickt, und dann kam eine wenig sagende Fehlermeldung ala „Hat nicht funktioniert“.
Anschließend habe ich trotzdem unter Ubuntu die Arduino IDE heruntergeladen und versucht die Datei Tonuino.ino auf den Arduino Nano zu bekommen. Beim Hochladen kamen zuerst viele Warnung und abschließend kam die Fehlermeldung „avrdude: ser_open(): can’t open device „/dev/ttyUSB0“: Permission denied“. Ich bin ziemlich sicher, dass dev/ttyUSB0 der Arduino ist, weil der Eintrag beim Abstecken verschwindet und beim Einstecken des USB-Kabels wieder auftaucht. Ich vermute daher, dass das Öffnen fehlschlägt weil der Treiber fehlt oder weil irgendwelche Rechte fehlen.
Die komplette Konsolenausgabe während des Uploads sah so aus:
Arduino: 1.8.13 (Linux), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino: In function 'void setup()':
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:758:27: warning: invalid conversion from 'int' to 'DfMp3_Eq' [-fpermissive]
mp3.setEq(mySettings.eq - 1);
~~~~~~~~~~~~~~^~~
In file included from /home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1:0:
/home/jojo/Arduino/libraries/DFPlayer_Mini_Mp3_by_Makuna/src/DFMiniMp3.h:251:10: note: initializing argument 1 of 'void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::setEq(DfMp3_Eq) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]'
void setEq(DfMp3_Eq eq)
^~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino: In function 'void adminMenu(bool)':
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1117:37: warning: default argument given for parameter 1 of 'void adminMenu(bool)' [-fpermissive]
void adminMenu(bool fromCard = false) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:80:6: note: previous specification in 'void adminMenu(bool)' here
void adminMenu(bool fromCard = false);
^~~~~~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino: In function 'void adminMenu(bool)':
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1192:29: warning: invalid conversion from 'int' to 'DfMp3_Eq' [-fpermissive]
mp3.setEq(mySettings.eq - 1);
~~~~~~~~~~~~~~^~~
In file included from /home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1:0:
/home/jojo/Arduino/libraries/DFPlayer_Mini_Mp3_by_Makuna/src/DFMiniMp3.h:251:10: note: initializing argument 1 of 'void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::setEq(DfMp3_Eq) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]'
void setEq(DfMp3_Eq eq)
^~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1318:22: warning: invalid conversion from 'int8_t* {aka signed char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
if (askCode(pin)) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1332:6: note: initializing argument 1 of 'bool askCode(uint8_t*)'
bool askCode(uint8_t *code) {
^~~~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino: In function 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)':
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1349:120: warning: default argument given for parameter 4 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:74:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^~~~~~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1349:120: warning: default argument given for parameter 5 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:74:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^~~~~~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1349:120: warning: default argument given for parameter 6 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:74:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^~~~~~~~~
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:1349:120: warning: default argument given for parameter 7 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
/home/jojo/Tonuino/TonUINO-DEV/Tonuino/Tonuino.ino:74:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^~~~~~~~~
Der Sketch verwendet 24668 Bytes (80%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1005 Bytes (49%) des dynamischen Speichers, 1043 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Beim Hochladen des Sketches ist ein Fehler aufgetreten
avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Obwohl so ziemlich alles fehlgeschlagen ist, habe ich ausprobiert, was passiert, wenn ich die Platine an die Box anschließe. Schließe ich die Box an, kommt aus ihr ein schnelles Knattern wie aus einem kleinen Maschinengewehr: Tock, tock, tock, tock, … Ich vermute, dass das ein Standartgeräusch ist, wenn der DFPlayer nicht weis, was er tun soll.
Ach ja, die SD-Karte habe ich über Thorsten Affilate-Link gekauft und jungfräulich mit den Ordnern mp3 und arcade bestückt, sowie mit einem Ordner 01 im dem eine Datei names 001.mp3 liegt. Das Format habe ich kontrolliert und das sollte mit FAT32 ja passen.
Ich habe in anderen Forensträngen gelesen, dass ein Kattern auftreten kann, wenn der Arduino zu viel Strom zieht. Laut meinem USB-Stromgerät zieht der Arduino aber konstant 5V mit ca. 0,3A bis 0,5A. Sollte also eigentlich passen.
Könnt ihr mir einen Tip geben, wie ich am effektivsten das Problem angehen und hoffentlich auch lösen kann?
Liebe Grüße
Jojo