Exemple de rotateur Arduino UNO R4 WiFi et Bluetooth - Tutoriel sur le contrôle de l'angle via BLE

Vue d'ensemble

L'exemple Bluetooth Rotator fournit un contrôle de position angulaire via l'application DIYables Bluetooth STEM. Conçu pour Arduino UNO R4 WiFi utilisant BLE (Bluetooth Low Energy) pour contrôler les angles de rotation et les servomoteurs sans fil depuis votre smartphone. Prend en charge les modes de rotation à portée limitée et de rotation continue. Parfait pour le contrôle de servomoteurs, la robotique, les mécanismes pan-tilt et le positionnement angulaire.

Note: 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 de 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 Android et iOS.

Exemple de rotateur Arduino UNO R4 WiFi Bluetooth - Tutoriel sur le contrôle de l'angle via BLE

Fonctionnalités

  • Mode Limité: Définir la plage d'angles minimale et maximale (par exemple, 0° à 180°)
  • Mode Continu: Rotation continue sur 360°
  • Angle en temps réel: Recevoir les mises à jour d'angle pendant que l'utilisateur tourne
  • Intégration du servomoteur: Contrôle direct du servomoteur
  • Synchronisation de l'angle initial: Envoyer la position actuelle lors de la connexion
  • Fonctionne sur Android et iOS: BLE est pris en charge sur les deux plateformes
  • Aucun appairage requis: BLE se connecte automatiquement sans jumelage manuel

Préparation du matériel

