Go Down

Topic: Moduli bluetooth (Read 11 times) previous topic - next topic

riddick86

Msn no. Per chattare uso skype o google talk.

pitusso

ciao
Quote
Vedo le print dei vari comandi AT ma il bluetooth non risponde ai comandi AT.

ci avevo provato anche io, a mio tempo, ma questi modulini non sembrano supportare comandi AT.. (riportato anche da Fabio per i suoi moduli bt).

Cosa ci devi fare, con i comandi AT?  :D

AnTrea


Cosa ci devi fare, con i comandi AT?  :D


Mi è stato fornito un pdf con i comandi AT, con qualche printscreen di un caso d'uso...
In realtà mi sono un pò affossato per via di questi comandi, so che non servono a molto ma... mi sono fissato :)
Arduino, MODs e DIY: blackstufflabs.com

riddick86

#33
Feb 03, 2011, 12:06 am Last Edit: Feb 03, 2011, 12:10 am by riddick86 Reason: 1
Non riesco ad avere una connessione stabile con l'antenna.
Con il mac la rilevo, faccio il pairing con codice "1234" ma dopo circa 10s si disconnette.
Penso sia questo il mio problema principale.
Spero di aver capito il funzionameto:
- connetto TX ed RX dell'antenna con RX e TX dell'arduino o sui pin scelti con NewSoftSerial
- stabilisco una connessione con l'antenna
- quello che mando alla seriale relativa all'antenna sul mac arriva alla seriale dell'arduino.
Giusto?

AnTrea

Ti consiglio:
collega anche i pin 32 e 31 a due led connessi a gnd.
uno dei due lampeggia di continuo quando è in cerca di connessione, quando l'ha trovata rallenta il blinking e si accende l'altro fisso.
una volta collegato, devi distinguere tre porte com:
1. dove è collegato arduino ed è la stessa dell'ide dell'arduino
2. una dovrebbe essere la com del dispositivo bluetooth che hai sul pc (usb o interno)
3. una porta com che bluesoleil associa al nuovo dispositivo

Io mi collego tramite putty alla porta del punto 3; unico problema è che quando apro putty durante la connessione avvenuta, il modulo si scollega dal pc.

domani faccio un video...
Arduino, MODs e DIY: blackstufflabs.com

riddick86

#35
Feb 03, 2011, 03:40 pm Last Edit: Feb 03, 2011, 03:43 pm by riddick86 Reason: 1
Ci sono riuscito con Mac OS X.
Il problema era che usavo il modulo MASTER invece di quello SLAVE.
Ho fatto così:
Connetto la TX e RX dell'antenna ad RX e TX sull'arduino usando NewSoftSerial con una connessione a 115200
Il mac rileva l'antenna e vi associa una porta seriale /dev/tty.BC-05-xxxx
Apro minicom sulla porta /dev/tty.BC-05-xxxx a 115200 e quello che scrivo viene trasmesso all'Arduino.

P.S. Per dare i comandi AT, bisogna mettere l'antenna in modalità AT, mettendo un valore di tensione alto (3.3V o 5V) sul pin 34.
Con questi comandi è possibile cambiare le configurazioni dell'antenna, per esempio è possibile convertire il MASTER in SLAVE e viceversa.

AnTrea


P.S. Per dare i comandi AT, bisogna mettere l'antenna in modalità AT, mettendo un valore di tensione alto (3.3V o 5V) sul pin 34.
Con questi comandi è possibile cambiare le configurazioni dell'antenna, per esempio è possibile convertire il MASTER in SLAVE e viceversa.


Ma il pin 34 deve stare fisso a 3.3v per abilitare la modalità AT?
Appena puoi posta il codice che hai usato che faccio un pò di prove... grazie!
Arduino, MODs e DIY: blackstufflabs.com

riddick86

Codice per dare il comando AT

Code: [Select]
#include <NewSoftSerial.h>

int pinRX = 6;
int pinTX = 5;
int pinAT = 12;

NewSoftSerial blue(pinRX, pinTX);

void setup()
{
 
  blue.begin(19200);
  Serial.begin(9600);
  pinMode(pinLed, OUTPUT);
  pinMode(pinAT, OUTPUT);
  digitalWrite(pinAT, HIGH);


}

void loop()
{
  //Comando AT
  //Risposta OK
 
  blue.print('A');
  blue.print('T');
  blue.print('\r');
  blue.print('\n');

//Leggo la risposta
if(blue.available() > 0)
{
Serial.print(blue.read());
Serial.println(blue.read());
}
}


Per questo codice ho un problema:
dopo un paio di riposte OK, mi vengono ritornati caratteri strani.

AnTrea

#38
Feb 03, 2011, 05:34 pm Last Edit: Feb 03, 2011, 05:40 pm by skaxxo Reason: 1
ma il pin dell'AT, l'hai messo a 3.3v o hai messo qualche resistenza in serie?
appena lo metto a 3.3v non riesco più a farlo collegare al mio modulo bluetooth (del pc)...


prova a farlo girare a 115200 baud

Code: [Select]
 blue.begin(19200);


a


Code: [Select]
 blue.begin(115200);
Arduino, MODs e DIY: blackstufflabs.com

riddick86

