[HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth

Ciao

io però non ho ancora capito una cosa, mettiamo che siano HC-05 ho capito che devo collegare RX e TX al 2 e 3 di arduino, ma poi? il pio11 con la resistenza dove lo metto, al 4 di arduino? e il vvd e gnd devo collegarli?

Ciao

come nome mi visualizza solo JY-MCU

cmq, qui:
http://www.dankrill.com/lab/index.php?content=procedures&set=b&item=11
si parla delal versione 1.02, e il modulo ha fw hc06, il "linvor".
Quindi non c'è la possibilità di aggiornare fw.

La cosa che puoi fare per verificare ciò, è connetterlo ad Arduino.
Il piedino TX lo porti al piedino digitale 2 di Arduino, RX lo porti al piedino digitale 3 di Arduino (magari mettendoci in mezzo una resistenza da 2k2), VCC a 5v di Arduino e GND a GND di Arduino.
Poi carichi lo sketch che avevi postato qualche riga fa, e ti apri il Serial Monitor.

Quindi prova ad impartire il comando:
AT
dovrebbe risponderti OK
Se questo avviene, prova con:
AT+VERSION
e posta qui la risposta.

Lascia stare gli altri pin, ti son sufficienti questi 4.
L'importante è che il modulo non sia associato con nulla.

pitusso:
Ciao

come nome mi visualizza solo JY-MCU

cmq, qui:
Krill Labs - Using the BT Board v1.02 JY-MCU
si parla delal versione 1.02, e il modulo ha fw hc06, il "linvor".
Quindi non c'è la possibilità di aggiornare fw.

La cosa che puoi fare per verificare ciò, è connetterlo ad Arduino.
Il piedino TX lo porti al piedino digitale 2 di Arduino, RX lo porti al piedino digitale 3 di Arduino (magari mettendoci in mezzo una resistenza da 2k2), VCC a 5v di Arduino e GND a GND di Arduino.
Poi carichi lo sketch che avevi postato qualche riga fa, e ti apri il Serial Monitor.

Quindi prova ad impartire il comando:
AT
dovrebbe risponderti OK
Se questo avviene, prova con:
AT+VERSION
e posta qui la risposta.

Lascia stare gli altri pin, ti son sufficienti questi 4.
L'importante è che il modulo non sia associato con nulla.

ok grazie, ora provo!

comunque sui miei BT c'è scritto versione 1.04, magari sono più evolute :smiley:

ok fatto, mi dice Livor V1.5

Ciao

mi dice Livor V1.5

ecco, slave è e slave rimane ]:slight_smile:

ecco, lo sapevo :slight_smile: la solita fortuna... tu non è che mi puoi linkare un modulo master da comprare? magari già master così non vi rompo più :stuck_out_tongue:

ma come mai nella descrizione fanno riferimento al fatto che si possa switchare quando non si può?

Ciao,

come mai nella descrizione fanno riferimento al fatto che si possa switchare quando non si può

penso che abbiano copia-incollato la descrizione di un altro modulo..
Nel dubbio, puoi anche provare, danni non ne fai.

Per eventuali acquisti, ti basta essere sicuro che sia un HC-05 oppure qualsiasi altro modulo (HC-06 o HC-07) ma configurato Master.
Qui avevo postato un paio di link:

ok grazie!

mi spiegheresti solo che vuol dire che bisogna impostare il pio11 come high e a cosa dovrei collegarlo per fare ciò?

per mettere un pin ad high di solito si mette una resistenza da 10K dal pin a VCC(5v 3v, a seconda della tensione di lavoro sensore)

ciao

mi spiegheresti solo che vuol dire che bisogna impostare il pio11 come high e a cosa dovrei collegarlo per fare ciò?

innanzitutto verifica se il pin KEY del tuo connettore corrisponde al pin in questione.
Sulla guida, prima parte, trovi la piedinatura del modulo, così puoi vedere dove si trova.

Se è connesso direttamente, sei a posto, altrimenti devi saldarci un filo.

Quando hai preparato tutto, alimenti il modulo.
Solo allora connetti questo piedino ai 5v di arduino con una resistenza da 2k2 (sufficiente, pure una 10k va bene) o direttamente al piedino 3v3.

A questo punto, puoi provare ad utilizzare (sempre con lo sketch prima caricato) i comandi per il cambio modalità.

@pitusso
che pazienza che hai,complimenti :grin:

pitusso:
ciao

mi spiegheresti solo che vuol dire che bisogna impostare il pio11 come high e a cosa dovrei collegarlo per fare ciò?

