Ciao a tutti, sono relativamente nuovo con arduino e mi sono lanciato in un progetto di costruzione di un piccolo robot controllato a distanza dal telefono attraverso un modulo bluethooth hc06. Il modulo sembra funzionare correttamente, dato che riesco a fare il pairing da telefono, tuttavia non riesco a inviare o ricevere dati attraverso il telefono.
Ho usato come test questo programma
#include <SoftwareSerial.h>
#define BT_RX 0 // PIN to receive from bluetooth
#define BT_TX 1 // PIN TO transmit to bluetooth
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup()
{
Serial.begin(9600); // Initialize USB Serial port
btSerial.begin(9600); // Initialize Bluetooth SoftwareSerial port for selected data speed
btSerial.println("--- Ports ready ---");
}
void loop()
{
if (btSerial.available() > 0)
{
char dato=btSerial.read();
btSerial.print("ricevuto : ");
btSerial.println(dato);
}
}
ma non ottengo nessun tipo di risposta da arduino. Avrei bisogno semplicemente di inviare ad arduino dei caratteri singoli per permettergli di distinguere i comandi, Qualcuno può darmi una mano?
Quello che hai postato è una modifica di un mio programmino di test (... lo riconosco ) e la versione originale si guardava bene dall'utilizzare i pin 0 ed 1 che sono la VERA seriale e che NON puoi usare con la SoftwareSerial !!!
Usa i pin 10 ed 11, come nel programmino originale (... che, per completezza, ti metto qui di seguito) e vedrai che tutto funziona !
// *****************************************************
//
// Bluetooth module serial communication
// Bluetooth <--> USB_Serial
//
// *****************************************************
#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());
}
Avevo già trovato questo e altri programmi di test ma purtroppo non funzionavano, per cui mi sono fatto aiutare da un mio amico e abbiamo pensato a un programma piu semplice.
Inoltre non uso una seriale USB ma solo bluethooth perchè arduino lo alimento con una batteria.
Ho provato anche a cambiare i pin di trasmissione da 0 1 a 2 4, perchè 10 e 11 sono gia occupati, ma non ottengo risposta di nessun tipo sul telefono, solamente se ricarico il programma su arduino mentre il modulo bt è ancora collegato al telefono ottengo una serie di bit a caso che credo siano semplicemente rumore dovuto al caricamento. può essere un problema del'applicazione che uso per simulare il terminale Bt sul telefono?
Scusa ... che sistema operativo sul telefonino ? NON iOS spero, perché NON si può connettere a quei moduli, per Android invece usa QUESTO ... provato e garantito funzionare perfettamente.
Guglielmo
P.S.: In ogni caso evita i pin 0 e 1 che, se fai un po' di ricerche qui sul forum, vedrai che, con quei moduli, danno sempre problemi !
Uso un NGM dyanamic now con android 4.4.2. Il terminale che mi hai linkato non rileva proprio nessun dispositivo, nemmeno gli altri telefoni ^^"
Ho provato a runnare il programma che avevo messo all'inizio mettendo come pin 2 e 4 ma il prolema rimane.
Comunque ho notato che ogni volta che apro il programma .ino e lo faccio caricare, la prima volta mi da questo errore
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:375:6: warning: always_inline function might not be inlinable [-Wattributes]
void SoftwareSerial::setRxIntMsk(bool enable)
^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:121:6: warning: always_inline function might not be inlinable [-Wattributes]
void SoftwareSerial::recv()
LucaCG:
Uso un NGM dyanamic now con android 4.4.2. Il terminale che mi hai linkato non rileva proprio nessun dispositivo, nemmeno gli altri telefoni ...
Lo uso regolarmente con i moduli HC-0x e funziona perfettamente (... e qui sul forum NON sono il solo), quindi ... verifica perché hai tu qualche problema di connessione.
Dunque, versione IDE 1.6.5. Ho riprovato più volte con il terminale che mi hai passato, lo apro accendo il bluethooth e premo su "discover" ma non trova nulla cui connettersi, invece il normale bluethooth del telefono trova sia HC-06 che gli altri telefoni di casa.
LucaCG:
Dunque, versione IDE 1.6.5. Ho riprovato più volte con il terminale che mi hai passato, lo apro accendo il bluethooth e premo su "discover" ma non trova nulla cui connettersi, invece il normale bluethooth del telefono trova sia HC-06 che gli altri telefoni di casa.
Non so cosa dirti ...
... io e un'infinità di altre persone lo usiamo regolarmente ... magari non è compatibile con il tuo telefono ... :
ho scoperto l'inghippo, a quanto pare non avevo capito bene come fare i collegamenti per cui connettevo il pin impostato come TX al TX sul modulo bluethooth, e stessa cosa per RX. è bastato collegare TX arduino ->RX bt e RX arduino ->TX bt e funziona tutto correttamente