Bonjour,
Je porte progressivement mes programmes Nano vers ESP32 car Bluetooth et WiFi sont intégrés, ce qui simplifie ma partie Hardware (plus besoin de rajouter des HC06 aux Arduino).
Pour mon 1er essai, il semble que la librairie "BluetoothSerial" que j'ai déposée dans le répertoire "lib" du projet PlatformIO, me pose quelques soucis: l'instruction "BluetoothSerial SerialBT;" ne semble pas reconnue par le compilateur.
Ce qui évidemment engendre des erreurs en cascade si ma compréhension est bonne.
Voici le code:
et voici ce que me dit le compilateur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 #include <Arduino.h> #include <Wire.h> // librairy requise pour l'écran LCD, incluse dans l'IDE Arduino et qui n'apparaitra donc pas // dans le sous-dossier 'Librairies' du répertoire Arduino // sur platformIO on a mis manuellement la v3.3.0 dans le répertoire "lib" du projet #include <DFRobot_LCD.h> // librairy gérant les afficheurs DFRobot 0555 et équivalents DFRobot_LCD lcd(16,2); //16 characters and 2 lines of show // Ce pgm a été fait avec PlatformIO, et se trouve donc ici: C:\Users\ordic\Documents\PlatformIO\Projects\BT_ESP32_v1.001\src\main.cpp #include <BluetoothSerial.h> // librairy Bluetooth BluetoothSerial SerialBT; // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo // et selon tutorial: https://dronebotworkshop.com/esp32-bluetooth // On a passé le Moniteur série à 115.200 en rajoutant monitor_speed = 115200 dans Platformio.ini String messageRecu; // contiendra la commande BLUETOOTH reçue complète terminée par 'Z' majuscule tel // que définit dans mon appli APPINVENTOR. // messageRecu accumulera tous les caractères reçues par Bluetooth // jusqu'à ce que le caractère "Z" soit reçu // put function declarations here: // int myFunction(int, int); void stop(); void record(); void play(); void fastforward(); void rew(); void pause(); // FIN DE LA DECLARATION DES NOMS DE FONCTIONS void setup() { // put your setup code here, to run once: // int result = myFunction(2, 3); Serial.begin(115200); //démarre le Moniteur série à 115000 bauds. SerialBT.begin("Denon_K7"); // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo // "Denon_K7" est le nom du device qui apparaitra sur Smartphone quand on se connectera } void loop() { // put your main code here, to run repeatedly: while(SerialBT.available()) // ici on met SerialBT pour coler au tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo { delay(3); char c = SerialBT.read(); // ici aussi on met Serial3.read (non Serial.read) car on a connecté le HC08 à Serial3 messageRecu += c; if(c == 'Z') // si le caractère reçu est 'Z' cela signifie que la commande est complète (j'utilise 'Z' car je n'arrive pas à détecter '\n') { // Serial.println(messageRecu); // en commentaire imprime donc la commande reçue du Smartphone qui est entière, par ex.: STOPZ break; // et on sort de la boucle While puisque la commande est complète et est stockée dans messageRecu //et donc prête à être interprétée pour declencher des actions } } if (messageRecu == "STOPZ") { Serial.println(F("Bluetooth: Appui sur Bouton STOP du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "STOPZ" // on recopie mot pour mot le code correspondant au STOP reçu de la télécommande stop(); Serial.println(F("Bluetooth boucle IF stopZ: la fonction Stop a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } // Fin du If STOPZ pour Smartphone if (messageRecu == "RECORDZ") { Serial.println(F("Bluetooth: Appui sur Bouton RECORD du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "RECZ" record(); // appel de la fonction factorisée "record" définie plus haut Serial.println(F("Bluetooth boucle IF recordZ: la fonction Record a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } // Fin du IF pour la fonction RECORDZ par Smartphone if (messageRecu == "PLAYZ") { Serial.println(F("Bluetooth: Appui sur Bouton PLAY du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "PLAYZ" play(); Serial.println(F("Bluetooth boucle IF playZ: la fonction Play a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } // Fin du IF pour la fonction PLAYZ par Smartphone if (messageRecu == "FFZ") { Serial.println(F("Appui sur Bouton FF du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "FFZ" fastforward(); Serial.println(F("Bluetooth boucle IF ffZ: la fonction FF a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } // Fin du IF pour la fonction FFZ par Smartphone if (messageRecu == "REWINDZ") { Serial.println(F("Appui sur Bouton REWIND du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "REWZ" rew(); Serial.println(F("Bluetooth boucle IF rewZ: la fonction REW a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } // Fin du IF pour la fonction REWZ par Smartphone if (messageRecu == "PAUSEZ") { Serial.println(F("Appui sur Bouton PAUSE du Smartphone:")); Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "PAUSEZ" pause(); Serial.println(F("Bluetooth boucle IF pauseZ: la fonction PAUSE a été appelée")); //ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ??? } messageRecu=""; // on remet la chaine à vide pour préparer la réception de la commande suivante } // put function definitions here: int myFunction(int x, int y) { return x + y; }
Merci pour votre éclairage !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 The terminal process "C:\Users\ordic\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. * Terminal will be reused by tasks, press any key to close it. * Executing task in folder BT_ESP32_v1.00: C:\Users\ordic\.platformio\penv\Scripts\platformio.exe run Processing esp-wrover-kit (platform: espressif32; board: esp-wrover-kit; framework: arduino) --------------------------------------------------------------------------------------------------------------------------------------- Verbose mode can be enabled via `-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp-wrover-kit.html PLATFORM: Espressif 32 (6.12.0) > Espressif ESP-WROVER-KIT HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (ftdi) On-board (ftdi) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES: - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b - tool-esptoolpy @ 2.40900.250804 (4.9.0) - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Found 36 compatible libraries Scanning dependencies... Dependency Graph |-- BluetoothSerial @ 1.1.0 |-- DFRobot_LCD-master |-- Wire @ 2.0.0 Building in release mode Compiling .pio\build\esp-wrover-kit\src\main.cpp.o src/main.cpp:10:17: error: no matching function for call to 'BluetoothSerial::BluetoothSerial()' BluetoothSerial SerialBT; // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo ^~~~~~~~ In file included from src/main.cpp:9: lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:42:5: note: candidate: 'BluetoothSerial::BluetoothSerial(HardwareSerial&, bool)' BluetoothSerial(HardwareSerial& serial, bool verbose = true); ^~~~~~~~~~~~~~~ lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:42:5: note: candidate expects 2 arguments, 0 provided lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate: 'constexpr BluetoothSerial::BluetoothSerial(const BluetoothSerial&)' class BluetoothSerial { ^~~~~~~~~~~~~~~ lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate expects 1 argument, 0 provided lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate: 'constexpr BluetoothSerial::BluetoothSerial(BluetoothSerial&&)' lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate expects 1 argument, 0 provided src/main.cpp:26:6: error: ambiguating new declaration of 'void pause()' void pause(); ^~~~~ In file included from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/unistd.h:23, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\unistd.h:4, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\pthread.h:25, from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/pthread.h:21, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\xtensa-esp32-elf\no-rtti\bits\gthr-default.h:48, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\xtensa-esp32-elf\no-rtti\bits\gthr.h:151, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\ext\atomicity.h:35, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits\basic_string.h:39, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\string:52, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\stdexcept:39, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\array:39, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\tuple:39, from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\functional:54, from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.h:49, from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:196, from src/main.cpp:1: c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\sys\unistd.h:177:9: note: old declaration 'int pause()' int pause (void); ^~~~~ src/main.cpp: In function 'void setup()': src/main.cpp:33:19: error: invalid conversion from 'const char*' to 'int' [-fpermissive] SerialBT.begin("Denon_K7"); // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo ^~~~~~~~~~ In file included from src/main.cpp:9: lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:51:20: note: initializing argument 1 of 'void BluetoothSerial::begin(int)' void begin(int baudRate = 9600); ~~~~^~~~~~~~~~~~~~~ src/main.cpp: In function 'void loop()': src/main.cpp:40:18: error: 'class BluetoothSerial' has no member named 'available' while(SerialBT.available()) // ici on met SerialBT pour coler au tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo ^~~~~~~~~ src/main.cpp:43:23: error: 'class BluetoothSerial' has no member named 'read' char c = SerialBT.read(); // ici aussi on met Serial3.read (non Serial.read) car on a connecté le HC08 à Serial3 ^~~~ Compiling .pio\build\esp-wrover-kit\FrameworkArduino\esp32-hal-bt.c.o *** [.pio\build\esp-wrover-kit\src\main.cpp.o] Error 1 ===================================================== [FAILED] Took 1.31 seconds ===================================================== * The terminal process "C:\Users\ordic\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. * Terminal will be reused by tasks, press any key to close it.








Répondre avec citation
Partager