🛜 Problème avec le HM10 pour communiquer

Bonjour, vous allez bien ?
Pour un projet, j'ai eu besoin que deux Arduino puissent communiquer sans fils en Bluetooth et donc j'ai acheté deux modules HM10 BLE.
Je les ai configuré à l'aide des commandes AT (nom, mode, connection, ...) et j'ai réussi a les connecter entre eux grâce à leur adresse Bluetooth. J'ai su que je les avais connecté avec le clignotement de la led que s'est stopé sur les deux.
Après, j'ai cherché sur internet comment envoyer et recevoir et j'ai integré des lignes de code très simple à mon programme pour voir si ça marchait.

SoftwareSerial emetteur(...)
emetteur.begin(9600);
emetteur.println(message)

if (recepteur.available() > 0)
{Serial.println(recepteur.read());}
else 
{Serial.println("Rien reçu :( ");}

Malheureusement je ne reçois rien du tout.
Pour la partie hardware, j'ai fais exactement come ça :
image

Bon voila, si vous pouvez m'aider ce serait formidable sinon bah c'est pas grave.
Merci d'avance !
Cdt Chataigne

expliquez un peu mieux vos pins, vos ... ne sont pas une info anodine dans

Alors sur la télécommande, la pin TX du HM10 est reliée à la pin 9 et RX à la pin 8.
Sur le robot, la pin TX est reliée à la pin 7 et RX à la pin 8.

Je ne comprends pas, tout le monde se contredit : il faut mettre un divisieur de tension sur RXD ou TXD ou tout simplement ne pas en mettre ? Faut-il alimenter le HM-10 en 3.3V ou en 5V ?

si le HM10 BLE est en 3.3V ça veut dire que ses pins ne peuvent recevoir ou émettre que 3.3V

la pin Tx du HM10 envoie de l'information - donc c'est de l'autre côté qu'il faut pouvoir recevoir 3.3V. Un arduino 5V voit 3.3V comme un HIGH donc il n'y a pas de souci de ce côté là

la pin Rx du HM10 attend du 3.3V mais l'arduino va balancer 5V âžś c'est donc sur cette pin qu'il faut faire l'adaptation de tension.


votre shchéma de câblage montre les pins 2 et 3...
image


si vous faites

SoftwareSerial emetteur(2, 3); // Rx, Tx

alors la pin Rx de votre port série virtuel emetteur est la pin 2 et la pin Tx est la pin 3 de votre arduino.

Vous devez donc connecter la pin 2 (Rx Arduino) Ă  la pin Tx du HM-10 et la pin 3 (Tx de l'arduino) Ă  la pin Rx du HM10 en passant par le pont diviseur

si vous voulez utiliser les pins 8 et 9 il faut juste adapter le câblage et connecter les bonnes pins entre elles (le Tx arduino au Rx HM10 en passant par le pont diviseur et le Rx arduino au Tx HM-10)


pour les posts futurs, lisez et mettez en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

On gagnera du temps si vous postez tout le code et les schémas exacts

Oui d'accord, mais ce n'est marqué nul part que c'est en 3.3V. Même sur le site où je les ai acheté c'était marqué 5V.

Ok merci pour l'explication : simple et efficace

si votre HM-10 est monté sur une carte qui gère le 5V pour les pins d'entrées alors pas besoin d'adaptation... ça dépend des modules. Le composant sous jacent (CC2540 ou CC2541) est en 3.3V. ça dépend donc de ce que fait la carte.

Oui bien sur,
En tout cas merci beaucoup. Je vous notiferai si cela marche ou pas.

Bonjour

on trouve sur le marché des module 'HM-10" divers (HM-10 proprement dit + quelques composants ajoutés)
certains (nombreux) comportent leur régulateur 3,3V on peut les alimenter en 5V
certains (rares) comportent une adaptation de niveau logique : ils acceptent 5V sur leur entrée RX
en général: alim 5V et pont diviseur pour protéger RX d'une seurtension
image

Voici ce qui est marqué sur le site du vendeur (gotronic.fr) :



Je ne comprends plus rien. Si on met un pont diviseur sur la pin TX alors que le niveau logique est de 5V cela marchera-t-il ??

le schéma montre qu'il n'y a pas besoin de pont diviseur (ils utilisent les pins 0 et 1 ce qui n'est pas terrible sur UNO car vous perdez la liaison Serial pour le debug)

soyez précis, le Tx de qui ?

vous avez lu mon explication

si c'est pas clair, je peux reformuler :slight_smile:

LA pin TXD soit la pin le pin du HM10.

Si je comprends mais donc qu'est ce qu'on peut conclure ? Pont diviseur ou pas ? Mon modèle est adapté en 5V ?

pour répondre avec certitude il faudrait savoir ce qui , sur le petit circuit imprimé , a été ajouté au module radio HM-10, entouré en bleu sur ma photo

HM-10

Gotronic dispose peut être du schéma complet

L'embrouile vient du fait que le petit circuit imprimé (break board) est vendu sous le même nom que le module radio BLE qu'il utilise

Ce qui est sur et certain c'est que le module radio (soudé sur le petit circuit imprimé) s'alimente sous 3,3V et ne supporte pas 5V sur ses entrées dont RX

Gotronic montre un schéma sans pont diviseur, on peut penser qu'il font donc l'adaptation dans le module.

Avec un HM-10 vendu par je Gotronic je suivrait leur indication de câblage en pensant que le pont diviseur est présent sur le 'break-out'
.
le terme HM-10 couvre une certaine diversité de produits , tant pour le firmware (jeux de commandes AT) que pour le matériel.

Ok, bon je comprends mieux maintenant. En tout cas, merci enormément d'avoir attaché de l'attention à mon problême.

Cela ne marche pas.... Je viens de finir les soudures (donc en faisant un pont sur RXD) et je ne reçois toujours rien.

s'il y a un pont diviseur sur la carte vous avez 2 ponts...

C'est possible : le premier pont va transformer 5V en 3.3V et le second pont va transformer ces 3.3V en 2.178V puisque son role c'est de diviser la tension

La question sera donc de savoir si ces 2.178V seront vus comme un HIGH par un composant qui attend ~3.3V pour un HIGH

En logique CMOS 3.3V, un HIGH est validé typiquement si la tension est supérieure à une certaine référence. Certains sont à 2.0V donc ça irait quand même mais parfois c'est 0.7 * VDD (0.7 x 3.3 = 2.31V) et là on tombe dans la zone grise.