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
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
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
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
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 |