domenica 7 dicembre 2014

Olimex nRF8001 ed Arduino


Questi moduli Bluetooth Low Energy che permettono di far colloquiare Arduino e smartphone si trovano per pochi euro, ma ho trovato che la documentazione, per quanto disponibile, non fosse proprio user-friendly.
Prima di arrivare alle indicazioni sulle connessioni, per esempio, occorre scavare abbastanza nel codice negli esempi. 
  Tell the ACI library, the MCU to nRF8001 pin connections.
  The Active pin is optional and can be marked UNUSED
  */
...
  aci_state.aci_pins.reqn_pin   = 9; //SS for Nordic board, 9 for REDBEARLAB_SHIELD_V1_1
  aci_state.aci_pins.rdyn_pin   = 8; //3 for Nordic board, 8 for REDBEARLAB_SHIELD_V1_1
  aci_state.aci_pins.mosi_pin   = MOSI;
  aci_state.aci_pins.miso_pin   = MISO;
  aci_state.aci_pins.sck_pin    = SCK;
...

Siccome la board Olimex è pensata per lavorare con livelli a 3.3V, è opportuno ridurre la tensione di quanto viene trasmesso dall'Arduino alla scheda BT. Ci sono diversi modi per farlo, ma quello più veloce, banale e che non richiede componenti specifici è quello di utilizzare un partitore resistivo.
Le due resistenze non hanno dei valori obbligatori a patto che R1 sia la metà di R2.
Nel mio cassettino ho trovato 100 Ohm e 200 Ohm che funzionano perfettamente allo scopo.

Consiglio questa lettura a chi volesse approfondire.
Ovviamente il problema non si pone se utilizziamo un simil-Arduino che lavori direttamente con i livelli più bassi.
Lo schema completo delle connessioni quindi diventa questo:




Gli esempi per Arduino si trovano sul GitHub di Nordic Semiconductors.
Caricando "ble_A_Hello_World_Program" sull'Arduino si potranno mandare dei messaggi di testo via Bluetooth al vostro cellulare su cui sia stata installata l'app nRF UART.

Nessun commento:

Posta un commento