ESP32 Bluetooth Plotter Exemple - Tutoriel Interface de Tracé de Données en Temps Réel

Aperçu

L'exemple Bluetooth Plotter fournit un tracé de données en temps réel sur votre smartphone via l'application DIYables Bluetooth STEM. Conçu pour les cartes ESP32 avec support pour les connexions BLE (Bluetooth Low Energy) et Bluetooth classique. Tracez jusqu'à 10 séries de données simultanément avec des axes configurables, une mise à l'échelle automatique, des étiquettes de légende, et un affichage défilant — parfait pour la visualisation de capteurs, l'analyse de signaux, et la surveillance de données.

Cet exemple supporte deux modes Bluetooth :

  • ESP32 BLE (Bluetooth Low Energy) : Fonctionne sur Android et iOS
  • ESP32 Bluetooth classique : Fonctionne sur Android uniquement. iOS ne supporte pas le Bluetooth classique. Utilisez BLE si vous avez besoin du support iOS.
ESP32 Bluetooth Plotter Exemple - Tutoriel Interface de Tracé de Données en Temps Réel

Fonctionnalités

  • Tracé Multi-Séries : Tracez jusqu'à 10 séries de données simultanément
  • Affichage Temps Réel : Graphique défilant continu avec mises à jour en direct
  • Axes Configurables : Définissez une plage d'axe Y personnalisée, des étiquettes d'axes, et un titre de tracé
  • Mise à l'Échelle Automatique : Ajustez automatiquement la plage de l'axe Y pour s'adapter aux données
  • Légendes Personnalisées : Étiquetez chaque série de données pour une identification facile
  • Échantillons Ajustables : Configurez le nombre de points de données visibles
  • BLE et Bluetooth Classique : Choisissez le mode Bluetooth qui convient à votre projet
  • Multi-Plateforme : Le mode BLE fonctionne sur Android et iOS ; le Bluetooth classique fonctionne sur Android

Matériel Requis

1×Module de développement ESP32 ESP-WROOM-32
1×Alternativement: ESP32 Uno-form board
1×Alternativement: ESP32 S3 Uno-form board
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×Plaque d'essai
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP32
1×Recommandé: Breakout Expansion Board for ESP32
1×Recommandé: Répartiteur d'alimentation pour ESP32

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 (ESP32 inclus)
1×Kit de Capteurs DIYables (30 capteurs/écrans)
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 ESP32

Étapes Rapides

Suivez ces instructions étape par étape :

  • Si c'est votre première fois avec l'ESP32, consultez le tutoriel sur Installation du logiciel ESP32..
  • Connectez la carte ESP32 à votre ordinateur via un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte ESP32 appropriée et le port COM.
  • Naviguez vers l'icône Libraries dans la barre de gauche de l'IDE Arduino.
  • Recherchez "DIYables Bluetooth", puis trouvez la bibliothèque DIYables Bluetooth par DIYables
  • Cliquez sur le bouton Install pour installer la bibliothèque.
ESP32 DIYables Bluetooth library
  • Il vous sera demandé d'installer d'autres dépendances de bibliothèques
  • Cliquez sur le bouton Install All pour installer toutes les dépendances de bibliothèques.
ESP32 DIYables Bluetooth dependency

Choisissez l'un des deux modes Bluetooth ci-dessous selon vos besoins :

