Exemple de moniteur Bluetooth Arduino Nano ESP32 - Moniteur série sans fil via tutoriel BLE

Vue d'ensemble

Cet exemple implémente un moniteur série sans fil sur l'Arduino Nano ESP32 en utilisant le BLE (Bluetooth Low Energy) via l'application DIYables Bluetooth STEM. Diffusez des messages de statut en temps réel, des sorties de débogage et des lectures de capteurs sans fil vers un smartphone, et recevez des commandes texte de l'application. Convient au débogage sans fil, à la surveillance à distance et à la journalisation système.

Remarque : L'Arduino Nano ESP32 prend en charge le BLE uniquement — le Bluetooth Classique n'est pas pris en charge. L'application Bluetooth DIYables fonctionne sur Android et iOS avec le BLE.

Exemple de moniteur Bluetooth Arduino Nano ESP32 - Moniteur série sans fil via tutoriel BLE

Fonctionnalités

  • Moniteur série sans fil : Diffusez des messages texte vers votre smartphone
  • Communication bidirectionnelle : Envoyez des commandes depuis l'application vers l'Arduino
  • Diffusion en temps réel : Sortie continue, similaire à un Moniteur Série filaire
  • Gestion des commandes : Traitez les commandes texte reçues de l'application
  • Support Android et iOS : Le BLE est compatible avec les deux plateformes
  • Pas de couplage requis : Le BLE se connecte sans couplage manuel
  • Faible consommation : Le BLE consomme moins d'énergie que le Bluetooth Classique

Matériel nécessaire

1×Arduino Nano ESP32
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Recommandé: Carte d'extension à bornier à vis pour Arduino Nano
1×Recommandé: Carte d'extension breakout pour Arduino Nano
1×Recommandé: Répartiteur d'alimentation pour Arduino Nano ESP32

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Code Arduino Nano ESP32

Étapes rapides

  • Nouveau sur l'Arduino Nano ESP32 ? Commencez par le Installation du logiciel Arduino Nano ESP32..
  • Connectez l'Arduino Nano ESP32 à votre ordinateur via USB.
  • Ouvrez l'Arduino IDE.
  • Sélectionnez la carte Arduino Nano ESP32 et le port COM correct.
  • Cliquez sur l'icône Bibliothèques dans la barre latérale gauche.
  • Recherchez "DIYables Bluetooth" et sélectionnez la bibliothèque Bluetooth DIYables par DIYables.
  • Cliquez sur Installer.
Bibliothèque Bluetooth DIYables Arduino Nano ESP32
  • Lorsqu'on vous demande d'installer les dépendances, cliquez sur Tout installer.
Dépendance Bluetooth DIYables Arduino Nano ESP32

Code BLE

  • Dans l'Arduino IDE, ouvrez Fichier Exemples DIYables Bluetooth ArduinoBLE_Monitor, ou collez le code dans l'éditeur.
