Interfacciare arduino con modulo bluetooth

Salve a tutti sono nuovo e da poco ho scoperto arduino ed è fantastico. Sto cercando di interfacciarlo con un modulo bluetooth HC-05. Il problema è questo: sono riusciuto a programmare il modulo usando arduino, quindi ho modificato nome password ecc. Vorrei accendere un led inviando i dati al serial monitor tramite bluetooth. Quando gli invio il dato si blocca e non riesco più a farlo ripartire devo riavviare il programma. Consigli? grazie in anticipo

char val; // variabile per dati ricevuti dalla porta seriale int ledpin = 13; // LED presente sulla scheda void setup() { pinMode(ledpin, OUTPUT); // Imposta il pin 13 (on-board LED) come OUTPUT Serial.begin(9600); // Inizializza la comunicazione seriale a 9600bps } void loop() { if( Serial.available() ) // se i dati sono disponibili per la lettura { val = Serial.read(); // legge il valore e lo salva nella variabile 'val' } if( val == 'L' ) // se il carattere ricevuto corrisponde a 'L' { digitalWrite(ledpin, HIGH); // accende il LED } else { digitalWrite(ledpin, LOW); // spegne il led } delay(100); // attende 100ms per la prossima lettura }

Questo è lo sketch che ho carico nel micro. Appena apro il seril monitor e provo a digitare un qualsiasi tasto si blocca. HELP

Ciao, qualcuno farebbe riferimento a fantomaGiche sfere di cristallo... :P

Sto cercando di interfacciarlo con un modulo bluetooth HC-05.

questo modulo è già connesso ad Arduino? Come?

Lo sketch che stai usando accende il led se da Seriale gli passi L, altrimenti lo spegne. Funziona, per funzionare.

Considera però, che se il modulo BT lo hai connesso alla seriale hw (digitla pin 0 e 1), non puoi usare impunemente la seriale dell'IDE (o altra) lato PC. Quindi, le soluzini sono due: - dopo il pairing con il modulo, invii ad Arduino il carattere utilizzando la seriale relativa al BT, - usi il modulo BT con una seriale software (NewSoftSerial, per esempio)

Quindi se userei questo metodo:
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);
void setup()
{
mySerial.begin(9600);
}

void loop()
{
mySerial.println(“Hello, world!”);
delay(1000);
}
dovrebbe funzionare?

Grazie per l’aiuto

dipende dalla seriale su cui "spari" il carattere.

Con il tuo primo sketch, con la seriale hw libera, potevi accendere/spegnere il led inviano il carattere da serial monitor dell'IDE, per esempio. Oppure inviando il carattere sulla seriale da device (pc o altro) BT collegato al modulo BT sul tuo Arduino, connesso a seriale HW (spero di essere stato chiaro).

In questo nuovo sketch, tu non stai più utilizzando la seriale HW, ma una SW. Quindi "Hello World" non lo vedrai stampato sul serial monitor dell'IDE, ma verrà inviato via seriale dal device attaccato ai pin 2 e 3.

L'utilizzare una seriale SW ti permette di avere libera la seriale HW per scopi di debug; es: stampa su seriale hw -e quindi nel serial monitor dell'ide- i dati che arrivano sulla seriale SW

Sei stato chiarissimo grazie di tutto :D

Considera però, che se il modulo BT lo hai connesso alla seriale hw (digitla pin 0 e 1), non puoi usare impunemente la seriale dell'IDE (o altra) lato PC. Quindi, le soluzini sono due: - dopo il pairing con il modulo, invii ad Arduino il carattere utilizzando la seriale relativa al BT, - usi il modulo BT con una seriale software (NewSoftSerial, per esempio)

Ho una domanda in merito a questo. Non riesco ad inviare ad arduino il carattere utilizzando la serial relativa al BT. Nel mio caso quando faccio il pairing viene assegnato al BT la COM10. Ora come invio il carattere che programma utilizzo. Se apro il serial monitor dell' IDE si blocca cosa faccio? Grazie per la risposta

ciao

Non riesco ad inviare ad arduino il carattere utilizzando la serial relativa al BT. Nel mio caso quando faccio il pairing viene assegnato al BT la COM10. Ora come invio il carattere che programma utilizzo.

per inviare un carattere alla COM10, puoi usare Putty o Hyperterminal (vado a memoria perchè, usando linux, mi basta una shell :D).

