Riconfigurare HC-05 con arduino

Salve, 2 anni fa all’incirca comprai un modulo hc-05 da inserire sul drone, all’epoca cambiai il baud rate con un convertitore FTDI a 115200 se non sbaglio, oggi mi servirebbe riportarlo a 9600 baud ma non riesco ad entrare in modalità AT con arduino, ho seguito passo passo guide su internet e cambiato tantissimi codici ma non entra in AT come posso fare?
Premetto che uso arduino da praticamente oggi :slight_smile: Conosco il C e C++ ma non riesco ancora a muovermi bene in questo ambiente, grazie mille.
P.s procedo con il presentarmi nella sezione.

Buongiorno e benvenuto sul forum,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Per entrare in modalità AT con un HC-05 devi portare HIGH il pin KEY all'avvio. A quel punto il modulo entra in modalità AT, la velocità è fissa a 38400 e vuole alla fine delle righe il CR/LF.

Guglielmo

Cosa intendi per portare in HIGH il pin key?

Facendo questo dovrebbe andare… ma invece no!

#include <SoftwareSerial.h>

const int rxPin = 8;
const int txPin = 7;
const int atPin = 4;

SoftwareSerial bluetooth(rxPin, txPin);

void setup() {

Serial.begin(9600);
bluetooth.begin(38400);

pinMode(atPin, OUTPUT);
digitalWrite(atPin, HIGH);

}

void loop() {
if (bluetooth.available()) {
Serial.write(bluetooth.read());
}

if (Serial.available()) {
bluetooth.write(Serial.read());
}

}

Hai il pin KEY ?

Se si lo colleghi al Vcc di Arduino (oltre ovviamente a tutti gli altri collegamenti) e poi alimenti il tutto.

Guglielmo

ciao 1Classe,

se non ha il PIN key, il tuo modulo, ha il pulsantino vicino ai pins?

se si...premilo prima di alimentarlo e tienilo premuto per un paio di secondi dopo alimentazione.
dovresti riuscire ad entrare nella modalità AT ridotta con cui impostare alcuni parametri.

Il pulsantino è l'equivalente del pin KEY che se lo tieni HIGH (o premuto) ti da accesso ai comandi AT completi...se lo premi e lo rilasci ti da, come detto, accesso alla modalità ridotta.

