Affichage des articles dont le libellé est Raspberry Pi. Afficher tous les articles
Affichage des articles dont le libellé est Raspberry Pi. Afficher tous les articles

mercredi 21 avril 2021

Bricoler un robot dessinateur BrachioGraph

Le BrachioGraph est un robot dessinateur (plotter, table traçante) qui a été spécialement conçu pour être fabriqué à très faible coût, sans outils et avec très peu de matériel: un Raspberry Pi, trois servomoteurs, deux bâtonnets, une pince à linge et un peu de colle ou de ruban adhésif suffisent à sa réalisation.


Assemblage du robot

C'est la partie la plus simple: on fixe deux palonniers de servomoteur sur un bâtonnet de bois, à 8 cm l'un de l'autre. Sur un deuxième bâtonnet, on fixe un servomoteur et une pince à linge, qui servira à tenir le crayon (on mesure encore une fois 8 cm entre la position du crayon et le moyeu du servomoteur). Vous trouverez une marche à suivre très claire et beaucoup plus détaillée sur la page officielle BrachioGaph par Daniele Procida.


Il en résulte un bras robotisé constitué de deux segments, chacun d'entre pouvant tourner dans un plan horizontal. Le 3e servomoteur sert à soulever le crayon lorsqu'on doit le déplacer sans faire de marque sur la feuille de papier.


Branchements des servomoteurs au Raspberry Pi

Les trois servomoteurs sont alimentées par une des sorties 5 V du Raspberry Pi. 

  • Le servomoteur "épaule" (celui qui demeure immobile) est branché à la broche GPIO 14.
  • Le servomoteur "coude" (qui fait le lien entre les deux bâtonnets) est branché à la broche GPIO 15.
  • Le servomoteur qui soulève le crayon est branché à la broche GPIO 18.

Installation des logiciels dans le Raspberry Pi

Il y a beaucoup de trucs à installer mais, encore une fois, tout est expliqué sur la page de BrachioGraph:

On colle tout ça dans le terminal:

sudo apt install -y python3-venv pigpiod libjbig0 libjpeg-dev liblcms2-2 libopenjp2-7 libtiff5 libwebp6 libwebpdemux2 libwebpmux3 libzstd1 libatlas3-base libgfortran5 git

Et ensuite:

python3 -m venv env
source env/bin/activate

On clone la bibliothèque BrachioGraph:

git clone https://github.com/evildmp/BrachioGraph.git

On entre dans le nouveau répertoire "BrachioGraph":

cd BrachioGraph
pip install -r requirements.txt


Mise à l'essai

Pour démarrer le brachiograph, il faut démarrer le démon pigpiod ainsi qu'un environnement python:

sudo pigpiod
source env/bin/activate
python
from brachiograph import BrachioGraph
bg = BrachioGraph()


À partir de là, on peut écrire des commandes en Python, ligne par ligne (mais à la longue, considérant toutes les commandes de calibrations nécessaires, c'est plus simple d'exécuter un script en python: le site brachio.me présente des exemples de scripts).

L'instruction "bg.box()" ordonne au BrachioGraph de tracer un rectangle. Voici le premier "rectangle" que j'ai obtenu...


Calibration

Il est assez normal d'obtenir ce genre de résultat très approximatif lors de vos premiers essais: le BrachioGraph a besoin d'être calibré pour fonctionner correctement.

Par exemple, le logiciel suppose que vos servomoteurs tournent de 1° chaque fois que la durée des impulsions pwm varie de 10 µs, mais en fait ça varie d'un servomoteur à l'autre.

En faisant quelques tests (qui pourraient être refaits avec une bien meilleure précision), j'ai constaté que:

  • Mon premier servomoteur tournait de 1° pour une variation d'environ 8 µs
  • Mon deuxième servomoteur tournait de 1° pour une variation d'environ 12 µs
  • Mon troisième servomoteur (celui qui était responsable de soulever le crayon) avait rendu l'âme!