/* * DIYables Bluetooth Library - ESP32 BLE Monitor Example * Works with DIYables Bluetooth STEM app on Android and iOS * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothMonitor.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Monitor"; const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214"; const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214"; const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214"; // Create Bluetooth instances DIYables_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Monitor app instance DIYables_BluetoothMonitor bluetoothMonitor; // Variables for demo unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 3000; int messageCount = 0; bool ledState = false; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Monitor Example"); // Initialize built-in LED pinMode(2, OUTPUT); // ESP32 built-in LED is usually on GPIO 2 digitalWrite(2, LOW); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add monitor app to server bluetoothServer.addApp(&bluetoothMonitor); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothMonitor.send("=== ESP32 BLE Monitor Connected ==="); bluetoothMonitor.send("System Ready"); bluetoothMonitor.send("Type HELP for available commands"); bluetoothMonitor.send(""); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Set up message handler for incoming commands bluetoothMonitor.onMonitorMessage([](const String& message) { Serial.print("Received command: "); Serial.println(message); handleCommand(message); }); Serial.println("Waiting for Bluetooth connection..."); } void handleCommand(const String& cmd) { if (cmd == "HELP") { bluetoothMonitor.send("Available Commands:"); bluetoothMonitor.send(" LED_ON - Turn LED on"); bluetoothMonitor.send(" LED_OFF - Turn LED off"); bluetoothMonitor.send(" STATUS - Show system status"); bluetoothMonitor.send(" HEAP - Show free heap memory"); bluetoothMonitor.send(" HELP - Show this help"); } else if (cmd == "LED_ON") { digitalWrite(2, HIGH); ledState = true; bluetoothMonitor.send("LED turned ON"); } else if (cmd == "LED_OFF") { digitalWrite(2, LOW); ledState = false; bluetoothMonitor.send("LED turned OFF"); } else if (cmd == "STATUS") { showStatus(); } else if (cmd == "HEAP") { bluetoothMonitor.send("Free heap: " + String(ESP.getFreeHeap()) + " bytes"); } else { bluetoothMonitor.send("Unknown command: " + cmd); bluetoothMonitor.send("Type HELP for available commands"); } } void showStatus() { bluetoothMonitor.send("=== System Status ==="); bluetoothMonitor.send("LED State: " + String(ledState ? "ON" : "OFF")); unsigned long uptime = millis() / 1000; bluetoothMonitor.send("Uptime: " + String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"); bluetoothMonitor.send("Free Heap: " + String(ESP.getFreeHeap()) + " bytes"); bluetoothMonitor.send("Messages Sent: " + String(messageCount)); bluetoothMonitor.send("===================="); } void sendPeriodicUpdate() { messageCount++; if (messageCount % 3 == 0) { bluetoothMonitor.send("[INFO] Heartbeat #" + String(messageCount)); } else if (messageCount % 5 == 0) { bluetoothMonitor.send("[HEAP] Free: " + String(ESP.getFreeHeap()) + " bytes"); } else { bluetoothMonitor.send("[TIME] Uptime: " + String(millis() / 1000) + "s"); } Serial.print("Sent update #"); Serial.println(messageCount); } void loop() { bluetoothServer.loop(); if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); sendPeriodicUpdate(); } delay(10); }
  • Cliquez sur Téléverser pour flasher le sketch sur la carte.
  • Ouvrez le Moniteur Série.
  • La sortie du Moniteur Série devrait ressembler à :
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Monitor Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Application mobile

  • Installez l'application Bluetooth DIYables sur votre smartphone : Android | iOS

Remarque : L'application Bluetooth DIYables fonctionne sur Android et iOS avec le BLE. Aucun couplage manuel n'est requis.

  • Lancez l'application Bluetooth DIYables.
  • Au premier lancement, accordez les autorisations suivantes :
    • Appareils à proximité (Android 12+) / Bluetooth (iOS) — requis pour scanner et se connecter aux appareils Bluetooth
    • Localisation (Android 11 et versions antérieures uniquement) — requis par les anciennes versions Android pour scanner le BLE
  • Assurez-vous que le Bluetooth est activé sur votre appareil.
  • Appuyez sur Connecter sur l'écran d'accueil. L'application va scanner les appareils BLE.
Application Bluetooth DIYables - Écran d'accueil avec bouton de scan
  • Appuyez sur "Arduino_Monitor" dans les résultats du scan.
  • Après la connexion, revenez à l'écran d'accueil et ouvrez l'application Moniteur.
Application Bluetooth DIYables - Écran d'accueil avec l'application Moniteur

Appuyez sur l'icône des paramètres sur l'écran d'accueil pour afficher ou masquer les applications. Consultez le Manuel utilisateur de l'application Bluetooth DIYables pour plus de détails.

  • Les messages de statut seront diffusés dans l'affichage du moniteur.
  • Tapez LED_ON dans le champ de saisie et appuyez sur Envoyer — la LED intégrée de l'Arduino Nano ESP32 s'allumera, et le moniteur affichera une confirmation.
Application Bluetooth DIYables - Écran du moniteur

Regardez maintenant le Moniteur Série dans l'Arduino IDE. Vous verrez :

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Bluetooth connected! Sent update #1 Sent update #2 Sent update #3
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Personnalisation créative - Adaptez le code à votre projet

Envoyer des messages

// Send text messages to the app bluetoothMonitor.send("System started"); bluetoothMonitor.send("Temperature: " + String(temp, 1) + " °C"); bluetoothMonitor.send("[ERROR] Sensor disconnected!");

Gérer les commandes entrantes

Utilisez le callback onMonitorMessage() pour recevoir et traiter les commandes saisies dans l'application Moniteur :

bluetoothMonitor.onMonitorMessage([](const String& message) { Serial.print("Received: "); Serial.println(message); if (message == "HELP") { bluetoothMonitor.send("Commands: LED_ON, LED_OFF, STATUS, HELP"); } else if (message == "LED_ON") { digitalWrite(LED_BUILTIN, HIGH); bluetoothMonitor.send("LED turned ON"); } else if (message == "LED_OFF") { digitalWrite(LED_BUILTIN, LOW); bluetoothMonitor.send("LED turned OFF"); } else if (message == "STATUS") { bluetoothMonitor.send("Uptime: " + String(millis() / 1000) + "s"); bluetoothMonitor.send("LED: " + String(digitalRead(LED_BUILTIN) ? "ON" : "OFF")); } else { bluetoothMonitor.send("Unknown command: " + message); } });

Ajoutez des blocs else if supplémentaires pour chaque commande. Par exemple, utilisez RELAY_ON / RELAY_OFF pour contrôler un relais, ou READ pour déclencher une lecture de capteur.

Exemples de programmation

Diffusion de statut de capteurs

void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (bluetooth.isConnected() && millis() - lastUpdate >= 3000) { lastUpdate = millis(); int light = analogRead(A0); float voltage = analogRead(A1) * 5.0 / 1023.0; bluetoothMonitor.send("[SENSOR] Light: " + String(map(light, 0, 1023, 0, 100)) + "%"); bluetoothMonitor.send("[SENSOR] Voltage: " + String(voltage, 2) + "V"); bluetoothMonitor.send("[INFO] Uptime: " + String(millis() / 1000) + "s"); } delay(10); }

Journalisation basée sur les événements

const int BUTTON_PIN = 7; int lastButtonState = HIGH; void loop() { bluetoothServer.loop(); int buttonState = digitalRead(BUTTON_PIN); if (buttonState != lastButtonState) { lastButtonState = buttonState; if (buttonState == LOW) { bluetoothMonitor.send("[EVENT] Button pressed!"); } else { bluetoothMonitor.send("[EVENT] Button released"); } } delay(10); }

Dépannage

Problèmes courants

1. L'appareil n'est pas visible dans l'application

  • Confirmez que la carte est alimentée et que le sketch est téléversé
  • Vérifiez que le Bluetooth est activé sur votre téléphone
  • Sur Android 11 et versions antérieures, activez également les services de localisation

2. Aucun message n'apparaît dans l'application

  • Confirmez que bluetoothMonitor.send() est appelé
  • Vérifiez que bluetoothServer.loop() est présent dans la boucle principale
  • Vérifiez la connexion dans le Moniteur Série

3. Les messages sont retardés

  • Réduisez l'intervalle de mise à jour pour des messages plus fréquents
  • Évitez d'envoyer trop de messages en succession rapide (le BLE a des limites de bande passante)

4. Les commandes de l'application ne sont pas reçues

  • Confirmez que le callback onMonitorMessage est enregistré
  • Vérifiez le Moniteur Série pour la sortie des commandes reçues

5. La connexion se coupe fréquemment

  • Réduisez la distance à l'Arduino
  • Assurez une alimentation USB stable

6. Le téléversement échoue ou la carte n'est pas reconnue

  • Installez le dernier paquet de carte Arduino Nano ESP32 via le Gestionnaire de cartes
  • Essayez un câble USB ou un port différent

Idées de projets

  • Console de débogage sans fil
  • Enregistreur de données de capteurs
  • Moniteur de santé système
  • Système de notification d'événements
  • Interface de commande à distance

Prochaines étapes

Après avoir terminé l'exemple de moniteur Bluetooth, explorez :

  1. Chat Bluetooth — Messagerie interactive bidirectionnelle
  2. Tableau Bluetooth — Affichage de données structurées
  3. Traceur Bluetooth — Visualisation de données
  4. Applications Bluetooth multiples — Combinez le moniteur avec d'autres widgets d'application

Support

Pour une aide supplémentaire :

  • Consultez la documentation de référence API
  • Les forums de la communauté Arduino

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !