modulo HC-06 Bluetooth

Salve, come detto ho da poco acquistato arduino e sono praticamente a 0, stavo comunque iniziando a giocherellarci con i primi progetti trovati in rete quando mi sono apprestato a "capire" questo modulo.
Allora premetto che ho integrato il modulo per la semplice accensione di un led, ho caricato lo sketch:

void setup ()
{
 Serial.begin(9600);  //Apre la porta seriale ed imposta la velocità di trasmissione a 9600 bps
 pinMode (13, OUTPUT);
}
void loop ()
{
 char c = Serial.read();  //Legge dalla porta seriale ed invia ad ARDUINO
 
 if (c == 'H' || c =='h')
 {
   digitalWrite (13, HIGH);
 }
 if (c == 'L' || c == 'l')
 {
   digitalWrite (13, LOW);
 }
}

(prima di colegare Rx e TX), collegato il modulo hc-06 su gnd, 3,3v ed invertito RX e TX tra modulo e arduino.
Ora una volta scaricata l'app riesco a collegare il modulo (il led da lampeggiante resta fisso) ma premendo i pulsanti di accensione e spegnimento non succede nulla.
Ora mi è sorto il dubbio di aver configurato male le lettere per cui ho eseguito i comandi attaccando l'arduino alla porta usb del pc quindi una volta premuti i pulsanti sul cellulare dovrei vedere le lettere corrispondenti a monitor ma sul monitor non compare nulla
Dove sbaglio????
c'è un modo per verificare il funzionamento del modulo??

ciao :slight_smile:

prima cosa prima : i programmi vanno aggiunti con l'apposito tasto CODE </>, per cui adesso puoi editare il tuo messaggio e correggere , anche perchè per chi risponde è più semplice la lettura del programma :slight_smile:

per quanto riguarda la tua domanda, io per provare e capire come utilizzare questi moduli ho seguito questa guida molto completa :slight_smile:

Raist:
(prima di colegare Rx e TX), collegato il modulo hc-06 su gnd, 3,3v ed invertito RX e TX tra modulo e arduino.

non ho capito, ma hai collegato la seriale(Tx e Rx) o no? :slight_smile:

MD

Scusa avevo letto del tasto code ma non lo trovavo, cmq quella guida l'avevo vista l'unica differenza e che ho collegato l Tx del modulo allo 0 di arduino, e l'Rx all'1 di arduino (tx e Rx invertiti). Ora come detto il modulo si collega (tasto da lampeggiante a fisso) ma quando premo un tasto sull'app del cellulare non compare nessuna lettera sul monitor seriale (ovviamente con arduino collegato alla porta usb) ed il led non si accende.
Ora ho riprovato a collegarli come in quella guida e ad usare lo sketch presente li ma nulla.
Ma il modulo ha bisogno di essere abilitato in qualche modo o servono delle librerie specifiche?
Un altra cosa a prescindere dall'accensione del led alla pressione del tasto sulla app dovrebbe comparire una lettera sul monitor seriale???

ciao :slight_smile:

allora io direi di procedere a piccoli passi :slight_smile:

per adesso usa il programma che ti ho mandato nella guida

#include <SoftwareSerial.h>
 
int rxPin = 3;
int txPin = 2;
SoftwareSerial bluetooth(rxPin, txPin);
 
String message; //string that stores the incoming message
 
void setup()
{
  Serial.begin(9600); //set baud rate
  bluetooth.begin(9600); //set baud rate
}
 
void loop()
{
  while(bluetooth.available()){
    message+=char(bluetooth.read());
  }
  if(!bluetooth.available())
  {
    if(message!="")
    {//if data is available
      Serial.println(message); //show the data
      message=""; //clear the data
    }
  }
  delay(5000); //delay
}

ovviamente per adesso colleghiamo i pin Rx(del modulo) al pin 3 e Tx(del modulo) sul pin 2.
carichi il programma e apri il monitor seriale, grazie a questo programma ogni volta che premi un stato dalla app del telefono devi veder comparire le lettere corrispondenti sul monitor. se tutto è OK siamo sicuri che il modulo lavora....

riguardo al codice da te postato va leggermente modificato così :