J'ai modifié ces paramètres de façon logicielle en écrivant:

bg.servo_1_degree_ms = -8
bg.servo_2_degree_ms = 12

Suite à ces modification, le rectangle tracé par le Brachiograph, sans être parfait, s'était un peu amélioré  (je n'avais pas encore remplacé le 3e servomoteur, d'où le gribouillis indésirable à droite du rectangle).


Il serait possible d'améliorer encore la calibration de mon traceur: 

  • en mesurant avec une meilleure précision le nombre de microsecondes correspondant à une rotation de 1°
  • en tenant compte de la non-linéarité de mes servomoteurs
  • en compensant l'hystérésis
  • en minimisant le mouvement du crayon lorsqu'il est soulevé. 

Évidemment, tout ça est expliqué en détails sur la page de BrachioGraph. Je n'ai rien fait de tout ça, parce que ma patience est somme toute assez limitée...

Reproduire l'illustration d'un fichier .jpeg

On peut s'amuser un certain temps à tracer des formes simples en utilisant des commandes comme "bg.drive_xy()", mais là où ça devient vraiment rigolo, c'est quand on utilise le BrachioGraph pour reproduire une image.

Pour ce faire, il faut d'abord convertir l'image en un fichier .json qui décrit toutes les lignes qui devront être tracées par le BrachioGraph.

(voici un extrait d'un fichier json:)


Le répertoire "BrachioGraph" créé sur votre Raspberry Pi contient les programmes nécessaires à cette conversion, mais j'ai préféré utiliser le site "brachio.me" de Rob Bricheno: vous y téléchargez votre fichier (jpeg, png ou autre), et il le transforme en un fichier json prêt à l'emploi.

Vous pouvez alors copier ce fichier json dans le répertoire BrachioGraph du Raspberry Pi, puis le faire tracer par la commande: 

bg.plot_file("nom_du_fichier.json")


Résultat: à la fois impressionnant...et un peu brouillon

Sur figure ci-dessous, de gauche à droite: le fichier original (format jpeg), la version vectorisée par le site brachio.me et, finalement, la copie réalisée, avec une certaine dose d'impressionnisme, par mon BraccioGraph. Il faudrait que j'améliore la calibration (surtout à gauche), mais c'est assez amusant, malgré tout.


Pour terminer, une vidéo montrant mon BrachioGraph au travail, pendant le début de l'illustration (environ 5 minutes sont nécessaires pour réaliser l'illustration complète).


Ressources:
À lire également

Avec du matériel similaire, vous pouvez fabriquer un robot quadrupède.


Yves Pelletier (TwitterFacebook)

dimanche 3 janvier 2021

Module GPS NEO 6MV2 et Raspberry Pi

Dans cet article, nous expliquons comment déterminer un position précise grâce à un module GPS NEO 6MV2 branché à un Raspberry Pi programmé en Python. En plus de déterminer la latitude et la longitude, nous situerons la position mesurée sur une carte Google Maps.

Nous avons déjà utilisé le module GPS NEO 6MV2 avec différents microcontrôleurs: lorsqu'on l'alimente avec une tension continue de 3,3 V il reçoit les signaux émis par des satellites de géolocalisation et émet continuellement des informations par communication UART.


Connexions

Le module GPS est branché au Raspberry Pi de la façon suivante:

  • Broche VCC du module GPS : Sortie 3,3 V du Raspberry Pi (broche 1)
  • Broche RX du module GPS : Pas branchée
  • Broche TX du module GPS: branchée à la broche RX du Raspberry Pi (broche 10)
  • Broche GND du module GPS: branchée à une broche GND du Raspberry Pi (broche 6)



Une fois alimenté, plusieurs minutes peuvent être nécessaire avant que module GPS dispose de suffisamment d'informations pour déterminer la position; lorsque c'est le cas, une LED bleu située sur le module GPS se met à clignoter.

Activation de la communication série

Par défaut, la communication série n'est habituellement pas activée sur le Raspberry Pi. Pour l'activer, il faut utiliser le menu Préférence - Configuration du Raspberry Pi.

Dans l'onglet "Interfaces", on active "Serial Port" et on désactive "Serial Console". 


Il faut ensuite redémarrer.

Identification du port série serial0

Une fois le port série activé, j'ai tapé cette commande dans le terminal:

ls -l /dev


Dans la longue liste qui est apparue en retour, j'ai pu constater que le nom du port série "serial0" était "ttys0", ce qui s'est avéré utile dans la rédaction des scripts en python. J'ai cru comprendre que le résultat peut être différent selon le modèle de Raspberry Pi.

Script 1: Affichage des données brutes

Je crois que la bibliothèque "pySerial" est installée par défaut dans le Rasbperry Pi OS. Si ce n'est pas le cas, vous pouvez l'installer avec pip:

pip3 install pyserial

Le script ci-dessous affiche les données brutes générées par le module GPS.

-
-


Ces données respectent la norme NMEA0183 de la National Marine Electronics Association. Sous cette forme, leur interprétation n'est pas facile et, pour cette raison, nous allons maintenant utiliser une bibliothèque spécialement conçue pour en extraire les informations les plus pertinentes.

Installation de la bibliothèque pynmea2

On peut facilement installer la bibliothèque pynmea2 avec pip:

pip3 instal pynmea2


Script 2: Affichage de la latitude et de la longitude

Grâce à la bibliothèque pynmea2, ce deuxième exemple affiche continuellement la latitude et la longitude.

-
-



Script 3: présentation de la position dans Google Maps

Finalement, ce 3e script montre la position mesurée sur une carte Google Maps.

-
-

Lors de l'exécution du script, le navigateur par défaut montre, dans un nouvel onglet, la position sur Google Maps.


À lire également:

Yves Pelletier (TwitterFacebook


mardi 22 décembre 2020

Capteur de couleurs TCS3200 (GY-31) et Raspberry Pi

Dans cet article, nous allons piloter un module GY-31, qui comporte un capteur de couleurs TCS3200,  au moyen d'un Raspberry Pi programmé en Python.

Comme je l'avais mentionné lorsque j'en ai fait l'essai avec un Arduino, le capteur de couleur TCS3200 est constitué d'une matrice de minuscules photodiodes. Certaines de ces photodiodes sont munies d'un filtre qui laisse passer la lumière rouge, alors que d'autres ne captent que la lumière bleue ou la lumière verte. Ces photodiodes peuvent être activées tour à tour de façon à connaître la quantité de rouge, de bleu et de vert qui se trouve dans la lumière qui atteint le capteur.

En plus du capteur TCS3200, le module GY-31 comporte 4 LEDs blanches qui assurent un éclairage adéquat de la cible dont on désire déterminer la couleur.

Les connecteurs du module GY-31 sont les suivants:

  • VCC: Alimentation située entre 2,7 et 5,5 V
  • GND: La masse
  • S0 et S1: Sélection de l'échelle de fréquence à la sortie
  • S2 et S3: Sélection des photodiodes actives
  • OUT: signal de sortie
  • LED: contrôle des 4 LEDs

L'état logique des entrées S2 et S3 détermine les photodiodes actives:

  • Si S2 = 0 et S3 = 0 : photodiodes avec filtre rouge
  • Si S2 = 0 et S3 = 1:  photodiodes avec filtre bleu
  • Si S2 = 1 et S3 = 1: photodiodes avec filtre vert
  • Si S2 = 1 et S3 = 0: photodiodes sans filtre

Le signal de sortie est un peu inhabituel: il s'agit d'une onde carrée dont la fréquence dépend de l'intensité lumineuse (plus l'intensité lumineuse captée es grande, plus le signal de sortie oscille rapidement)­.  Pour faciliter la mesure de cette fréquence, les entrées S0 et S1 permettent, si on le désire, de la diviser par 5 ou par 50:

  • Si S0 =1 et S1 = 1: 100% de la fréquence (environ 600 kHz)
  • Si S0 = 1 et S1 = 0: 20% de la fréquence (environ 120 kHz)
  • Si S0 = 0 et S1 = 1: 2% de la fréquence (environ 12 kHz)
  • Si S0 = 0 et S1 = 0: capteur inactif

