[RISOLTO]Problema HC05 BT con arduino yun

Salve a tutti.
Come da titolo non riesco a far comunicare il modlo BT HC05 con arduino yun. Sembra che tx e rx non rispondano. Dispongo anche di arduino uno e su quello funziona tutto alla perfezione, ma per ragioni varie avrei bisogno di controllare via bluetooth il mio arduino yun. Ho scoperto che i normali pin rx e tx (0 1) in yun sono sempre occupati dalla scheda wifi perciò tramite la libreria softwareserial.h ho assegnato altri pin a rx e tx ma niente da fare non c'è comunicazione.
Qualcuno conosce qualche metodo per far funzionare il modulo con lo yun? Non vedo perchè non debbano essere compatibili. Grazie

Non conosco la Yun, ma la SoftwareSerial, a seconda delle schede, non la puoi utilizzare su tutti i pin.
Guardando le specifiche della Yun, mi sembra che sia simile alla Leonardo, quindi come da reference

Not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

In alternativa prova con AltSoftSerial, guarda il link per i pin utilizzabili.

Federico

Grazie per la risposta!
Infatti avevo proprio provato quei pin per rx ma niente da fare. Proverò l'altra libreria e vedo cosa accade. grazie

Controlla BENE quali pin sono liberi sulla Yún, perché una buona parte sono utilizzati ... QUI gli schemi dove devi verificare.

Guglielmo

Grazie delle dritte!! Vi farò sapere!

Dopo varie prove niente da fare.

In base allo schema gentilmente condiviso da gpb01 deduco che i pin liberi siano D4 D5 D6 e IO8 IO9 IO10 IO11 IO12 IO13

mi viene il dubbio che sbagli qualcosa sul codice

#include <SoftwareSerial.h>
int txPin = 13;
int rxPin = 12;
SoftwareSerial bluetooth (rxPin, txPin);

adesso trovate 12 e 13 ma li ho privati tutti e la trasmissione non avviene mai.

Non ho ben compreso l'utilizzo di AltSoftSerial, la richiamo nello stesso modo di SoftwareSeria? Non è comunque presente nell'ide di arduino.

Grazie qncora

Prova la AltSoftSerial Library, dovresti poterla installare dal Library manager del IDE ...
... sulla Yún ha i pin "obbligati" e sono il pin 5 per il TX ed il pin 13 per RX.

Guglielmo

Ho provato anche questo... niente :frowning:

//SoftwareSerial bluetooth (rxPin, txPin);
#include <SoftwareSerial.h>

//creo una nuova porta seriale via software
SoftwareSerial PortaSeriale =  SoftwareSerial(10, 11);
void setup(){
//definisco il pin10(RX) come ingresso
pinMode(10, INPUT);
//definisco il pin11(TX) come uscita
pinMode(11, OUTPUT);

almax85:
Dopo varie prove niente da fare.

Immagino tu abbia provato i pin 10 e 11; (oops visto adesso il tuo post)
altra cosa da tener presente con SoftwareSerial è il baud-rate, non può essere tanto alto, e naturalmente deve essere lo stesso del HC-05 (default mi pare 9600)

#include <SoftwareSerial.h>
int rxPin = 10;
int txPin = 11;
SoftwareSerial bluetooth(rxPin, txPin);

void setup() {
  bluetooth.begin(9600);
  //...
}

Se continua a non funzionare, prova a cercare nel forum non italiano, qui mi pare che sia veramente poco presente al Yun.

Mi spiace non poterti aiutare di più!!

almax85:
Non ho ben compreso l'utilizzo di AltSoftSerial, la richiamo nello stesso modo di SoftwareSeria? Non è comunque presente nell'ide di arduino.

No, devi installarlo,e per farlo usa Gestione librerie... dl menu Strumenti dell'IDE.
Una volta aperta la form, ti basta inserire AltSoftSerial nella casella di ricerca, poi selezioni e installi.

L'utilizzo è simile, ma comunque trovi gli esempi.

Nel caso sei obbligato con i pin 5 e 13

Federico

Grazie a tutti ragazzi. Dopo aver provato vi do riscontro!

Prova a leggere anche queste discussioni:

https://forum.arduino.cc/index.php?topic=193526.0

https://forum.arduino.cc/index.php?topic=209881.0

Dicono che funziona.

Federico

>almax85: Ma ancora prima di perdere altro tempo ...

1. Sei sicuro della velocità di colloquio del HC-05 ... di default è a 9600 in "transparent mode" e di 38400 in "AT mode"

2. Hai incrociato i pin ...

TX Arduino --> RX HC05
RX Arduino <-- TX HC05
GND Arduino <--> GND HC-05
+5V Arduino <--> +5V HC-05

3. Hai verificato se il tuo HC-05 è 5V tolerant sui pin TX/RX? Altrimenti, sul pin RX del HC-05, occorre un partitore resistivo per abbasare i 5V di uscita dal TX di Arduino al massimo di 3.3V in ingresso sul RX del HC-05.

Guglielmo

gpb01:
>almax85: Ma ancora prima di perdere altro tempo ...

Come sempre vedi lungo :smiley: :smiley:
ma dice che con Arduino Uno funziona bene!

Federico

Federico66:
Come sempre vedi lungo :smiley: :smiley:
ma dice che con Arduino Uno funziona bene!

... se funziona bene con la "Uno", deve funzionare anche con la "Leonardo" (la Yún è una "Leonardo" con un pezzo di HW Linux in più collegato via seriale :wink:) ... rispettando i limiti che tutte le librerie di emulazione seriale hanno.

Per questo gli dicevo di provare la AltSoftSerial sui due pin indicati ... perché quella è sicuro che deve funzionare ... e se non va come scritto, allora il problema è altrove.

Guglielmo

Grazie davvero per tutto l'interessamento.
Allora i collegamenti sono incrociati.
Sono in trasparent mode quindi 9600 verificati sul codice e sulle impostazioni.
L'alimentazione ho usato vcc sui 3.3V perché sul manuale ho visto che il suo livello logico è 3.3
Su Arduino uno funziona alla perfezione collegando vcc a 3.3V
Non ho mai provato a 5v e non ho utilizzato il partitore resistivo. Collegandolo alla 3.3v occorre il partitore?
Grazie

Metti una foto (nitida) del retro della schedina con il HC-05 e vedrai che ... qualche cosa non quadra ...

Guglielmo

gpb01:
Metti una foto (nitida) del retro della schedina con il HC-05 e vedrai che ... qualche cosa non quadra ...

Si qualcosa non quadra!

Curiosità: ma possibile che sulla Uno funzioni alimentando a 3.3V?

Federico

Federico66:
Curiosità: ma possibile che sulla Uno funzioni alimentando a 3.3V?

Se la scheda adattatrice è quella solita, è sotto al limite e tutto è possibile ... oggi va, domani no, dopodomani si, ... :smiley:

Guglielmo

ecco il retro del modulo. Cosa non dovrebbe quadrare? La tensione?

almax85:
ecco il retro del modulo.

Emmm ... dove ? ? ?

Guglielmo