void setup ()
{
 Serial.begin(9600);  //Apre la porta seriale ed imposta la velocità di trasmissione a 9600 bps
 pinMode (13, OUTPUT);
}
void loop ()
{
  if(Serial.available()){
    char c = (char)Serial.read();
 
    if (c == 'H' || c =='h') 
    {
       digitalWrite (13, HIGH);
    }
    if (c == 'L' || c == 'l')
    {
       digitalWrite (13, LOW);
    }
  }
}

ovviamente adesso collega i pin Rx Tx del modulo sui pin della seriale di Arduino.
Adesso se non erro, una volta caricato il programma anche se apri il monitor seriale non vedi i dati arrivare... ed è per quello che nella guida che ti ho mandato usa usa la software serial per avere la seriale di Arduino libera per fare debug :slight_smile:

facci sapere :slight_smile:

MD

Ho provato esattamente come scritto nella guida (leggi su) ma nulla, inoltre non compaiono lettere sul monitor seriale.
C'è un modo per verificare se il modulo funziona o no??? Uniche cose che riesco a vedere e che una volta collegato il modulo lampeggia velocemente poi quando lo connetto al telefono il led diventa fisso, ma qualsiasi lettera io invii o tasto pigi dal cellulare non compare nulla sul monitor seriale ed ovviamente il led resta spento.

posso consigliarti un'ultima cosa, poi alzo le mani :frowning:

  • collega Tx e Rx del modulo al piedini Tx e Rx dell' Arduino
  • ovviamente collega l'alimentazione del modulo radio
  • prendi un cavetto e manda a GND il pin Reset (si trova a fianco dei 3,3 V)--> così facendo usiamo arduino
    come FTDI
  • collega la presa USB dell'Arduino al PC e apri il monitor seriale
  • collega cellulare al modulo e manda

ricevi sul monitor seriale? (se no inverti piedini Tx e Rx e rifai prova)

Se anche così non ricevi niente, davvero non so più come aiutarti :frowning:

MD

si in questo modo funziona le lettere appaiono, quindi il modulo funziona?? però resta il fatto che non capisco cosa sbaglio nell'esempio precedente

oh finalmente una buona notizia ... adesso possiamo ragionare...

da quanto ho capito tu hai sulla app due pulsanti, che chiamo ON e OFF... quando li premi (usiamo sempre arduino come FTDI) cosa ti ritrovi sul monitor seriale?

PS : avevi provato il codice che ti ho corretto? il secondo che ho mandato nel messaggio

MD

Prima di tutto grazie per la disponibilità, allora utilizzando arduino come FTDI e collegando il modulo all'app che ha 8 tasti per accensione e spegnimento, compaiono questi caratteri alla pressione di tutti i tasti rispettivamente, QAEUODGTSWRYIPFH ma se provo sia con lo sketch associato ai pin 2 e 3 (quello della guida) sia con lo sketch corretto da te (Rx, Tx) quando premo i tasti non compare nulla, ho dimenticato di dirti che la scheda è un clone arduino (non so se faccia differenza) dove ho cmq caricato i driver appositi infatti gli altri esercizi base (accensione led da pulsante, accensione motore dc ecc. ecc. ) mi riescono e da quando ho collegato il modulo Hc-06 che non mi raccapezzo più ahhahahha

Raist:
collegando il modulo all'app che ha 8 tasti per accensione e spegnimento, compaiono questi caratteri alla pressione di tutti i tasti rispettivamente, QAEUODGTSWRYIPFH

devo raccapezzarmi ahahah
ma se ci sono 8 tasti sulla app io qui ne vedo 16 caratteri di risposta ahahah
di cui all'interno nessuna L ... ahahah

allora prendi due soli pulsanti che vorrai usare... pulsanti 1 e pulsante 2 dalla app del telefono....

con Arduino in FTDI, premi

pulsante 1 dalla app--> cosa leggi sul monitor Seriale ?
pulsante 2 dalla app--> cosa leggi sul monitor Seriale ?

importante per adesso usiamo solo due pulsanti che scegli te, gli altri ce li dimentichiamo per adesso... :slight_smile:

una volta che abbiamo bene in mente questi dati possiamo ragionare... scusa le mille domande ma non sono li con te e non vedo effettivamente cosa sta succedendo ahahah

MD

