Oggi sono entrato nel meraviglioso (o almeno così pensavo) mondo di Arduino. Sono agli inizi con l'elettronica, ma studiando ingegneria elettronica e dovendo dare un meraviglioso esame di informatica, mi sono detto "why not?", e così mi sono procurato un Arduino Leonardo, una scheda HC 05 e un relè.
Del relè per ora non ne parlerò, perchè non è lui il problema (o almeno, non quello primario, penso).
Bando alle ciance, vi espongo il problema che mi assilla. O meglio, uno dei. Quello che spero di riuscire a risolvere in 24h.
Leonardo lo collego al PC con cavo USB collegato ad un HUB USB.
Mentre ho collegato il mio Leonardo al modulo HC 05 così :
HC 05 - Leonardo
Vcc - 5 V
GND - GND
TXD - RX <- 0
RXD - TX -> 1
Il LED del modulo HC 05 lampeggia forsennatamente appena collego l'USB al Leonardo. E dovrebbe essere OK.
Avvio Arduino IDE 1.6.6 e cerco di entrare nelle impostazioni del modulo HC 05. Nulla. Non da' segni di vita.
Premo il pulsantino sul modulo HC 05, tolgo Vcc, rimetto Vcc, rilascio pulsantino, il LED lampeggia più lento, ma niente. Nessuna risposta OK al comando "AT" dato in monitor seriale (Baud rate 38400, NL&CR).
Come avrete probabilmente capito la mia idea sarebbe quella di pilotare, in un primo momento, il relè via BT. Anche caricando uno dei mille sketch che si trovano su internet per fare questo, sembra che HC 05 e Leonardo non comunichino.
Mi affido a voi, avete qualche idea/consiglio/incantesimo?
Prima di tutto, essendo il tuo primo post, ti consiglio di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...
... poi, visto che non abbiamo la sfera di cristallo, se metti il programma che stai usando (... racchiuso negli appositi tag CODE, come da regolamneto) ... magari riusciamo pure a vedere cosa c'è che non va !
... ah ... comunque, per esperienza con gli HC-05, specie con quelli cinesi da quattro soldi, è meglio usare la SoftwareSerial su due pin diversi che la vera seriale ... problemi di livello dei segnali ... :
Guglielmo
P.S.: ma ti sei letto l'intero thread dedicato ai moduli bluetooth ? Ci sono un sacco di informazioni !
-dal codice che hai inserito nel post, non capisco come usi il modulo HC-05, nel senso che hai definito i pin della seriale, leggi quello che ricevi dalla seriale e in base a cosa ricevi ecciti o non ecciti la bobina del relativo relè giusto?in modulo HC-05 al momento non lo stai utilizzando quindi?
Secondo me potrebbe essere utile che tu alleghi anche uno schema elettrico di come hai collegato i vari componenti.
Allora, fissiamo alcuni punti e collaudiamo il tuo HC-05 ...
di default il HC-05 lavora a 9600 baud
di default in modalità comandi il HC-05 lavora a 38400 baud
in modalità d'uso normale il pin KEY deve essere o lasciato sconnesso o LOW
per entrare in modalità comandi il pin KEY DEVE essere messo HIGH (+Vcc)
Detto questo, il seguente programma di prova è ampiamente collaudato e ti permette di usare il HC-05 sia in modalità comando che in modalità normale (devi commentare o meno una define in testa al programma):
// *****************************************************
//
// Bluetooth module serial communication
// Bluetooth <--> USB_Serial
//
// *****************************************************
#include <SoftwareSerial.h>
// #define BT_CONTROLMODE // Uncomment if you set the KEY pin to HIGH (Control mode)
#define BT_RX 10 // PIN to receive from bluetooth
#define BT_TX 11 // PIN TO transmit to bluetooth
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup()
{
delay (2000);
//
Serial.begin(9600); // Initialize USB Serial port
//
#ifdef BT_CONTROLMODE
btSerial.begin(38400); // Initialize Bluetooth SoftwareSerial port for default control speed
#else
btSerial.begin(9600); // Initialize Bluetooth SoftwareSerial port for selected data speed
#endif
//
Serial.println("--- Ports ready ---");
Serial.println("");
//
#ifdef BT_CONTROLMODE
delay(1000);
btSerial.print("AT");
btSerial.print("\r\n");
#endif
}
void loop()
{
if (btSerial.available() > 0) Serial.write(btSerial.read());
if (Serial.available() > 0) btSerial.write(Serial.read());
}
Quello che scrivi sul monitor seriale arriva al HC-05, quello che il HC-05 risponde arriva sul monitor seriale.
Mi raccomando, i comandi AT vanno terminati con CR/LF.
La modalità AT non si abilità premendo il pulsantino sul modulo, togliendo Vcc e rimettendo Vcc? Lampeggia più lentamente così facendo.
Aukru HC-05 seriale a 6 Pin (così c'è scritto dove l'ho comprata)
Input voltage: 3.6V - 6V, 7V prohibit over
Power anti-reverse, reverse module does not work
leads to 6 pin: EN / VCC / GND / RXD / TXD / STATE (Bluetooth status leads to the foot, is not connected to the output low, output high after the connection)
En status indicator, LED flash means no Bluetooth connection; LED slow flash indicates into the AT command mode
On-board 3.3V regulator chip, the input voltage DC 3.6V-6V; when unpaired, current is about 30mA (because LED lights flashing, the current state of change); After the pairing is successful, the current is about 10mA
Level interface 3.3V, you can directly connect a variety of microcontroller (Arduino / 51 / AVR / PIC / ARM / MSP430, etc.), 5V microcontroller can also be directly connected. Directly connected to the microcontroller serial port, you can not go through MAX232 chip!
The open area effective transmission distance of 10 meters, over 10 meters are possible, but do not guarantee the quality of the connection
After the pairing is successful, can be used as a full-duplex serial interfaces. Do not need to know any of the Bluetooth protocol, but only supports 8 data bits, 1 stop bit, no parity communication format. This is the most common communication format, not support other format!
Press the button to give the Bluetooth module is powered up can enter AT mode, set parameters and query information
You can switch between master and slave mode via AT commands
The module default baud rate is 9600, the default passkey is 1234, the default name for the HC-05
protection with transparent heat shrinkable tube
pay your attention : Please do not connect the power supply with the signal pin directly,or it will result in broken
Ok, l'ennesima basetta adattatrice diversa dalle altre ...
... HC-05 in realtà è solo il modulino saldato sopra, poi, ogni rivenditore, lo applica su una basetta adattatrice e ... non c'è uno standard
Da quello che leggo, il KEY è in realtà collegato a quel pulsantino, quindi, probabilmente, per farlo andare in modalità AT, basta alimentarlo tenendolo premuto ... :
Non mi piace il punto 8 ... "Level interface 3.3V, you can directly connect a variety of microcontroller (Arduino / 51 / AVR / PIC / ARM / MSP430, etc.), 5V microcontroller can also be directly connected." ...
... HC-05 NON è 5V tolerant e, se la basetta adattatrice riporta 3.3V significa che non ha gli adattatori di livello (... mentre, come vedi, per l'alimentazione è chiaramente specificato che si può alimentare sino a 6V). Farlo lavorare a 5V, senza adattatori di livello ... porta, prima o poi, a danneggiarlo.
Io collegherei il TX del HC-05 direttamente al pin di Arduino che fa da RX, mentre il pin di RX del HC-05 lo collegherei al pin di Arduino che fa da TX tramite un piccolo partitore resistivo per portare i 5V a 3.3V
Per il resto, usando il programma di test che ti ho dato, DEVE funzionare, altrimenti qualche cosa è collegata male/il modulo è guasto.
Guglielmo
P.S.: Occhio che sulla Leonardo NON tutti i pin possono essere usati per la SoftwareSerial ... usa quelli del mio esempio, 10 e 11.
Ok, penso che, avendolo pagato 5 euro lo butterò via sto modulino e ne comprerò uno decente. Dici che mi convenga? Anche perché vorrei alla fine qualcosa di affidabile nel tempo. Avrei dovuto pensarci prima.
Nelle prove ho usato prima TX e RX della Leonardo, poi, dopo i tuoi suggerimenti, sempre e solo 10 e 11.
Purtroppo con il programma di test non funziona, i collegamenti sono abbastanza basici, e arrogantemente dico che siano giusti. :-[
Grazie, sei stato gentilissimo!
PS per una gestione a distanza di pochi metri, mi conviene una ethernet shield o un altro modulo bluetooth, per la gestione di un relè? Lo so che è a seconda delle mie esigenze, per me è la stessa cosa.
Karaard:
PS per una gestione a distanza di pochi metri, mi conviene una ethernet shield o un altro modulo bluetooth, per la gestione di un relè? Lo so che è a seconda delle mie esigenze, per me è la stessa cosa.
In effetti 5€ sono un po' pochini ...
Per la tua domanda ... dipende cosa vuoi fare e con cosa ti ci vuoi collegare. Ad esempio, se tu usassi dei device iOS (iPhone, iPad, ...) dovresti necessariamente usare WiFi o BLE, se usi Android va bene l'HC-05.
Ogni opzione ha i suo vantaggi ed i suoi svantaggi ... :
Per l'HC-05 guarda QUESTO ... EMBstore è abbastanza serio, è in Italia e molti qui hanno acquistato materiale da lui con soddisfazione.
Cavolo, era una delle opzioni di acquisto quel negozio di Ebay.
Solo dispositivi Android. L'idea era quella di gestire strisce led posizionate su una trave, con attivazione da remoto. Da remoto in senso lato, mi va benissimo anche accedere ad una pagina da browser dello smartphone, e da lì attivare i relè.
Per altre cose che avevo in mente, non ho necessità di connessione.
Comunque, eventualmente, il PIN RX dell'HC-05 da te consigliato, dovrei comunque collegarlo con resistenza per portare la tensione a 3.3?
Accetta alimentazione e comandi sia a 5Vdc che a 3,3Vdc.
... quello che ti ho linkato è fatto per essere connesso direttamente (ha probabilmente degli adattatori di tensione on board) e, come hai visto ... ha il pin KEY
Va benissimo direi, visto che ...
... ho, più o meno, la stessa applicazione che vuoi fare tu realizzata con un ATtiny85 ed il modulo HC-05 che controllo da un tablet Amazon Kindle Fire (... usa una versione Amazon di Android) tramite BTinterface