arduino e modulo HC-05

salve a tutti ,
sto usando una bluetooth shield che monta modulo hc-05. L’ho configurata con gli AT command e ho fatto il pair con il mio dispostivo android. L’associazione dei dispositivi e’ avvenuta con successo e ho settato il modulo come slave. Sto tentando di comunicare tramite l’app Arduino Bluetooth Terminal ma solo poche volte(random) riesco a comunicare , e l’at command che mi dovrebbe far connettere con il dispositivo (AT+LINK:<indirizzo_dispositivo>) fallisce. Un’altro problema e’ che non riesco da telefono a vedere il modulo.
Grazie Anticipamente!

Pensate che questa http://www.plexishop.it/it/sfera-in-plexiglass-da-60mm-trasparente.html potrebbe funzionare da sfera di cristallo per sapere che Sketch e che Arduino usa VincenzoArd91 :wink: :wink: :wink: :wink: :wink:
Ciao Uwe

Pensate che questo https://www.google.it/search?q=pagliaccio&source=lnms&tbm=isch&sa=X&ei=SJu4UuiVMoW24ATl54HADg&ved=0CAcQ_AUoAQ&biw=1024&bih=642#facrc=&imgdii=&imgrc=_fE9I8IRue26LM%3A%3BaMF3tePiXEqh3M%3Bhttp%253A%252F%252Fwww.ilpaesedeibambinichesorridono.it%252Fimages%252Ffiabe%252Ffiabe_meditazione%252Fpagliaccio%252Fclownggb.gif%3Bhttp%253A%252F%252Fwww.ilpaesedeibambinichesorridono.it%252Fpagliaccio_in_cielo.htm%3B451%3B419 possa rendere solo lontanamente la simpatia di uwefed?

Sai VincenzoArd91 quante volte mi tocca richiedere informazioni per poter capire cosa usa l' utente e cosa é di preciso il problema. Non parlaimo di quelli che poi dann 10 righe di Sketch di un sketch da 300 RIghe e sostengiono che l' errore é in quelle 10 tighe. Sono stufo di richieder informazioni di continuo. Cosí faccio ognitanto la battuta della sfera di cristallo.
Se non hai inteso la mia risposta come battuta mi scuso.
Ciao Uwe

visto che parliamo di problema saltuario c'e' ben poco da fare, si ci deve sbattere su la testa, sono i casi peggiori.
sul discorso di vedere il modulo non capisco, tu dici di fare correttamente il pairing, e quindi il modulo lo vedi altrimenti come fai a fare il pairing ?

X Uwe:
credo che quella sfera vada bene, le caratteristiche ci sono tutte, forse solo un pelino piu' grande ?

La sfera è perfettamente rotonda a differenza di quelle stampate che sono soggette ad inevitabile ovalizzazione. Disponibili diametri a richiesta.

Vincenzo, frequenti da poco il forum ma quella della sfera di cristallo è una delle battute ricorrenti di Uwe, al punto che spesso anche noi ci scherziamo sopra. Non ho visto tanta mancanza di rispetto nei tuoi confronti, solo un modo scherzoso per chiederti di specificare meglio la scheda e lo sketch che stai usando.

Ok , forse non ho colto la simpatia del messaggio ma e’ difficile leggere tra le righe quando si scrive su un forum , soprattutto per chi e’ nuovo e non si aspetta certe risposte. Comunque , se siete ancora interessati ad aiutarmi
per Testato:
Il pairing lo posso fare tranquillamente anche se non trovo il modulo nella ricerca mandando come comando AT+PAIR = <indirizzo_bluetooth_telefono>
Per Uwe:
Penso sia sottointeso che io abbia accettato le tue scuse , e hai perfettamente ragione (a parer mio , al di fuori del modo) a chiedere altre informazioni. Io non mi sono mai confrontato con nessuno per quanto riguarda arduino e le sue shield non mi viene spontaneo inserire altre informazioni. Detto cio’ ti lascio lo sketch che sto utilizzando:

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(2,3 ); // RX, TX