Ma che scusa devo dirti grazie che me le fai ahahhahahaha....
allora le 16 lettere erano per la 8 accensioni + gli 8 spegnimenti (tasti diversi)
se uso accendi 1 e spegni 1 compaiono AS rispettivamente.
Lo so che la lettera deve essere quella inserita nello sketch infatti ho provato con un altra app che manda le lettere da tastiera ma usando la H e la L non succedeva nulla uguale.
Ho scaricato una marea di app arduino BT per vedere se cambiasse qualcosa ma nulla ahhahaha.
Cmq ti seguo per gradi e con i primi due tasti compare accensione=A spegnimento=S

void setup ()
{
 Serial.begin(9600);  
 pinMode (13, OUTPUT);
}
void loop ()
{
  if(Serial.available()){
    char c = (char)Serial.read();
 
    if (c == 'A' ) 
    {
       digitalWrite (13, HIGH);
    }
    if (c == 'S' )
    {
       digitalWrite (13, LOW);
    }
  }
 delay (100);
}

carica questo programma ... e collega TX e RX del modulo con quelli di arduino (pin 0 e 1)... prova sia in un modo che invertendoli .... (ovviamente togli il corto del reset a GND ahahah)
dovresti vedere accendere e spegnere il LED sulla scheda all'arrivo della A e della S ...
incrociamo le dita :slight_smile:

PS sicuro che il LED che stai guardando non sia bruciato? ahahhaha
MD

niente da fare ho provato il led e funziona ma caricando il programma e collegando il modulo (sia con Rx e Tx su 0 e 1 sia invertendo) alla pressione dei tasti non accade nulla e non compaiono nemmeno le lettere sul monitor seriale ......
credo sia giunta l'ora del modulo Hc-06.... martello aiutami tu a porre fine alle sue sofferenze ahahahhaha

che non compaiano le lettere sul monitor seriale è normale...

il modulo funziona... stiamo sbagliando qualcosa noi ahahah

  • usa il programma da me postato
  • scollega il modulo
  • apri monitor seriale
  • manda tu la lettera 'A' ....

se si accende il LED bene... dobbiamo capire il perchè il modulo non lo fa accendere...
se NON si accende il LED, il programma va corretto ... :slight_smile:

in attesa dell'esito della prova :slight_smile:

MD

Il programma funziona perchè inserendo le lettere A e S accende e spegne il led.
Quando collego il modulo se collego Tx e Rx modulo su Rx e Tx arduino il led Tx su arduino si accende mentre con il collegamento inverso no è sintomo che il collegamento giusto è il primo??
Io collego il modulo al 3,3v anche se sul modulo c'è scritto 5v perchè ho letto che va collegato li, sbaglio??

si dovrebbe essere il collegamento giusto...

scrivi il link di dove hai acquistato il modulo, perchè potrebbe essere a questo punto un problema di alimentazione, ma prima di dirti di collegarlo ai 5 volt voglio essere sicuro del modello che hai in mano :slight_smile:

adesso sappiamo che il programma per Arduino funziona, e che il modulo funziona (lo abbiamo visto con FTDI)... ci manca quel piccolo passo perchè tutto funzioni ahahaha

MD

il modulo è questo
https://it.aliexpress.com/item/HC-06-Bluetooth-serial-pass-through-module-wireless-serial-communication-from-machine-Wireless-HC06-forarduino/1952980223.html?dp=f5a3f1c4172164aaa6c837fd2f51b44b&af=610563&cv=47843&afref=https%253A%252F%252Ftrade.aliexpress.com%252ForderList.htm&mall_affr=pr3&aff_platform=aaf&cpt=1512572237893&sk=VnYZvQVf&aff_trace_key=631ce3c22a4a406f815e6d52dc3d70a3-1512572237893-04038-VnYZvQVf&terminal_id=aec9c240edb84cb89c02c41b8a1cf703

vedendo i vari device in giro vedo che tutti hanno come indicazione 3.3 - 6 V di Vcc.
direi a questo punto facciamo la prova di darli 5 V di Vcc :slight_smile:

PS se vuoi inserire dei link usa il tasto Link quello che come simbolo la catena e un più verde :slight_smile: :slight_smile: :slight_smile:

in attesa

MD

per la peppa era proprio l'alimentazione su 5v funziona ma allora com'è che dappertutto (compresa la guida che hai postato te) dice di metterlo sui 3,3v per non bruciarlo???

si vede che serve bruciarlo per farlo funzionare ahahaha

dai son contento per te :slight_smile:

buona giornata :slight_smile:

una saluto

MD