Salve a tutti;
sicuramente la mia è una domanda ripetitiva, sono due giorni che cerco su internet e sul forum delle risposte, ho seguito molte guide ma a quanto pare mi rimane il problema:
Ho un Arduino UNO e un Arduino MEGA 2560, devo fargli scambiare dei dati fra loro tramite Bluetooth, essenzialmente ho collegato l'UNO ad una HC-05 tramite cavi (con alcuni sketch anche la KEY, con altri invece ho usato il pulsatino per entrare in AT mode) , questo funziona alla perfezione, vado sul serial monitor e riceve tutti i comandi AT, tranne quando arrivo all'AT+init, lì il led dell'HC-05 lampeggia velocemente e non riceve più comandi.
Quì è sorto il secondo problema, collegando come dice l'Arduino MEGA ad una HC-05 sempre, arrivato sul serial monitor del programma Tera Term (ma anche su quello del programma Arduino 1.0.1 base) non prende nessun comando AT e questo persiste anche con altre guide; la cosa mi serve per un progetto lavorativo, quindi sarei davvero felice se qualcuno mi aiutasse a risolvere o se avesse qualche idea a riguardo, grazie mille!
PS.: E' il primo topic che faccio, se servono più dettagli o le guide/sketch che ho seguito, ditemelo e posto tutto, grazie ancora!
LordProtoMan:
... quello del programma Arduino 1.0.1 base ...
Scusa ? ? ? :o :o :o ... ma di cosa stai parlando ? ? ? Cosa è la versione 1.0.1 ? ? ?
Spero bene che tu abbia installato l'ultima versione dell'IDE Arduino (1.8.6) e che le prove tu le faccia con il Serial Monitor di detta versione ... :
... detto questo, come hai collegato i moduli BT ? A quali pin ? Singolarmente (ovvero NON colegati in master-slave) ma come due "slave" riesci ad utilizzarli magari collegadoti con uno smatphone ?
Perché è del tutto inutile che tu cechi di fare le cose più complicate (master-slave) se non riesci neanche a far funzionare le cose base (slave ed esercizio per echo dei caratteri ricevuti) ... :
gpb01:
Scusa ? ? ? :o :o :o ... ma di cosa stai parlando ? ? ? Cosa è la versione 1.0.1 ? ? ?
Spero bene che tu abbia installato l'ultima versione dell'IDE Arduino (1.8.6) e che le prove tu le faccia con il Serial Monitor di detta versione ... :
Guglielmo
Okay, scaricherò la versione da te detta, avevo preso la 1.0.1 perchè vedevo aveva la maggior parte delle compatibilità ma a quanto pare non è stata una buona idea, ahah!
Dici potrebbe essere legato anche a questo il mio problema?
gpb01:
... detto questo, come hai collegato i moduli BT ? A quali pin ? Singolarmente (ovvero NON colegati in master-slave) ma come due "slave" riesci ad utilizzarli magari collegadoti con uno smatphone ?
Perché è del tutto inutile che tu cechi di fare le cose più complicate (master-slave) se non riesci neanche a far funzionare le cose base (slave ed esercizio per echo dei caratteri ricevuti) ... :
Guglielmo
gpb01:
... detto questo, come hai collegato i moduli BT ? A quali pin ? Singolarmente (ovvero NON colegati in master-slave) ma come due "slave" riesci ad utilizzarli magari collegadoti con uno smatphone ?
Perché è del tutto inutile che tu cechi di fare le cose più complicate (master-slave) se non riesci neanche a far funzionare le cose base (slave ed esercizio per echo dei caratteri ricevuti) ... :
Guglielmo
Sì, quel test l'ho già fatto giorni fa, collegandomi al mio smartphone con l'Arduino UNO, accendendo un LED tramite Bluetooth, ecc... i moduli BT all'Arduino UNO (Slave) sono collegati:
Intanto, se vuoi poter fare un "debug" decente, dimenticati di usare i pin 0 ed 1 (... che, per di più, spesso, con gli HC-05, danno anche problemi) ed usa, sulla UNO, una seriale virtuale creata con la libreria SoftwareSerial (es. 10 RX e 11 TX). In questo modo la porta USB (che è collegata ai pin 0 ed 1) resta libera e puoi fare il debug.
Sulla MEGA hai proprio sbagliato pin ... la porta Serial1 ha il RX è il pin 19 ed il TX è il 18 ... tu hai mischiato i pin di due porte seriali differenti (Serial2, RX è il 17 e TX è il 16).
gpb01:
Intanto, se vuoi poter fare un "debug" decente, dimenticati di usare i pin 0 ed 1 (... che, per di più, spesso, con gli HC-05, danno anche problemi) ed usa, sulla UNO, una seriale virtuale creata con la libreria SoftwareSerial (es. 10 RX e 11 TX). In questo modo la porta USB (che è collegata ai pin 0 ed 1) resta libera e puoi fare il debug.
Sulla MEGA hai proprio sbagliato pin ... la porta Serial1 ha il RX è il pin 19 ed il TX è il 18 ... tu hai mischiato i pin di due porte seriali differenti (Serial2, RX è il 17 e TX è il 16).
Guglielmo
Dunque, per il SofwareSerial sto dando un'occhiata, ma devo capire bene come si usa, serve per poter usare qualsiasi Pin da come ho capito; riguardo la MEGA ho sbagliato io a scrivere, sto usando esattamente i pin 18 e 19
gpb01:
Ok, hai provato ad avere sulla MEGA il modulo configurato come SLAVE ed a vedere se il classico programmino di echo funziona ?
Guglielmo
Sì, ho provato sia col serial monitor dell'applicazione Arduino Nightly, sia con Tera Term, in entrambi i casi al comando AT non ho risposta.
Mi chiedevo, secondo la guida che sto seguendo mi ha fatto mettere uno sketch vuoto per entrare in modalità AT, è corretto?
Inoltre qual'è la procedura migliore per entrare in questa modalità (premendo il tastino della HC-05 e poi collegare il VCC, ecc... ) ?
Ho risolto usando i pin RX0 e TX1 sia della UNO che della MEGA; ho anche usato SoftwareSerial per provare a cambiare i RX e TX da usare ma senza successo, non mi si avvia la AT mode, ovvero il serial monitor non risponde al comando AT.
Ho collegato in questo modo, usando un Arduino UNO:
/*
Software serial multple serial test
Receives from the hardware serial, sends to software serial.
Receives from software serial, sends to hardware serial.
The circuit:
* RX is digital pin 2 (connect to TX of other device)
* TX is digital pin 3 (connect to RX of other device)
created back in the mists of time
modified 9 Apr 2012
by Tom Igoe
based on Mikal Hart's example
This example code is in the public domain.
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(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("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Infatti mi sembrava strano ma per sicurezza ho provato sul serial monitor sia a 4800, che a 9600 che a 38400 (cambiandolo anche nello sketch ovviamente) perchè lo sketch non l'ho fatto io , a quanto andrebbe impostato?
Patrick_M:
se non sbaglio i moduli bt di default sono settati a 115200 comunque provando con tera term cambi la velocità fino a quando non ti risponde...
Di base gli HC-05 arrivano settati come slave e funzionanti a 9600 bps.
RX bluetooth <--- TX Arduino
TX bluetooth ---> RX Arduino
GND bluetooth <---> GND Arduino
Vcc bluetooth <---> +5V Arduino
... sempre che, la basetta adattatrice dove sono montati gli HC-05 abbia i convertitori di livello (il modulo HC-05 di per se è un modulo a 3.3V, ma le basette su cui lo vendono saldato normalmente ne permettono l'uso a 5V ... dipende da cosa ha comprato l'OP).
Io ho provato sia a 9600, sia a 115200, e sia sulla board UNO che MEGA non va in nessun caso (nemmeno con gli altri valori bps) , mentre se uso i pin 0 e 1 (RX e TX) va perfettamente ad entrambe; mi veniva quindi il dubbio che sia un errore di sketch
Guarda, per fare le prove usa questo programma che usano tutti e che è più che collaudato:
#include <SoftwareSerial.h>
#define SS_RX 10 // RX PIN to receive data
#define SS_TX 11 // TX PIN to transmit data
SoftwareSerial ssSerial(SS_RX, SS_TX);
void setup()
{
delay (2000);
//
Serial.begin(9600); // Initialize USB Serial port
ssSerial.begin(9600); // 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());
}
Il modulo lo devi connetetre ai due pin 10 e 11 (il 10 è RX su Arduino quindi ci devi collegare il TX del BT e l'11 è il TX di Arduino quindi ci devi collegare il RX del BT).
Quello che invii dal monitor seriale viene inviato al modulo BT, quello che il modulo BT invia viene visualizzato su monitor seriale.
Ricorda solo che in modalità "Comandi AT" il modulo lavora a 38'400 (... e quindi bisogna modificare la velocità della SoftwareSerial) mentre in modalità "normale" a 9'600.