void setup()  
{
  // 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("Scrivo su la Seriale!");

  // set the data rate for the SoftwareSerial port
  bluetooth.begin(38400);
    //  bluetooth.print("AT+ROLE=0\r\n");
   // bluetooth.print("AT+IAC=9e8b33\r\n");
    //bluetooth.print("AT+NAME?\r\n");
    //bluetooth.print("AT+INQM=1,9,48\r\n");
    //bluetooth.print("AT+PSWD?\r\n");
      //bluetooth.print("AT+PSWD=1234\r\n");  
      //bluetooth.print("AT+UART?\r\n");
     // bluetooth.print("AT+CMODE=1\r\n");
       //bluetooth.print("AT+BIND?\r\n"); 
       //indirizzo bluetooth samsung 58:C3:8B:E0:B9:65
     // bluetooth.print("AT+CLASS=2\r\n");
       //bluetooth.print("AT+IPSCAN?\r\n");
     // bluetooth.print("AT+STATE?\r\n");
      //bluetooth.print("AT+INIT\r\n");
     // bluetooth.print("AT+INQ:58C3:8B:E0B965,1F1F,FFC1\r\n"); 
    // bluetooth.print("AT+PAIR=58C3,8B,E0B965,120\r\n");
    //bluetooth.print("AT+LINK=58C3,8B,E0B965\r\n");
    // bluetooth.print("AT+FSAD=58C3,8B,E0B965\r\n");
}

void loop() // run over and over
{

  if (bluetooth.available())
    Serial.write(bluetooth.read());
    //bluetooth.write(Serial.read());

}

La shield che sto utilizzando e’ la bluetooth shield v1.2(con modulo HC-05). IL mio problema e’ che facendo la ricerca di dispositivi bluetooth da qualsiasi cellulare non trovo la shield , riesco a fare il pairing inserendo l’indirizzo del mio telefono ma , il comando AT+LINK per instaurare una connessione fallisce.
Grazie a Tutti! :slight_smile: :slight_smile: :slight_smile: :slight_smile:

stai usando la leonardo ?
potresti provare ad usare la seriale hardware invece della software ?

Perdonatemi :~ ho dimenticato di dire che uso arduino uno.

Ciao a tutti,

si presenta anche a me la stessa problematica:

Uso un arduino 1 e questo trasmettitore BT http://www.lctech-inc.com/Hardware/Detail.aspx?id=25662aa3-0517-4d3d-960e-ff261d5ef28c.

Il codice che ho implementato mette il sistema in AT Mode poi imposta AT+ROLE=1 poi inizializza AT+INIT fa la ricerca con AT+INQ appena trovato un dispositivo BT fa AT+INQC e fai il pair AT+PAIR=bcf5,ac,4da6f1.

Questa istruzione fa comparire la richiesta di pairing sul dispositivo richiesto.
Al successivo AT+FSAD=bcf5,ac,4da6f1 ottengo OK ma con AT+LINK=bcf5,ac,4da6f1 ottengo però un fail inesorabile

Qualcuno ha qualche idea... o post da indicarmi....

Grazie

Ciao
@vincenzo
avevi dato un'occhiata qui?
http://forum.arduino.cc/index.php?topic=104903.0

@balrog
avevo usato il modulo HC-05 con una antenna GPS BT, il procedimento era simile a quello da te seguito.
Qui il thread in cui descrivo i passaggi e se ne parla:
http://forum.arduino.cc/index.php?topic=114984.msg865815#msg865815
magari trovi qualche info utile

Ciao,

in realtà non ho trovato niente che mi possa aiutare. Ho solo un dubbio che differenza passa tra il comando AT+BIND e il comando AT+LINK e il comando AT+PAIR ?

Ho cercato in giro ma non ho capito bene le differenze

AT+LINK
Device connect
Connect with remote device.
Example:
Connect with remote device:12:34:56:ab:cd:ef
at+fsad=1234,56,abcdef\r\n —— Search 12:34:56:ab:cd:ef whether in the pair list
OK
at+link=1234,56,abcdef\r\n ——12:34:56:ab:cd:ef is in the list,can connect directly
OK

AT+BIND
Set/Inquire—Band Bluetooth address

This command only works under the Set the Bluetooth address connection mode

Example:
If use want to set the device address to:12:34:56:ab:cd:ef
The commands should be:
AT+BIND=1234,56,abcdef\r\n