innanzitutto verifica se il pin KEY del tuo connettore corrisponde al pin in questione.
Sulla guida, prima parte, trovi la piedinatura del modulo, così puoi vedere dove si trova.

Se è connesso direttamente, sei a posto, altrimenti devi saldarci un filo.

Quando hai preparato tutto, alimenti il modulo.
Solo allora connetti questo piedino ai 5v di arduino con una resistenza da 2k2 (sufficiente, pure una 10k va bene) o direttamente al piedino 3v3.

A questo punto, puoi provare ad utilizzare (sempre con lo sketch prima caricato) i comandi per il cambio modalità.

ok, finalmente ora ho capito... grazie mille

Madwriter:
@pitusso
che pazienza che hai,complimenti :grin:

infatti

X lesto, per mettere un pin a 1 basta metterlo a vcc, la resistenza serve nel caso debba connettersi sia a 1, che a 0 alternativamente.

Per il discorso master ho postato un link dove si descrive la sostiyuzione del firmware, ma nel tuo caso conviene ricomprarlo.
In pratica tutti i moduli si possono riflashare per diventare hc05

ho progammato un HC05 con i comandi :

AT+ROLE=0
AT+UART=57600,0,0

Quindi come uno slave che si collega a 57600bps e con un 1 bit stop e parity none.

Ora stavo inviando da arduino al cellulare, ma ho notato che l'informazione viene alterata: se voglio inviare il carattere 0xAA (170 decimale), nella controparte sull'app lo vedo come un FFFFFFFFFFFFFFAA (-86 decimale), come se al posto degli 00 ci siano FF, può essere una configurazione del bluetooth? io non ci trovo nulla, è una questione di party bit\stop ?

ok, ho scoperto l'inghippo, c'è una divergenza tra tipi dato.
Per arduino il byte è da 0 a 255, mentre i java è da -128 a 127, quindi vedevo il dato sfalsato.
per vedere il dato corretto bisogna dichiararlo come int, oppure applicare l'operazione

valhex = (mybite & 0x00FF)

estraendo così correttamente gli ultimi 2 bit meno significativi.

estraendo così correttamente gli ultimi 2 bit meno significativi.

?? che significa?
la speigazione è che in java non esistono gli unsigned, e quando fai il cast automatico java prende il bit più a sinistra e lo usa come bit del segno.
facendo l'and bitwise con 0xff (o 0x00ff, stessa roba) invece non fai entrare in campo il cast, 0xFF, anche se vale "solo" 255 è un int, e l'and logico non necessita di cast, ma semplicemente si "accontenta" di fare l'and sui bit della variabile di tipo più piccolo.
Non ho provato, ma in teoria anche questo dovrebbe funzionare;

valhex = (mybite | 0)

lesto:

estraendo così correttamente gli ultimi 2 bit meno significativi.

?? che significa?
la speigazione è che in java non esistono gli unsigned, e quando fai il cast automatico java prende il bit più a sinistra e lo usa come bit del segno.
facendo l'and bitwise con 0xff (o 0x00ff, stessa roba) invece non fai entrare in campo il cast, 0xFF, anche se vale "solo" 255 è un int, e l'and logico non necessita di cast, ma semplicemente si "accontenta" di fare l'and sui bit della variabile di tipo più piccolo.
Non ho provato, ma in teoria anche questo dovrebbe funzionare;

valhex = (mybite | 0)

alla fine ho risolto usando int al posto di byte nel programma, grazie

Ho una nuova sfida per chi ha il coraggio di affrontarla...

Ho 2 moduli, uno Master ed una Slave.
I due però non si devono collegare tra loro.
Quando provo a collegarmi allo slave da cellulare non riesco, ma se il master non è alimentato invece sì. Ne ho quindi dedotto che fosse il master a collegarsi allo slave prima di me tenendomi la periferica occupata.
Usando i vari comandi di eliminazione AT+RMAAD e AT+RMSAD sono riuscito ad eliminare l'elemento dalla pairing list, infatti controllando con AT+ADCN? e AT+RMAD? non mi indica alcun device.
Però con mia grande sorpresa il problema rimane.

Cosa potrebbe essere? se entrambi hanno la stessa chiave il master si può collegare allo slave anche se non ha l'item nella pairing list? come faccio ad impedirglielo ?

grazie mille ciao.

Ciao

Quando provo a collegarmi allo slave da cellulare non riesco

se provi a collegarti da pc, ci riesci?