SIK Experiment Guide for the Arduino 101/Genuino 101 Board (French)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 0

Expérience 21 : Utiliser la capacité Bluetooth Low Energy (BLE) embarquée

Introduction

Nous voici à la dernière expérience, dans laquelle nous revenons à une seule LED. Cette fois, au lieu de vous contenter de faire clignoter cette LED, vous allez la contrôler par l'intermédiaire de votre téléphone ou tablette !

La carte 101 dispose d'une connectivité Bluetooth Low Energy (BLE) intégrée, c'est-à-dire que vous pouvez la commander depuis votre téléphone. BLE utilise une approche de communication entre appareils basée sur des services/propriétés, qui facilite son utilisation sur plusieurs appareils à long terme. Toutefois, si vous n'êtes pas familier avec cette approche, elle peut effrayer. Dans cette expérience, vous allez charger une application de communication sur votre appareil et suivre un exemple de sketch qui utilise BLE.

Même s'il s'agit de la dernière expérience de ce guide, cela ne signifie en aucune façon que vous avez terminé votre apprentissage sur la carte 101. Nous vous recommandons fortement de vous rendre sur le site Arduino pour obtenir plus d'informations sur la carte 101 et sur l'évolution du matériel.

Composants nécessaires

Vous aurez besoin des composants suivants :

  • 1 plaque Breadboard
  • 1 carte Arduino 101 ou Genuino 101
  • 1 LED
  • 1 résistance 100 Ω
  • 3 cavaliers

Vous n'avez pas le SIK ?

Pour réaliser cette expérience sans le SIK, nous vous suggérons d'utiliser les composants suivants :

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$5.50
48
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$2.10
2
LED - Basic Red 5mm

LED - Basic Red 5mm

COM-09590
$0.45

Resistor 100 Ohm 1/4th Watt PTH - 20 pack

COM-13761
Retired

Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

Lectures suggérées

Avant de poursuivre cette expérience, nous vous recommandons de vous familiariser avec les concepts des tutoriels suivants :

Présentation de Bluetooth Low Energy (BLE)

Bluetooth Low Energy (BLE) est un protocole de communication relativement nouveau qui utilise le Bluetooth. Il est de plus en plus employé dans les technologies wearables et les applications de l'Internet des objets (IoT), dans lesquelles la gestion de la consommation d'énergie est essentielle et une large gamme d'appareils (téléphones, voitures, etc.) doivent pouvoir communiquer.

Pour normaliser le protocole de communication avec une multitude d'appareils, BLE utilise un système basé sur General Attribute (GATT), qui repose sur une hiérarchie de services adaptés à la fonction de l'appareil. Par exemple, un bracelet connecté Fitbit peut être associé à un service de suivi de la fréquence cardiaque et à un service de podomètre. Chaque service peut être associé à des attributs qui conservent les données brutes du service.

Un attribut pourrait par exemple transmettre des informations concernant l'appareil avec lequel il communique, ainsi que des données importantes pour un service donné. Pour un bracelet Fitbit, le nombre de pas ou le pouls peut être un attribut. La grande idée réside dans le fait qu'il existe des services qui permettent à des appareils de savoir ce qu'ils peuvent attendre les uns des autres et qui sont sur la même longueur d'onde pour pouvoir partager des attributs. Dans sa forme la plus simple, GATT permet aux appareils de formuler des hypothèses les uns sur les autres et de se consacrer à ce qui est important... partager les informations que vous tentez de communiquer.

**Remarque : BLE s'appuie sur le module Curie intégré à la carte 101. Outre ce que voulez contrôler via BLE, aucun câblage n'est donc requis. **

Branchement du matériel

Vous êtes prêt à tout raccorder ? Consultez le schéma de câblage ci-dessous pour savoir comment faire.

Faites particulièrement attention aux marquages indiquant comment placer les composants sur la plaque breadboard, car les composants polarisés ne peuvent être connectés à un circuit que dans une direction.

Schéma de câblage de l'expérience

alt text

Pour agrandir le circuit, cliquez sur le schéma.

Installation de l'application BLE

Pour que la connectivité BLE fonctionne avec la carte Arduino 101, nous vous recommandons d'utiliser l'application Master Control Panel nRF. Elle est gratuite et disponible pour les appareils Android et iOS.

Vous pouvez télécharger l'application dans Google Play ou l'Apple App Store (cherchez nRF). nRF propose de nombreux outils que nous vous recommandons de tester après avoir activé BLE. Pour l'instant, nous avons uniquement besoin de Master Control Panel. Cherchez, téléchargez et installez l'application : vous êtes à présent prêt !

Ouverture du sketch

Ouvrez l'EDI Arduino sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez le code du Circuit 21 en accédant au « Code du guide SIK 100 » que vous avez précédemment téléchargé et placé dans votre dossier « Examples ».

Pour ouvrir le code, cliquez sur : File > Examples > 101 SIK Guide Code > Circuit_21

