BLE con Bluno Beetle

luca 25/01/2018 0

Qualche tempo fa l’amico Mauro Alfieri mi ha mostrato una interessante scheda di sviluppo prodotta da DFRobot e chiamata Bluno Beetle (ora Beetle Ble). Mi è sembrata la scheda perfetta per iniziare a “giocare” con la tecnologia Bluetooth Low Energy (BLE) e quindi ne ho ordinato un esemplare direttamente dallo store di DFRobot.

Mi aspettavo di ricevere il solito pacco anonimo con la scheda all’interno di un sacchetto di plastica antistatica; invece DFRobot spedisce le proprie schede in una elegante scatolina di cartone, proteggendole all’interno con della spugna:

bluno-011 bluno-012

Bluno Beetle è davvero di dimensioni contenute ed è quindi ideale per progetti wearable:

bluno-013 bluno-014

Ma di cosa si tratta? Semplificando è una scheda compatibile con Arduino Uno (ospita infatti il micrcontrollore ATmega328P) a cui è stato aggiunto il chip CC2540 di Texas Instruments come controller USB e BLE. I due chip comunicano tramite interfaccia seriale:

bluno-001

In realtà il chip CC2540 è un vero e proprio microcontrollore che esegue un firmware sviluppato da DFRobot. E’ possibile configurare tale firmware utilizzando comandi AT. Normalmente il firmware è in transparent mode, ovvero fa da “ponte” tra le interfacce USB/BLE e il microcontrollore ATmega. Collegando quindi la Bluno al PC e attivando il monitor seriale, ogni carattere inviato viene inoltrato all’ATmega e viceversa.

Per utilizzare comandi AT, è necessario per prima cosa mettere il firmware in AT mode, inviando 3 volte il carattere + (senza terminatore di riga). Il firmware conferma la nuova modalità con la scritta “Enter AT Mode”:

bluno-006

Possiamo ora inviare i comandi, terminandoli con il terminatore di riga Windows (CRLF). Ad esempio per visualizzare la versione del firmware:

bluno-007

Per tornare in transparent mode, dobbiamo inviare il comando AT+EXIT.

Drivers

E’ possibile che – collegando per la prima volta una scheda Bluno Beetle ad un PC Windows – questa non venga correttamente riconosciuta:

bluno-003

I driver corretti si trovano all’interno della cartella dell’IDE di Arduino. E’ sufficiente effettuare una installazione manuale indicando a Windows tale percorso:

bluno-004

Windows riconoscerà il nuovo dispositivo come Arduino Uno:

bluno-005

Arduino

Come detto, se il firmware in esecuzione sul chip CC2540 è in transparent mode, tramite il collegamento USB possiamo raggiungere direttamente il chip ATmega328P. Questo significa che è possibile programmarlo dall’IDE di Arduino senza particolari problemi, scegliendo Arduino Uno come board e la corretta porta seriale:

bluno-008

BLE e transparent mode

In transparent mode Bluno trasmette via BLE ogni byte ricevuto da Arduino e – viceversa – invia ad Arduino ogni byte ricevuto via BLE.

In questo articolo vediamo come utilizzare l’applicazione demo fornita da DFRobot, nel successivo vi spiegherò invece come sviluppare una vostra applicazione per interagire con la scheda Bluno Beetle via BLE.

Per i telefoni Android, è possibile installare direttamente l’apk dell’applicazione BlunoBasicDemo (applicazione di cui è anche disponibile il codice sorgente). Nello stesso repository Github è presente anche il codice sorgente dell’applicazione per iPhone.

Carichiamo il seguente sketch sulla scheda:

unsigned long previous_time = 0;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
 
  if (Serial.available() > 0) {
    int incomingByte = Serial.read();
    Serial.print("New byte received: 0x");
    Serial.println(incomingByte, HEX);
  }
  unsigned long actual_time = millis();
  if(actual_time - previous_time > 10000) {
    Serial.println("Hello world!");
    previous_time = actual_time;
  }
}

Lo sketch legge i bytes in ingresso (provenienti dall’app) e ne rimanda all’app il codice esadecimale. Ogni 10 secondi lo sketch inoltre invia all’app la scritta Hello world!.

Eseguiamo l’app. Dopo aver cliccato il pulsante Scan, possiamo selezionare la scheda Bluno:

bluno-009

Ogni 10 secondi vedremo apparire la scritta HelloWorld!. Possiamo anche provare ad inviare un carattere (es. la lettera “a”); vedremo la risposta di Arduino (0x61 è proprio il codice esadecimale nella tabella ASCII del carattere “a”):

bluno-010

HID mode

Bluno supporta la modalità HID (Human Interface Device). In tale modalità Bluno simula una periferica di input (tastiera, mouse…) collegata via BLE.

Il comando AT per attivare tale modalità è:

  • AT+FSM=FSM_HID_USB_COM_BLE_AT

Attivata la modalità HID, possiamo inviare uno o più “tasti” con il comando:

  • AT+KEY=

possiamo inviare contemporaneamente fino a 3 tasti diversi, concatenando i loro codici con il carattere +. I codici da utilizzare, in base alla tipologia (page) di dispositivo HID, sono elencati nelle specifiche USB.

Il comando AT+KEY notifica la pressione di un tasto sulla tastiera. E’ quindi necessario dopo qualche istante inviare il comando AT+KEY=0 per indicare che il tasto è stato rilasciato; in caso contrario sul PC associato a Bluno vedremo apparire più volte il carattere inviato!

Debug mode

Tramite due comandi AT è possibile attivare la modalità debug del firmware. Questa modalità consente di ricevere – tramite la connessione USB – copia di tutti i pacchetti inviati e ricevuti tramite la connessione BLE.

I due comandi da utilizzare sono:

  • AT+BLUNODEBUG=ON (copia i messaggi inviati dall’ATmega)
  • AT+USBDEBUG=ON (copia i messaggi ricevuti via BLE)

bluno-002

Di default la prima modalità è attiva, mentre la seconda è disattiva. Possiamo verificarlo se carichiamo lo sketch riportato sopra: nel monitor seriale saranno visibili le scritte Hello World! mentre non saranno visibili i caratteri inviati dall’app.

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi