Arduino: le Bluetooth (SPA311)

Wikis > Les Tutoriels > Arduino: le Bluetooth (SPA311)

L’interface Bluetooth SPA311

Comment faire fonctionner le Uno ou Due avec une interface Bluetooth (SPA311) ?

Le SPA311i est une interface Bluetooth fonctionnant sous 3.3V.

SPA311

Les connections sont très simple: pour le Uno et le Due

  • GND
  • 3.3V (attention: pas le 5V)
  • SPA311 J6-8 (CTS) — R(2k) — GND
  • SPA311 J6-9 (TxD)
    • —> Due RX1 (pin 19)
    • —> Uno RX (pin 0, un niveau de 3.3V est compatible)
  • SPA311 J6-11 (RxD)
    • <— Due TX1 (pin 18)
    • <— pont diviseur 10k/20k <— Uno TX (pin 1, niveau 5V ramené à 3.3V par le pont diviseur)

Ensuite, il faut configurer l’Arduino Uno (Serial) ou Due (Serial1):

void setup() {
  // Uno - attention: ne pas utiliser le port serie USB en même temps...
  Serial.begin(57600); // Bluetooth port
  Serial.println("Hello, World !");
  // Due
  Serial1.begin(57600); // Bluetooth port
  Serial1.println("Hello, World !");
  }

Attention dans le cas de l’utilisation de « Serial » pour l’Uno: il peut y avoir conflit avec le port série USB (reprogrammation).

Comment tester ?

Très simple: avec un tel Android, on peut utiliser par ex « SENA BTerm ».

Avec un PC, on peut aussi utiliser Putty ou autre. Le résultat est le même.

Il suffit de se rechercher l’interface BT, puis d’ouvrir le ‘terminal’.

L’application Android

C’est encore mieux d’avoir une appli Android pour communiquer avec l’Arduino…

Sous Windows, on peut installer l’environnement de développement « adt-bundle-windows« , qui intègre « eclipse« .

Le plus simple est de partir de l’exemple « Hello, world », puis de rajouter ce dont on a besoin après. Comme d’habitude.

2 fichiers vont être important: activity_xxx.xml (décrivant l’aspect graphique de l’application) et le source java de l' »Activity » (crées par défaut, décrivant comment l’aplication va fonctionner).

Un « slider » va nous être utile: on l’insère donc dans l’interface (id: ‘@+id/seekRed’, max:255 par ex)

Dans le source java, 3 routines vont devoir être changées:

onCreate()

Cette routine est lancée au lancement (création)de l’application

  • on va créer un ‘listener’ (OnSeekBarChangeListener) qui sera activé lors du changement (par l’utilisateur) de la valeur du slider, dans la routine onProgressChanged.
  • L’action consistera alors à lire la valeur du slider (entre 0 et 255) et à l’envoyer grâce au stream ouvert vers le BT (voir ci-dessous)

onPause()

Cette routine est appelée lors de la fermeture / désactivation de l’application.

  • la fermeture du stream et du socket BT y est faire – pour ne pas monopoliser la liaison pour une durée inconnue.

onResume()

Cette routine est appelée lors de la réouverture / activation de l’application.

  •  L’interface SPI311 est connectée (son adresse 00:12:F3:08:EE:DC est connue)
  • Un socket est crée
  • Un stream est ouvert (en sortie: smartphone -> Arduino)

Note: il faut auparavant appairer l’interface BT avec le smartphone pour pouvoir se connecter (même si on connait son adresse).