Si ho il pin key ho provato a collegarlo al vcc di arduino ma comunque non entra in modalità AT, ho provato anche a collegarlo direttamente al pin 34 (equivalente del pin key, ma comunque non entra.

gpb01:
Hai il pin KEY ?

Se si lo colleghi al Vcc di Arduino (oltre ovviamente a tutti gli altri collegamenti) e poi alimenti il tutto.

Guglielmo

Purtroppo non ho il pulsantino key.

ORSO2001:
ciao 1Classe,

se non ha il PIN key, il tuo modulo, ha il pulsantino vicino ai pins?

se si...premilo prima di alimentarlo e tienilo premuto per un paio di secondi dopo alimentazione.
dovresti riuscire ad entrare nella modalità AT ridotta con cui impostare alcuni parametri.

Il pulsantino è l'equivalente del pin KEY che se lo tieni HIGH (o premuto) ti da accesso ai comandi AT completi...se lo premi e lo rilasci ti da, come detto, accesso alla modalità ridotta.

Vi ringrazio intanto per avermi risposto.

  1. Hai un modulo che è 5V tolerant ?

  2. Mi descrivi come hai collegato tutti i vari pin ad Arduino ?

Guglielmo

Si il modulo supporta la 5v, l'ho sempre collegato alla 5v anche sul drone anni fa.
Comunque,
VCC ai 5v di arduino
GND al GND di arduino
TXD al pin 8 digitale di arduino
RXD al pin 7 digitale di arduino
KEY al pin 4 digitale di arduino
Ovviamente come riferimento c'è il codice che ho postato prima.
Ho provato anche a mettere i pin rx e tx (sempre incrociati cioè RX al TX e viceversa) sui pin 0 e 1 di arduino (seriale) ma nulla, e ovviamente ho provato anche a mettere il key sul vcc.
Una domanda ma quando accendo il modulo con il key sul vcc, che sketch devo caricare?

gpb01:

  1. Hai un modulo che è 5V tolerant ?

  2. Mi descrivi come hai collegato tutti i vari pin ad Arduino ?

Guglielmo

Stiamo parlando di Arduino UNO vero ? Perché su una Mega quei pin NON funzionano con la SoftwareSerial.

Detto questo, se hai verificato che il modulo sia 5V tolerant (guarda cosa c’è stampato dietro), se hai, come correttamente indicato, collegato il TX del modulo BT con il pin che fa da RX di Arduino e viceversa e se hai connesso il pin KEY al Vcc (non collegarlo ad un pin, collegalo direttamente a Vcc), puoi caricare il seguente programma che è praticamnete identico al tuo e che è ampiamente collaudato …

#include <SoftwareSerial.h>

#define  SS_RX 8             // RX PIN to receive  data
#define  SS_TX 7             // TX PIN to transmit data

SoftwareSerial ssSerial(SS_RX, SS_TX);

void setup()
{
  delay (1000);
  //
  Serial.begin(9600);        // Initialize USB Serial port
  ssSerial.begin(38400);      // Initialize SoftwareSerial port
  //
  Serial.println("--- Ports ready ---");
  Serial.println("");
}

void loop()
{
  if (ssSerial.available() > 0) Serial.write(ssSerial.read());
  if (Serial.available() > 0) ssSerial.write(Serial.read());
}

Come ti ho detto, ricorda di impostare il "terminale seriale " di Arduino in modo che invii CR/LF.

Guglielmo

Si dietro c’è scritto 3.6 - 5v, uso arduino uno, ho provato anche con un’altro modulo bluethoot senza key, e ho provato anche con arduino nano, ma non funziona! Stranissimo.
Ma il fatto che io abbia cambiato in precedenza il baud rate può dare questi problemi? non è che al posto del baud rate 9600 devo inserire quello che c’è adesso impostato?

gpb01:
Stiamo parlando di Arduino UNO vero ? Perché su una Mega quei pin NON funzionano con la SoftwareSerial.

Detto questo, se hai verificato che il modulo sia 5V tolerant (guarda cosa c’è stampato dietro), se hai, come correttamente indicato, collegato il TX del modulo BT con il pin che fa da RX di Arduino e viceversa e se hai connesso il pin KEY al Vcc (non collegarlo ad un pin, collegalo direttamente a Vcc), puoi caricare il seguente programma che è praticamnete identico al tuo e che è ampiamente collaudato …

#include <SoftwareSerial.h>

#define  SS_RX 8            // RX PIN to receive  data
#define  SS_TX 7            // TX PIN to transmit data

SoftwareSerial ssSerial(SS_RX, SS_TX);

void setup()
{
  delay (1000);
  //
  Serial.begin(9600);        // Initialize USB Serial port
  ssSerial.begin(38400);      // Initialize SoftwareSerial port
  //
  Serial.println("— Ports ready —");
  Serial.println("");
}

void loop()
{
  if (ssSerial.available() > 0) Serial.write(ssSerial.read());
  if (Serial.available() > 0) ssSerial.write(Serial.read());
}



Come ti ho detto, ricorda di impostare il "terminale seriale " di Arduino in modo che invii CR/LF.

Guglielmo

Come vedi nel codice, 9600 è la velocità verso il "terminale seriale" di Arduno che nulla ha a che vedere con la velocità con cui parli, via SoftwareSerial, con il modulo BT.

Gli HC-05 in modalità AT parlano a 38400 e quella è la velocità da impostare sulla SoftwareSerial dato che, salvo io non ricordi male, per tale modalità è fissa, mente quella da te cambiata è la velocità con cui parla in modalità trasparente di lavoro.

Guglielmo

Edit: ... il pin KEY lo hai collegato al +Vcc PRIMA di alimentare il tutto ? Perché una volta acceso poi non passa in modalità AT.

docsavage:
Mi sembra di capire che il pin key lo ha collegato al 4 di arduino, e lo porta altro dopo l'avvio
......
o sbaglio?

Si, nel suo codice faceva così, ma sono più post (#2, #4, #11) che gli ho segnalato di collegarlo al Vcc di Arduino e poi di alimentare il tutto ... ::slight_smile:

Guglielmo

L'ho fatto ma purtroppo non funziona... tropo strano... magari posto una foto dei collegamenti.

gpb01:
Si, nel suo codice faceva così, ma sono più post (#2, #4, #11) che gli ho segnalato di collegarlo al Vcc di Arduino e poi di alimentare il tutto ... ::slight_smile:

Guglielmo

1Classe:
… magari posto una foto dei collegamenti.

… si, che si vedano bene e che sia ben a fuoco :wink:

Guglielmo

Ecco la foto dei collegamenti:

Per la foto più grande: http://it.tinypic.com/r/av1zyw/9

Riepilogando, con il modulo staccato verifico e carico lo sketch, dopo averlo caricato collego il vcc e key ai 5v accendendo il modulo e dovrebbe andare in modalità AT (lampeggio lento) ma ciò non accade.
P.s scusate per quel collegamento tra key e vcc così grezzo.

Con il baud rate a 9600 dando il comando AT non fa nulla:

Con il baud rate a 38400 dando il comando AT esce questo:

Vorrei provare, anzi ti ringrazio tanto, ma non ho capito che prova devo fare

docsavage:
Magari non c'entra nulla, ma chissà

Attacca i due pin della seriale dopo aver acceso il modulo bt

Se il modulo ha dei diodi di protezione verso vcc

E la seriale ha lo stato space a +vcc

Il modulo si accende attraverso la seriale e i diodi di protezione

È una prova che costa poco

1Classe:
Riepilogando, con il modulo staccato verifico e carico lo sketch, dopo averlo caricato collego il vcc e key ai 5v accendendo il modulo e dovrebbe andare in modalità AT (lampeggio lento) ma ciò non accade.

Oddio, ma è così difficile da capire ? :o

Attacca il modulo BT ad Arduino e fai TUTTI i collegamenti, incluso il KEY al Vcc e solo DOPO alimenti Arduino in modo che TUTTO si accenda simultaneamente, sia Arduino che il modulo BT !!!

Guglielmo

Avevo già provato a fare così, e ho provato di nuovo ora... ma non entra in AT...

gpb01:
Oddio, ma è così difficile da capire ? :o

Attacca il modulo BT ad Arduino e fai TUTTI i collegamenti, incluso il KEY al Vcc e solo DOPO alimenti Arduino in modo che TUTTO si accenda simultaneamente, sia Arduino che il modulo BT !!!

Guglielmo

1Classe:
Avevo già provato a fare così, e ho provato di nuovo ora... ma non entra in AT...

.... non so più che altro fati fare :confused: .

I moduli HC-05 entrano così in modalità AT, è ben specificato nel datasheet:

Step 1: Connect PIN34 (KEY) to the power supply PIN.
Step 2: Supply power to module (the PIN34 is also supplied with high level since the PIN34 is connected with power supply PIN). Then the module will enter to AT module. But at this time, the baud rate is 38400. In this way, user should change the baud rate at the AT mode, if they forget the communication baud rate.

... e come vedi è l'unco modo per accederci se si è, ad esempio, dimenticata la velocità a cui lo sie è programmato, dato che, in questo modo, la velocità va fissa a 38400.

Guglielmo