Ciao a tutti! ^^
Per il bluetooth ho un modulo HC-05 e dopo averlo collegato al telefono vorrei che si accendesse un buzzer a seconda della distanza a cui si trova il telefono dal modulo. Sono nuovissimo in questo mondo, quindi non ho molte conoscenze di base. So che la distanza viene calcolata attraverso il valore RSSI. Mi sono informato e ho capito come funziona a grandi linee, ma non so come fare in modo che il valore venga calcolato in automatico. Sono riuscito a collegare il telefono, ora mi manca solo scrivere il comando per ottenere il valore RSSI. Come potrei fare? Ringrazio in anticipo per l'aiuto
Di che Arduino stiamo parlando? Descrivi il circuito e la logica del programma ...
Guglielmo
>docdoc: in generale, prima di dare indicazioni, potresti aspettare che l'utente risponda alle mie domande ? Stiamo parlando di Arduino o di altro ... visto che non lo specifica ... : Grazie.
Guglielmo
Sto usando un Arduino Uno, lascio in allegato una foto del collegamento (se può servire).
Questo invece è il codice che sto usando e che, ovviamente, non funziona.
#include <SoftwareSerial.h>
int buzzer = 12;
int digitalPin = 9;
int rssiDur;
String ricevuto;
SoftwareSerial BTSerial(11, 10); // (TX, RX)
void setup(){
pinMode(buzzer, OUTPUT);
pinMode(digitalPin, INPUT);
Serial.begin(115200);
BTSerial.begin(9600);
Serial.println("OK");
}
void loop(){
rssiDur = pulseIn(digitalPin, LOW, 200);
Serial.println(rssiDur);
if (BTSerial.available()){
char rssiDur = BTSerial.read();
Serial.println(rssiDur);
if ((rssiDur !=0) && (rssiDur < -26))
{
tone(buzzer, 1000, 500);
delay(1000);
}
}
delay(10);
}
Grazie, ma sono già stato su quelle pagine... A dire il vero, ormai credo di aver cercato ovunque. Comunque ricordo di aver fatto come suggeriva il primo sito che hai linkato e inserendo il comando AT+INQ rispondeva con ERROR(1F).
vegetto1624:
Sto usando un Arduino Uno, lascio in allegato una foto del collegamento (se può servire).
Perfetto, grazie, ora è più chiaro ... se segui i link che ti ha già messo docdoc trovi quanto ti serve.
Considera comunque che la misura del RSSI del BT05 è una cosa approssimativa e ti da un indicazione, ma non molto di più ...
Guglielmo
vegetto1624:
Grazie, ma sono già stato su quelle pagine...
No guarda, stai sbagliando qualche cosa tu perché quel codice funziona correttamente ...
... ovviamente devi essere in modalità AT ed inviare il comando con AT ... :
Guglielmo
... comunque è cosa già trattata altre volte qui nella sezione italiana ... con la "lente di ingrandimento" che è in alto a destra, fai un po' di ricerche e troverai delle discussioni dove è spiegato come usare quel comando AT
Guglielmo
Okk grazie, non mi sembra di averle trovate ma ora farò qualche altra ricerca. Comunque non mi serve una misura precisa, mi va bene uno scarto di qualche centimetro.
vegetto1624:
... mi va bene uno scarto di qualche centimetro.
... quello ti da un indicazione della potenza ricevuta, mica la distanza ... a te poi fare delle prove e vedere con che segnale sei alla giusta distanza.
Guglielmo
gpb01:
No guarda, stai sbagliando qualche cosa tu perché quel codice funziona correttamente ...
... ovviamente devi essere in modalità AT ed inviare il comando con AT ... :Guglielmo
Credo di essere riuscito a capire perché non riesco a usare il comando AT+INQ. Ho letto in giro che il firmware 3.0 degli HC-05, quindi quelli che ho io, hanno due modalità AT: nella prima non è possibile usare il comando AT+INQ, ma non riesco a capire come accedere alla seconda. E' vero oppure no? Se sì, come posso farlo funzionare?
Comunque non capisco una cosa... Lo sketch che uso per la modalità AT è diverso dallo sketch che uso per far funzionare il buzzer tramite bluetooth. Da quanto ho capito, la modalità AT serve solo a configurare il modulo, mentre per utilizzarlo in qualche modo serve un altro sketch, ma non so se posso usare il comando AT+INQ anche in questo caso.
Si, ho visto ch il FW 3.0 ha due modalità AT. Per entrare nella seconda modalità ...
Power up without holding the button. You will get the fast blink speed. When its powered up, press and hold the button. The led will continue blinking fast, but while the button is pressed you can now connect to the device on the configured baud rate. So open the serial monitor and type AT to verify. Remember that the mode is only active while the button is pressed. So keep it pressed.
... prova e vedi se va. Trovi alcune info QUI.
In ogni caso, si, TUTTI i comandi AT sono solo disponibili in AT mode, quindi, nell'uso normale, NON sono disponibili.
Guglielmo
gpb01:
Si, ho visto ch il FW 3.0 ha due modalità AT. Per entrare nella seconda modalità ...
... prova e vedi se va. Trovi alcune info QUI.
Ho seguito la procedura. Dopo che ho dato di nuovo corrente al modulo, tengo premuto il pulsante e il led continua a lampeggiare velocemente, tuttavia aprendo il serial monitor e scrivendo "AT" non ricevo OK, quindi non sono in modalità AT. Bah... Non è possibile che su internet non ci sia una e dico una guida chiara e esaustiva...
In ogni caso, si, TUTTI i comandi AT sono solo disponibili in AT mode, quindi, nell'uso normale, NON sono disponibili.
Guglielmo
Quindi è possibile in qualche modo prendere il valore RSSI presente nella risposta del comando AT+INQ e usarlo in un if per accendere il buzzer se tot valore viene superato? Comunque non posso tenere sempre premuto il pulsante per usare INQ... Stavo cercando come renderlo un processo automatico.
Prova a vedere se trovi degli HC-05 con il firmware 2.x ...
... però comunque, ogni volta che vorrai usare l'applicazione, dovrai mandare in modalità AT il modulo ... e non so quanto sia cosa comoda ... :
Guglielmo