Inombrables sont les petits circuits imprimés spécifiquement élaborés pour la petite robotique de loisir. On trouve des capteurs élémentaires de toute nature, des claviers et autres joystick et des modules bien plus sophistiqués comme des centrales inertielles et récepteurs GPS. Pas la peine de revenir sur le bruiteur passif avec P043, l’horloge calendrier dans P048, le petit clavier dans P055, l’encodeur rotatif dans P056 et le mini-joystick mis en œuvre dans P058. Nous allons également faire l’impasse sur le petit module avec diode LASER de la Fig.195 car le thème a été couvert avec P087 et P088 sous forme de composant élémentaire et comme petit module arduino dans le petit projet associé <Rapporteur à LASER>. Vous vous doutez qu’avant de passer à des capteurs évolués comme la petite centrale inertielle, on va commencer par des modules plus élémentaires, qui sont aussi plus fréquemment utilisés.
Experience_102 : Capteur de température CTN.
Afin de minimiser l’implantation matérielle, dans les démonstrateurs qui vont suivre, nous allons effectuer l’affichage des données mesurées sur le Moniteur de l’IDE par l’entremise de la ligne série toujours initialisée à 57600 baud. Incontestablement le petit module de la Fig.196 équipé d’une thermistance CTN est le plus rudimentaire des trois dispositifs décrits dans ces pages. La thermistance est une résistance dont la valeur est considérablement tributaire de
sa température. CTN signifie Coefficient de Température Négatif, c’est à dire que la résistance diminue lorsque la température augmente. Ce petit module électronique est constitué d’une résistance de valeur 10kΩ mis en série avec une thermistance à coefficient de température négatif. La Fig.197 donne le schéma du petit circuit imprimé, alors que la Fig.197 précise les branchements à effectuer pour interfacer avec la carte ARDUINO sur l’entrée analogique A0. Mesurer la valeur de la thermistance n’est pas difficile puisqu’il s’agit d’un simple dispositif potentiométrique. La tension mesurée étant U, on peut facilement en déduire CTN en fonction de R :
D’ou le calcul (@) en ligne 51 du démonstrateur.
Ce petit programme mesure la tension U et la convertit en Volts. Il affiche cette valeur sur la ligne série. Puis il en déduit la valeur de la thermistance CTN par utilisation de la formule @. Cette valeur est alors précisée sur la voie série. La boucle infinie effectue deux mesures par seconde.
Autant mesurer la valeur de la CTN est aisé avec ARDUINO, autant la convertir en température relève d’un calcul plus délicat. La thermistance n’a pas un comportement linéaire et il importe dans la conversion d’utiliser une fonction de type logarithmique. Il existe bien des bibliothèques sur le sujet, mais les utiliser alourdira forcément le programme. Mais vu le faible coût des composants avec traitement numérique intégré tels que le DS-18B20, il devient inutile de s’engager dans des programmes compliqués et de taille inutile. Par contre, un montage basé sur un seuil, ou une comparaison reste simple et justifie pleinement l’utilisation d’un composant aussi rudimentaire. Par exemple un diviseur potentiométrique permet sur l’une des entrées analogiques de donner une consigne, une autre entrée mesure la température avec une CTN, et le programme établit une comparaison. Il peut alors commander une interface de puissance pour réguler le chauffage d’un appareil spécifique. Par exemple thermostater l’enceinte d’un générateur étalon de fréquence à quartz, piloter un radiateur dans une serre, les applications sont infinies.
Experience_103 : Capteur de température DS-18B20.
Fabriqué par Dallas Semiconductor, ce composant complexe utilise pour dialoguer avec un microcontrôleur, un bus nommé OneWire. OneWire est un bus conçu par Dallas Semiconductor qui permet de connecter en série, en parallèle ou en étoile des modules avec seulement deux fils : Un fil de données de type « collecteurs ouverts » et un fil de masse. Similaire à I²C, il présente cependant des vitesses de transmission et un coût inférieurs. Il est généralement utilisé en domotique pour des thermomètres ou d’autres instruments de mesures météorologiques. Pour dialoguer avec les modules utilisant le bus OneWire, Dallas Semiconductor met à la disposition d’ARDUINO une bibliothèque spécifique nommée <OneWire.h> disponible dans <BIBLIOTHEQUES> qu’il faut importer dans l’environnement de développement.
Caractéristiques techniques du capteur de température de DALLAS :
La documentation complète avec les protocoles de dialogue est disponible dans le fichier DS18B20.pdf dans <Documents> avec en Fig.199 le brochage du composant. La broche DQ est celle qui se branche sur la ligne série avec forçage de niveau haut par R.
• Interface OneWire® avec une seule broche pour le port de communication.
• Chaque composant dispose d’un code d’identification de 64 bits stocké dans une ROM.
• Source de courant comprise entre 3Vcc et 5.5Vcc.
• Mesures des températures comprises entre -55 °C et +125 °C. (-67 °F à +257 °F)
• Précision ± 0,5°C entre -10 °C à +85 °C.
• Résolution définie par l’utilisateur entre 9 et 12 bits.
• Temps de conversion 750 mS MAX pour 12 bits.
• Paramètres d’alarme définissables par l’utilisateur dans une mémoire non volatile.
Exemple de programme : Le programme Experience_103.ino très détaillé exploite la bibliothè
OneWire.h et liste sur la ligne série (Voir Fig.200) le résultat des mesures par utilisation de la broche d’E/S binaire n°2. La Fig.201 montre les trois branchements à effectuer pour relier le petit module DS-18B20 à la carte ARDUINO. Si utilisé en « mono-coup », le résultat d’une mesure est déclenché au moment de l’activation du moniteur série ou à convenance sur RESET. (Il faut modifier deux lignes de programme qui sont précisées en tête de listage.)
Experience_104 : Capteur Température/Humidité DHT11.
Montré sur la Fig.202, ce module de mesure est constitué d’un senseur de température à base d’une thermistance à coefficient négatif de température et d’un capteur d’humidité résistif. Un microcontrôleur intégré s’occupe de faire les mesures, de les convertir pour les transmettre. Chaque module est calibré en usine et ses paramètres de calibration sont stockés dans la mémoire ROM du microcontrôleur local. Le DHT11 dialogue par une ligne série de type OneWire.
Caractéristiques techniques du capteur d’humidité DHT11 :
La Fig.202 donne le brochage du composant ainsi que celui du petit module en circuit imprimé. La Fig.203 indique comment établir la liaison avec une carte ARDUINO. La mise en œuvre est facile car la bibliothèque DHT11.h est disponible dans <BIBLIOTHEQUES>. Elle se charge des protocoles de dialogue de type série. La ligne filaire peut faire jusqu’à 20 m de longueur entre le capteur et l’U.C. de traitement utilisée, dans ce cas il faut diminuer la valeur de R à 4,7kΩ. Le format des données série est de 40 bits.
DIALOGUE sur la ligne DATA.
Lorsque le P.C. envoie un signal de démarrage, le DHT11 passe du mode faible consommation électrique au fonctionnement en mode dialogue et envoie l’accusé de réception suivi des données. (Si le signal de départ est valide) Il repasse ensuite en mode veille jusqu’à la prochaine sollicitation.
1) Demander une mesure : Forcer l’état « 0 » durant 18 mS puis état « 1 » durant 40 µS.
2) Accusé de réception du DHT11 : Forcer l’état « 0 » durant 54 µS puis état « 1 » durant 80 µS.
3) Lecture des données : Les données suivent l’accusé de réception et sont codées dans une série de 40 bits sous forme de cinq valeurs de 8 bits chacune dont voici le format :
La figure ci-dessus donne le format des BIT de données, la Check Sum est calculée par la somme des quatre premières données, donc avec les 32 premiers BIT.
* En bleu clair l’état zéro forcé par le P.C. ou en réponse par le DHT11.
* En rose pâle l’état « 1 » maintenu par la résistance de forçage R. (Pull Up)
* En bleu épais la requête du P.C. et en violet fin la réponse du capteur.
Exemple de programme :
Le programme Experience_104.ino très détaillé exploite la bibliothèque DHT11.h et liste sur la ligne série (Boucle infinie » 2 secondes) le résultat des mesures par utilisation de la broche d’E/S binaire D2. La Fig.203 montre les trois branchements à effectuer pour relier le petit module à la carte ARDUINO. Les caractéristiques du module sont données dans DHT11.pdf rangé de façon banale dans le sous dossier <Documents\Composants>.
Experience_105 : Le capteur BMP 180.
Disponible à profusion sur le commerce en ligne, le petit module de la Fig.205 permet de mesurer la pression atmosphérique et l’humidité de l’air. Fourni avec un connecteur HE14 « plat », personnellement je préfère l’équiper d’un connecteur coudé qui permet de l’insérer à la verticale sur les plaquettes à essai. Par ailleurs il tient moins de place sur le circuit imprimé d’une petite application. Comme la plupart des capteurs de pression, le BMP180 mesure la pression absolue. Comme la pression atmosphérique absolue varie avec l’altitude, vous pouvez utiliser la pression pour déterminer cette dernière. Mais la pression varie également avec la météorologie locale, il faut d’abord prendre une mesure de pression à une altitude de référence connue. C’est le QFE qui en aviation est communiquée aux pilotes pour caler leur altimètre en « hauteur » avant de l’ajuster au standard de 1023Hpa pour afficher l’altitude. (La hauteur c’est par rapport au sol, l’altitude par rapport au niveau de la mer la plus proche.) ATTENTION : Ne pas connecter le + au 5V sinon le capteur sera endommagé ! Pour tester ce module très populaire, téléverser Experience_105.ino les directives d’utilisation sont précisées en tête de programme.
Experience_106 : Lecteur de petites cartes mémoire SDRAM.
L’exemplaire de la Fig.206 peut sembler poussiéreux car il est prévu à la base pour les anciennes cartes de grande taille. C’est peut être l’occasion de s’en servir dans nos petites applications de robotique, un exemple est donné dans le fichier Lecteur de carte SDRAM.pdf logé dans le dossier <FASCICULES> car sa mise en œuvre impose beaucoup d’explications qui encombreraient trop ce didacticiel. Disponible sur Internet pour six Euros les cinq modules, il reste largement d’actualité. Il suffit d’introduire les toutes petites cartes actuelles dans des adaptateurs qui foisonnent sur la toile. Le démonstrateur Experience_106.ino constitue la base minimale sur laquelle vous appuyer pour développer vos propres projets. Le fascicule propose plusieurs solutions électroniques pour interfacer ce module avec Arduino. Enfin, un exemple complet d’application présenté avec tous les détails utiles est disponible sur https://www.robot-maker.com/ouvrages/tome-1-pyrograveuse/.
Experience_107 : Détecteur de mouvement HC SR 501.
Présenté sur la Fig.207 Le capteur PIR (Passive Infra Red) capte une source d’infrarouge placée dans son champ « visuel », détecte ses mouvements et déclenche une réponse. Le composant comporte deux capteurs « symétriques » car on cherche à repérer un mouvement et non des niveaux IR moyens. Les deux senseurs sont câblés de sorte que leurs effets s’annulent. Si l’un reçoit plus ou moins de rayonnement infrarouge que l’autre, la sortie prend alors un état Haut ou un état Bas. Ne nécessitant que trois fils de liaison avec Arduino, il est très facile à intégrer dans un projet. Disponible par groupe de cinq pour moins de 10 Euros sur Internet, son plus gros défaut réside dans la conception de son circuit imprimé où rien n’est prévu pour l’immobiliser. (Pas bien grave ça !)
• Tension de fonctionnement : 4,5Vcc à 20Vcc. • Consommation statique de 50 µA à 65 µA.
• Niveaux de sortie : Haut : 3.3 Vcc, Bas : 0 V. • Temps mort 0.2 secondes.
• Temps de délai ajustable de 0.3 secondes à 18 secondes. (5 secondes par défaut)
• Déclenchement : L sans répétition, H répétition possible. (Valeur H par défaut)
• Portée de détection : Angle de moins de 120°, 3 m par défaut, 7 m MAXI.
Réglages du capteur :
• P1 : Ajustement du délai pendant lequel la sortie reste verrouillée sur HIGH après une détection de mouvement. (Mini » 2526 mS à » 192100 mS MAXI > Voir Exemple de programme.) Le temps de latence avant le redéclenchement suivant est d’environ 2.5 secondes par défaut. (Temps mort Tm)
• P2 : Ajustement de la sensibilité du capteur de 3 m à 7 m. (Sens identique à celui de P1 pour augmenter)
• Option L (Fig.208) : C’est le mode SANS RÉARMEMENT, la sortie passe à l’état HIGH lors du premier contact, y reste durant toute la durée réglée par P1. Pendant ce temps le capteur ne réagit plus. La durée de l’état Haut en sortie est alors constante. (Exemple : Déclencher une alarme)
• Option H (Fig.209) : AVEC RÉARMEMENT, la sortie passe à l’état HIGH lors du premier contact, y reste durant toute la durée réglée par P1, mais chaque nouvelle détection remet le chronométrage de durée à zéro. C’est une détection en continu, le capteur reste stable à l’état haut tant que la source d’infra-rouges est mobile. (Exemple : maintenir une ampoule éclairée le temps nécessaire)
Experience_108 : Capteur de pression GY-BMP280.
Oups, je l’avais oublié ce tout petit module. C’est aussi un capteur de température et de pression atmosphérique. Du coup, sa présentation aurait du se faire juste après P105 pour le capteur BMP 180. Comme il n’est plus question de reprendre la mise en page … on va le décrire en P108. La photographie de la Fig.210 est trompeuse car saisie an « macro ». Il est vraiment très petit, son connecteur HE14 et les trous de passage pour des vis ØM3 en donnent l’échelle. Deux modes de dialogue sont possibles. Soit par une ligne I2C disponible sur SCL / SDA soit une SPI sur SDO. C’est la broche CSB qui sélectionne le mode. Par défaut, CSB = « 1« donc mode I2C. Si CSB est forcée à « 0« , au démarrage le mode SPI sera utilisé. La broche SD0 propose le choix de l’adresse I2C. Si SD0 = « 0« , alors l’adresse est 0x76, si SD0 = « 1« , alors l’adresse est 0x77. ATTENTION, l’alimentation sur Vcc doit être de 3,6V au MAXIMUM. Il faudra donc alimenter le module avec la sortie 3,3v régulé de la carte Arduino. Ce module doit être accompagné de la bibliothèque SparkFunBME280.h disponible dans <! BIBLIOTHEQUES> qu’il faut importer.
Experience_109 : Fourche optique KY-038.
Version prête à l’emploi, ce petit module présenté en Fig.212 fonctionne avec une source lumineuse infrarouge. Lorsque le faisceau lumineux n’est pas occulté, la tension en sortie du module est très faible. Si on intercale un masque optique (Simple bout de carton rigide.) entre la LED et le senseur, la tension grimpe à pratiquement +VCC. Du coup, contrairement à P088 qui utilisait une entrés analogique, avec le KY-038 on peut facilement faire appel à une entrée BINAIRE. Le démonstrateur se contente, comme montré sur la Fig.213 de compter les occultations et en présente le nombre et la durée sur le Moniteur de l’IDE. La LED d’Arduino s’illumine durant l’occultation servant de témoin oculaire à cette dernière. Il ne semble pas que la fourche optique soit perturbée par les sources infrarouges ambiantes, inutile de passer par un découpage à fréquence élevée du signal émis par la LED et un filtrage à la réception pour parer ce type de brouillage. En l’état le dispositif fonctionne parfaitement.
Experience_110A,B,C : Tranmetteur/Recepteur 433,92MHZ.
Ces deux petits modules sont vraiment de très petites dimensions, la Fig.214 est un peu trompeuse car les deux circuits imprimés sont photographiés en « Macro ». Leur fréquence de fonctionnement est de 433.92MHz, mais il existe aussi des paires accordées sur 315 MHz et 330MHz. La portée de l’émetteur est d’autant plus grande qu’il est alimenté sous une tension Vcc élevée. Il peut être alimenté entre 3,5Vcc et 12Vcc. Le TRANSMETTEUR a pour référence RF433 FS1000a et le RECEPTEUR XY-MK-5V. La portée sera maximale si l’antenne présente une longueur de 173mm correspondant à la longueur d’onde divisée par quatre. Les essais conduits en local ont démontré une porté qui avoisine les 45m en extérieur la longueur des deux antennes ayant été peaufinée. Comme cette expérience exige pas mal de précisions techniques, aussi les trois démonstrateurs et un fichier nommé Modules VHF 433,92Mhz.pdf sont rangés dans le dossier <EXPERIENCE 110> les démonstrateurs précisant en détails comment les utiliser.
Experience_111 : Interrupteur ILS le retour.
Seule différence avec l’ampoule ILS de la Fig.169 relative à P090, sur le petit circuit imprimé de la Fig.215 le point « chaud » de l’ampoule est directement relié au +5Vcc, c’est à dire que le schéma de la Fig.171 reste d’actualité sauf que sur le module R1 vaut 10kΩ . Il peut commuter jusqu’à 10A, mais personnellement je préfère le limiter à la fonction capteur. Pour varier un peu le propos, dans ce démonstrateur Experience_111.ino on va utiliser une entrée binaire au lieu d’une entrée analogique. Pour minimiser les manipulations on n’utilise encore que la LED d’Arduino ainsi que le Moniteur de IDE. Les explications pour s’en servir sont élémentaires et données en tête de listage.
LA RÉALITÉ INDUSTRIELLE : Le module ILS était dans un lot de divers modules pour Arduino comme il en existe à la pelle sur l’Internet. Tous ces petits modules pour quelques Euros port compris, on se doute qu’il peut y avoir des « incidents ». Dans ce colis, le module ILS présente une résistance de 10kΩ qui a été soudée que d’un coté. J’ai bien tenté comme on peut le voir sur Image 068.JPG de la ressouder des deux coté mais c’est un échec. Aussi, je me suis contenté d’ajouter un composant comme visible sur Image 069.JPG soudé de l’autre coté. Ce genre d’aventure peut vous arriver, et il est souvent plus simple de dépanner que de retourner le produit … ainsi va la vie de l’Arduinaute.
Experience_112 : Capteur infrarouge KY-032.
Encore un module qui suscite trop d’explications qui encombreraient lourdement le didacticiel. Comme ses compères, il donne lieu à un petit document particulier nommé Capteur infrarouge KY-032.pdf pour la circonstance et préservé comme ses frères dans le sous-dossier dédié <Documents\FASCICULES>.
Bien plus sophistiqué que le précédent, le module Keyes KY-32 de la Fig.217 est un capteur qui œuvre dans l’infrarouge en mode « réflexion » un peu comme un radar à courte portée. La mise en œuvre est très simplifiée, puisque, comme pour bien d’autres croquis, les informations se font sur le Moniteur de l’IDE. Il n’y a donc rien d’autre à faire que de brancher les quatre fils et éventuellement réaliser un petit réflecteur en carton.
Experience_113 : capteur tactile capacitif TTP223B.
Grand classique parmi les capteurs « simples », le petit module de la Fig.218 rentre dans la catégorie des senseurs de proximité dits tactiles car il faut mettre notre doigt en contact pour les activer. Il est très facile d’utilisation car il est muni du circuit intégré TTP223B qui permet une sortie du signal sur sa broche SIG de niveau TTL, c’est à dire BINAIRE. (En logique positive, c’est à dire que le contact provoque un état « 1 ».) Il peut être directement alimenté par le +5Vcc d’Arduino et dispose de quatre trous pour son immobilisation. (Par de la visserie ØM2,5.) Sa consommation reste inférieure à 5mA avec un temps de réponse de 220ms en mode faible consommation c’est à dire « sous alimenté » jusqu’à +3Vcc. L’utilisation d’Experience_113.ino est élémentaire. Il suffit de téléverser le croquis et d’observer les résultats sur le Moniteur de l’IDE, la LED d’Arduino clignotant pour attester du « ronron » de la boucle de base. Noter que le module TTP223B présente un temps de relaxation de neuf secondes. C’est à dire que si l’on laisse le doigt en contact longtemps, au bout de neuf secondes la sortie repasse au repos et le dispositif ne se réarme que lorsque l’on retire le doigt du contact.
Experience_114 : L’Effet HALL s’invite.
Influencés par les champs magnétiques un peu comme les contacteurs ILS, ils sont totalement électroniques et sont basés sur l’effet HALL. (C’est le physicien Edwin Hall qui a découvert en 1879 l’apparition d’une différence de potentiel entre les faces latérales d’un barreau conducteur ou semi-conducteur lorsque celui-ci est parcouru par un courant électrique tout en étant sous l’influence d’un champ magnétique.) L’immense avantage de ces dispositifs, c’est qu’il n’y a pas de masses métalliques produisant des rebonds, donc pas besoin de traiter ce type de phénomène. On trouve dans le commerce en ligne divers petits modules présentant des caractéristiques similaires. Ils sont commercialisés souvent, comme celui de la Fig.220 par paquets de 5 ou de 10. Le signal de sortie est de type analogique et sa CAN donne 512 sans aimant dans son voisinage et entre 200 et 830 sous présence d’un aimant « puissant » en fonction de la distance et de la polarité. On choisit la polarité qui fait augmenter et l’on place le seuil de détection à 650 par exemple. L’utilisation d’Experience_114.ino est élémentaire comme celle du démonstrateur précédent. Les consignes sont en tête de programme.
Experience_115 : Capteur d’inclinaison longitudinale HDX.
Autre capteur qui était en deux exemplaires dans le lot de découverte, le petit module Keyes de la Fig.221 ne semble pas très présent sur l’Internet, ou tout au moins je n’ai pas été capable d’en trouver les caractéristiques. Le brochage est précisé sur cette photographie. Heureusement son schéma électrique proposé en Fig.222 est élémentaire et facile à déterminer avec trois ou quatre mesures sur le petit module. La LED L peut servir de témoin de la présence énergie, ou être pilotée par Arduino pour indiquer une paramètre de votre choix. ATTENTION : Il n’y a pas de résistance de limitation du courant, il faut l’ajouter. (Commercialement c’est un peu juste !) La mise en œuvre d’Experience_115.ino reste facile et les explications généreuses sur les branchements à effectuer et les manipulations à conduire figurent comme sur bien d’autres démonstrateurs en tête de listage.
Experience_116 : Bousole statique HMC6352.
Comme tous les modules qui utilisent une SPI pour réaliser le dialogue entre Arduino, ce petit circuit est extrêmement facile à mettre en œuvre. Présenté sur la Fig.223 la flèche représentée sur le circuit imprimé représente la direction du « Nord magnétique » de cette boussole statique c’est à dire que lorsque cette flèche est orientée vers le Nord magnétique local, le HMC6352 retourne la valeur 0° pour le Cap. Logé avec les démonstrateurs dans le sous-dossier dédié <! Petits PROJETS\Barre automatique d’un petit navire> vous trouverez le document Mon petit bateau.pdf qui comporte pas moins de huit pages de développement dans lesquelles sont détaillées les caractéristiques de ce module.
Véritable application concrète dont la Fig.224 montre la petite maquette associée aux trois démonstrateurs, l’agencement du logiciel est assez complexe raison pour laquelle fournir les explications et les organigrammes dans ce didacticiel prendraient bien trop de place, dans la mesure ou vous allez papillonner et votre choix ne se portera pas forcément sur les croquis « d’Experience_116 », ne serait-ce que si vous ne disposez pas du HMC6352.
Experience_117 : Boussole trois axes GY-273 HMC5883L.
Probablement plus actuelle que la précédente, le module GY-273 HMC5883L est un peut trois fois le HMC6352 sensible dans trois directions cartésiennes. Comme pour son petit frère rouge, les directions trirectangles sont précisées sur la sérigraphie. Commercialisé par paire lors de mon approvisionnement, des connecteurs HE14 plats sont fournis. Personnellement je préfère utiliser des éléments coudés qui se branchent dans « le plan du circuit imprimé ». Sur le plan pratique je trouve que ça donne plus de commodité pour l’immobiliser sur « son application ». Pour le petit démonstrateur Experience_117.ino je vous propose le minimum, c’est à dire que le circuit imprimé du capteur sera supposé rester dans le plan horizontal, la composante verticale n’étant pas prise en compte. Toutes les explications sont données dans le listage. Ce programme présente deux particularités : On utilise le théorème de PYTHAGORE en 3D et surtout on y rencontre la fonction peu connue atan2(Y,X). (Attention à ne pas inverser l’ordre des deux arguments.) La Fig.226 montre le résultat de l’affichage avec dans la zone jaune la présentation habituelle de la version logicielle. dans la zone bleue figurent les trois composantes du vecteur représentant le champ magnétique exprimées en Gauss. Dans la zone verte la grandeur de ce vecteur. Enfin en zone rose est exprimé la valeur du Cap par rapport au Nord magnétique local.
Experience_118 : Télémètre à ultrasons HC-SR04.
Incontournable dans le domaine de la détection d’obstacle, le module HC-SR04 fonctionne exactement comme un radar à ondes millimétriques, sauf qu’il utilise l’air ambiant et des ultrasons pour « observer » son environnement. Impossible sur l’Internet de ne pas le rencontrer quand on sollicite un moteur de recherche pour lister des capteurs destinés à Arduino. Le graphique Fig.228 montre son diagramme polaire de sensibilité, qui présente de nombreux lobes avec un étalement angulaire important. Si on l’utilise en balayage circulaire pour déterminer les obstacles de son environnement il ne faut donc pas espérer des miracles. Toutefois, il reste relativement crédible d’exploiter cette voie. Par exemple vous trouverez un développement sur le sujet dans le chapitre « Le radar ultrasonore à balayage » sur le lien :
https://www.robot-maker.com/ouvrages/29-26112017-radar-ultrasonore-balayage/
Le document technique HC-SR04-Datasheet.pdf est disponible dans le dossier <Documents\Composants>.
Mise en œuvre :
Il faut envoyer une impulsion de niveau haut (+ 5Vcc) d’au moins 10 µs sur la broche Trig Input pour déclencher une mesure. (Voir Fig.229) En retour la sortie Output ou (Echo), va restituer une impulsion + 5v dont la durée est proportionnelle à la distance si le module détecte un objet. Afin de pouvoir calculer la distance en cm, on utilisera la formule suivante :
Le câblage du module à l’Arduino est montré sur la Fig.230, le démonstrateur Experience_118.ino se contentant lui aussi de fournir la prestation minimale, c’est à dire que la boucle de base effectue sans fin une mesure, puis affiche comme montré sur la Fig.231 la distance détectée sur le Moniteur de l’IDE initialisé de façon routinière à 57600 baud.
Experience_119 : Radar à ultrasons HC-SR04.
C’est la version de luxe du démonstrateur précédent avec affichage sur un écran graphique OLED. La portée de l’affichage sera soit de 4m ou 40cm. L’étalement des graduations sera automatiquement commuté en fonction de la distance détectée. Pour cette manipulation c’est toujours l’écran de 1,3 pouce de diagonale qui équipe le dispositif. Par rapport à P118 il a juste été ajouté l’affichage de la Fig.232 et celui de la Fig.233 qui simulent assez-bien les écrans radar des années 1940 durant le conflit de la deuxième « guerre mondiale ». Sur les tubes cathodiques de l’époque on visualisait un marqueur qui se déplaçait latéralement comme montré par les flèches jaunes qui surchargent les deux photographies. Les diverses graduations étaient réalisées sur un graticule translucide placé devant la face active des tubes cathodiques de l’époque. Noter que le démonstrateur Experience_119.ino fait appel à la fonction pulseIn() de mesure de la durée d’impulsions BINAIRES.
Experience_120 / 121 : Dialogue entre machines … le retour.
L’évidence qui s’impose quand on désire faire dialoguer deux machines consiste à utiliser TX et RX sur D0 et D1 qui sont systématiquement affectées à cette fonction. Comme le capteur HC-SR04 peut par nature « parler » et « écouter », pourquoi ne pas tenter de faire dialoguer deux cartes Arduino en ultrasons. Ce sera probablement une première, et surtout une expérience amusante. La mise en œuvre n’est pas évidente du tout, car contrairement à l’usage de TX et RX sur D0 et D1 où l’on maitrise facilement l’ordre des opérations, avec les HC-SR04 on est coincé. En effet, le dispositif ne passe en réception que lorsque l’on a transmit une impulsion. Du coup, il y a
un problème sérieux car on doit « filtrer » les échos et attendre le signal de l’ESCLAVE. Pour arriver à nos fins, on active l’impulsion sur le MAITRE, puis avant de lire le
résultat on attend 5mS. L’écho s’étant atténué on passe alors à l’écoute pour capter l’ACcusé de Réception envoyé par l’ESCLAVE qui doit fonctionner sur un schéma analogue. Du coup la synchronisation pour démarrer de « bavardage » est un peu délicate à assurer, il faut cliquer sur les boutons de RESET dans l’ordre explicité dans le démonstrateur Experience_120.ino. Quand ça démarre en revanche, c’est vraiment amusant. Sur la Fig.235 A le MAÎTRE attend la réception de la première sollicitation de l’ESCLAVE. Puis en B le « curseur se déplace comptant de 0 à 400. Arrivé en C l’échelle « fois cent » s’efface. Enfin à partir de 400 comptages, ce qui exige pas mal de temps, l’affichage se fige comme en figure D.
Experience_122 : Amplification acoustique avec le KY-038.
L’avantage par rapport à l’utilisation d’un amplificateur opérationnel du genre LM358P c’est la facilité de mise en œuvre. Le petit module Keyes
KY-038 montré sur la Fig.236 est constitué d’une d’acquisition Acoustique électronique par Microphone amplifiée au moyen d’un circuit intégré LM393. Cette électronique peut être librement alimentée par une tension de service comprise entre 3.3 Vcc et 5 Vcc. Par sa sensibilité finement réglable au moyen d’un potentiomètre ajustable multitours, le capteur peut être adapté à différentes conditions environnementales et à des exigences spécifiques. Le LM393 est utilisé de façon classique en comparateur qui à partir d’un seuil fixé par l’utilisateur la sortie binaire DO (Digital OUT.) passe à l’état « 1 » et reste à « 0 » en dessous. La sortie amplifiée est disponible sur AO. (Analogic OUT.) On peut librement brancher ces broches sur n’importe quelle E/S d’Arduino. Une LED1 indique que le capteur est alimenté en énergie. Une LED2 s’illumine lorsque le niveau du seuil sonore a dépassé la valeur prédéfinie. Pour faciliter les manipulations et ne pas imposer à l’opérateur de siffler ou frapper dans les mains, le démonstrateur Experience_122.ino génère des impulsions sonores dans un bruiteur passif que nous avons déjà utilisé dans P043. L’expérience consiste à ajuster finement le potentiomètre multitour jusqu’à ce que LED2 clignote franchement à la cadence des impulsions sonores. La sortie D9 est utilisée pour générer la tonalité PWM la plus élevée.
La suite est ici.