Se apro il serial monitor dell' IDE si blocca cosa faccio?

cosa si blocca?

Dovresti provare ad essere un poco più verboso: - puoi postare il codice che stai utilizzando ora? - come hai connesso attualmente il modulo BT ad Arduino?

Ho collegato il modulo nel seguente modo Modulo bt Arduino rx tx tx rx 3.3v 3.3v gnd gnd Arduino non è collegato tramite cavo usb ma ho usato un alimentatore esterno. Apro il serial monitor di arduino sulla com 10 scrivo il carattere e si blocca il programma e non riesco più a fare nulla.

Ho usato questo sketch:

char val; // variabile per dati ricevuti dalla porta seriale int ledpin = 13; // LED presente sulla scheda void setup() { pinMode(ledpin, OUTPUT); // Imposta il pin 13 (on-board LED) come OUTPUT Serial.begin(9600); // Inizializza la comunicazione seriale a 9600bps } void loop() { if( Serial.available() ) // se i dati sono disponibili per la lettura { val = Serial.read(); // legge il valore e lo salva nella variabile 'val' } if( val == 'L' ) // se il carattere ricevuto corrisponde a 'L' { digitalWrite(ledpin, HIGH); // accende il LED } else { digitalWrite(ledpin, LOW); // spegne il led } delay(100); // attende 100ms per la prossima lettura }

Come mi hai già detto non posso usare questo comando Serial.print ma dovrei usare una seriale software. Ma questo vale anche se arduino non è connesso col cavo usb al pc? La stessa cosa succede se usa un altro programma tipo real terminal. Imposto la com 10 velocità 9600 8 bit 1 di stop appena mando il comando (in questo caso un carattere) i programma non risponde pi+. Spero di averti fornito tutte le informazioni necessarie grazie per l'aiuto

Lo sketch l ho preso da quì www.adrirobot.it/parallax/modulo_bluetooth/easyBT_arduino.htm

Ciao, a parte che nel link che hai postato, c'è davvero tutto quel che serve. Non capisco come fai a capire che il programma ti si blocca, se non ti funziona mai.

Utilizzare una Seriale sw, ti permetterebbe invece di stamparti in console una serie di messaggi, che ti permetterebbero di capire a che punto del codice l'esecuzione si blocca. O che cosa arriva da BT ...

Il fatto è che con queste informazioni potrebbe essere anche il modulo bt ad avere problemi.. cerca di approfondire!

Hai ragione ma io non utilizzo lo stesso modulo utilizzo un modulo BT hC-05.
Il programma si blocca perchè non riesco nemmeno più a chiudere la finestra.
Ho utilizzato la sw per programmare il bluetooth e mi risponde come dovrebbe
Ho utilizzato questo sketch

#include <NewSoftSerial.h>

int pinRX = 6;
int pinTX = 5;
int pinAT = 8;
NewSoftSerial blue(pinRX, pinTX);
int pinLed = 13;

void commandAT(char *v)
{
int i=0;
while(v != ‘\n’)

  • {*
    _ blue.print(v*);_
    _
    i++;_
    _
    }_
    _
    blue.print(’\n’);_
    _
    }_
    void readResponse()
    _
    {_
    _
    int a = blue.available();_
    _
    Serial.print("Caratteri disponibili: ");_
    _
    Serial.println(a);_
    _
    if(a > 0){_
    _
    for(int i=0; i < a; i++){*_

* char data = (char)blue.read();*

* Serial.print(data);*
* delay(100);*

* }*
* }*

}
void setup()
{

* blue.begin(38400);*
* Serial.begin(9600);*
* Serial.println(“Inizializzo sistema…”);*
* pinMode(pinLed, OUTPUT);*
* pinMode(pinAT, OUTPUT);*

* //Valore ALTO per switchare in modalità AT*
* // il 34 sull’antenna*
* digitalWrite(pinAT, HIGH);*
* Serial.println(“pinAT attivo”);*

* //Comando AT da inviare*
* char s[] = “AT+ROLE=2\r\n”;*
* Serial.print("Scrivo comando: ");*
* Serial.print(s);*

* delay(50);*

* //Invio comando all’antenna*
* commandAT(s);*
* delay(50);*

* //Leggo la risposta*
* readResponse();*
}
void loop()
{

}

Grazie a voi per l'aiuto ho risolto avevi ragione era tutto ok. La cosa che non andava era il software BT del computer ora funziona alla grande.