... .. - . -. ... .. ..--- ----- ..--- ----- -....- ..--- ----- ..--- .----
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

289 lines
12 KiB

3 years ago
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>La programmation avec Jean-Lou</title>
<link rel="stylesheet" type="text/css" href="../css/style.css">
<link rel="stylesheet" type="text/css" href="../css/prism.css">
</head>
<body>
<nav>
<ul style="width: 1000px;">
<li>
<a href="../Index.html">Accueil</a>
</li>
<li class="menu-deroulant">
<a href="#"class="ho_menu">Languages</a>
<ul class="sous-menu">
<li><a href="../language/python.html">Python</a></li>
<li><a href="../language/c.html">C</a></li>
<li><a href="../language/c++.html">C++</a></li>
</ul>
</li>
<li class="menu-deroulant">
<a href="#" class="ho_menu">Rasberry Pi</a>
<ul class="sous-menu">
<li><a href="histoire.html">Histoire</a></li>
<li><a href="os.html">Mettre un os</a></li>
<li><a href="lecteur.html">lecteur NFC</a></li>
</ul>
</li>
<li><a href="interpreteur/interpreteur.html">Interpréteur</a></li>
</ul>
</nav>
<div class="aligne">
<div class="article">
<h1 id="ancre1">Bienvenue sur la page du lecteur NFC !</h1>
<img src="https://www.raspberrypi-spy.co.uk/wp-content/uploads/2018/02/raspberry_pi_rfid_rc522_03.jpg" class="NFC">
<h2>Un lecteur NFC qu'est ce que c'est ?</h2>
<p id="ancre2">Le NFC, ou Near Field Communication, est une technologie permettant d’échanger des données entre un lecteur et n’importe quel terminal mobile compatible ou entre les terminaux eux-mêmes. C’est la technologie qu’utilise votre carte bancaire pour le paiement sans contact, ou votre carte de transport. L’avantage de cette technologie est qu’en principe, aucune application n’est requise. Il suffit de rapprocher les deux supports. Attention, il ne faut pas que ces derniers soient trop éloignés l’un de l’autre : une dizaine de centimètres maximum !</p>
<h2>Le matériel à avoir</h2>
<p>Pour ce petit projet vous aurez besoins d'un RPI de n'importe qu'ellle version, pour ma part sa sera un RPI model B donc les schémas des ports GPIO y seront liéé, si vous avez un RPI d'une autre version il faudra que vous alliez rechercher les schémas des GPIO qui correspondent.<br></p>
<p id="ancre3">Il vous faudra aussi un <a href="https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwiNpczum7zuAhXt6-MHHRuDBWoYABAFGgJ5bQ&ohost=www.google.com&cid=CAASE-RokkXwH_ojt3-mxM8ft4e_EqY&sig=AOD64_01TANqZfAXo8M-sD7BmqYrr91HzQ&ctype=5&q=&ved=2ahUKEwj958Xum7zuAhXlRt8KHTOSBrYQ9aACegQIDRBq&adurl=">lecteur NFC</a> que vous pourrait trouver en clickant sur les mots " lecteur NFC " juste avant. Dans ce kit il y a un lecteur NFC avec une carte et un badge avec un tag qui leurs est admit par défault mais que vous pourrait changer.</p>
<h2>Les ports GPIO qu'est ce que c'est ?</h2>
<p id="ancre4">Les ports GPIO sont des ports physiques se présentant généralement sous forme de picots métalliques carrés permettant de transmettre un signal électrique. Un port GPIO transmet un signal numérique binaire (0 ou 1) ou analogique (variation d'une tension électrique).<br><br>
Ce sont ces ports qui nous permettront de récupérer les informations que le lecteur NFC nous envoi.</p>
<h2>Premiers branchements</h2>
<p>Chaque broche du lecteur NFC est nommée de cette manière:<br></p>
<table class="tableau-style">
<thead>
<tr>
<th>Board pin name</th>
<th>Board pin</th>
<th>Physical RPI pin</th>
<th>RPI pin name</th>
<th>Beaglebone Black pin name</th>
</tr>
</thead>
<tbody>
<tr>
<td>SDA</td>
<td>1</td>
<td>24</td>
<td>GPIO8, CE8</td>
<td>P9_17, SPIO_CSO</td>
</tr>
<tr>
<td>SCK</td>
<td>2</td>
<td>23</td>
<td>GPIO11, SCKL</td>
<td>P9_22, SPIO_SCLK</td>
</tr>
<tr>
<td>MOSI</td>
<td>3</td>
<td>19</td>
<td>GPIO10, MOSI</td>
<td>P9_18, SPIO_D1</td>
</tr>
<tr>
<td>MISO</td>
<td>4</td>
<td>21</td>
<td>GPIO19, MISO</td>
<td>P9_21, SPIO_DO</td>
</tr>
<tr>
<td>IRQ</td>
<td>5</td>
<td>18</td>
<td>GPIO24</td>
<td>P9_15, GPIO_48</td>
</tr>
<tr>
<td>GND</td>
<td>6</td>
<td>20</td>
<td>GROUND</td>
<td>GROUND</td>
</tr>
<tr>
<td>RST</td>
<td>7</td>
<td>22</td>
<td>GPIO25</td>
<td>P9_23, GPIO_49</td>
</tr>
<tr>
<td>3.3V</td>
<td>8</td>
<td>17</td>
<td>3V3</td>
<td>VDD_3V3</td>
</tr>
</tbody>
</table>
<p>Le port GPIO de votre RPI (ici un modèle B)contient le brochage suivant :</p>
<img src="https://www.raspberry-pi.ovh/images/RPI-GPIO.png" id="feprogramme">
<p>Sur le schéma ci-dessus vous avez les noms des pins du GPIO de votre RPI, ils vous suffit de regarder le noms des pins qui correspond au bon port sur le lecteur nfc avec la colonnne " RPI pin name " puis a les relier ensemble parun fil ou une soudure.</p>
<p>Attention pour ne pas vous tromper de sens avec les pins du GPIO il y a un détompeur carré sur le schéma et sur le GPIO de votre RPI.</p>
<img src="RPI.jpg" class="RPII">
<p id="ancre5">Cela vous donnera quelque chose dans le genre. Mais attention j'utilise une carte Pyrack pour avoir plusieur GPIO sur un RPI, mais ce n'est pas obligé, cela sert même a rien pour ce projet car nous brancherons que notre lecteur NFC sur le GPIO de notre RPI.</p>
<h2>Le programme</h2>
<p>Nous allons faire le programme en python, il sera assez court et assez simple a comprendre. Créez un programme et allez sur nano, si vous ne savez pas faire sa allez regarder la page " <a href="Lesbases.html">Les bases</a> " dans la catégorie RPI. Je vous laisserez également étudier les bases de python dans la page " <a href="Python.html">Python</a> " si vous ne connaissez pas les bases de ce langage.</p>
<p>Commençons par importer les bibliothèques dont nous aurons besoin.</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
</code></pre>
</div>
<p>Ensuite nous allons préciser le mode de GPIO que l'on veut mettre sur le RPI, car il existe deux modes le " BOARD " et le " BCM ". Ensuite nous désactivons le messages d'alerte du GPIO qui est activé de base sur le RPI.</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
</code></pre>
</div>
<p>Nous allons ensuite mettre des fonctions dans des variables avec un autre nom plus simple a utiliser.</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
rc522 = RFID()
util = rc522.util()
</code></pre>
</div>
<p>Maintenant commençons le corps du programme avec la boucle " while " avec condition " true " pour que la boucle soit infinie.Puis nous mettons la requeête permettant de regarder si un badge est présent ou pas .</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
rc522 = RFID()
util = rc522.util()
print ("attente passage badge employe")
while True:
(error, tag_type) = rc522.request()
</code></pre>
</div>
<p>Nous y ajoutons ensuite la condition de si il n'y a pas d'erreur lire le tag de la carte.</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
rc522 = RFID()
util = rc522.util()
print ("attente passage badge employe")
while True:
(error, tag_type) = rc522.request()
if not error:
(error, uid) = rc522.anticoll()
</code></pre>
</div>
<p>Par la suite nous remettrons une condition que si il n'y a pas d'erreur alors afficher le tag reçus avec le DEBUG.</p>
<div id="script">
<script type="text/javascript" src="../js/prism.js"></script>
<pre><code class="language-python">import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
rc522 = RFID()
util = rc522.util()
print ("attente passage badge employe")
while True:
(error, tag_type) = rc522.request()
if not error:
(error, uid) = rc522.anticoll()
if not error:
print("UID: " + str(uid))
E_UID=str(uid).replace(" ", "")
print("DEBUG E_UID:",E_UID)
</code></pre>
</div>
<p>Nous avons finit le programme permettant d'utiliser un lecteur NFC avec son RPI, il ne vous reste plus qu'a le tester en passant un tag. Mais ils n'est pas vraiment complet il manquerait une condition qui aretterait le programme comme par example au bout de 20 minutes aretter le programmes etc... Laissez libre cour a votre imaginations.</p>
</div>
<div class="partie">
<nav id="navigation">
<li><a class="lien" href="#ancre1">Une lecteur NFC c'est quoi?</a></li>
<li><a class="lien" href="#ancre2">Le matériel à avoir</a></li>
<li><a class="lien" href="#ancre3">Les ports GPIO qu'est ce que c'est ?</a></li>
<li><a class="lien" href="#ancre4">Premiers branchements</a></li>
<li><a class="lien" href="#ancre5">Le programme</a></li>
</nav>
</div>
<script src= "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="../js/scroll.js"></script>
</body>
</html>