problema con modulo bluetooth hc 06

Ciao a tutti, ho un problema con il modulo bluetooth Hc 06.
Io prima usavo un hc 05 con scheda arduino leonardo con questo sketch:

int LedPin1 = 6;     
 int LedPin2 = 8;
 
 void setup()
{
pinMode(LedPin1,OUTPUT);
pinMode(LedPin2,OUTPUT);
Serial1.begin(9600);
}

void loop()
{ 
while (Serial1.available())
{ 
  char dato= Serial1.read(); 
  switch(dato)
  {
     case 1: {
     digitalWrite(LedPin1,HIGH);
     Serial.print("quadro acceso");
   break; }
     case 2: {
     digitalWrite(LedPin1,LOW);
   Serial.print("quadro spento");
   break;
 }
     case 3: {
     digitalWrite(LedPin2,HIGH);
     delay(800);
     digitalWrite(LedPin2, LOW);
     Serial.print("avviamento");
     break;
 }
 }
     
     }
     }

edit by mod: per favore includi il codice usando gli appositi tag

E il tutto funzionava benissimo. Ma purtroppo il modulo hc 05 smise di funzionare e ho comprato il modulo hc 06 ma non risponde ai comandi.
Quale potrebbe essere il problema?
Grazie a tutti.

Ciao,
prima di tutto, cortesemente, racchiudi l codice entro gli appositi TAG "code" ... se vai in edit sono quelli che inserisce il bottone # che trovi come terzultimo della seconda fila.

Detto questo ...
... quale modulo HC-06 ? Hai un link ? Come lo hai alimentato ? Hai provato a mandarlo in modo "AT" (Comandi) e verificare come è programmato ? Sei riuscito a fare il "pairing" con un qualche device ?

Guglielmo

non e' che avevi uno slave ed ora hai comprato un master ?

Testato:
non e' che avevi uno slave ed ora hai comprato un master ?

Strano ... di default ti mandano lo Slave e, normalmente, solo su richiesta viene mandato il Master ... :roll_eyes:

Comunque, Enzo, controlla se hai un HC-06-S o un HC-06-M ... gli M sono i Master mentre gli S sono gli Slave ... mi auguro tu abbia il -S :wink:

Guglielmo

Salve, Signor Guglielmo.
Ho inserito lo sketch tramite il tasto dedicato, ma ho notato che usando google chrome il traduttore sposta tutto dopo aver postato .
Nonostante prima di postare ho controllato l'anteprima della mia domanda e vedevo lo sketch inserito in maniera corretta.
Provero' a fare una segnalazione.
Comunque il modulo bluetooth l'ho acquistato qui: http://cgi.ebay.it/ws/eBayISAPI.dll?ViewItem&item=191062358754
e mi sembra proprio che sia slave.
Ho provato ad alimentarlo funziona e riesco anche a collegarmi con il telefono,però sul monitor seriale non leggo nulla quando invio i comandi. Mentre con il modulo hc 05 era tutto ok.
Faccio una domanda azzardata! Sarebbe possibile sostituire il firmware V1.06 con il firmware V1.05?.
Ringrazio anticipatamente tutti coloro che mi stanno aiutando!

Mmm … mi viene un dubbio … fai una prova …

… invece di collegarlo alla vera seriale HW, dichiara una seriale virtuale con la SoftwareSerial usando, ad esempio i pin 10 e 11, e dicci cosa succede … :roll_eyes:

Guglielmo

P.S. : Ricordati sempre, anche usando la SoftwareSerial, di invertire i pin: TX bluetooth → RX Arduino; RX bluetooth ← TX Arduino

Salve ,
ho provato il suo suggerimento inserendo questo sketch:
[#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
 int LedPin1 = 6;     
 int LedPin2 = 8;

void setup()  
{
  pinMode(LedPin1,OUTPUT);
  pinMode(LedPin2,OUTPUT);
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
  { 
  char dato= Serial1.read(); 
  switch(dato)
  {
     case 1: {
     digitalWrite(LedPin1,HIGH);
     Serial.print("quadro acceso");
   break; }
     case 2: {
     digitalWrite(LedPin1,LOW);
   Serial.print("quadro spento");
   break;
 }
     case 3: {
     digitalWrite(LedPin2,HIGH);
     delay(800);
     digitalWrite(LedPin2, LOW);
     Serial.print("avviamento");
     break;
 }
 }
     
     }
     }  
 
 
     
     
     ]

Ora ogni volta che mando un comando mi esce sempre lo stesso simbolo strano che non è un numero quindi continua a non rispondere ai comandi :frowning:

la velocita' ?
La parita' ?

hai settato il modulo via comandi AT prima di installarlo ? di default la velocita' dei moduli, tra hc 05,06,07 cambia

Tanto per cominciare le prove NON si fanno con programmi complessi che eseguono più funzioni, ma si fanno con programmini elementari che permettono di diagnosticare ed isolare il problema … tipo questo (vd. se lo devi adattare per la Leonardo o se gira così) :

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

… dopo di che … verifica tutto quello che ha chiesto Testato … caratteri strani sono spesso sintomo di velocità sbagliate …

Guglielmo

Ciao a tutti.
Ho capito dove sbagliavo. Praticamente con la libreria softwareSerial mi ero dimenticato di definire il parametro  btserial.
Ho quindi modificato questo parametro : char dato= Serial1.read(); con : char dato= btSerial.read();
e tutto funziona correttamente.
Allego lo sketch completo:

[#include <SoftwareSerial.h>

#define  BT_RX 10            // PIN to receive from bluetooth
#define  BT_TX 11 // PIN TO transmit to bluetooth
 int LedPin1 = 6;     
 int LedPin2 = 8;

SoftwareSerial btSerial(BT_RX, BT_TX);

void setup()
{
  delay (2000);
  //
  pinMode(LedPin1,OUTPUT);
  pinMode(LedPin2,OUTPUT);
  Serial1.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) Serial1.write(btSerial.read());
  if (Serial1.available() > 0) btSerial.write(Serial1.read());
{ 
  char dato= btSerial.read(); 
  switch(dato)
  {
     case 1: {
     digitalWrite(LedPin1,HIGH);
     Serial.print("quadro acceso");
   break; }
     case 2: {
     digitalWrite(LedPin1,LOW);
   Serial.print("quadro spento");
   break;
 }
     case 3: {
     digitalWrite(LedPin2,HIGH);
     delay(800);
     digitalWrite(LedPin2, LOW);
     Serial.print("avviamento");
     break;
 }
 }
 }
 }
]

Ringrazio tutti per avermi aiutato era giorni che ci stavo dietro. :sweat_smile:
Un ultima domanda, è normale che ogni tanto devo ripetere il comando per attivare i pin dedicati ai miei scopi?

Scusate ma se leggete in modo strano il mio post disattivate il traduttore . non si capisce niente quando il traduttore parte in automatico.

Enzo--:
Un ultima domanda, è normale che ogni tanto devo ripetere il comando per attivare i pin dedicati ai miei scopi?

In che senso e che comando devi ripetere ??? :astonished:

Guglielmo

Nel senso che per inviare i comandi al bluetooth uso un programma creato con app inventor che alla pressione di un tasto mi invia il numero per attivare o disattivare i Pin .
E alle volte devo premere il pulsante 2 o 3 volte per far partire il comando.

Ah ... ok ... li non posso aiutarti ... non ho la minima idea di cosa sia "app inventor" ... :grin: :grin: :grin:

Guglielmo