Exemple de tableau Arduino UNO R4 WiFi et Bluetooth - Tutoriel d'affichage de données structurées via BLE

Aperçu

L'exemple Table Bluetooth offre un affichage structuré des données via l'application DIYables Bluetooth STEM. Conçu pour Arduino UNO R4 WiFi utilisant BLE (Bluetooth Low Energy) pour afficher les relevés de capteurs, l'état du système et toutes les données dans un format de tableau clair sur votre smartphone. Prend en charge des lignes nommées avec des mises à jour de valeurs en temps réel. Parfait pour les tableaux de bord, la surveillance du système et les affichages multi-capteurs.

Remarque : L'Arduino UNO R4 WiFi ne prend en charge que le BLE (Bluetooth Low Energy). Il ne prend pas en charge le Bluetooth classique. L'application Bluetooth DIYables prend en charge à la fois le BLE et le Bluetooth classique sur Android, et le BLE sur iOS. Puisque cette carte utilise le BLE, l'application fonctionne sur à la fois Android et iOS.

Arduino UNO R4 Wi‑Fi et Bluetooth - Exemple de tableau - Tutoriel d'affichage de données structurées via BLE

Fonctionnalités

  • Lignes nommées: Définir des lignes avec des étiquettes (par exemple « Température », « Humidité »)
  • Mises à jour en temps réel: Envoyer efficacement les mises à jour de valeurs individuelles
  • Synchronisation de la structure: Envoi automatique de la structure du tableau lors de la connexion
  • Données flexibles: Afficher n'importe quelle chaîne de caractères ou données numériques
  • Jusqu'à 20 lignes: Prise en charge de plusieurs champs de données
  • Fonctionne sur Android & iOS: BLE est pris en charge sur les deux plateformes
  • Aucun appairage nécessaire: BLE se connecte automatiquement sans appairage manuel

Arduino UNO R4 WiFi Code

Étapes rapides

Suivez ces instructions étape par étape :

  • Si c'est votre première utilisation de l'Arduino UNO R4 WiFi, reportez-vous au Arduino UNO R4 - Installation du logiciel..
  • Connectez la carte Arduino UNO R4 WiFi à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino UNO R4 WiFi et le port COM approprié.
  • Accédez à l'icône Libraries dans la barre de gauche de l'IDE Arduino.
  • Recherchez "DIYables Bluetooth", puis trouvez la bibliothèque DIYables Bluetooth de DIYables.
  • Cliquez sur le bouton Install pour installer la bibliothèque.
Bibliothèque Bluetooth DIYables pour Arduino UNO R4
  • Il vous sera demandé d'installer d'autres dépendances de la bibliothèque.
  • Cliquez sur le bouton Tout installer pour installer toutes les dépendances de la bibliothèque.
Dépendance Bluetooth pour Arduino UNO R4 DIYables

Code BLE

  • Sur l'IDE Arduino, allez dans Fichier Exemples DIYables Bluetooth ArduinoBLE_Table exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