Vous pouvez également copier et coller le code suivant dans l'EDI Arduino. Cliquez sur Télécharger et observez ce qu'il se passe.

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 21

BASIC BLE CONTROL

Turn an LED on and off using BLE and either a phone or tablet. Android and iOS devices only!

Based off of the BLE LED example written by Intel Corporation and included with the Curie BLE Arduino Library.

*/

 #include 

BLEPeripheral blePeripheral;  // BLE Peripheral Device (the board you're programming)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service

//set BLE characteristic
switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

const int ledPin = 13; // pin to use for the LED

 void setup()
{
 // set LED pin to output mode
  pinMode(ledPin, OUTPUT);

  // set advertised local name and service UUID:
  blePeripheral.setLocalName("101 Board");
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristic:
   blePeripheral.addAttribute(ledService);
   blePeripheral.addAttribute(switchCharacteristic);

   // set the initial value for the characeristic:
   BLEUnsignedCharCharacteristic switchCharacteristic.setValue(0);

   // begin advertising BLE service:
   blePeripheral.begin();
 }

void loop()
{
  // listen for BLE peripherals to connect:
 BLECentral central = blePeripheral.central();

 // if a central is connected to peripheral:
  if (central)
  {
   // while the central is still connected to peripheral:
    while (central.connected())
    {
      // if the remote device wrote to the characteristic,
      // use the value to control the LED:
      if (switchCharacteristic.written())
      {
          // any value other than 0, turn on the LED
         if (switchCharacteristic.value())
         {  
         digitalWrite(ledPin, HIGH);         
         }
      //else turn the LED off
       else
      {                              
      digitalWrite(ledPin, LOW);         
      }
      }
     }
    }
  }

À propos du code

BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214");

BLE est basé sur des services. Plusieurs services sont prédéfinis avec une chaîne personnalisée appelée un identifiant universel unique (Universally Unique Identifier, UUID). Cette chaîne de 16 octets de long est, comme son nom l'indique, universellement unique. Elle instancie l'objet BLEService ledService avec un UUID unique.

switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

Les caractéristiques et attributs sont groupés sous les services. Vous pouvez créer des caractéristiques avec leur propre UUID et les définir comme étant accessibles en lecture, en écriture ou les deux. Nous avons opté pour cette dernière possibilité. Notez que l'UUID de la caractéristique diffère d'un chiffre de l'UUID du service.

blePeripheral.setLocalName("101 Board");

Vous pouvez désigner votre carte 101 à l'aide de la méthode setLocalName() en l'incluant dans une chaîne entre guillemets. Nous vous recommandons un nom facile à identifier, surtout si vous utilisez la carte 101 en classe.

   blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

   // add service and characteristic:
   blePeripheral.addAttribute(ledService);
   blePeripheral.addAttribute(switchCharacteristic);

   // set the initial value for the characeristic:
   switchCharacteristic.setValue(0);

   // begin advertising BLE service:
   blePeripheral.begin();

Dans ce morceau de code, nous ajoutons un service à notre périphérique, puis relions ou ajoutons des attributs au périphérique. Nous ajoutons le ledService et le contrôlons avec switchCharacteristics. Enfin, nous définissons la valeur de départ de switchCharacteristics sur 0 et démarrons le périphérique.

À partir de là, dans la fonction loop, nous nous assurons qu'il existe une connexion entre notre périphérique et un appareil central (un téléphone). Quand nous avons une connexion, nous vérifions qu'une caractéristique est bien présente et a été écrite. S'il y a une valeur autre que 0, la LED s'allume. S'il n'y a aucune valeur ou si la valeur est 0, la LED est éteinte.

Ce que vous devez voir

Ouvrez la page des connexions Bluetooth sur votre appareil et lancez l'application Master Control Panel. Lancez une recherche d'appareils, sélectionnez votre carte 101 et connectez-vous à celle-ci.

alt text

Une fois la connexion établie, ouvrez le service inconnu et sélectionnez la switchvalue. Cliquez sur l'icône de téléchargement (flèche vers le haut). Dans la boîte de dialogue qui s'ouvre, saisissez un chiffre autre que 0 et cliquez sur Envoyer.

alt text

alt text

La LED doit s'allumer ! Ouvrez la même boîte de dialogue, entrez le chiffre 0 et cliquez sur Envoyer. La LED doit s'éteindre.

alt text

Dépannage

La LED ne s'allume pas

Vous avez l'habitude : vérifiez votre câblage et si la LED n'est pas insérée à l'envers.

Impossible de se connecter au Bluetooth de la carte 101

Vérifiez que le sketch est téléchargé. Sinon, la carte 101 ne peut pas diffuser le signal BLE.

Ne fonctionne toujours pas

Essayez de redémarrer le Bluetooth de votre téléphone ou tablette et de relancer la recherche d'appareils à proximité.