Menu
Microbots
0
  • Faire
    • Commencer
    • Constructions de créateurs
    • Éducation
  • Boutique
    • Modules Maker
    • Packs de création
    • Outils et engrenages
    • Robots et écrans
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • français
  • Votre panier est vide
Microbots
  • Faire
    • Commencer
    • Constructions de créateurs
    • Éducation
  • Boutique
    • Modules Maker
    • Packs de création
    • Outils et engrenages
    • Robots et écrans
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • Langue

  • 0 0

CodeCell : Connexion avec BLE

Le Bluetooth Low Energy (BLE) est un puissant moyen de communication sans fil entre votre CodeCell et d'autres appareils tels que les smartphones, les tablettes et même d'autres microcontrôleurs. Dans ce guide, nous allons configurer le BLE sur CodeCell, lui permettre de recevoir des commandes d'un client BLE et contrôler ses LED RVB en fonction des données reçues.

Qu'est-ce que BLE ?

Le BLE est une version économe en énergie du Bluetooth qui permet aux appareils d'échanger de petites quantités de données avec une faible consommation d'énergie. Voici ses concepts clés :

  • Serveur BLE → CodeCell agit comme un serveur , se faisant connaître auprès d'autres appareils.
  • Client BLE → Un téléphone, une tablette ou un autre microcontrôleur qui se connecte à CodeCell.
  • Service BLE → Un ensemble de caractéristiques qui définissent les données envoyées.
  • Caractéristique BLE → Un point de données spécifique (par exemple, pressions sur les boutons, lectures de capteurs).

Affichage des données BLE sur un smartphone

Avant de commencer les tests, vous devez télécharger une application pour envoyer des données BLE sur votre smartphone. Commencez donc par la télécharger. une application de scanner BLE :

  • Android → nRF Connect ou « Scanner BLE »
  • iOS → nRF Connect

Configuration de BLE sur CodeCell

Pour que CodeCell se présente comme un appareil BLE , nous devons initialiser BLE, créer un service et une caractéristique, et commencer à faire de la publicité .

Ce code crée un serveur BLE , annonce un service et configure une caractéristique lisible et écrivable par un appareil connecté. Le CodeCell recevra la caractéristique du bouton et contrôlera sa LED RVB intégrée :

  • Si la valeur du bouton est 1 , la LED devient rouge .
  • Si la valeur du bouton est 0 , la LED devient verte .
 #include <BLEDevice.h>
 #include <BLEUtils.h>
 #include <BLEServer.h>
 #include <BLE2902.h>

 #include <CodeCell.h>
 CodeCell myCodeCell;

 BLECharacteristic *pButtonCharacteristic = NULL;
 #define BUTTON_UUID "abcd1234-abcd-1234-abcd-123456789012"

 class MyServerCallbacks : public BLEServerCallbacks {
 void onConnect(BLEServer *pServer) override {
 Serial.println("BLE Connected");
 delay(1000);
 }

 void onDisconnect(BLEServer *pServer) override {
 Serial.println("BLE Disconnected");
 delay(500);
 BLEDevice::startAdvertising(); // Restart advertising
 }
 };

 // Callback class for handling button writes
 class ButtonCallback : public BLECharacteristicCallbacks {
 void onWrite(BLECharacteristic *pCharacteristic) override {
 String value = pCharacteristic->getValue();

 if (value.length() > 0) {
 int buttonState = value[0];

 Serial.print("Button State: "); 
Serial.println(boutonÉtat);

 si (buttonState == 1) {
 myCodeCell.LED(255, 0, 0); // LED rouge lorsque le bouton est à 1
 } autre {
 myCodeCell.LED(0, 255, 0); // LED verte lorsque le bouton n'est pas à 1
 }
 }
 }
 };

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(LIGHT); // Initialise le capteur de lumière

 BLEDevice::init("CodeCell_BLE"); // Définir le nom du périphérique BLE
 Serveur BLE *bleServer = BLEDevice::createServer();
 bleServer->setCallbacks(nouveau MyServerCallbacks());

 BLEService *bleService = bleServer->createService(BLEUUID("12345678-1234-5678-1234-56789abcdef0"));

 // Créer une caractéristique BLE pour l'état du bouton
 pButtonCharacteristic = bleService->createCharacteristic(
 BOUTON_UUID,
 BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
 );
 pButtonCharacteristic->addDescriptor(nouveau BLE2902());
 pButtonCharacteristic->setCallbacks(nouveau ButtonCallback());

 bleService->start();
 
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
 pAdvertising->addServiceUUID("12345678-1234-5678-1234-56789abcdef0");
 BLEDevice::startAdvertising();
 }

 boucle vide() {
 // Pas besoin de vérifier en permanence, les mises à jour LED ne se font que lors de l'écriture BLE
 }