1×Arduino UNO R4 WiFi
1×Alternativement: DIYables STEM V4 IoT
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×(optional) Servo Motor
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno R4
1×Recommandé: Shield plaque d'essai pour Arduino Uno R4
1×Recommandé: Boîtier pour Arduino Uno R4
1×Recommandé: Répartiteur d'alimentation pour Arduino Uno R4
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables STEM V4 IoT (Arduino 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.

Note d'achat: Si vous utilisez plusieurs servomoteurs, nous recommandons d'utiliser le PCA9685 16 Channel PWM Servo Driver Module pour économiser les broches du MCU et faciliter le câblage.

Code Arduino UNO R4 WiFi

Étapes rapides

Suivez ces instructions étape par étape :

  • Si c'est la première fois que vous utilisez l'Arduino UNO R4 WiFi, consultez le 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 publiée par 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 bibliothèque.
  • Cliquez sur le bouton Install All pour installer toutes les dépendances de bibliothèque.
Dépendance Bluetooth DIYables pour Arduino UNO R4

Code BLE

  • Dans l'IDE Arduino, allez dans Fichier Exemples DIYables Bluetooth ArduinoBLE_Rotator l'exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
/* * DIYables Bluetooth Library - Bluetooth Rotator Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Rotator feature: * - Rotatable disc/knob control (0-360 degrees) * - Continuous or limited angle range * - Perfect for servo control, compass display, volume knobs * * 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 * * Optional: Servo motor for visual feedback * * Setup: * 1. Upload the sketch to your Arduino * 2. Open Serial Monitor to see connection status * 3. Use DIYables Bluetooth App to connect and rotate the knob * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothRotator.h> #include <platforms/DIYables_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_Rotator"; 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 Rotator app instance // Option 1: Continuous mode (0-360, wraps around) // DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_CONTINUOUS); // Option 2: Limited mode (constrained angle range) DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_LIMITED, 0, 180); // Variables to store current angle float currentAngle = 0.0; // Optional: Servo control (uncomment if using Servo library) // #include <Servo.h> // Servo myServo; // const int SERVO_PIN = 9; void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - Rotator Example"); // Optional: Initialize servo // myServo.attach(SERVO_PIN); // myServo.write(0); bluetoothServer.begin(); bluetoothServer.addApp(&bluetoothRotator); bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothRotator.send(currentAngle); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; Serial.print("Rotator angle: "); Serial.print(angle); Serial.println("°"); // TODO: Add your control logic here based on angle // Examples: // - Servo control: servo.write(map(angle, 0, 360, 0, 180)); // - Stepper motor: stepper.moveTo(angleToSteps(angle)); // - LED ring: setLEDPosition(angle); // - Volume control: setVolume(map(angle, 0, 360, 0, 100)); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { bluetoothServer.loop(); 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 sur le Moniteur série. Il ressemble à ce qui suit :
COM6
Send
DIYables Bluetooth - Rotator 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. Aucune association manuelle n'est nécessaire pour le BLE — il suffit de scanner et de se connecter.

  • Ouvrez l'application Bluetooth DIYables
  • Lors de l'ouverture de l'application pour la première fois, elle demandera des autorisations. Veuillez accorder les éléments suivants :
    • Périphériques à proximité autorisation (Android 12+) / Bluetooth autorisation (iOS) - nécessaire pour rechercher et se connecter à des périphériques Bluetooth
    • Localisation autorisation (Android 11 et versions ci-dessous uniquement) - requise par les anciennes versions d'Android pour rechercher des périphériques BLE
  • Assurez-vous que Bluetooth est activé sur votre téléphone
  • À l'écran d'accueil, touchez le Connecter bouton. L'application va scanner les périphériques BLE.
Application Bluetooth DIYables - Écran d'accueil avec bouton de balayage
  • Trouvez et touchez "Arduino_Rotator" dans les résultats du balayage pour vous connecter.
  • Une fois connecté, l'application retourne automatiquement à l'écran d'accueil. Sélectionnez l'application Rotator dans le menu des applications.
DIYables Bluetooth App - Écran d'accueil avec l'application Rotator

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

  • Vous verrez un cadran rotatif affichant de 0° à 180°.
  • Tournez le cadran pour envoyer des valeurs d'angle à l'Arduino.
Application Bluetooth DIYables - Écran rotatif

Regardez maintenant le moniteur série dans l'IDE Arduino. Vous verrez :

COM6
Send
Bluetooth connected! Angle changed: 45.00° Angle changed: 90.00° Angle changed: 135.00°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Personnalisation créative - Adaptez le code à votre projet

Modes de rotation

// Limited mode: specify min and max angle DIYables_BluetoothRotator bluetoothRotator(bluetoothServer, ROTATOR_MODE_LIMITED, 0, 180); // Continuous mode: full 360° rotation DIYables_BluetoothRotator bluetoothRotator(bluetoothServer, ROTATOR_MODE_CONTINUOUS);

Gérer les changements d'angle

bluetoothRotator.onRotatorAngle([](float angle) { Serial.print("Angle: "); Serial.println(angle); // Control a servo motor myServo.write((int)angle); });

Envoyer l'angle actuel

// Send current angle to the app (e.g., on connect) bluetoothRotator.sendAngle(currentAngle);

Exemples de programmation

Contrôle du servomoteur

#include <Servo.h> Servo myServo; float currentAngle = 90; void setup() { myServo.attach(9); myServo.write(currentAngle); bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; myServo.write((int)angle); Serial.print("Servo: "); Serial.println(angle); }); } void loop() { bluetoothServer.loop(); }

Monture de caméra panoramique et basculante

Servo panServo; Servo tiltServo; // Use two rotator instances for pan and tilt // Or use a single rotator for one axis // and a slider for the other void setup() { panServo.attach(9); tiltServo.attach(10); bluetoothRotator.onRotatorAngle([](float angle) { panServo.write((int)angle); Serial.print("Pan: "); Serial.println(angle); }); }

Dépannage

Problèmes courants

  1. Impossible de trouver l'appareil dans l'application
  • Assurez-vous que l'Arduino UNO R4 WiFi est allumé 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. Le servomoteur ne répond pas

  • Vérifiez que le servo est câblé sur la bonne broche
  • Vérifiez que la bibliothèque Servo est incluse et que la fonction attach() est appelée
  • Veillez à disposer d'une alimentation suffisante pour le servo

3. La plage d'angles semble incorrecte

  • Vérifiez les valeurs minimales et maximales dans le constructeur
  • Assurez-vous d'utiliser ROTATOR_MODE_LIMITED pour une plage bornée

4. La molette se réinitialise à 0 lors de la reconnexion

  • Envoyez l'angle actuel en utilisant sendAngle() lorsque l'appareil se reconnecte
  • Le code d'exemple gère cela dans le rappel onRotatorAngle

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

  • Installer le dernier package de cartes Arduino UNO R4 via le Gestionnaire de cartes
  • Essayez un autre câble USB ou un autre port

Idées de projets

  • Contrôleur de servomoteur
  • Support caméra pan-tilt
  • Contrôle des articulations du bras robotique
  • Commande de thermostat à cadran
  • Affichage de la boussole et du cap

Prochaines étapes

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

  1. Curseur Bluetooth - Pour le contrôle de valeur linéaire
  2. Joystick Bluetooth - Pour le contrôle de position en 2D
  3. Jauge analogique Bluetooth - Pour le retour visuel
  4. Applications Bluetooth multiples - Combiner le rotateur avec d'autres applications

Aide

Pour obtenir de l'aide supplémentaire :

  • Vérifiez 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 !