Quant aux LEDs, elles sont allumées par défaut. Si vous désirez qu'elles demeurent éteintes, vous reliez l'entrée LED du module GY-31 à la masse, pour que sa tension soit nulle.

Connexions du module GY-31 au Rasperry Pi

Voici comment j'ai branché le module GY-31 à mon Raspberry Pi:

  • Broche GND du module GY-31: Broche GND (#6) du Raspberry Pi
  • Broche VCC du module GY-31: Sortie 3,3 V (#1) du Raspberry Pi
  • Broche S0 du module GY-31: Broche GPIO 27 (#13) du Raspberry Pi
  • Broche S1 du module GY-31: Broche GPIO 22 (#15) du Raspberry Pi
  • Broche S2 du module GY-31: Broche GPIO 23 (#16) du Raspberry Pi
  • Broche S3 du module GY-31: Broche GPIO 24 (#18) du Raspberry Pi
  • Broche OUT du module GY-31: broche GPIO 25 (#22) du Raspberry Pi
  • Broche LED du module GY-31: pas branchée
Script en Python:

Le script ci-dessous affiche tour à tour la valeur mesurée pour le rouge, le vert, le bleu et la totalité de la lumière captée.

Aux lignes 31 et 32, je règle le module pour que la fréquence du signal de sortie ne soit que 2% de la valeur maximale possible, en suivant l'hypothèse qu'un signal lent sera plus facile à mesurer avec une bonne précision. Les résultats semblent quand même très bons si vous réglez le capteur à 100% de la fréquence. 

Aux lignes 37 et 38, j'utilise la fonction GPIO.wait_for_edge afin de chronométrer le temps nécessaire pour que le signal de sortie du module effectue 10 oscillations. C'est ce temps qui est affichée comme résultat: une petite valeur correspond à une forte intensité lumineuse.

- -

Les résultats obtenus dépendent de la lumière ambiante et de la distance entre le capteur et la surface dont on désire connaître la couleur. Pour minimiser les perturbations, j'ai placé le capteur au fond d'un récipient sombre qui bloque la lumière ambiante et maintient une distance constante entre le capteur et la surface colorée.


J'ai effectué des tests avec des cartons de couleur vive. En utilisant les mesures des différents paramètres pour chaque carton, on peut faire en sorte que le programme reconnaît le carton rouge, le carton vert, etc. (j'ai laissé un exemple aux lignes 66 et 67 du script).




Sources: je me suis inspiré de ce projet publié sur Electronics Hub.


À lire également:

Yves Pelletier (TwitterFacebook

dimanche 15 novembre 2020

Mesurer la pression atmosphérique avec le BMP180 et un Rasbperry Pi

Le capteur BMP180 est conçu pour mesurer la pression atmosphérique ainsi que la température. Son application la plus évidente l'observation des conditions météorologiques, mais on peut également l'utiliser pour mesurer la pression d'un gaz dans un récipient fermé, ou pour mesurer l'altitude. Dans le passé, j'ai moi-même eu l'occasion de l'utiliser pour mesurer la pression dans un liquide, et pour détecter le souffle du flûtiste dans une flûte à bec MIDI.

Dans cet article, je vous présente quelques informations qui vous permettront d'utiliser un capteur BMP180 avec un Raspberry Pi programmé en Python.

Branchements du capteur

Le module BMP180 comporte 4 connecteurs: deux pour l'alimentation et deux pour la communication des données par le protocole I2C.


  • La broche VIN du module BMP180 est connectée à une sortie 3,3 V du Raspberry Pi (broche 1)
  • La broche GND du module BMP180 est connectée à une broche GND du Raspberry Pi (broche 6)
  • La broche SCL du module BMP180 est connectée à la broche SCL du Raspberry Pi (broche 5)
  • La broche SDA du module BMP180 est connectée à la broche SDA du Raspberry Pi (broche 3)

Activation de l'I2C

Par défaut, la communication I2C est désactivée sur le Raspberry Pi. Si ce n'est pas déjà fait, vous devez l'activer en allant dans Préférences - Configuration du Raspberry Pi.


Cliquez sur l'onglet "Interfaces" et assurez-vous que I2C est activé. Il est possible qu'un redémarrage soit nécessaire.



Pour vérifier que tout est fonctionnel, vous pouvez écrire "sudo i2cdetect -y 1" dans le terminal. Le module BMP180 devrait être trouvé à l'adresse 77.

Installation de la bibliothèque d'Adafruit

Pour faciliter la programmation, j'ai installé la bibliothèque Pyhton BMP d'Adafruit, en suivant les instructions fournies sur cette page J'ai donc tapé les 4 lignes suivantes dans le terminal:

   sudo apt-get install git build-essential python-dev python-smbus

   git clone https://github.com/adafruit/Adafruit_Python_BMP.git

   cd Adafruit_Python_BMP

   sudo python3 setup.py install


Script en Python

Le script ci-dessous est déjà très court, mais la plus grande partie consiste à créer avec Tkinter la fenêtre qui affichera les mesures prises par le capteur. Seules les lignes 14, 17, 43 et 44 concernent le capteur BMP180:

À la ligne 14:  (import Adafruit_BMP.BMP085 as BMP085), nous importons les méthodes de la bibliothèque BMP085 d'Adafruit.

À la ligne 17: (capteur = BMP085.BMP085()): création d'un objet de type BMP085.

À la ligne 43: (capteur.read_temperature()): mesure de la température en degrés Celsius.

À la ligne 44: (capteur.read_pressure()): mesure de la pression en Pascal.

Lorsqu'on exécute ce script, une fenêtre s'affiche et indique la température ainsi que la pression atmosphérique.



--

À lire également

Yves Pelletier (TwitterFacebook

dimanche 1 novembre 2020

Mesurer la température et l'humidité relative avec un DHT22 (AM2302) et un Raspberry Pi

Le capteur DHT22 (aussi appelé AM2302) permet de mesurer l'humidité relative de l'air ainsi que la température ambiante. Nous l'utilisons aujourd'hui avec un Raspberry Pi programmé en Python. 


Le capteur comporte un condensateur dont la capacité dépend de l'humidité. Puisqu'il faut également connaître la température pour pouvoir calculer l'humidité relative, le DHT22 comporte également un capteur de température intégré.

J'ai utilisé un DHT22 qui est incorporé à un module comportant 3 broches: + , out et -. Ce module comporte déjà une résistance de tirage entre les broches + et OUT. Si ce n'est pas le cas pour le capteur que vous utilisez, il est recommandé de placer une résistance de 4,7 kΩ ou 10 kΩ environ entre DATA et VCC.

Pour ma part, j'ai branché mon module au Raspberry Pi de la façon suivante:
  • Broche + du DHT22: sortie 3,3 V du Raspberry Pi
  • Broche out du DHT22: broche GPIO 4 du Raspberry Pi
  • Broche - du DHT22: broche GND du Raspberry Pi

J'ai ensuite installé la bibliothèque d'Adafruit en tapant les 3 lignes suivantes dans le terminal:

pip3 install adafruit-blinka
pip3 install adafruit-circuitpython-dht
sudo apt-get install libgpiod2

Le script ci-dessous, inspiré d'un exemple fourni par Adafruit, affiche la température, l'humidité relative, le point de rosée et l'indice humidex.

-
-

Si vous décommentez la ligne 38, un message d'erreur sera affiché en cas d'échec de la lecture du capteur. Dans mon cas, j'ai eu la surprise de constater qu'environ une lecture sur quatre échouait avec une de ces deux mentions: "A full buffer was not returned. Try again." ou encore "Checksum did not validate. Try again.".  Après avoir vainement tenté de trouver une façon d'éviter ces erreurs, j'ai fini par me résigner et à simplement ne pas afficher le message d'erreur. De toute façon, la température et l'humidité sont des paramètres qui varient lentement, on a donc tout le temps de reprendre notre mesure si elle a échoué.

À lire également:

J'ai déjà utilisé un DHT22 avec un Arduino Uno


Yves Pelletier (TwitterFacebook)

dimanche 25 octobre 2020

Mesure d'une distance avec télémètre laser VL53L1X et Raspberry Pi

J'ai déjà eu l'occasion de parler du télémètre laser VL53L1X il y a quelques mois: je l'avais alors utilisé avec une carte Arduino.  Il s'agit d'un dispositif qui mesure avec une assez bonne précision la distance d'un obstacle situé à 4 mètres ou moins, grâce à un laser infrarouge de type VCEL.

Cette fois, je l'utilise avec un Raspberry Pi et un programme en Python.


Connexions au Rasbperry Pi

Mon module VL53L1X a été conçu par la compagnie Waveshare.  Sparkfun et Pololu offrent également leur propre module à base de VL53L1X, j'imagine qu'ils se branchent de la même façon.

Le module comporte 6 connecteurs, mais je n'en ai utilisé que 4:
  • VCC: Branché à une sortie 3,3 V du Raspberry Pi (broche 1)
  • GND: Branché à une broche GND du Raspberry Pi (broche 6)
  • SDA: Branché à la broche SDA1 du Raspberry Pi (broche 3)
  • SCL: Branché à la broche SCL1 du Raspberry Pi (broche 5)
  • SHUT:  "shutdown control". Je ne l'ai pas utilisée.
  • INT:  "interrupt output". Je ne l'ai pas utilisée.

Installation de la bibliothèque de Sparkfun

Sparkfun a mis au point un module Python; pour l'utiliser avec Python 3, il s'agit de taper cette commande dans le terminal:

sudo pip3 install sparkfun-qwiic-vl53l1x


Exemple de script #1

Voici un premier script qui affiche la distance en millimètres.

-

-


Exemple de script #2

Ce deuxième script utilise tkinter pour afficher la distance dans une fenêtre plus esthétique.


-

-

La précision est excellente pour un objet situé à quelques dizaines de centimètres (la mesure varie d'environ 5 mm pendant que l'objet demeure immobile). Pour des objets situés à 2 mètres, l'imprécision peut être de quelques centimètres.


Yves Pelletier (TwitterFacebook)


samedi 17 octobre 2020

Balance à base de Raspberry Pi


Je vous ai récemment présenté ma balance constituée d'une cellule de charge et d'un module HX711. Après l'avoir testée avec succès avec une carte Arduino Uno, je me suis amusé, cette fois, à la brancher à un Raspberry Pi.

Assemblage de la balance

La cellule de charge est vissée à deux plaques de façon à former un profil qui rappelle la lettre "S".  Au besoin, vous trouverez quelques photos supplémentaires dans mon article précédent.


Connexion de la cellule de charge au module HX711

Le module HX711 comporte 6 connecteurs servant à brancher la cellule de charge (E+, E-, A-, A+, B-, B+), et quatre connecteurs servant à l'alimentation et à la communication avec le Raspberry Pi (GND, DT, SCK, VCC).


La cellule de charge est branchée au module HX711 de la façon suivante:

  • Fil rouge: E+
  • Fil noir: E-
  • Fil blanc: A-
  • Fil vert: A+


Connexion du module HX711 au Raspberry Pi

J'ai branché le module HX711 au Raspberry Pi de cette façon:

  • GND du HX711: GND du Raspberry Pi
  • DT du HX711: broche GPIO 5 du Raspberry Pi
  • SCK du HX711: broche GPIO 6 du Raspberry Pi
  • VCC du HX711: sortie 3,3 V du Raspberry Pi

Installation de la bibliothèque de tatobari

Pour faciliter la programmation en Pyhton, j'ai téléchargé cette bibliothèque sur le github de Tatobari.

Un script minimaliste

Basé sur le script example.py, fourni avec la bibliothèque, le script ci-dessous accomplit le strict minimum, soit afficher la masse à chaque demi-seconde.


Pour calibrer ma balance, j'ai d'abord utilisé "1" comme paramètre à hx.set_reference_unit() (ligne 23 du script), puis j'ai placé une masse connue sur le plateau de la balance. J'ai ensuite divisé la mesure affichée par la masse, ce qui m'a donné 382,6, qui est devenu le nouveau paramètre de hx.set_reference_unit().

Par exemple: 
  • J'exécute le script avec hx.set_reference_unit(1).
  • Lorsque la balance est prête, je place une masse de 200 grammes sur le plateau.
  • Le programme affiche 76520.
  • Je calcule 76520/200, ce qui donne 382,6.
  • J'exécute à nouveau le script, mais avec hx.set_reference_unit(382.6).
  • La masse s'affiche correctement en grammes.
-

-

Une interface grahique avec Tkinter

Pour faire plus joli, j'ai aussi programmé cette deuxième version.



-

-

À lire également:


Yves Pelletier (TwitterFacebook

mercredi 15 avril 2020

Robot éviteur d'obstacles, version Raspberry Pi

Grâce à un télémètre à ultrasons HC-SR04, un robot peut détecter la présence d'un obstacle situé devant lui, et modifier sa trajectoire de façon à éviter de frapper l'obstacle.


Dans cet article, je vous donne quelques informations qui vous permettront de fabriquer un tel robot, en utilisant un Raspberry Pi (si vous préférez utiliser une carte Arduino, vous pouvez consulter cet article).

Comportement du robot

Le robot se déplace normalement en ligne droite. Mais s'il détecte la présence d'un obstacle devant lui (à une distance de 20 cm ou moins), il tourne sur lui même, puis recommence à avancer lorsque la voie est libre.



Connexion des moteurs

La partie la plus complexe de l'assemblage du robot consiste à connecter les moteurs par l'entremise d'un L298N; tout ça a été couvert en détail dans cet article: Robot Raspberry Pi.



Connexion du capteur à ultrasons

Le télémètre HC-SR04 est plus simple à brancher, puisqu'il ne comporte que 4 connecteurs. Il faut toutefois éviter de brancher directement sa sortie "echo" à une broche GPIO du Raspberry Pi, car sa tension de 5 V risquerait d'endommager le Raspberry Pi. C'est pour cette raison que j'ai utilisé un diviseur de tension constitué d'une résistance de 1 kΩ et d'une résistance de 1,8 kΩ. De cette façon, la tenson appliquée à l'entrée du Raspberry Pi ne sera que de 3,3 V (une autre possibilité consiste à utiliser un circuit intégré 4050).

  • La broche Vcc du HC-SR04 est branchée à une sortie 5 V (broche numéro 2) du Raspberry Pi.
  • La broche Trig du HC-SR04 est branchée à la broche 8 (GPIO 14) du Raspberry Pi 
  • La broche Echo du HC-SR04 est branchée à la broche 10 (GPIO 15) du Raspberry Pi, par l'entremise du diviseur de tension schématisé ci-dessus.
  • La broche Gnd du HC-SR04 est branchée à une des broches Gnd du Raspberry Pi (la broche 25, par exemple).



Script

Le programme vérifie d'abord la distance retournée par le télémètre HC-SR04 (voir cet article sur l'utilisation d'un HC-SR04 avec un Raspberry Pi si vous désirez plus d'information sur le fonctionnement du capteur). Si le résultat est supérieur à 20 cm, le robot continue d'avancer en ligne droite. Si le résultat est inférieur à 20 cm, le robot cesse d'avancer et effectue une rotation.

- -

À lire aussi



Yves Pelletier (TwitterFacebook)