/* * DIYables Bluetooth Library - Bluetooth Table Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Table feature: * - Display structured data in a two-column table * - Real-time value updates for each row * - Perfect for sensor dashboards and status displays * * Compatible Boards: * - Arduino UNO R4 WiFi * - Arduino Nano 33 BLE / BLE Sense * - Arduino Nano 33 IoT * - Arduino MKR WiFi 1010 * - Arduino Nano RP2040 Connect * - Any board supporting the ArduinoBLE library * * Setup: * 1. Upload the sketch to your Arduino * 2. Open Serial Monitor to see connection status * 3. Use DIYables Bluetooth App to connect and view the table * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothTable.h> #include <platforms/DIYables_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_Table"; 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_ArduinoBLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Table app instance DIYables_BluetoothTable bluetoothTable; // Variables for demo data unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 1000; // Update every second int counter = 0; void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - Table Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add table app to server bluetoothServer.addApp(&bluetoothTable); // Define table structure (add rows with attribute names) bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Counter"); bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Free Memory"); bluetoothTable.addRow("Status"); Serial.print("Table rows defined: "); Serial.println(bluetoothTable.getRowCount()); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); // Send table structure bluetoothTable.sendTableStructure(); // Send initial values updateTableValues(); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Optional: Handle requests for table data bluetoothTable.onDataRequest([]() { Serial.println("App requested table data"); bluetoothTable.sendTableStructure(); updateTableValues(); }); Serial.println("Waiting for Bluetooth connection..."); } void updateTableValues() { // TODO: Replace with actual sensor readings // Simulated temperature (20-30°C) float temperature = 20.0 + random(0, 100) / 10.0; bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); // Simulated humidity (40-60%) int humidity = 40 + random(0, 21); bluetoothTable.sendValueUpdate("Humidity", String(humidity) + " %"); // Simulated pressure (1000-1020 hPa) int pressure = 1000 + random(0, 21); bluetoothTable.sendValueUpdate("Pressure", String(pressure) + " hPa"); // Counter value bluetoothTable.sendValueUpdate("Counter", String(counter)); counter++; // Uptime (in seconds) unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); // Free memory (simulated) int freeMemory = 2048 - random(0, 512); bluetoothTable.sendValueUpdate("Free Memory", String(freeMemory) + " bytes"); // Status bluetoothTable.sendValueUpdate("Status", counter % 2 == 0 ? "Running" : "Active"); // Alternative: Update by index instead of attribute name // bluetoothTable.sendValueUpdate(0, String(temperature, 1) + " °C"); // bluetoothTable.sendValueUpdate(1, String(humidity) + " %"); Serial.println("Table values updated"); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Update table values periodically (only when connected) if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); updateTableValues(); } delay(10); }
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'Arduino UNO R4 WiFi
  • Ouvrez le moniteur série
  • Vérifiez le résultat dans le moniteur série. Voici à quoi cela ressemble :
COM6
Send
DIYables Bluetooth - Table Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Application mobile

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

Remarque : L’application Bluetooth DIYables prend en charge à la fois le BLE et le Bluetooth classique sur Android, et le BLE sur iOS. Comme l’Arduino UNO R4 WiFi utilise le BLE, l’application fonctionne sur les deux plateformes Android et iOS. Aucun appairage manuel n’est nécessaire pour le BLE — il suffit de scanner et de se connecter.

  • Ouvrez l'application Bluetooth DIYables
  • Lors de la première ouverture de l'application, des autorisations vous seront demandées. Veuillez accorder les suivantes :
    • Autorisation des périphériques à proximité (Android 12+) / Autorisation Bluetooth (iOS) - nécessaire pour scanner et se connecter aux appareils Bluetooth
    • Autorisation de localisation (Android 11 et versions antérieures uniquement) - requise par les anciennes versions d'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 Se connecter. L'application va scanner les appareils BLE.
Application Bluetooth DIYables - Écran d'accueil avec bouton de balayage
  • Trouvez et touchez "Arduino_Table" dans les résultats du balayage pour vous connecter.
  • Une fois connecté, l’application revient automatiquement à l’écran d’accueil. Sélectionnez l’application Table dans le menu des applications.
DIYables Bluetooth App - Écran d'accueil avec Table App

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

  • Vous verrez un tableau avec des lignes affichant Température, Humidité, Pression, Compteur, Temps de fonctionnement, Mémoire libre et État — toutes se mettent à jour en temps réel
DIYables Bluetooth App - Écran de table

Regardez à nouveau le Moniteur série dans l'IDE Arduino. Vous verrez :

COM6
Send
Bluetooth connected! Sending table updates... Temperature: 25.30 °C Humidity: 55.70 %
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Personnalisation créative - Adaptez le code à votre projet

Définir la structure de la table

// Add rows during setup bluetoothTable.addRow("Temperature", "-- °C"); bluetoothTable.addRow("Humidity", "-- %"); bluetoothTable.addRow("Pressure", "-- hPa"); bluetoothTable.addRow("Status", "Initializing...");

Mise à jour des valeurs

// Update by row name bluetoothTable.sendValueUpdate("Temperature", "25.5 °C"); bluetoothTable.sendValueUpdate("Status", "Running"); // Update by row index (0-based) bluetoothTable.sendValueUpdate(0, "25.5 °C"); bluetoothTable.sendValueUpdate(3, "Running");

Envoyer la structure de la table

// Re-send the full table structure to the app bluetoothTable.sendTableStructure(); // Handle data request from app bluetoothTable.onDataRequest([]() { bluetoothTable.sendTableStructure(); });

Exemples de programmation

Tableau de bord de la station météo

DIYables_BluetoothTable bluetoothTable(bluetoothServer); void setup() { bluetoothTable.addRow("Temperature", "-- °C"); bluetoothTable.addRow("Humidity", "-- %"); bluetoothTable.addRow("Pressure", "-- hPa"); bluetoothTable.addRow("Wind Speed", "-- m/s"); bluetoothTable.addRow("Rain", "None"); bluetoothTable.onDataRequest([]() { bluetoothTable.sendTableStructure(); }); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 2000) { lastTime = millis(); bluetoothTable.sendValueUpdate("Temperature", String(readTemp(), 1) + " °C"); bluetoothTable.sendValueUpdate("Humidity", String(readHumidity(), 1) + " %"); bluetoothTable.sendValueUpdate("Pressure", String(readPressure(), 0) + " hPa"); } }

Moniteur d'état du système

void setup() { bluetoothTable.addRow("Uptime", "0s"); bluetoothTable.addRow("Free RAM", "-- bytes"); bluetoothTable.addRow("WiFi RSSI", "-- dBm"); bluetoothTable.addRow("IP Address", "N/A"); bluetoothTable.addRow("Status", "Starting..."); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 1000) { lastTime = millis(); unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Status", "Running"); } }

Dépannage

Problèmes courants

  1. Impossible de trouver l'appareil dans l'application
  • Assurez-vous que l'Arduino UNO R4 WiFi est sous tension et que le sketch est téléversé
  • Assurez-vous que le Bluetooth de votre téléphone est activé
  • Sur Android 11 et les versions antérieures, activez également les services de localisation

2. La table est vide ou les lignes ne s'affichent pas

  • Assurez-vous que addRow() est appelé dans setup() avant de se connecter
  • Implémentez le rappel onDataRequest pour renvoyer la structure
  • Vérifiez que sendTableStructure() est appelée

3. Les valeurs ne se mettent pas à jour

  • Vérifiez que sendValueUpdate() est appelé dans la boucle
  • Vérifiez que le nom de la ligne correspond exactement (sensibilité à la casse)
  • Assurez-vous que bluetoothServer.loop() est appelé à chaque itération de la boucle

4. Les noms de lignes ne correspondent pas

  • Les noms de ligne sont sensibles à la casse — « Temperature » ≠ « temperature »
  • Utilisez l’indice de ligne (base zéro) comme alternative aux noms de ligne

5. Échec du téléversement ou carte non reconnue

  • Installer le dernier paquet de cartes Arduino UNO R4 via le Gestionnaire de cartes
  • Essayez un câble USB ou un port USB différent

Idées de projets

  • Tableau de bord de station météorologique
  • Moniteur des ressources système
  • Affichage de données multi-capteurs
  • Panneau de configuration de l'appareil
  • Tableau de bord des appareils IoT

Étapes suivantes

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

  1. Traceur Bluetooth - Pour la visualisation graphique des données
  2. Moniteur Bluetooth - Pour une interaction textuelle
  3. Température Bluetooth - Pour un affichage de type jauge
  4. Plusieurs applications Bluetooth - En combinant un tableau avec d'autres applications

Assistance

Pour obtenir une aide supplémentaire :

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