problema trasmissione bluethooth hc06

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 :smiley:) 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());
}

Guglielmo

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. :wink:

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()

può essere dovuto a questo?

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.

Per il resto ... versione dell'IDE ?

Guglielmo

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 ... ::slight_smile:

Guglielmo

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