Salve a tutti, avrei dei problemi con il collegamento seriale bluetooth fra Android ed Arduino(con modulo HC-06).
Il modulo è connesso ai pin 0 e 1, rispettivamente l' RXD con il TX ed il TXD con l'RX di Arduino.
Ho usato varie app su android fra le quali:
-BTInterface
-SENA BTerm
-Bluetooth SPP
-ed altre...
Tutte mi segnalano la connessione riuscita e anche i led del modulo BT smettono di lampeggiare al collegamento effettuato, ma ogni volta che invio un comando Arduino non reagisce in alcun modo.
Ecco qui il codice che sto utilizzando:
Come già discusso più volte in altri thread, purtroppo ... questi moduli Bluetooth NON si possono collegare ai pin 0 e 1 di Arduino UNO, ma occorre creare una seriale virtuale con la SoftwareSerial , ad esempio sui pin 10 e 11, e collegare il modulo su di essa.
Prova e ... vedrai che va
Guglielmo
P.S. : In questo modo la vera seriale rimarrà libera e la potrai usare, con il Monitor di Arduino IDE, per il debug
Grazie mille per la tempestiva risposta, ma ho ancora scarsa competenza in Arduino ed avrei delle domande se possibile:
Usando come codice l'esempio:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
void setup()
{
Serial.begin(57600);
while (!Serial) {
; // il mio è un Arduino LEONARDO
}
Serial.println("Goodnight moon!");
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
-Nel monitor di arduino IDE mi risulta solo la scritta "Goodnight moon!" e nient'altro e nessun segno del collegamento con il dispositivo Android, cosa ho omesso?
-Non ho ben chiaro come distinguere quale sia il corretto numero della velocità di connessione della porta seriale bluetooth(4800,9600,57600), come funziona?
-A livello informativo, come mai questi moduli BT non funzionano se collegati ai pin 0 ed 1 di Arduino(nel mio caso LEONARDO)?
Allora, normalmente quei moduli arrivano programmati per lavorare con una velocità di 9600 baud (... indica quanti bit al secondo il modulo trasmette), quindi ... la SoftwareSerial andrà aperta a 9600 baud :
mySerial.begin(9600);
Poi ... devi collegare il Pin TX del HC-06 al Pin che hai definito RX su Arduino (mi pare tu stia usando il 10) ed il Pin RX del HC-06 al pin che hai definito di TX su Arduino (e mi sembra tu stia usando il pin 11) quindi :
TX HC-06 ---> RX Arduino
RX HC-06 <--- TX Arduino
Programmino veloce veloce (... ma ampiamente collaudato ) per provare il tutto :
#include <SoftwareSerial.h>
#define BT_RX 10 // PIN to receive from bluetooth
#define BT_TX 11 // PIN TO transmit to bluetooth
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup()
{
delay (2000);
//
Serial.begin(9600); // Initialize USB Serial port
//
btSerial.begin(9600); // Initialize Bluetooth SoftwareSerial port for selected data speed
//
Serial.println("--- Ports ready ---");
Serial.println("");
//
}
void loop()
{
if (btSerial.available() > 0) Serial.write(btSerial.read());
if (Serial.available() > 0) btSerial.write(Serial.read());
}
Vedi se funziona
Guglielmo
P.S. : Per quanto riguarda la tua domanda ... l'idea che mi sono fatto sul mancato funzionamento e ... che è un problema di livelli e di conflitti ... quel modulo ha il valore HIGH a 3.3v ... Arduino lavora a 5v e su quei due pin c'è collegata anche la USB -> Seriale ... Vd. dettagli per la Leonardo, sezione "Communication", QUI