Mais après avoir fait quelques recherches, je n’ai trouvé que peu d’informations…
Voici ce qu’il me semble avoir compris ;
La broche STATE est :
LOW (0V/GND?) quand Bluetooth non connecté.
HIGH (3,3 V?) quand Bluetooth connecté.
Suffit-il de brancher la broche STATE à une pin de l’Arduino, puis :
pinMode (pin, INPUT) ; // dans le setup
digitalRead (pin) ; // dans le loop ?
Si tel est le cas, je me pose une question…
Lorsque la broche STATE est LOW, et que je lis le pin de l’Arduino, j’aurai une donnée instable non ? (des 0 et des 1) vu que rien n’alimente le pin… ?
Est-ce que je dois prévoir une résistance en pull-down ou Pull-up ?
Ou est-ce que des résistances ont été prévu a cet effet dans le module HC-05 ?
Quelqu’un a-t-il déjà utilisé la broche STATE d’un HC-05 ?
Si oui, comment avez-vous procédé ?
Peut-être que je n’ai pas compris...(je n’ai pas un gros niveau en Arduino)
je me permets: bravo pour avoir fait tes recherches avant de venir poser ta question. Je suis sur que nos membres apprécieront le geste.
L'ultime réponse (est-ce que la broche sera "flottante" en l'absence de connexion) ne peut venir que d'un seul endroit: le schéma du circuit imprimé du module HC-05. Seul lui pourra te dire si par exemple la broche est connectée en pull-down ou autre connexion électrique qui permet de conserver une valeur stable (c'est à dire soit 0/LOW soit 1/HIGH).
Par contre, je ne suis pas assez doué pour te le confirmer, je le suis juste assez pour utiliser google et dégotter le schéma.
Ton code est bon:
tu déclare la pin sur arduino en input dans le setup;
tu lis l'état de la pin quand tu veux dans le loop avec digitalRead(n° de pin)
à la différence de analogRead(n° de pin) qui va te donner une valeur proportionnelle au courant reçu (par exemple entre 0 et 3,3V dans ta configuration), digitalRead attend qu'une certaine valeur au dessus de 0V soit atteinte pour passer de 0 à 1, et inversement, qu'une certaine valeur en dessous de 3,3V soit atteinte pour passer de 1 à 0.
De mémoire, c'est une valeur globalement intermédiaire (autour de 1,5V) qui fait la bascule.
Donc, tu aurais des erreurs de lecture sur la pin STATE en la lisant avec digitalRead, uniquement si le module arrive à générer plus de 1,5V sur sa broche. Ca écarte de fait toutes les petites variations que tu pourrais voir si tu lis avec analogRead une pin non connectée (et qui captera en fait les variations de l'environnement plutot qu'un vrai courant provenant d'un module).
j'essaie d'éditer ma réponse avec le vrai lien qui indique la valeur intermédiaire dont je parle.
EDIT: ici dans le forum, une arduino qui fonctionne en 5V va "basculer" autour de 3V (à peu près la moyenne entre 0 et 5V)
Du coup j’ai fait quelques tests simples pour contrôler la tension sur la broche State :
Voici un petit câblage simple (j’ai juste alimenté le HC-05 en 5V, et mis un multimètre pour contrôler la broche State), et un petit code qui va bien pour me montrer si le pin Arduino est à 1 ou a 0 (et ainsi voir si il y a une instabilité) :
La broche State est bien a 0V quand il n’y a pas de connexion
La broche State est à ≈ 3,3V quand il y a connexion.
Pas d’instabilité au niveau de la lecture du pin.
Effectivement après avoir chercher aussi un peut de mon coté, il semblerait :
Que les pins de l’Arduino (tous les modèles?) considère un Low entre 0-3V
Et un High entre 3V-5,5V (5,5V étant le max supporté par les pins)
Et ce, si l’alimentions de l’Arduino est comprise entre 2,4V-5,5V.
Apparemment la « bascule » serait moindre si Arduino alimenté en 3,3v.
Ma carte (KS0499 KEYESTUDIO Mega 2560 Plus) est pour le moment alimenté via USB, mais a terme je l’alimenterai via le jack en 12V. Du coup est-ce que cela changerais la « bascule » ?
Ou même si Arduino est alimenté en 12V, Arduino (via un transformateur interne?) transformera 12V en 5V ?
J’ai cherché, et trouvé quelques schémas du HC-05. Je vois bien qu’il y a une led et des connections qui en parte avec peut-être une résistance, mais je ne mis connais pas assez.
Conclusion/supposition :
Il doit sûrement avoir une résistance en interne dans le HC-05 au niveau de la broche State, car je n’ai pas détecté d’instabilité au niveau de la lecture du pin Ardunio.
merci pour ta réponse, et je suis vraiment ravi si ça a pu t'aider au moins un tout petit peu.
t'as tout bon: tu alimentes ton arduino "comme" tu le souhaites et elle gère son alimentation pour se générer un joli 5V (ou 3,3V selon les modèles).
Par contre, on parle là du courant qui est reçu sur une pin en INPUT, et c'est différent de la partie alimentation: le courant acceptable sur une Pin est donnée par la datasheet de la carte, et la fameuse bascule sera liée au courant admissible sur la pin, peut importe l'alimentation de la carte en elle même.
Pour l'exemple: j'alimente ma 33IOT avec une batterie 3,7V Li-ION qui passe par un module sortant du 5V branché sur la pin VIN de ma carte (acceptant 5 à 12V).
Mes modules (genre HC-05, détecteur ultrason etc...) sont alimentés par la sortie de la carte 3,3V, je pourrais également les alimenter par une pin OUTPUT (ce qui me permettrait de les allumer ou les éteindre avec le code) qui sort aussi du 3,3V.
Mes pin en INPUT devront quoi qu'il en soit, n'être "confrontées" qu'à des tensions comprises entre 0 et 3,3V et la bascule correspondra grossièrement à la valeur intermédiaire.
La très mauvaise idée: mettre ta sortie 12V sur un Pin INPUT!
merci pour ce retour sur le fonctionnement de la pin state.
pour ce qui est de la resistance de pull, met un coup d'ohmmetre (entre gnd et state) puis( vcc et state) , ca peut donner une indication.
je crois que ton multimètre essaie de nous dire quelque chose..... (t'as pas le mode d'emploi sous la main? ou une petite recherche google?).
je dirais: OverLoad mais je mets pas ça en lien avec un résultat attendu:
soit il y'a bien une circulation de courant entre tes points MAIS la résistance est vraiment trop élevée
soit pareil mais au contraire il y a une résistance quasi nulle.
Je suis vraiment pas convaincu de mes idées.
Note: la pin state est aussi reliée à une LED, ça fait tomber la tension appliquée entre les 2 broches, peut etre que c'est ça qui gêne.
Encore une fois (et je n'ai pas les compétences pour le faire), la lecture du circuit imprimé aura la vraie vérité.
De mon coté, je me satisfait que tu ais bien réalisé tes recherches et tes essais, et que ton module fonctionne comme tu le souhaites.
Oui apparemment OL signifie bien Overload, qui lui même signifie:
Soit le calibre de mesure n'est pas adapté (je pense pas que cela soit le cas, car mon multimètre n'a pas de calibre, il semble avoir un calibre automatique)
Soit "Infini"
C'est peut être infini, car sur les premières mesures, les chiffres étaient en méga ohms (MΩ). -> 1 MΩ = 1 000 000 Ω
et moi encore moins!
Oui du coup cela fonctionne. J'aurai bien aimé avoir le fin mot de l'histoire, mais l'essentiel est que cela fonctionne!
avec 2.5V ≤ Vcc ≤ 5V
niveau bas 0 ≤ Vil ≤ 0.3*VCC
niveau haut 0.6*VCC ≤ Vih ≤ VCC + 0.5V
soit avec Vcc = 5V
0V ≤ Vil ≤ 1.5V
3V ≤ Vih ≤ 5.5V
soit Vcc = 3.3V
0V ≤ Vil ≤ 1V
2V ≤ Vih ≤ 3.8V
On notera qu'il y a une zone d'indétermination entre 1.5V et 3V (lorsqu'on alimente en 5V) et entre 1V et 2V (lorsqu'on alimente en 3.3V). Si le signal se trouve dans cette zone la valeur pourra être vue comme un niveau haut ou un niveau bas, le niveau pouvant fluctuer entre ces 2 états en fonction du "bruit" ambiant.
Une personne ne parlant pas français ma contacté en privé, et ma donné quelques infos, et le liens d’une page ICI.
Je postes ici en français les différentes réponses, et ce qu’il se trouve sur cette page :
La broche STATE du module Bluetooth HC-05 est connectée à la LED intégrée. La broche STATE se termine également sur le connecteur.
Les bus sont terminés par des résistances pour empêcher la réflexion du signal.
Un bus constitué d'une ligne de transmission à deux fils aurait une réflexion d'onde s'il n'y avait pas une résistance de terminaison entre les deux fils à une extrémité de la paire.
Je suis presque sûr que la "résistance de terminaison" indique qu'elle est utilisée dans une configuration de bus.
La résistance pourrait être utilisée en interne pour tirer une ligne low (ou high) lorsqu'elle est inactive pour éviter le bruit, mais cela s'appellerait une résistance de rappel ou de chute.