HC-06 modulo Bluetooth Arduino MAC OSX

Ciao a tutti,
ho acquistato il modolo bluetooth HC-06 per inviare e ricevere dati dal Mac ( Snow Leopoard ) ad Arduino ( MEGA ) e vicerversa.
Nel inviare i dati da Arduino al Mac nessun problema.
Il problema è inviare dati dal Mac ad Arduino, qui sotto riporto il codice di prova :

char INBYTE;
void setup() {  
  Serial.begin(9600); 
}

void loop() {
  if(Serial.available()){               
     INBYTE =Serial.read();        
     if(INBYTE == 'A') { 
       Serial.println("pippo");
     }else{
       Serial.println("pluto");  
     }
     delay(1000);
  }      
}

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

Quando provo a inviare dal Monitor Seriale di Arduino un qualsiasi carattere non ho risposta.
Non ho capito che cosa va inconflitto.
Qualcuno cortesemente mi potrebbe dare delucidazioni in merito ?
Grazie Mille
Marco :slight_smile: :slight_smile: :slight_smile:

…monitor seriale?
Stai usando l’IDE di Ardino per mandare caratteri alla porta seriale BT?
Prova usando Putty o altri terminali…

Manda indietro sulla seriale con Serial.write() il carattere ricevuto per vedere cosa riceve.
Ciao Uwe

Ciao,
quando a suo tempo volli cominciare a fare un po' di prove con l' HC-05, invece che collegarlo alla porta seriale usai la SoftwareSerial ...

In questo modo avevo la vera seriale collegata al Mac tramite la USB e con la quale potevo inviare e leggere comandi di Debug (usando l'IDE di Arduino) e la SoftwareSerial con la quale leggevo e scrivevo caratteri sul Bluetooth.

L'HC-05 era collegato in Bluetooth allo stesso Mac che, ovviamente, lo vedeva come una ulteriore porta seriale che avevo aperto con il comodo programmino, CoolTerm, che ti scarichi gratuitamente da QUI e che, ancora oggi, su Mountain Lion 10.8.5, funziona perfettamente :wink:

In questo modo puoi fare tutto quello che ti pare ... hai due seriali, una la usi per il Debug ed una per il colloquio Bluetooth !

Guglielmo

Ciao a tutti,

  • Per Pitusso , ho fatto la prova anche CoolTerm ma non nessun carattere viene inviato dal Mac ad Arduino.
  • Per Uwe , proverò a utilizzare la funzione Serial.write() e vedere cosa riceve.
  • Per Guglielmo proverò ad applicare i tuoi suggerimenti.

Per il momento grazie per le delucidazioni , vi terrò aggiornati.

Marco

Ciao a tutti,
ho provato come di Uwe a utilizzare Serial.Write () il carattere che invio e non si riceve niente,
ho provato come dice Gugliemo a utilizzare la SoftwareSerial ma il carattere inviato, non viene ricevuto,
anzi ricevo tanti " . "
Qui di seguito il codice utilizzato in base al suggerimento di Guglielmo:

#include <SoftwareSerial.h>

const int rxpin = 2;           // pin used to receive
const int txpin = 3;           // pin used to send to
SoftwareSerial bluetooth(rxpin, txpin); // new serial port on given pins

void setup()
{
  Serial.begin(9600);  
  bluetooth.begin(9600); // initialize the software serial port
  Serial.println("Serial ready");
  bluetooth.println("Bluetooth ready");  
}

void loop()
{
  if (bluetooth.available()>=0)
 {
    char c ='A'; 
   //char c = bluetooth.read();
   bluetooth.write(c);
   //bluetooth.write("pippo");
  }
 if (Serial.available())
  { 
    char c=Serial.read();
    //Serial.write("pippo");
    Serial.write(c);
  }
}

Potete aiutarmi a capire cosa non và?
Grazie Mille
Marco

Scusa, ma hai programmato tu la velocità del modulo HC-06 a 9600 baud ? O sei sicuro che quella è la sua velocità di default (... credo di si, ma è bene verificare) ? Controllato il datasheet ? Sei entrato in modalità programmazione (quella dove dai i comandi AT) per verificare tutti i settaggi (baud rate, stop bit, parity, ecc. ecc.) ?

Perché se non sei sicuro della configurazione del modulo ... inutile continuare con le prove ... :roll_eyes:

Ah, se ben ricordo, in modalità programmazione, lavora a 38'400 baud :wink:

Guglielmo

Edit : Ah, comunque i due pin TX e RX dells SoftwareSerial, per correttezza, vanno definiti come :

const uint8_t rxpin = 2;           // pin used to receive
const uint8_t txpin = 3;           // pin used to send to

quindi come unsigned byte a 8 bit e non come int a 16 bit :wink:

Ciao Gugliemo ,
ho controllato, la velocità del modulo è 9600 per default.
Sinceramente non sono entrato in modalità di programmazione e non saprei entrarci. :blush: :blush:
Potresti gentilmente indicare come fare , oppure se c’è un sito o manuale che lo spiega?
Inoltre ho letto la seguente cosa :
" Il modello HC-06 è progettato per scegliere come impostazione predefinita o la modalità slave ( default ) o la modalità master e una volta settato, non può essere modificato in corso d’opera. "
La mia domanda a questo punto HC-06 per leggere i dati inviati dal Mac deve essere Master o Slave ?

Grazie mille per il supporto e per la correzione software.

Marco

surgillo:
Ciao Gugliemo ,
ho controllato, la velocità del modulo è 9600 per default.
Sinceramente non sono entrato in modalità di programmazione e non saprei entrarci. :blush: :blush:
Potresti gentilmente indicare come fare , oppure se c’è un sito o manuale che lo spiega?

Ti allego un paio di pdf che spiegano tutte le funzionalità. Ma tu il modulo lo hai su una breakout boards già pronta o te lo sei collegato tu ? Se è una breakout boards, puoi dare il link del prodotto che vediamo che pin portano fuori ?

surgillo:
Inoltre ho letto la seguente cosa :
" Il modello HC-06 è progettato per scegliere come impostazione predefinita o la modalità slave ( default ) o la modalità master e una volta settato, non può essere modificato in corso d’opera. "
La mia domanda a questo punto HC-06 per leggere i dati inviati dal Mac deve essere Master o Slave ?

Per collegarsi con il Mac va bene come Slave, che dovrebbe sempre essere il default …

Guglielmo

HC-Serial-Bluetooth-Products-201104.pdf (938 KB)

HC-06 datasheet 201104 revised.pdf (757 KB)

Ciao Guglielmo ,
utilizzo una breakout boards già pronta , qui sotto puoi trovare il link dove ho acquistato il dispositivo dove è riportato un'immagine dove vengono visualizzati i pin di uscita.


http://www.ebay.it/itm/Arduino-JY-MCU-Bluetooth-Wireless-Serial-Port-Module-/130830109138#shId

Io ho effettuato i seguenti collegamenti :

  • Il pin GND della boards al pin GND di Arduino
  • il pin VCC della boards al pin 5V di Arduino
  • il pin TXD della boards al pin 3 di Arduino
  • il pin RXD della boards al pin 2 di Arduino

Poi ci sono altri due pin che sono STATE e KEY che non ho collegato , li devo collegare?
In modalità di programmazione come ci accedo ?
Inoltre per inviare comandi AT si può utilizzare CoolTerm?

Grazie per la documentazione e per il supporto

Marco

Ciao Marco,
ok, è un moduletto tipo quelli che uso anche io, che (ed è comodo) lavora da 3.6v a 6v :wink:

Allora, il pin che ti interessa è quello chiamato KEY

… se all’accensione tale pin è HIGH, il modulo entra in modalità comandi e puoi interrogarlo e dargli tutto i vari comandi AT sia per vedere come è impostato, sia per cambiare le impostazioni (occhio a non cambiarle a caso XD). In tale modalità la velocità di default è, di solito, 38’400 baud.

Se KEY è LOW (e probabilmente anche se è scollegato) allora si comporta in modo trasparente ed fa il TX/RX dei dati.

Ti allego il manuale dei comandi (è per HC-05 … ma, per quelli che ti interessano, dovrebbe andare bene anche per il tuo). CoolTerm va benissimo ! :wink:

Altra cosa … LEGGITI attentamente come si usa la SoftwareSerial QUI … i pin che hai usato NON vanno bene sulla Mega : “Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69)

