Il protocollo Bluetooth 4.2 Low Energy

È possibile comunicare con i moduli Radio (Master o Slave) in prossimità tramite il BLE di un dispositivo come uno smartphone o tablet. È possibile quindi costruire applicazioni ad hoc sia per la prima configurazione dei dispositivi sia per la lettura e scrittura successiva.

Il protocollo utilizzato è un seriale FIFO sul servizio all’UUID:

  • 2456E1B9-26E2-8F83-E744-F34F01E9D701

e la caratteristica con lettura e scrittura all’UUID:

  • 2456E1B9-26E2-8F83-E744-F34F01E9D703

Una volta stabilita la connessione con il dispositivo è possibile leggere e scrivere informazioni e comandi tramite il seguente vocabolario di stringhe da inviare nella caratteristica FIFO a cui il device si è sottoscritto.

NB: prima di dare un comando è essenziale inviare il comando di LOGIN con password. Di default la password è 000000.

NB2: al termine di ogni comando è essenziale inviare il char “#” come terminatore di stringa (carriage return).

NB3: le stringhe inviate devono essere lunghe al massimo 20 byte, è consigliabile quindi splittare la stringa in pacchetti ed inviarli singolarmente, il carriage return (#) va inviato solo al termine dell’ultimo pacchetto.

NB4: ad ogni comando corretto il dispositivo risponde “OK”, ad ogni messaggio errato risponde “KO”.

Comandi Bluetooth

COMANDO FUNZIONE
LOGIN:XXXXXX Login da fare inizialmente prima di inviare altri comandi, psw di default “000000”
B_KEY:XXXXXX Cambia password di Login, 6 caratteri (es: B_KEY:123456)
B_NAME:XXXXX Set nome periferica BLE (es: B_NAME:Master1)
CONFIG_REQ: Vedi sezione MQTT “Topic generici del master”
FW_VERSION_REQ: Ritorna la versione del firmware
RESET: Riavvia il dispositivo
AUTO_UPDATE_ON: Abilita gli aggiornamenti Firmware OTA via MQTT
AUTO_UPDATE_OFF: Disabilita gli aggiornamenti Firmware OTA via MQTT
SET_APP_ID:XXXXXXX Set del nome dell’ecosistema
W_KEY:XXXXXXXX Set password Wi-Fi  (es: W_KEY:miaretewifi) min 6 caratteri
W_SSID:XXXXXXXX Set SSID rete Wi-Fi (es: W_SSID:password01)
SERVER:XXXXXXXXXX Set indirizzo MQTT (es: SERVER:192.168.0.2:1883)
MQTT_USER:XXXXXXX Set username MQTT se necessario
MQTT_PASS:XXXXXXXX Set password MQTT se necessario
WIFI: Restituisce lo stato della connessione: “WIFI OK” / “WIFI FAILURE” errore nell’SSID o nella password Wi-Fi / “WIFI MQTT NOT CONNECTED rete Wi-Fi corretta ma non trova il broker”
SET_RF_MODE:X 0= Master, 1= Slave,  2= Tag
SET_RF_M_ID:XXXXXXXX Da inviare allo Slave per indicare il Mac Address del Master a cui si deve abbinare (es: SET_RF_M_ID:00124B00117AB407)
SET_GROUP_ID:XXXXXXXX Assegna alla periferica l’appartenenza a un gruppo specifico
RF_LINK: Indica lo stato della connessione RF tra Master e Slave (GOOD, NORMAL, LOW, LOST)
SET_TX_POWER:XX Imposta la potenza di trasmissione TX da -10 a 14
SET_TAG_TIMER: Imposta il timer di vitalità del Tag
SET_TAG_G_THR: Imposta la soglia accelerometro per alert: 0 soglia non abilitata, 1 massima sensibilità, max 127 che corrisponde a 1G di accelerazione gravitazionale. Per piccoli movimenti 6 è un buon valore.
READ_ID:XXXXXXXXXXXXX_X Restituisce i registri del modulo di espansione, le X corrispondono al Mac address del Master e dopo l’underscore il numero del modulo di espansione.
READ_RF_ID:0000000000000_X Restituisce i registri del modulo di espansione appartenente a uno Slave, le X corrispondono al Mac address dello Slave e dopo l’underscore il numero del modulo di espansione.
WRITE_ID:XXXXXXXXXXXXXXXX_X_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Scrive sul registro dei moduli di espansione del Master, le X rappresentano il Mac address del master, il modulo di espansione, i 32 byte del registro. Verranno letti solo i byte abilitati alla scrittura quindi quelli di lettura non verranno considerati.
WRITE_RF_ID:XXXXXXXXXXXXXXXX_X_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Scrive sul registro dei moduli di espansione di uno Slave, le X rappresentano il Mac address dello Slave, il modulo di espansione, i 32 byte del registro. Verranno letti solo i byte abilitati alla scrittura quindi quelli di lettura non verranno considerati.

Registri di scrittura e lettura BLE  

Modulo Environment

Protocollo Bluetooth 4.2: modulo Environment

REGISTRO FUNZIONE VALORE
18 Out Dgt 1 LED B (bit meno significativo)

LED G (bit successivo)

Null (gli altri bit non contano)

24 Temperatura 8 bit (MSB= +/-, LSB= 0,5, 6 bit di dati da 0 a 63) xx.x C°
25 Umidità 8 bit xx %
26 + 27 Luminosità 16 bit xxx lux
28 Accelerometro X, 8 bit G (1G = 63, -1G = – 63)
29 Accelerometro Y, 8 bit G (1G = 63, -1G = – 63)
30 Accelerometro Z, 8 bit G (1G = 63, -1G = – 63)
31 + 32 Giroscopio X, 16 bit °/s gradi al secondo
33 + 34 Giroscopio Y, 16 bit °/s gradi al secondo
35 + 36 Giroscopio Z, 16 bit °/s gradi al secondo
37 Soglia rilevazione accelerometro 0 = no soglia, 1-255 soglia
38 + 39 Registro di Fault, 16 bit
40 Priorità di Lettura, 8 bit
41 Priorità di Scrittura, 8 bit

NB: I registri Fault si resettano dopo l’avvenuta lettura degli stessi.

Modulo Energy Meter

Comandi protocollo Bluetooth 4.2 per Energy Meter

REGISTRO FUNZIONE VALORE
12 + 13: ADC 1+ADC2 Lettura corrente, 16 bit Ampere
18 Out Dgt 1 LED B (bit meno significativo)

LED G (bit successivo)

Null (gli altri bit non contano)

19 Out Dgt 2 Attivazione Relè (bit meno significativo) AC/DC (0 = AC, 1=DC )
38 + 39 Registro di Fault, 16 bit
40 Priorità di Lettura, 8 bit
41 Priorità di Scrittura, 8 bit

Modulo Expansion

Expansion e protocollo Bluetooth 4.2

REGISTRO FUNZIONE VALORE
11 In Dgt 2 Ingresso A e B
18 Out Dgt 1 LED B (bit meno significativo)

LED G (bit successivo)

Null (gli altri bit non contano)

22 + 23 Max Rpm value 16 bit (8 se 2UP)
24 + 25 Set numero impulsi/giro, 16 bit (8 se 2UP)
26 Tipo di encoder, 8 bit
27+28+29+30 Contatore totale, 32 bit
31+32+33+34 Contatore parziale, 32 bit, 16 se 2UP
35 + 36 Velocità, 16 bit, 8 se 2UP rpm
38 + 39 Registro di Fault, 16 bit, overflow parziale, overflow totale, max rpm raggiunti, encoder fault
40 Priorità di Lettura, 8 bit
41 Priorità di Scrittura, 8 bit

NB: Il registro di conteggio totale non potrà mai essere azzerato e il valore verrà salvato in memoria EEPROM ogni 30 minuti. Impostando come tipologia di encoder la modalità “2UP” i registri dei contatori si dividono in due al fine di poter dare informazioni sui singoli contatori. Il contatore totale invece rimane a 32 bit sempre in incremento.

Modulo DALI

Protocollo Bluetooth 4.2 per il Modulo Dali.

REGISTRO FUNZIONE VALORE
18 Out Dgt 1 LED B (bit meno significativo)

LED G (bit successivo)

Null (gli altri bit non contano)

24 + 25 Under development
26 + 27 Dali Master message 16 bit
28 + 29 Dali Slave message 16 bit
30 + 31 ON/OFF, bit meno significativo seguito da intensità luminosa
35 + 36 Velocità, 16 bit, 8 se 2UP rpm
38 + 39 Registro di Fault, 16 bit
40 Priorità di Lettura, 8 bit
41 Priorità di Scrittura, 8 bit