Code ESP32 Bluetooth Classique (fonctionne avec l'app sur Android uniquement)

Note : Le Bluetooth classique n'est PAS supporté sur iOS. Si vous avez besoin du support iOS, utilisez le code BLE ci-dessous.

  • Dans l'IDE Arduino, allez à File Examples DIYables Bluetooth Esp32Bluetooth_Plotter exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
/* * DIYables Bluetooth Library - ESP32 Classic Bluetooth Plotter Example * Works with DIYables Bluetooth STEM app on Android * Note: Classic Bluetooth is NOT supported on iOS. Use BLE examples for iOS support. * * This example demonstrates the Bluetooth Plotter feature: * - Real-time data plotting via Bluetooth * - Plot multiple data series simultaneously * - Configurable plot settings * * Compatible Boards: * - ESP32 (all variants with Classic Bluetooth) * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and view the plot * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothPlotter.h> #include <platforms/DIYables_Esp32Bluetooth.h> // Create Bluetooth instances DIYables_Esp32Bluetooth bluetooth("ESP32_Plotter"); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Plotter app instance DIYables_BluetoothPlotter bluetoothPlotter; // Variables for generating sample data unsigned long lastPlotTime = 0; const unsigned long PLOT_INTERVAL = 100; // Plot every 100ms float phase = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 Plotter Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add plotter app to server bluetoothServer.addApp(&bluetoothPlotter); // Configure plotter settings bluetoothPlotter.setPlotTitle("Sensor Data"); bluetoothPlotter.setAxisLabels("Time", "Value"); bluetoothPlotter.setYAxisRange(-15, 30); // Fixed range bluetoothPlotter.setMaxSamples(100); // Show last 100 samples bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Custom legend labels // Uncomment to enable auto-scaling instead of fixed range: // bluetoothPlotter.enableAutoScale(true); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Optional: Handle requests for current plot data (when app loads) bluetoothPlotter.onDataRequest([]() { Serial.println("App requested plot data"); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Send plot data at regular intervals if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); // Generate sample data (sine and cosine waves) float sine = sin(phase); float cosine = cos(phase); float tangent = tan(phase) * 0.3; // Scaled down // Send data to Bluetooth plotter (multiple series) bluetoothPlotter.send(sine, cosine, tangent); // Also print to Serial for Arduino IDE Serial Plotter comparison Serial.print(sine, 2); Serial.print(" "); Serial.print(cosine, 2); Serial.print(" "); Serial.println(tangent, 2); phase += 0.1; if (phase > 2 * PI) { phase = 0; } // TODO: Replace sample data with your actual sensor readings // Examples: // - Temperature sensor: bluetoothPlotter.send(temperature); // - Accelerometer: bluetoothPlotter.send(accelX, accelY, accelZ); // - Multiple sensors: bluetoothPlotter.send(sensor1, sensor2, sensor3); } delay(10); }
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour télécharger le code vers l'ESP32
  • Ouvrez le Moniteur Série
  • Vérifiez le résultat dans le Moniteur Série. Cela ressemble à ceci :
COM6
Send
DIYables Bluetooth - ESP32 Plotter Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code ESP32 BLE (fonctionne avec l'app sur Android et iOS)

  • Dans l'IDE Arduino, allez à File Examples DIYables Bluetooth Esp32BLE_Plotter exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
/* * DIYables Bluetooth Library - ESP32 BLE Plotter Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Plotter feature: * - Real-time data plotting via Bluetooth * - Plot multiple data series simultaneously * - Configurable plot settings * * Compatible Boards: * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * - ESP32-S3 * - ESP32-C3 * - Any ESP32 board supporting BLE * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and view the plot * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothPlotter.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Plotter"; 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 Plotter app instance DIYables_BluetoothPlotter bluetoothPlotter; // Variables for generating sample data unsigned long lastPlotTime = 0; const unsigned long PLOT_INTERVAL = 100; float phase = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Plotter Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add plotter app to server bluetoothServer.addApp(&bluetoothPlotter); // Configure plotter settings bluetoothPlotter.setPlotTitle("Sensor Data"); bluetoothPlotter.setAxisLabels("Time", "Value"); bluetoothPlotter.setYAxisRange(-15, 30); bluetoothPlotter.setMaxSamples(100); bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothPlotter.onDataRequest([]() { Serial.println("App requested plot data"); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); float sine = sin(phase); float cosine = cos(phase); float tangent = tan(phase) * 0.3; bluetoothPlotter.send(sine, cosine, tangent); Serial.print(sine, 2); Serial.print(" "); Serial.print(cosine, 2); Serial.print(" "); Serial.println(tangent, 2); phase += 0.1; if (phase > 2 * PI) { phase = 0; } } delay(10); }
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour télécharger le code vers l'ESP32
  • Ouvrez le Moniteur Série
  • Vérifiez le résultat dans le Moniteur Série. Cela ressemble à ceci :
COM6
Send
DIYables Bluetooth - ESP32 BLE Plotter Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Application Mobile

  • Installez l'application DIYables Bluetooth sur votre smartphone : Android | iOS
  • Si vous utilisez le code ESP32 Bluetooth classique, vous devez d'abord appairer l'ESP32 avec votre téléphone Android avant d'ouvrir l'application :
    • Allez dans les Paramètres > Bluetooth de votre téléphone
    • Assurez-vous que le Bluetooth est activé
    • Votre téléphone va scanner les appareils disponibles
    • Trouvez et appuyez sur "ESP32_Plotter" dans la liste des appareils disponibles
    • Confirmez la demande d'appairage (aucun PIN requis)
    • Attendez jusqu'à ce qu'il affiche "Paired" sous le nom de l'appareil
  • Si vous utilisez le code ESP32 BLE, aucun appairage n'est nécessaire. Passez directement à l'étape suivante.
  • Ouvrez l'application DIYables Bluetooth
  • Lors de la première ouverture de l'application, elle demandera des autorisations. Veuillez accorder les suivantes :
    • Autorisation Appareils à proximité (Android 12+) / autorisation Bluetooth (iOS) - requise pour scanner et se connecter aux appareils Bluetooth
    • Autorisation Localisation (Android 11 et antérieures uniquement) - requise par les anciennes versions Android pour scanner les appareils BLE
  • Assurez-vous que le Bluetooth est activé sur votre téléphone
  • Sur l'écran d'accueil, appuyez sur le bouton Connect. L'application va scanner à la fois les appareils BLE et Bluetooth classique.
DIYables Bluetooth App - Écran d'accueil avec bouton Scanner
  • Trouvez et appuyez sur votre appareil dans les résultats de scan pour vous connecter :
    • Pour Bluetooth classique : appuyez sur "ESP32_Plotter"
    • Pour BLE : appuyez sur "ESP32BLE_Plotter"
  • Une fois connectée, l'application retourne automatiquement à l'écran d'accueil. Sélectionnez l'application Plotter dans le menu d'applications.
DIYables Bluetooth App - Écran d'accueil avec application Plotter

Note : Vous pouvez appuyer sur l'icône des paramètres de l'écran d'accueil pour masquer/afficher les applications sur l'écran d'accueil. Pour plus de détails, consultez le Manuel Utilisateur de l'application DIYables Bluetooth.

  • Regardez le tracé de données en temps réel défiler à travers l'écran
DIYables Bluetooth App - Écran Plotter

Maintenant regardez le Moniteur Série dans l'IDE Arduino. Vous verrez :

COM6
Send
Bluetooth connected! 0.00 1.00 0.00 0.10 1.00 -0.15 0.20 0.98 0.08 0.29 0.96 -0.22
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Le traceur affiche des formes d'ondes sinusoïdales, cosinusoïdales et de bruit aléatoire en temps réel

Personnalisation Créative - Adaptez le Code à Votre Projet

Configurer les Paramètres de Tracé

Configurez l'apparence du tracé avant la connexion :

// Définir le titre du tracé bluetoothPlotter.setPlotTitle("Sensor Data"); // Définir les étiquettes des axes bluetoothPlotter.setAxisLabels("Time", "Value"); // Définir une plage d'axe Y fixe bluetoothPlotter.setYAxisRange(-15, 30); // Ou activer la mise à l'échelle automatique à la place bluetoothPlotter.enableAutoScale(true); // Définir le nombre de points de données visibles bluetoothPlotter.setMaxSamples(100); // Définir les étiquettes de légende pour chaque série de données bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Supporte aussi 1, 2, ou 4 étiquettes : // bluetoothPlotter.setLegendLabels("Temperature"); // bluetoothPlotter.setLegendLabels("Temp", "Humidity"); // bluetoothPlotter.setLegendLabels("Ch1", "Ch2", "Ch3", "Ch4");

Envoyer des Données au Traceur

Multiples surcharges pour envoyer de 1 à 4+ séries de données :

// Envoyer une seule valeur bluetoothPlotter.send(25.3); // Envoyer deux valeurs (deux séries) bluetoothPlotter.send(temperature, humidity); // Envoyer trois valeurs (trois séries) bluetoothPlotter.send(sine, cosine, tangent); // Envoyer quatre valeurs (quatre séries) bluetoothPlotter.send(ch1, ch2, ch3, ch4); // Envoyer un tableau de valeurs (n'importe quel nombre de séries) float values[] = {1.0, 2.0, 3.0, 4.0, 5.0}; bluetoothPlotter.send(values, 5); // Envoyer comme chaîne formatée bluetoothPlotter.send("1.23,4.56,7.89");

Gérer la Demande de Données de l'Application

Quand l'application se connecte et ouvre l'écran Plotter, elle peut demander des données :

bluetoothPlotter.onDataRequest([]() { Serial.println("App requested plot data"); // Optionnellement envoyer un point de données initial });

Gérer les Événements de Connexion

bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); });

Comment Utiliser le Traceur

Contrôles de l'Interface de l'Application

L'interface du traceur dans l'application DIYables Bluetooth fournit :

  • Graphique Temps Réel : Graphique linéaire défilant avec multiples séries
  • Légende : Étiquettes codées par couleur pour chaque série de données
  • Défilement Automatique : Défile continuellement pour montrer les dernières données

Format des Données

Les données sont envoyées comme valeurs float séparées par des virgules :

  • Série unique : bluetoothPlotter.send(value)
  • Séries multiples : bluetoothPlotter.send(val1, val2, val3)
  • Taux de données : Intervalle de 10-100ms recommandé pour un tracé fluide

Exemples de Programmation

Tracé de Capteur Unique

unsigned long lastPlotTime = 0; const unsigned long PLOT_INTERVAL = 100; // 10 Hz void setup() { bluetoothPlotter.setPlotTitle("Temperature"); bluetoothPlotter.setAxisLabels("Time", "°C"); bluetoothPlotter.setYAxisRange(0, 50); bluetoothPlotter.setLegendLabels("Temperature"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); float temperature = readTemperatureSensor(); bluetoothPlotter.send(temperature); } delay(10); }

Tracé d'Accéléromètre Multi-Capteurs

#include <Wire.h> #include <MPU6050.h> MPU6050 mpu; unsigned long lastPlotTime = 0; void setup() { Wire.begin(); mpu.initialize(); bluetoothPlotter.setPlotTitle("Accelerometer"); bluetoothPlotter.setAxisLabels("Time", "g"); bluetoothPlotter.setYAxisRange(-2.0, 2.0); bluetoothPlotter.setLegendLabels("X", "Y", "Z"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 50) { // 20 Hz lastPlotTime = millis(); int16_t ax, ay, az; mpu.getAcceleration(&ax, &ay, &az); float gx = ax / 16384.0; float gy = ay / 16384.0; float gz = az / 16384.0; bluetoothPlotter.send(gx, gy, gz); } delay(10); }

Traceur de Broches Analogiques

const int ANALOG_PINS[] = {34, 35, 36, 39}; const int NUM_CHANNELS = 4; void setup() { bluetoothPlotter.setPlotTitle("Analog Inputs"); bluetoothPlotter.setAxisLabels("Time", "ADC Value"); bluetoothPlotter.setYAxisRange(0, 4095); bluetoothPlotter.setMaxSamples(200); bluetoothPlotter.setLegendLabels("A34", "A35", "A36", "A39"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 100) { lastPlotTime = millis(); float values[NUM_CHANNELS]; for (int i = 0; i < NUM_CHANNELS; i++) { values[i] = analogRead(ANALOG_PINS[i]); } bluetoothPlotter.send(values, NUM_CHANNELS); } delay(10); }

Générateur de Signal

float phase = 0; void setup() { bluetoothPlotter.setPlotTitle("Signal Generator"); bluetoothPlotter.setAxisLabels("Time", "Amplitude"); bluetoothPlotter.setYAxisRange(-1.5, 1.5); bluetoothPlotter.setLegendLabels("Sine", "Square", "Triangle"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 50) { lastPlotTime = millis(); float sine = sin(phase); float square = (sin(phase) > 0) ? 1.0 : -1.0; float triangle = 2.0 * abs(fmod(phase / PI, 2.0) - 1.0) - 1.0; bluetoothPlotter.send(sine, square, triangle); phase += 0.1; if (phase > 2 * PI) phase -= 2 * PI; } delay(10); }

Techniques de Programmation Avancées

Filtre de Moyenne Mobile

class MovingAverage { float buffer[10]; int index = 0; int count = 0; public: float add(float value) { buffer[index] = value; index = (index + 1) % 10; if (count < 10) count++; float sum = 0; for (int i = 0; i < count; i++) sum += buffer[i]; return sum / count; } }; MovingAverage filter1, filter2; void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 100) { lastPlotTime = millis(); float raw = analogRead(34) * 3.3 / 4095.0; float filtered = filter1.add(raw); // Tracer à la fois les valeurs brutes et filtrées bluetoothPlotter.send(raw, filtered); } delay(10); }

Configuration Dynamique du Tracé

// Changer les paramètres du tracé en cours d'exécution void switchToTemperatureMode() { bluetoothPlotter.setPlotTitle("Temperature Monitor"); bluetoothPlotter.setAxisLabels("Time", "°C"); bluetoothPlotter.setYAxisRange(-10, 50); bluetoothPlotter.setLegendLabels("Internal", "External"); } void switchToVoltageMode() { bluetoothPlotter.setPlotTitle("Voltage Monitor"); bluetoothPlotter.setAxisLabels("Time", "V"); bluetoothPlotter.setYAxisRange(0, 3.3); bluetoothPlotter.setLegendLabels("Ch1", "Ch2", "Ch3"); }

BLE vs Bluetooth Classique - Lequel Choisir ?

FonctionnalitéBLE (Esp32BLE_Plotter)Bluetooth Classique (Esp32Bluetooth_Plotter)
Support iOS? Oui? Non
Support Android? Oui? Oui
Consommation d'ÉnergieFaiblePlus élevée
Portée~30-100m~10-100m
Taux de DonnéesPlus faiblePlus élevé
Appairage RequisNon (connexion automatique)Oui (appairage manuel)
Idéal PourAlimenté par batterie, multi-plateformeHaut débit, Android uniquement

Dépannage

Problèmes Courants

1. Impossible de trouver l'appareil dans l'application

  • Assurez-vous que l'ESP32 est alimenté et que le sketch est téléchargé
  • Pour BLE : Assurez-vous que le Bluetooth et la localisation de votre téléphone sont activés
  • Pour Bluetooth classique : Appairez d'abord l'appareil dans les paramètres Bluetooth du téléphone
  • Vérifiez que le bon schéma de partition est sélectionné (Huge APP)

2. Le tracé ne se met pas à jour

  • Vérifiez le statut de connexion Bluetooth dans l'application
  • Vérifiez que bluetoothPlotter.send() est appelé dans la boucle
  • Vérifiez que bluetooth.isConnected() retourne true
  • Essayez de vous déconnecter et de vous reconnecter

3. Les données du tracé semblent saccadées

  • Réduisez l'intervalle de tracé (par exemple, 50ms au lieu de 500ms)
  • Assurez-vous d'une connexion Bluetooth stable
  • Réduisez le nombre de séries de données si la bande passante est limitée

4. La plage de l'axe Y ne s'adapte pas aux données

  • Utilisez enableAutoScale(true) pour un ajustement automatique
  • Ou définissez une plage plus large avec setYAxisRange()

5. Les étiquettes de légende ne s'affichent pas

  • Appelez setLegendLabels() avant que la connexion soit établie
  • Faites correspondre le nombre d'étiquettes au nombre de séries de données

6. Sketch trop volumineux / pas assez d'espace

  • Dans l'IDE Arduino, allez à Tools > Partition Scheme et sélectionnez "Huge APP (3MB No OTA/1MB SPIFFS)" ou "No OTA (Large APP)"
  • Le schéma de partition par défaut ne fournit que ~1.2MB pour le code de l'application, ce qui n'est pas suffisant pour les bibliothèques Bluetooth
  • Ce paramètre donne ~3MB en sacrifiant la partition OTA (mise à jour par voie hertzienne)

Conseils de Débogage

Ajoutez un débogage complet :

void debugPlotterData(float v1, float v2, float v3) { Serial.println("=== Plotter Debug ==="); Serial.println("Value 1: " + String(v1, 2)); Serial.println("Value 2: " + String(v2, 2)); Serial.println("Value 3: " + String(v3, 2)); Serial.println("Free Heap: " + String(ESP.getFreeHeap())); Serial.println("====================="); }

Idées de Projets

Surveillance de Capteurs

  • Affichage de tendances de température et d'humidité
  • Surveillance du niveau de lumière tout au long de la journée
  • Suivi de mouvement par accéléromètre
  • Visualisation de données de capteur de pression

Analyse de Signaux

  • Visualiseur de fréquences audio
  • Surveillance de vibrations
  • Affichage de pouls/rythme cardiaque
  • Force du champ électromagnétique

Éducation

  • Comparaison d'ondes sinus, cosinus et tangente
  • Courbes de charge/décharge de circuits RC
  • Visualisation de réponse de contrôleur PID
  • Enregistreur de données d'expériences physiques

Industriel

  • Surveillance de vibrations de machines
  • Tendances de variables de processus
  • Suivi de consommation d'énergie
  • Graphiques de contrôle qualité

Intégration avec d'Autres Applications Bluetooth

Combinaison avec Bluetooth Slider

Utilisez des curseurs pour contrôler les paramètres de signal tracé :

float frequency = 1.0; float amplitude = 1.0; bluetoothSlider.onSliderValue([](int slider1, int slider2) { frequency = map(slider1, 0, 100, 1, 20) / 10.0; amplitude = slider2 / 100.0; }); // Dans la boucle : float value = amplitude * sin(phase * frequency); bluetoothPlotter.send(value);

Combinaison avec Bluetooth Table

Affichez les valeurs actuelles dans un tableau à côté du tracé :

bluetoothTable.sendValueUpdate("Current", String(currentValue, 2)); bluetoothTable.sendValueUpdate("Max", String(maxValue, 2)); bluetoothTable.sendValueUpdate("Min", String(minValue, 2)); bluetoothTable.sendValueUpdate("Average", String(average, 2));

Prochaines Étapes

Après avoir maîtrisé l'exemple Bluetooth Plotter, essayez :

  1. Bluetooth Temperature - Pour un affichage de température dédié
  2. Bluetooth Analog Gauge - Pour une visualisation de type jauge
  3. Bluetooth Table - Pour des données numériques structurées
  4. Multiples Applications Bluetooth - Combinaison du traceur avec d'autres affichages

Support

Pour une aide supplémentaire :

  • Consultez la documentation de référence API
  • 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 !