<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Archives des GPIO - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/gpio/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/gpio/</link>
	<description>La programmation gratuite pour tous</description>
	<lastBuildDate>Sun, 03 May 2020 19:37:18 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/08/cropped-19518430-icone-de-programmation-pour-votre-site-web-mobile-presentation-et-conception-de-logo-gratuit-vectoriel.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Archives des GPIO - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/gpio/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">176210735</site>	<item>
		<title>Raspberry, un robot suiveur de ligne</title>
		<link>https://programmation.surleweb-france.fr/raspberry-robot-suiveur/</link>
					<comments>https://programmation.surleweb-france.fr/raspberry-robot-suiveur/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sat, 09 May 2020 17:00:00 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[projet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[raspberry]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[robotique]]></category>
		<category><![CDATA[suiveur]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=135</guid>

					<description><![CDATA[<p>La réalisation d'un robot suiveur est éducatif et ludique pour appréhender la programmation et la gestion du port GPIO du Raspberry</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/raspberry-robot-suiveur/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/raspberry-robot-suiveur/">Raspberry, un robot suiveur de ligne</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Après avoir vu le robot suiveur de ligne à base d&rsquo;Arduino dans cet <a rel="noreferrer noopener" href="https://programmation.surleweb-france.fr/robot-suiveur-de-ligne-version-arduino/" target="_blank">article</a>, tu vas voir son homologue mais à base de Raspberry. Cet article est accessible pour des néophytes qui souhaitent apprendre et faire un projet plus concret. Cela permettra de voir le contrôle de deux moteurs (comme dans cette <a rel="noreferrer noopener" href="https://programmation.surleweb-france.fr/raspberry-robot-eviteur-obstacles/(ouvre un nouvel onglet)" target="_blank">article</a>), la gestion de photo-résistance ainsi que de led.</p>



<h2 class="wp-block-heading">Rôle du robot suiveur</h2>



<p>Comme vu lors de la réalisation d&rsquo;un robot suiveur de ligne à base d&rsquo;Arduino, le principe est identique, le robot suivra une ligne grâce à des photo-résistances et deux leds. En fonction de la position de la ligne par rapport au Raspberry, celui-corrigera la trajectoire en commandant ou pas les moteurs.</p>



<p>Voici des robots un peu plus évolué que celui que l&rsquo;on va faire mais le principe reste identique :</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Course de robots suiveurs de ligne - IUT de Cachan." width="900" height="506" src="https://www.youtube.com/embed/1dqmPecnoKk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Matériels nécessaires</h2>



<p>Pour réaliser le robot, tu vas avoir besoin :</p>



<ul class="wp-block-list"><li>2 moteurs à courant continu 5V avec un réducteur afin de ne pas faire une sortie de piste, vers le lien <a rel="noreferrer noopener" href="https://amzn.to/2YpwNEt" target="_blank">Amazon</a>.</li><li>1 module L298N pour le contrôle des moteurs et ne pas grillé ton Raspberry, vers le lien <a rel="noreferrer noopener" href="https://amzn.to/2Sslesh" target="_blank">Amazon</a>.</li><li>1 Raspberry Pi 4 (<a rel="noreferrer noopener" href="https://amzn.to/2KUhR9v" target="_blank">Amazon</a>) ou Pi 3 (<a rel="noreferrer noopener" href="https://amzn.to/3c0CSLx" target="_blank">Amazon</a>), voir des modèles en-dessous.</li><li>1 boitier de pile, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/2SrAplA" target="_blank">Amazon</a>.</li><li>2 led blanche, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/2SJJ8zZ" target="_blank">Amazon</a>.</li><li>2 photo résistance, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/3dbLAGS" target="_blank">Amazon</a>.</li><li>des résistances, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/2WiTwj5" target="_blank">Amazon</a>.</li><li>1 carte de prototypage, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/3fbZyKJ" target="_blank">Amazon</a>.</li><li>différents fils pour la connexion, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/2WjwTe7" target="_blank">Amazon</a>.</li><li>1 chassis, le modèle présenté sur le lien possède le boitier pour batterie ainsi que des moteurs, ceux-là risque d&rsquo;être bien trop rapide pour notre projet mais pourront être réutilisés, voir le lien <a rel="noreferrer noopener" href="https://amzn.to/3bY6toR" target="_blank">Amazon</a>.</li></ul>



<p>Avec tout cela, tu devrais avoir ce qu&rsquo;il te faut. Si tu es amené à faire à faire d&rsquo;autres projets, je t&rsquo;invite à éviter les petits lots. Les liens Amazon me permettent de gagner quelques euros dans le mois (pas plus) qui me paie mon nom de domaine et l&rsquo;hébergement du site.</p>



<h2 class="wp-block-heading">Montage du robot</h2>



<p>Afin de réaliser le robot, nous allons voir chaque partie de manière indépendante.</p>



<h3 class="wp-block-heading">Mise au point du capteur</h3>



<p>Le Raspberry, à la différence de l&rsquo;Arduino n&rsquo;accepte pas des tensions supérieurs à 3,3V en entrée. De ce faite, nous allons alimenter la carte capteurs avec deux tensions :</p>



<ul class="wp-block-list"><li>5V pour alimenter les leds</li><li>3,3V pour les photo-résistances</li></ul>



<p>En vue de face, le capteur donne cela :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="400" height="255" src="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/capteur-et-ligne-commenté.jpg?resize=400%2C255&#038;ssl=1" alt="" class="wp-image-233" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/capteur-et-ligne-commenté.jpg?w=400&amp;ssl=1 400w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/capteur-et-ligne-commenté.jpg?resize=300%2C191&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/capteur-et-ligne-commenté.jpg?resize=150%2C96&amp;ssl=1 150w" sizes="(max-width: 400px) 100vw, 400px" /></figure></div>



<p>Le capteur de gauche est connecté à la broche BCM 17 (BOARD 11) du Raspberry Pi et la sortie du capteur de droite à la broche BCM 27 (BOARD 13). Il faut bien sûr alimenter les capteurs (broches GND et 3,3 V). J&rsquo;ai conçu mon capteur pour que les LEDs soient alimentées en 5 V, ce qui n&rsquo;est pas nécessairement le cas si vous utilisez un autre modèle de capteur.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img data-recalc-dims="1" decoding="async" width="400" height="304" src="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/circuit-Raspi-et-capteur.gif?resize=400%2C304&#038;ssl=1" alt="" class="wp-image-234"/></figure></div>



<h3 class="wp-block-heading">Les moteurs</h3>



<p>Il s&rsquo;agit de la partie la plus importante de cet article. En effet, vous <strong>ne devez surtout pas connecter les moteurs directement sur le Raspberry</strong> au risque de détruire votre jouet favoris. L&rsquo;intensité demandée par les moteurs est bien supérieurs à celle que le Pi peut fournir.</p>



<p>Tu passeras donc par le module L298N dont vous pouvez suivre <a rel="noreferrer noopener" href="https://arduino103.blogspot.com/2014/06/utiliser-un-pont-h-l298-avec-raspberry.html" target="_blank">ce lien</a> pour en apprendre plus.</p>



<p>Pour ce qui est du câblage (le schéma provient de l&rsquo;excellent site dont le lien est en bas de l&rsquo;article) :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="400" height="231" src="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/circuit-robot-Raspberry-Pi.png?resize=400%2C231&#038;ssl=1" alt="" class="wp-image-203" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/circuit-robot-Raspberry-Pi.png?w=400&amp;ssl=1 400w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/circuit-robot-Raspberry-Pi.png?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/circuit-robot-Raspberry-Pi.png?resize=150%2C87&amp;ssl=1 150w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure></div>



<p>Pour ce qui est du câblage :</p>



<ul class="wp-block-list"><li>Broche +12 du L298N: Borne positive de l&rsquo;alimentation des moteurs (12 V est un maximum).</li><li>Broche GND du L298N: Borne négative de l&rsquo;alimentation des moteurs et une broche GND du Raspberry Pi.</li><li>OUT1 et OUT2 du L298N branchées à un des moteurs.</li><li>OUT3 et OUT4 du L298N branchées à l&rsquo;autre moteur</li><li>ENA du L298N broche BCM 25 (BOARD 22) du Raspberry Pi</li><li>IN1 du L298N  broche BCM 23 (BOARD 16) du Raspberry Pi</li><li>IN2 du L298N broche BCM 12 (BOARD 18) du Raspberry Pi</li><li>IN3 du L298N broche BCM 10 (BOARD 19) du Raspberry Pi</li><li>IN4 du L298N broche BCM 9 (BOARD 21) du Raspberry Pi</li><li>ENB du L298N broche BCM 11 (BOARD 23) du Raspberry Pi</li></ul>



<h3 class="wp-block-heading">Alimentation</h3>



<p>Pour ce qui est l&rsquo;alimentation, différencies bien l&rsquo;alimentation du Raspberry, tu peux choisir une batterie externe comme celle-ci sur <a rel="noreferrer noopener" href="https://amzn.to/2KVGxhP" target="_blank">Amazon</a>. L&rsquo;avantage de celle-ci est que l&rsquo;adaptateur fera qu&rsquo;elle sera compatible pour le Pi 3 et Pi 4.</p>



<p>Pour les moteurs, si tu as opté pour le châssis que je t&rsquo;ai proposé au-dessus, le porte-batterie fera l&rsquo;affaire (en fonction de la tension nécessaire pour les moteurs.</p>



<h2 class="wp-block-heading">Programmation du Raspberry</h2>



<p>La programmation du capteur se fait en langage Python.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#!/usr/bin/env python
# -*- coding: latin-1 -*-

'''
Robot suiveur de ligne, version Raspberry Pi.

Pour plus d'informations:

https://electroniqueamateur.blogspot.com/2020/04/robot-suiveur-de-ligne-version_13.html

'''

import RPi.GPIO as GPIO
     
GPIO.setmode(GPIO.BOARD)  #notation board plutôt que BCM
     
Moteur1A = 16      ## premiere sortie du premier moteur, broche 16
Moteur1B = 18      ## deuxieme sortie de premier moteur, broche 18
Moteur1E = 22      ## enable du premier moteur, broche 22

Moteur2A = 19      ## premiere sortie du deuxieme moteur, broche 19
Moteur2B = 21      ## deuxieme sortie de deuxieme moteur, broche 21
Moteur2E = 23      ## enable du deuxieme moteur, broche 23

capteurGauche = 11 # capteur optique du côté gauche, broche 11
capteurDroite = 13 # capteur optique du côté droit, broche 13

## ces 6 broches du Raspberry Pi sont des sorties:
GPIO.setup(Moteur1A,GPIO.OUT)  
GPIO.setup(Moteur1B,GPIO.OUT)
GPIO.setup(Moteur1E,GPIO.OUT)
GPIO.setup(Moteur2A,GPIO.OUT) 
GPIO.setup(Moteur2B,GPIO.OUT)
GPIO.setup(Moteur2E,GPIO.OUT)

# ces 2 broches sont des entrées;
GPIO.setup(capteurGauche,GPIO.IN)  
GPIO.setup(capteurDroite,GPIO.IN)  

# Initialisation des capteurs (on suppose qu'ils sont de part et d'autre de la ligne)
initialGauche = GPIO.input(capteurGauche)
initialDroite = GPIO.input(capteurDroite)
     
while True:
    
    etatGauche = GPIO.input(capteurGauche)
    etatDroite = GPIO.input(capteurDroite)

    # s'il faut avancer en ligne droite
    if etatGauche == initialGauche and etatDroite == initialDroite: 
        GPIO.output(Moteur1A,GPIO.HIGH)
        GPIO.output(Moteur1B,GPIO.LOW)
        GPIO.output(Moteur1E,GPIO.HIGH)
        GPIO.output(Moteur2A,GPIO.HIGH)
        GPIO.output(Moteur2B,GPIO.LOW)
        GPIO.output(Moteur2E,GPIO.HIGH)

    # s'il faut tourner à gauche
    if etatGauche != initialGauche and etatDroite == initialDroite: 
        GPIO.output(Moteur1A,GPIO.HIGH)
        GPIO.output(Moteur1B,GPIO.LOW)
        GPIO.output(Moteur1E,GPIO.HIGH)
        GPIO.output(Moteur2E,GPIO.LOW)

    # s'il faut tourner à droite
    if etatGauche == initialGauche and etatDroite != initialDroite:
        GPIO.output(Moteur1E,GPIO.LOW)
        GPIO.output(Moteur2A,GPIO.HIGH)
        GPIO.output(Moteur2B,GPIO.LOW)
        GPIO.output(Moteur2E,GPIO.HIGH)
    
    # s'il faut arrêter
    if etatGauche != initialGauche and etatDroite != initialDroite: 
        GPIO.output(Moteur1E,GPIO.LOW)
        GPIO.output(Moteur2E,GPIO.LOW)</pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Tu obtiens donc un nouveau robot, bien entendu, je te conseille de le démonter pour récupérer les composants. Pour ma part, cet article est écrit pour la seconde fois, la première fois, toutes les images provenait de celui que j&rsquo;avais réalisé mais suite à la perte de mon précédent site et tous les médias qui allait avec, je mets ceux du site originel.</p>



<p class="has-small-font-size">Cet article a été vu en premier sur <a rel="noreferrer noopener" href="http://electroniqueamateur.blogspot.com/2020/04/robot-suiveur-de-ligne-version_13.html" target="_blank">electroniqueamateur.blogspot.com.</a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/raspberry-robot-suiveur/">Raspberry, un robot suiveur de ligne</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/raspberry-robot-suiveur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">135</post-id>	</item>
	</channel>
</rss>