mi manca qualche tassello e quindi non vi seguo
ma tutti sti comandi da dove li inviate ? state usando due moduli uno master ed uno slave ?
perche' se parliamo di android come master e' dal telefono/tablet che si fa il search e si fa il pairing. Poi l'applicativo che si scrive andra' a fare la connessione e l'invio/ricezione dati, ma senza usare comandi AT,
almeno io ho fatto cosi'.

Ciao Testato,

nel mio caso voglio che il modulo HC-05 sia master e che si connetta direttamente lui ad un cellualre android di cui lui conosce l'indirizzo. Un po' come succede quando sali in macchina ed in automatico il bluetooth si connette al tuo cellulare abilitando il vivavoce.

ecco ora e' piu' chiaro,
quindi il tuo modulo e' di quelli programmabili master/slave

Non ho mai messo mano a moduli master, quindi non posso esserti utile

per pitusso
ho visto la tua guida ed e' interessante ma ancora non riesco a risolvere il problema. Il mio modulo settato come slave non viene trovato nella ricerca dispositivi del mio dispositivo android nonostante il pairing sia stato effettuato con successo.
per testato
io devo far lavorare android come master e arduino(il modulo bluetooth) come slave , quindi da come dici te dovrei lavorare su la parte android? perche' per ora solo usando un'app che si chiama "arduino bluetooth terminal " riesco(cosa che avviene random) a instaurare una connessione e scrivere su la seriale , pero' quest'app funziona solo con dispositivi associati e mi fa inserire manualmente il nome che ho dato al modulo bluetooth. Se ho capito bene questo e' l'unico modo per creare una connessione , o sbaglio?
probabilmente il comando AT+LINK non mi funziona allora perche' ho il modulo settato come master , a questo punto pero' vi chiedo cosa deve fare l'app android? Cercare solo ed esclusivamente tra i dispositivi associati e prendere dati dalla seriale?

La connessione BT è bidirezionale quindi chi fa da master è indifferente per quanto riguarda la direzione delle infirmazioni.
Non so di preciso cosa vuoi fare ma se devi solo connetterti ad arduino per scambiare dati, anche se i dati vanno da arduino al telefono la cosa piu semplice è montare su arduino un bt Slave e poi direttamente da android, dal sistema operativo stesso, cercare lo slave e fare il pairing.
A quel punto l applicazione android farà la connessione ed il trasferimento dati

Ok perfetto ci siamo capiti! :slight_smile:
il mio scopo e' quello di trasferire dati da arduino a telefono , quindi ora correggimi se sbaglio
io dovrei:
settare il modulo come slave e creare un app android che gestisca la cosa. l'unica cosa che non capisco , l'app android puo' lavorare solo ed esclusivamente con dispositivi gia associati?(perche' le app che ho gia trovato mi chiedono,prima di instaurare la connessione,di inserire manualmente il nome del dispositivo associato) se non è così c'e' un mondo per rendere visibile il modulo per tot tempo? Perchè io con la classica ricerca non riesco a trovare il modulo , forse mi perdo qualche AT command per renderlo visibile. :frowning:

non c'e' nessun at command da mandare, nel momento in cui compri un BT slave, e gli dai la sola alimentazione, senza nemmeno collegare rx tx, dal cellulare lo devi trovare, e non c'e' nessun timeout sugli slave, se non lo vedi o e' guasto oppure e' un master e non uno slave
una volta cercato e fatto il pairing dal sistema operativo, quindi niente applicazioni, poi puoi usarlo con qualsiasi applicazione, ce ne sono molte sul market, provane un po'.

Se la tua intenzione e' scrivere da te un'pplicazione android (sei programmatore ? hai gia' usato l'ADT tool di google ?) allora poi deciderai tu cosa fare co l'applicazione, sei libero di fare come vuoi, quindi, dal piu' facile al piu' difficile puoi:

  • connetterti solo al BT accoppiato precedentemente via sistema operativo
  • poter selezionare uno dei BT precedentemente accoppiati, fra i quali scegliere quello a cui connetterti
  • gestire direttamente dall'interno dell'applicazione la ricerca/pairing/connessione

Pero' questo fallo in secondo momento, ripeto, come prima cosa devi vedere lo slave, fare il pairing da sistema operativo, e ricevere correttamente i dati che vuoi tramite una delle tante applicazioni gratuite
se non riesci a fare queste cose e' inutile tentare di scrivere una app che ti incasinerebbe solo le idee