Guglielmo

HC-05 AT Commamd.pdf (83.7 KB)

Ciao Guglielmo,
per quando riguarda i collegamenti sto usando Arduino UNO , nel primo posto ho sbagliato , chiedo scusa.

Ho fatto la modifica software come mi dicevi
poi per quanto riguarda il pin KEY , per portarlo nello stato HIGH l'ho collegato direttamente al pin 3,3V di Arduino secondo il manuale che mi hai allegato e secondo anche questo sito :

http://wiki.pinguino.cc/index.php/SPP_Bluetooth_Modules

ho configurato CoolTerm modificando solo il baud rate a 38'400.
Però dal Coolterm mi viene sempre visualizzato il "." e quando provo a dare il comando AT ma nessuna , risposta.
Ho sbagliato qualcosa?
Leggendo il sito che ti riportato sopra ho letto che i camandi AT si possono dare solo tramite collegamente fisico , ci vuole per caso un adattatore?

Riesci a darmi delucidazione in merito?

Grazie Mille

Marco

Marco,
no, io ho collegato direttamente i pin TX e RX agli opposti pin definiti nella SoftwareSerial (… ti sei ricordado di collegare il TX → RX e RX → TX vero ???) ed ha funzionato al primo colpo … quindi … nessun adattatore o altro, DEVE funzionare così com’ è.

E per fare le prove in modo più sicuro fai una cosa …
… se c’è un carattere sulla Serial, leggilo e poi scrivilo sulla SoftwareSerial, se c’è un carattere sulla SoftwareSerial, leggilo e poi scrivilo sulla Serial.
In questo modo tu tieni apero sia il collegamento seriale di Arduino che CoolTerm collegato alla seriale virtuale Bluetooth e, se scrivi su terminale Arduino devi vedere i caratteri arrivare su CoolTerm, mentre se scrivi su CoolTerm devi vedere i caratteri arrivare su Arduino :wink:

In pratica, in questo modo, quando usi il terminale di Arduino parli con le linee fisiche TX/RX del modulino Bluetooth, mentre quando usi CoolTerm parli con la sua parte radio (il TX/RX virtuale collegato al Mac).

Ah … naturalmente i comandi vanno dati attraverso le linee TX/RX non attraverso il Bluetooth eh !!! Con la configurazione di cui sopra, in modo comando, lavori solo dal terminale di Arduino e non da CoolTerm che parla con la parte radio del modulo !

Guglielmo