Sono riuscito ad impartire un comando AT.
In particolare ho riportato l'antenna MASTER alle condizioni di default (SLAVE) con il comando:
Code: [Select]
AT+ORGL \r\n

Questo è il codice che ho utilizzato:
Code: [Select]
#include <NewSoftSerial.h>

int pinRX = 6;
int pinTX = 5;
int pinAT = 8;
NewSoftSerial blue(pinRX, pinTX);
int pinLed = 13;



void commandAT(char *v)
{
  int i=0;
  while(v[i] != '\n')
  {
    blue.print(v[i]);
    i++;
  }
  blue.print('\n');
}

void readResponse(int nchar)
{
  if(blue.available() > 0){
  for(int i=0; i < nchar; i++){
 
     char data = (char)blue.read();
   
    Serial.print(data);
    delay(100);
   
    }
 
  }
}

void setup()
{
 
  blue.begin(115200);
  Serial.begin(9600);
  Serial.println("Inizializzo sistema...");
  pinMode(pinLed, OUTPUT);
  pinMode(pinAT, OUTPUT);
 
  //Valore ALTO per switchare in modalità AT
  // il 34 sull'antenna
  digitalWrite(pinAT, HIGH);
  Serial.println("pinAT attivo");
 
  //Comando AT da inviare
  char s[] = "AT+ORGL \r\n";
  Serial.print("Scrivo comando: ");
  Serial.print(s);
 
  delay(50);
 
  //Invio comando all'antenna
  commandAT(s);
  delay(50);
 
  //Leggo la risposta
  readResponse(2);
}

void loop()
{
   
 
}


Con questo codice però non riesco a leggere la risposta, ma la configurazione dell'antenna è cambiata, quindi l'invio ha funzionato.

AnTrea


Con questo codice però non riesco a leggere la risposta, ma la configurazione dell'antenna è cambiata, quindi l'invio ha funzionato.


Bravo riddick!
Oggi/domani provo un pò il tuo codice, questi moduli sono davvero antipatici...
Arduino, MODs e DIY: blackstufflabs.com

riddick86

Questi moduli non vengono rilevati da LG Optimus One e HTC Desire HD.
Ho provato con vari altri cellulari e smartphone e vengono rilevati senza problemi.
Poichè ho un LG O1 devo capire se è un problema software o di incompatibilità dell'hardware.

pitusso

Ciao riddik86,
io non ho fin'ora avuto problemi di riconoscimento, ho provato con Nokia (vari modelli), LG GT540, HTC G1.
Quote
devo capire se è un problema software o di incompatibilità dell'hardware.

Il Bluetooth è uno standard, non penso si possa parlare di incompatibilità  :smiley-roll:
Nel senso che potrebbe non andare a buon fine il pairing, ma il modulo dovrebbe essere sempre visibile...

Forse il modulo bt era associato e connesso con altro device, quando effettuavi la ricerca con gli smartphone che hai citato?
(potrei aver detto una castronata, non ci ho provato)

riddick86


Forse il modulo bt era associato e connesso con altro device, quando effettuavi la ricerca con gli smartphone che hai citato?
(potrei aver detto una castronata, non ci ho provato)


No, non era associato a nessun dispositivo, anche perchè non conoscevano il pin di connessione.
Poi le prove le ho fatte anche da solo con il mio Optimus One e non lo "vede".

riddick86

Ho risolto!!!
In pratica ho cambiato il modo operativo dell'antenna, l'ho passata da SLAVE a SLAVE-LOOPBACK con questo codice:
Code: [Select]
#include <NewSoftSerial.h>

int pinRX = 6;
int pinTX = 5;
int pinAT = 8;
NewSoftSerial blue(pinRX, pinTX);
int pinLed = 13;



void commandAT(char *v)
{
  int i=0;
  while(v[i] != '\n')
  {
    blue.print(v[i]);
    i++;
  }
  blue.print('\n');
}

void readResponse()
{
  int a = blue.available();
  Serial.print("Caratteri disponibili: ");
  Serial.println(a);
  if(a > 0){
  for(int i=0; i < a; i++){
 
     char data = (char)blue.read();
   
    Serial.print(data);
    delay(100);
   
    }
  }
 

}

void setup()
{
 
  blue.begin(38400);
  Serial.begin(9600);
  Serial.println("Inizializzo sistema...");
  pinMode(pinLed, OUTPUT);
  pinMode(pinAT, OUTPUT);
 
  //Valore ALTO per switchare in modalità AT
  // il 34 sull'antenna
  digitalWrite(pinAT, HIGH);
  Serial.println("pinAT attivo");
 
  //Comando AT da inviare
  char s[] = "AT+ROLE=2\r\n";
  Serial.print("Scrivo comando: ");
  Serial.print(s);
 
  delay(50);
 
  //Invio comando all'antenna
  commandAT(s);
  delay(50);
 
  //Leggo la risposta
  readResponse();
}

void loop()
{
   
 
}


Ora si riescono a leggere anche le risposte, bisogna che l'antenna sia connessa con qualche dispositivo via bluetooth, non basta la seriale di Arduino.
Ho fatto in questo modo:

Arduino <---> Modulo BT <----> MacBook PRO BT (connessione con minicom)

e magicamente il monitor seriale di Arduino stampa anche le risposte!!!

Go Up