Comment fonctionne ce code

  • Initialisation BLE → CodeCell se présente comme un périphérique BLE appelé "CodeCell_BLE" .
  • Service et caractéristique BLE → Un service avec une caractéristique de bouton est créé.
  • Rappels BLE → Le serveur affiche « BLE Connecté » lorsqu'un client se connecte et « BLE Déconnecté » lorsqu'il se déconnecte.
  • Redémarrage de la publicité → Une fois déconnecté, le BLE redémarre automatiquement la publicité afin que de nouveaux appareils puissent se connecter.

Test du contrôle LED

  • Connectez-vous à "CodeCell_BLE" dans l'application BLE Scanner.
  • Sélectionnez le service que vous avez créé - généralement affiché comme Service inconnu
  • Recherchez la caractéristique du bouton ( BUTTON_UUID ) et envoyez la valeur :
    • Écrire 1 → La LED devient rouge 🔴
    • Écrire 0 → la LED devient verte 🟢

Envoi de données de capteur

Ensuite, nous allons définir une nouvelle caractéristique BLE qui permet à CodeCell d' envoyer des valeurs de capteur à un appareil connecté .

 #include <BLEDevice.h>
 #include <BLEUtils.h>
 #include <BLEServer.h>
 #include <BLE2902.h>

 #include <CodeCell.h>
 CodeCell myCodeCell;

 BLECharacteristic *pSensorCharacteristic = NULL;
 #define SENSOR_UUID "abcd5678-abcd-5678-abcd-56789abcdef0"

 class MyServerCallbacks : public BLEServerCallbacks {
 void onConnect(BLEServer *pServer) override {
 Serial.println("BLE Connected");
 delay(1000);
 }

 void onDisconnect(BLEServer *pServer) override { 
Serial.println("BLE déconnecté");
 délai(500);
 BLEDevice::startAdvertising(); // Redémarrer la publicité
 }
 };

 configuration vide() {
 Serial.begin(115200);
 myCodeCell.Init(LIGHT); // Initialiser le capteur de lumière et de proximité

 BLEDevice::init("CodeCell_BLE"); // Nommer le périphérique BLE
 Serveur BLE *bleServer = BLEDevice::createServer();
 bleServer->setCallbacks(nouveau MyServerCallbacks());

 BLEService *bleService = bleServer->createService(BLEUUID("12345678-1234-5678-1234-56789abcdef0"));

 // Créer une caractéristique BLE pour les données du capteur
 pSensorCharacteristic = bleService->createCharacteristic(
 CAPTEUR_UUID,
 BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
 );
 pSensorCharacteristic->addDescriptor(nouveau BLE2902());

 bleService->start();

 BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
 pAdvertising->addServiceUUID("12345678-1234-5678-1234-56789abcdef0");
 BLEDevice::startAdvertising();
 }

 boucle vide() { 
if (myCodeCell.Run(10)) { // Lecture toutes les 100 ms (10 Hz)
 uint16_t proximity = myCodeCell.Light_ProximityRead();
 Serial.print("Proximité : ");
 Serial.println(proximité);

 // Convertir la valeur de proximité en chaîne et l'envoyer via BLE
 Chaîne de proximitéStr = String(proximité);
 pSensorCharacteristic->setValue(proximityStr.c_str());
 pSensorCharacteristic->notify(); // Notifier l'appareil connecté
 }
 }

Comment ça marche ?

  • Ce code définit une nouvelle caractéristique ( SENSOR_UUID ) que les clients peuvent lire et obtenir des mises à jour en temps réel :
    • PROPERTY_READ → Permet au client de lire la valeur manuellement.
    • PROPERTY_NOTIFY → Envoie automatiquement des mises à jour lorsque de nouvelles données sont disponibles.
  • La fonction Light_ProximityRead() obtient une valeur du capteur de lumière embarqué qui détecte les objets à proximité. Nous convertissons le nombre en chaîne et l'envoyons au client BLE.

Essayez-le

Maintenant que CodeCell envoie des données de capteur de proximité via BLE , vous pouvez les visualiser sur un téléphone .

  • Ouvrez une application BLE comme nRF Connect (Android/iOS)
  • Recherchez "CodeCell_BLE" et connectez-vous
  • Trouver la caractéristique du capteur ( SENSOR_UUID )
  • Activez les notifications et regardez la mise à jour des données de proximité en temps réel !
  • Les données de votre moniteur série doivent correspondre aux données envoyées à votre téléphone

Déplacez un objet près du capteur et voyez comment les valeurs changent !

Quelle est la prochaine étape ?

Maintenant que vous pouvez contrôler CodeCell via BLE, essayez :

  • Ajout de commandes supplémentaires (par exemple, LED bleue, clignotant, déclencheurs de capteur)
  • Réception de plusieurs valeurs (par exemple, envoi de données d'accéléromètre ou de capteur de proximité)
  • Construire un appareil IoT entièrement contrôlé par BLE ou même le connecter à une autre application


  • Partager:

Partage

Github

  • À propos
  • Logiciel
  • Éducation
  • Contact
  • FAQ
  • Termes
  • Politique de remboursement
  • politique de confidentialité

Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !

© 2025 Microbots.