Transmission
Bluetooth
Electronique pour Arduino F. Ferrero
Network
• WBAN : Wireless Body Area Network
• WPAN : Wireless Personal Area Network • WLAN : Wireless local Area Network
• WMAN : Wireless Metropolitan Area Network • WAN : Wide area Network
Bluetooth - IEEE 802.15 - General
• Wireless Personal Area Networks (WPANs)
• Communication within a persons operating space
• 1998 -IEEE 802.15.1 – ”Bluetooth”
• King Harald Bluetooth (A.D. 940 to 985)
Ericsson (creator of bluetooth)
• 2002 - IEEE 802.15.1.1: Coexistence between 802.15.1 and 802.11 • 2004 - IEEE 802.15.2 – EDR
• 2010 -IEEE 802.15.4 – Low Power
Bluetooth Low Energy (BLE) Smart Bluetooth
5
Bluetooth
➢ bande ISM sans licence (2.4 - 2.4835 GHz) ➢ Débit de 1Mbps ➢ Frequency Hopping (1600 Hops/sec) ➢ GFSK Modulation (BT = 0.5, h = 0.28 - 0.35)
▪ Le Bluetooth est une technologie sans fil conçu pour remplacer les câbles
➢ Faible portée (10 m)
▪ Les principales specifications radio:
2/50
Spécifications de la transmission
• Caractéristique de la Modulation :Les radios Bluetooth utilisent un modulation GFSK (Gaussian Frequency Shift Keying)
où un bit à 1 est représenté par une deviation de fréquence positive et un bit à 0 par une deviation de fréquence negative.
Filtre Gaussien :
Le filter permet de lisser le signaux digitaux pour limiter la bande passante fréquentielle.
Spécifications de la transmission
• Où fc est la fréquence centrale et fd est la deviation fréquentielle. • fc − fd represente un bit 0 , fc + fd represente un bit 1.
• Dans le standard Bluetooth , l’indice de modulation est specifié entre 0.28 et 0.35. L’indice de modulation est le rapport entre la deviation fréquentielle 2fd et le débit. Donc, le fd correspondant doit être compris entre 140 et 175 kHz.
Spécifications de la transmission
Piconets / Scatternet
Les topologies plus simples de réseau sont appelées Piconets
1 master -> 7 slaves Les topologies plus complexes de réseau sontappelées Scatternets et permettent de réunir
plusieurs Piconets 10
Le standard Bluetooth est basé sur un mode de fonctionnement maître/esclave. Ainsi, on appelle « picoréseau » (en anglais piconet) le réseau formé par un périphérique et tous les périphériques présents dans son rayon de portée. Il peut coexister jusqu'à 10 picoréseaux dans une même zone de couverture. Un maître peut être connecté simultanément à un maximum de 7 périphériques esclaves actifs.
Bluetooth Adresses et Noms
Tous les systèmes Bluetooth on une adresse unique de 48-bit, communément appellée BD_ADDR. Cette adresse est visible sur la plupart des systèmes Bluetooth.
Les systèmes bluetooth ont aussi un nom paramétrable qui permet de les reconnaitre facilement. Ce nom est généralement présenté à l’utilisateur à la place de l’adresse, pour aider l’identification.
La règle pour le nom n’est pas stricte, il peut avoir jusqu’à 248 bytes, et 2 systèmes peuvent avoir le même nom.
Process de connection
Pour créer une connection entre 2 systems Bluetooth, un process avec 3 étapes est necessaire :
1. Inquiry – L'établissement de la connexion commence par une phase appelée « phase d'inquisition » (en anglais « inquiry »), pendant laquelle le périphérique maître envoie une requête d'inquisition à tous les périphériques présents dans la zone de portée, appelés points d'accès. Tous les périphériques recevant la requête répondent avec leur adresse.
2. Paging (Connecting) – Le périphérique maître choisit une adresse et se synchronise avec le point d'accès selon une technique, appelée paging, consistant notamment à synchroniser son horloge et sa fréquence avec le point d'accès.
3. Connection – Un lien s'établit ensuite avec le point d'accès, permettant au périphérique maître d'entammer une phase de découverte des services du point d'accès, selon un protocole appelé SDP (Service Discovery Protocol).
A l'issue de cette phase de découverte de services, le périphérique maître est en mesure de créer un canal de
communication avec le point d'accès en utilisant le protocole L2CAP. Selon les besoins du service, un canal
supplémentaire, appelé RFCOMM, fonctionnant au-dessus du canal L2CAP pourra être établi afin de fournir un port série virtuel.
Il se peut que le point d'accès intègre un mécanisme de sécurité, appelé pairage (en anglais pairing), permettant de restreindre l'accès aux seuls utilisateurs autorisés afin de garantir un certain niveau d'étanchéité du picoréseau. Le pairage se fait à l'aide d'une clé de chiffrement communément appelée « code PIN » (PIN signifie Personal Information
Number). Le point d'accès envoie ainsi une requête de pairage au périphérique maître. Ceci peut la plupart du temps
déclencher une intervention de l'utilisateur pour saisir le code PIN du point d'accès. Si le code PIN reçu est correct, l'association a lieu.
En mode sécurisé, le code PIN sera transmis chiffré à l'aide d'une seconde clé, afin d'éviter tout risque de compromission.
HC-05 HC-06 module
The HC-05 has the ‘full’ firmware on it: many AT commands, and can be both master and slave module. The HC-06 firmware on the other hand only can be a slave device, with very limited AT commands.
Or in other words:
•The HC-05 module can build a connection to other modules. E.g. a Robot being a master and connecting to slave bluetooth module. Or in slave mode to make a wireless bridge to a notebook.
•The HC-06 module only can be a slave. This makes it only useful for say connecting a notebook as a master to a robot with a slave module e.g. for a wireless serial bridge.
HC-06 module
• Attention à l’interface entre le Tx/Rx du HC-06 et de l’Arduino. • Le HC-06 fonctionne en 3.3V • L’Arduino en 5V.
• Pour protéger le HC-06, le Rx
doit utiliser un pont diviseur en tension
Configurer le
HC-06
Mode AT
//********************************* **************/*
#include <SoftwareSerial.h> //Software Serial Port
#define RxD 10 //Pin 10 pour RX, PB2 sur votre board, a brancher sur le TX du HC-06 #define TxD 11 //Pin 11 pour TX, PB3 sur votre board, a brancher sur le RX du HC-06 SoftwareSerial BTSerie(RxD,TxD); void setup() { Serial.begin(9600); // Configuration du bluetooth pinMode(RxD, INPUT); pinMode(TxD, OUTPUT); BTSerie.begin(9600); } •Module HC-06 (4 pins) --> Arduino VCC –> +5V •GND –>GND •TXD –> Pin 10 – PB2 (RX) •RXD –> Pin 11 – PB3 (TX) void loop() { char recvChar;
//On lit caractere par caractere sur le BTSerie et on affiche sur le
Terminal Serie
if (BTSerie.available()) {
recvChar = BTSerie.read(); //lecture Serial.print(recvChar); //ecriture }
//On lit caractere par caractere sur le terminal et on affiche sur le BT Serie
if (Serial.available()) {
recvChar = Serial.read(); //lecture BTSerie.write(recvChar); //ecriture }
} Code Bluetooth.ino sur :
http://users.polytech.unice.fr/~ ferrero/TPelec2
Configurer le HC-06
Sur le moniteur série • Taper AT -> OK
• Version du module : AT+VERSION, Réponse : linvorV1.8 pour notre module.
• Changer la vitesse :AT+BAUD4 (4 pour 9600, 5 pour 19200, 6 pour 38400, 7 pour 57600)
La modification du baud rate prend effet seulement après redémarrage du module.
• Changer le nom : AT+NAMEnom ->setNAME
• Changer le mot de passe :AT+PINnnnn ->setPIN
Attention : Quand votre HC-06 est synchronisé avec un master, les commandes AT ne fonctionnent plus
Appairage de votre HC-06 sur votre téléphone
• Rechercher depuis le menu Bluetooth de votre téléphone les appareils disponibles
• Sélectionner votre HC-06 • Utiliser votre code PIN
Transférer une information de l’arduino vers
le master
• Télécharger sur votre smartphone l’application Bluetooth Serial Controller (sur un Windows phone, application BTTerminal)
• Faire connect et selectionner votre HC-06 • Passez en mode terminal
• Taper « Ping » sur votre moniteur série
• Ca doit s’afficher sur votre application android • Ecrivez « Pong » sur le terminal android
• Ca doit s’afficher sur le moniteur série.
Quand votre smartphone est connecté au HC-06, la LED ne clignote plus et reste allumée
Allumer une LED depuis le smartphone
Ajouter dans le code Arduino :
• Dans Setup : pinMode(13, OUTPUT);
• Dans Loop : à placer après recvChar = BTSerie.read(); //lecture
if(recvChar == ‘1’) {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LO }
• Configurez dans l’application android un bouton pour envoyer ‘1’. • Appuyez !
Utilisation de l’application BlueTooth Electronics
Cette nouvelle app vous permet de créer un panel avec des boutons, indicateurs, texte, graphe, etc …
Vous pouvez aussi accéder aux informations de l’accélérométre de votre smartphone
BlueTooth Electronics : Oscilloscope avec écran
sans fil
• Editez un nouveau panel
• Sélectionner dans graphs un roll 10*6 • Faite le glisser dans votre panel
• Connecter votre potentiomètre sur A0
• Synchroniser l’application avec votre arduino, • Run du panel avec le graph
void loop() { char recvChar; BTSerie.write("*G"); BTSerie.print(analogRead(A0)); BTSerie.write("*" ); delay(100); }
Utilisation de l’application
BlueTooth Electronics
• Quand le graphe fonctionne, ajouter un bouton dans le panel
• Configurer le code sur l’Arduino pour allumer la LED quand vous appuyez sur le bouton, et l’éteindre quand vous relâchez le bouton
Capteur de distance avec affichage sur le
smartphone
• http://www.keuwl.com/electronics/rduino
/bluet/05-ultrasonic-distance/
• Attention : il faut adapter le code à vos PIN de bluetooth