HC-06 et Arduino Nano

Bonjour,

Contexte
J'aimerai votre aide sur un problème que je n'arrive pas à résoudre depuis quelques jours.
Dans le cadre de mon projet, j'ai besoin de recevoir et d'envoyer des informations via bluetooth.

Problème
La commande AT me renvoie rien du tout.
J'ai pris une application terminal sur mon téléphone, quand j'écris quelque chose sur le terminal du téléphone, je le vois bien écris dans le moniteur Série.
Quand j'écris quelque chose dans le moniteur Série, ca apparaît avec des caractères non lisibles sur le terminal du téléphone.
J'ai besoin de pouvoir communiquer dans les 2 sens pour envoyer des informations notamment au téléphone.

Matériel

  • 1 Arduino Nano
  • 1 step down 5V - 3.3V
  • 1 HC-06 (ZS-040)

Montage
ARDUINO --------------------- HC-06
pin +5V ----------------------> pin VCC
pin GND ----------------------->pin GND
pin D2 -----------------------> pinTXD
pin D3 --------step down ----> pin RXD

Code

#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3);
 
void setup() 
{
    Serial.begin(9600);
    Serial.println("Enter AT commands:");
    BTserial.begin(9600);
}
 
void loop()
{
    if (BTserial.available())
    {  
        Serial.write(BTserial.read());
    }
 
    if (Serial.available())
    {
        BTserial.write(Serial.read(),5);
    }
 
}

Merci par avance.

Regardez l’encoding Des caractères sur l’application de votre tel

Pouvez vous nous donnez un exemple de ce que vous recevez si vous tapez BONJOUR côté console série ?

Pourquoi ce 5 ?

BTserial.write(Serial.read(),5);

Besoin de café ce matin, pas vu que le code était posté :slight_smile:

Le 5 est un soucis

Bonjour,

Merci déjà pour vos réponses.

J-M-L:
Besoin de café ce matin, pas vu que le code était posté :slight_smile:

Le 5 est un soucis

Le code n'est pas bien copié-collé, voici le code où le ",5" n'apparaît pas :

#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3);
 
void setup() 
{
    Serial.begin(9600);
    Serial.println("Enter AT commands:");
    BTserial.begin(9600);
}
 
void loop()
{
    if (BTserial.available())
    {  
        Serial.write(BTserial.read());
    }
 
    if (Serial.available())
    {
        BTserial.write(Serial.read(),5);
    }
 
}

J-M-L:
Regardez l’encoding Des caractères sur l’application de votre tel

Pouvez vous nous donnez un exemple de ce que vous recevez si vous tapez BONJOUR côté console série ?

En pièce jointe, les captures d'écran des tests dans un sens (ARDUINO vers TELEPHONE) et de l'autre (TELEPHONE vers ARDUINO). On constate que le BONJOUR fonctionne bien de TELEPHONE vers ARDUINO, mais de l'autre sens on constate les caractères illisibles.

Merci pour votre aide.

BTserial.write(Serial.read(),5);

Le 5 est toujours là... C'est peut être lui qui empêche la bonne communication vers le téléphone

Ben vous envoyez le caractère ASCII 5 qui n’est pas représentable; VIREZ LE ,5....

BTserial.write(Serial.read());

Il n'y est plus c'est toujours le même problème.

Faites uN cast en char juste par acquis de conscience

Electrof:
Bonjour,

Contexte
J'aimerai votre aide sur un problème que je n'arrive pas à résoudre depuis quelques jours.
Dans le cadre de mon projet, j'ai besoin de recevoir et d'envoyer des informations via bluetooth.

Problème
La commande AT me renvoie rien du tout.
J'ai pris une application terminal sur mon téléphone, quand j'écris quelque chose sur le terminal du téléphone, je le vois bien écris dans le moniteur Série.
Quand j'écris quelque chose dans le moniteur Série, ca apparaît avec des caractères non lisibles sur le terminal du téléphone.
J'ai besoin de pouvoir communiquer dans les 2 sens pour envoyer des informations notamment au téléphone.

Matériel

  • 1 Arduino Nano
  • 1 step down 5V - 3.3V
  • 1 HC-06 (ZS-040)

Montage
ARDUINO --------------------- HC-06
pin +5V ----------------------> pin VCC
pin GND ----------------------->pin GND
pin D2 -----------------------> pinTXD
pin D3 --------step down ----> pin RXD

...
Merci par avance.

Bonsoir
qu'est ce que tu entend exactement là par "step down" ?

Un step down permet de desncdre la tension de 5V vers 3.3V. (https://www.amazon.fr/gp/product/B07GSXVRZV/ref=ppx_yo_dt_b_asin_title_o02__o00_s00?ie=UTF8&psc=1)

J-M-L:
Faites uN cast en char juste par acquis de conscience

c'est à dire ?

Electrof:
Un step down permet de desncdre la tension de 5V vers 3.3V. (https://www.amazon.fr/gp/product/B07GSXVRZV/ref=ppx_yo_dt_b_asin_title_o02__o00_s00?ie=UTF8&psc=1)

c'est à dire ?

C'est à dire qu'un step down (comme ton lien) n'est pas fait/prévu pour faire de l'adaptation de niveaux logique :smiley:

C'est vrai, on utilise plutôt un point diviseur sur la pin Rx

Vous avez raison, avec le pont diviseur ca fonctionne !!

Merci beaucoup, le sujet est résolu.

Si on ne veut pas s'ennuyer (même si c'est pas compliqué) avec un pont de résistance, vous pouvez utiliser un te291 logic level shifter par exemple, il en existe à 2, 4, 8 entrées et vous pouvez choisir la tension d'un côté et celle de l'autre et ça marche dans les deux sens

shifter.png
par exemple celui ci a 4 entrées

Merci de ce précieux conseil. Vous êtes vraiment top :slight_smile:

Maintenant, il me reste la partie Commande AT que je n'arrive pas à utiliser.
Comprenez vous pourquoi je n'arrive pas à faire une commande AT ?
Si je tape AT dans le Serial, il s'affiche sur le téléphone, mais aucun OK en retour...

Merci.

Electrof:
Maintenant, il me reste la partie Commande AT que je n'arrive pas à utiliser.
Comprenez vous pourquoi je n'arrive pas à faire une commande AT ?

parce qu'il faut mettre le module en mode commande sans doute

J-M-L:
parce qu'il faut mettre le module en mode commande sans doute

Merci pour le lien, mais j'avoue que je n'ai pas compris ce qu'il a fait...

il dit 2 choses.

  • D'une part qu'avec un pont de résistance à 3.3V ça n'a pas fonctionné et qu'il a balancé directement du 5V (mais attention ça peut griller le module).

  • D'autre part que pour que le module soit en mode commande, il faut mettre KEY à HIGH.

Notez que sur certains modules il n'y a pas la pin KEY mais elle s'appelle EN voire WAKE UP

Notez aussi que si votre module n'est pas appairé, comme les 06 sont toujours des esclaves, alors il est automatiquement en mode commande AT à ce moment là. (mais pour cela vous ne pouvez pas le commander par bluetooth)

il y a un autre tuto qui couvre les 05 et 06 en anglais ici