Comunicazione Bluetooth Low Energy con The Tactigon

The TactigonCiao! Eccoci alla seconda parte della guida sulle funzioni base di The Tactigon, la scheda di prototipazione wearable programmabile tramite l’IDE Arduino. Oggi vedremo come le librerie offerte da Next Industries permettono di comunicare tramite Bluetooth Low Energy con The Tactigon. Per oggi ci limiteremo alla modalità PERIPHERAL, ovvero gli faremo esporre una caratteristica che verrà aggiornata con nuovi dati non appena disponibili. Una unità CENTRAL sarà necessaria per la lettura, ed utilizzeremo il nostro smartphone con l’applicazione gratuita per Android BLE Scanner.

Lo sketch è molto semplice ma ci permetterà di utilizzare alcune delle librerie fornite nel pacchetto Arduino che abbiamo installato in questo articolo. Se ci è sfuggito, possiamo andare a leggere una piccola recensione della scheda di prototipazione in oggetto, con tanto di scheda tecnica nel post dedicato e la guida sull’output su monitor seriale USB pubblicata la settimana scorsa.

Comunicazione Bluetooth Low Energy con The Tactigon

Requisiti

Questa volta, oltre alla scheda di prototipazione wearable The Tactigon, abbiamo bisogno di uno smartphone Android dotato di Bluetooth Low Energy, di un cavo micro USB per la connessione della scheda al nostro PC e dell’IDE Arduino configurato come abbiamo visto nell’articolo dedicato.

Sketch

L’utilizzo dell’Bluetooth Low Energy con The Tactigon è reso estremamente semplice dalle librerie fornite da Next Industries. Anche se in questo caso utilizziamo la modalità TACTIGON_BLE_PERIPHERAL, è possibile configurare il dispositivo anche in modalità TACTIGON_BLE_CENTRAL, cosa che ci permetterà di far dialogare due schede The Tactigon, oppure interrograre sensori esterni.

Qui potete leggere il codice sorgente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/** Questo sketch di esempio mostra come inviare     **/
/** i valori di pitch, roll e yaw (Angoli di Eulero) **/
/** tramite Bluetooth Low Energy                     **/
 
#include "tactigon_IMU.h"
#include "tactigon_led.h"
#include "tactigon_BLE.h"
 
const uint8_t buffSize = 12;
uint8_t buff[buffSize];
 
T_QUAT qMeter;
T_QData qData;
 
T_Led rLed, bLed, gLed;
 
T_BLE bleManager;
UUID uuid;
T_BLE_Characteristic bleChar;
 
int ticks, ticksLed, stp;
 
void setup() {
  rLed.init(T_Led::RED);
  gLed.init(T_Led::GREEN);
  bLed.init(T_Led::BLUE);
 
  rLed.off();
  gLed.off();
  bLed.off();
  ticks = 0;
  //Inizializzazione Ruolo BLE
  bleManager.InitRole(TACTIGON_BLE_PERIPHERAL);
  //Inizializzazione Nome BLE
  bleManager.setName("TACTI");
  //Dichiarazione del nome UUID
  uuid.set("7ac71000-503d-4920-b000-ADE000000001");
  bleChar = bleManager.addNewChar(uuid, buffSize);
}
 
void IMUUpdate() {
  //Otteniamo i dati dall'IMU
  qData = qMeter.getQs();
 
  //Li carichiamo nel buffer buff
  memcpy(&buff[0], &qData.roll, sizeof(float));
  memcpy(&buff[4], &qData.pitch, sizeof(float));
  memcpy(&buff[8], &qData.yaw, sizeof(float));
  bleChar.update(buff);
}
 
void loop() {
  //Il codice viene eseguito ad 50 Hz
  if (GetCurrentMilli() >= (ticks + (1000 / 50))) {
    ticks = GetCurrentMilli();
    IMUUpdate();
  }
 
  //Cambiamo colore al LED
  if (GetCurrentMilli() >= (ticksLed + (1000 / 1))) {
    ticksLed = GetCurrentMilli();
    if (stp == 0) {
      rLed.on();
      gLed.off();
      bLed.off();
    }
    else if (stp == 1) {
      rLed.off();
      gLed.off();
      bLed.on();
    }
    else if (stp == 2) {
      rLed.off();
      gLed.on();
      bLed.off();
    }
    stp = (stp + 1) % 3;
  }
}

Descrizione

 alla frequenza di 50 Hz, tramite la funzione

IMUUpdate()

, andiamo ad aggiornare i valori di Roll (Rollio), Pitch (Beccheggio) e Yaw (Imbardata), valori che formano gli angoli di Eulero. Andiamo a riempire il buffer copiando al suo interno i valori di queste variabili. Con il metodo

update(uint8_t buffer)

andiamo a comunicare alla libreria Bluetooth Low Energy la disponibilità di nuovi dati da inviare.

Alla frequenza di 1 Hz, invece, andiamo a cambiare il colore del LED rgb, con una semplice macchina a stati.

Connessione da Cellulare

Comunicazione Bluetooth Low Energy con The Tactigon, connessione a BLE Scanner

Attiviamo ora il Bluetooth sul nostro smartphone, e lanciamo l’applicazione BLE Scanner. Dovremmo essere in grado di rilevare il nostro dispositivo TACTI (nome di default). Tappiamo sul bottone CONNECT e saremo in grado di analizzare le caratteristiche esposte dal nostro The Tactigon.

 

 

 

Comunicazione Bluetooth Low Energy con The Tactigon, lettura dei valori tramite BLE ScannerSotto la voce “CUSTOM SERVICE” possiamo trovare la CUSTOM CHARACTERISTIC definita all’interno dello sketch caricato. Per visualizzare i dati trasmessi tappiamo su “R”. Se invece vogliamo essere notificati e quindi abbonarci a quella caratteristica per leggerne ogni aggiornamento facciamo tap sulla “N”.

 

 

 

Conclusioni

Come potete vedere trasmettere dei dati tramite Bluetooth Low Energy con The Tactigon è semplicissimo grazie alle librerie che si occupano del dialogo tra microcontroller STM32 e BlueNRG.

 

Download

Qui è possibile scaricare il file sorgente dello sketch analizzato in questo articolo.

Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

This site uses Akismet to reduce spam. Learn how your comment data is processed.