TANIT Training & Consulting
Partie 1 Prise en main de la carte Raspberry Pi
1. Présentation de la carte
Raspberry Pi est un nano-ordinateur
ordinateur sur lequel est installé généralement le système
d'exploitation Linux destiné à des applications embarquées. Le cœur de l'ordinateur est un
Broadcom 2711
711 intégrant un processeur ARM cadencé a 1,5 G
GHz. Raspberry Pi peut intégrer
ses propres outils de développement et une IHM reposant sur SSH contrôlable depuis un autre
ordinateur par Ethernet ou Wi--Fi.
Figure 1 Raspberry pi 4
2. Constitution de la carte
La carte est constituée par:
CPU ARM (cortex A72) quad
quad-core 64 bits
LAN sans fil 802.11n
Bluetooth 5.0
Bluetooth faible consommation d'énergie (BLE)
1-2-4-8-12 Go de RAM
4 ports USB
40 broches GPIO
2 Ports HDMI (micro)
Port Ethernet
1
TANIT Training & Consulting
Prise jack 3,55 mm combinée
Interface de l'appareil photo (CSI)
Interface d'affichage (DSI)
Emplacement
ent carte micro SD
VideoCore IV cœur graphique 3D
Périphériques Rôle
Permettent la communication de la carte
GPIO
avec le monde extérieur
Port Jack Utilisé pour la sortie audio ou vidéo
USB Permett de connecter souris, cam, …
Port Ethernet utilisé pour la connexion internet.
CSI connexion de caméra
cam
HDMI connexion d’un écran(TV, vidéoprojecteur)
DSI connexion d’un écran tactile
Tableau 1 : Rôle des Périphériques de Raspberry pi 4
Les principales composantes sont :
Système sur puce Conçu spécialement pour le nouveau Pi 4,, le système sur puce
Braodcom BCM2711 (Soc) comprend quatre processeurs ARM Cortex Cortex-A72 haute
performance fonctionnant à 1,55 GHz et un processeur
eur graphique Vide Corê IV.
IV
Figure 2- Système sur puce
2
TANIT Training & Consulting
RAM D’un point de vue pratique, le processeur restant inchangé l’augmentation de la RAM
ne devrait pas particulièrement augmenter la puissance brute du Raspberry Pi. En revanche,
l’augmentation de la RAM devrait permettre aux utilisateurs ayant une forte consommation de
mémoire vive de faire tourner plus d’ap
d’applications en même temps.
Figure 3 - Mémoire RAM
GPIO
La Raspberry Pi 3 ou 4 dispose de 40 broches.
Figure 4 - GPIO
Module sans fil Laa puce Broadcom BCM
BCM2711 fournit le réseau local sans fil 802.11n de
2,4 GHz, Bluetooth
etooth LowEnergy et Bluetooth 5.0
5.0.
Figure 5 - Radio sans-fil
3
TANIT Training & Consulting
3. Utilitaires
- Raspbian Strech image
Lien: [Link]
- Putty
Lien: [Link]
- SD Card Formatter
Lien: [Link]
- Win32 Disk Imager
Lien: [Link]
- Filezilla:
Lien: [Link]
-Winrar :
Lien: [Link]
[Link]
- Advanced IP Scanner
Lien: [Link]
[Link]
[Link]/download/Advanced_IP_Scanner_2.[Link]
-vnc viewer :
Lien: [Link]
[Link]/download/
Deuxième partie Installation de l’OS et configuration
Formatage de la carte SD :
- Insérer la carte mémoire et lancer l’outil SD card Formater.
- Vérifier que la carte est détectée.
- Cliquer alors sur le bouton Format pour lancer le formatage de la carte.
Installer Raspbian sur une carte SD depuis Windows
Il faudra utiliser un logiciel pour installer correctement l’image de Linux sur la micro SD. Nous allons
utiliser celui qui est recommandé le plus : Win32 Disk Imager.
Dans « image file », sélectionner le fichier image de Raspbian pbian que vous avez téléchargé. Dans
« device », choisissez la lettre correspondant à votre lecteur de carte SD.
Cliquez sur Write et attendez quelques instants. Le logiciel va installer Raspbian sur votre carte SD.
Un message de confirmation apparaîtra une fois l’opération terminée.
Activer l’accès a distance :
Pour qu’on puisse se connecter à notre carte on doit configurer
igurer une adresse IP et activer le protocole
SSH :
- Ouvrir le fichier cmdline
[Link] sur la carte SD et à la fin de ligne ajouter : ip=[Link]
4
TANIT Training & Consulting
(Choisir une adresse en remplaçant xx exemple [Link])
- Pour activer le protocole SSH il suffit de créer un fichier vide sous le nom ‘ssh’ sans
extension
Vous pouvez retirer la carte SD du lecteur. Raspbian est installé sur la carte.
Brancher Raspberry Pi
Client SSH
Pour se connecter en SSH sur le Raspberry on utilise un logiciel qu'on appelle SSH Client.
Il y a deux type de clients:
- Le logiciel émulateur (comme putty)
- Une commande unix/linux tel que ssh.
Logiciel SSH Client
Le plus connu sous Windows, Mac et Linux est
Putty qui se trouve être un logiciel libre.
Puis apui sur ‘open’
Une fenêtre s’ouvre et demande login et mot de passe pour établir la connexion :
Login : pi
Password : raspberry
Configurer Raspbian
Apres la connexion on doit configurer notre raspberry. Pour cela on exécute la commande suivante dans
l’invite de commande:
sudo raspi-config
On se retrouve face à un menu permettant de configurer Raspbian :
5
TANIT Training & Consulting
- Donner une IP statique à la carte
Par défaut le Raspberry Pi utilise DHCP pour configurer ses interfaces réseau, dont, sur le modèle B, le
port ethernet intégré. Si vous désirez faire la modification pour que le port ethernet ait une adresse IP
statique, voici comment procéder.
Le DHCP pour eth0 est activé dans le fichier /etc/
/etc/[Link]
Ouvrir ce fichier :
sudo
udo nano /etc/[Link]
À la fin de fichier on ajoute les lignes suivantes :
interface eth0
static ip_address=[Link]
static routers=[Link]
static domain_name_servers=[Link]
Note : pour configurer une adresse ip statique pour la connexion à travers le wifi il suffit de recopier ces lignes (toujours
dans le même fichier) et remplacer « eth0 » par « wlan0 ».
Puis enregistrer et quitter (ctrl+x).
Faire un redémarrage:
sudo reboot
- Configuration wifi :
Tout d’abord, nous allons éditer le fichier wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
6
TANIT Training & Consulting
Rendez-vous
vous à la fin du fichier et ajoutez la définition de votre box en suivant ce template :
network={
ssid="nomDeLaBox"
psk="cléDeSécurité"
}
Troisième partie Exploration des GPIO
Les GPIO peuvent être utilisées comme sortie ou entrée numérique
numérique.
En sortie (Output), vous pouvez écrire un programme qui active une broche quelconque pour la mettre
en HIGH (active) ou LOW (désactivée).
Placer une broche à l'état HIGH (HAUT) applique une tension de 3.3V sur celle
celle-ci.
Placer
lacer une broche à l'état LOW (BAS) applique une tension de 0V sur celle
celle-ci.
Gestion d’une sortie (LED)
Code :
Montage :
import [Link] as GPIO
import time
[Link](False)
[Link]([Link])
[Link](19,[Link])
while True:
[Link](19,1)
[Link](2)
[Link](19,0)
7
[Link](2)
TANIT Training & Consulting
Exécution :
« Sudo python nom_du_programme.py ».. Pour arrêter « ctrl+c »
Acquisition d’une entrée (bouton poussoir)
Montage :
Code :
import [Link] as GPIO
import time
[Link](False)
[Link]([Link])
[Link](6,[Link])
[Link](19,[Link])
while True:
if([Link](6)==1):
[Link](19,1)
else:
[Link](19,0)
PWM
import [Link] as GPIO
import time
[Link](False)
[Link]([Link])
[Link](26,[Link])
p=[Link](26,50)
[Link](5)
[Link](10)
[Link](2)
[Link](40)
[Link](2)
[Link](80)
[Link](2)
[Link](100)
[Link](2)
[Link]()
[Link]()
8
TANIT Training & Consulting
Exécuter plus d'un programme de contrôle au même temps
Code1 : Code2 :
Exécuter les deux programme en ajoutant le symbole & à la fin de chaque ligne
sudo python [Link] &
sudo python [Link] &
On vous renvoie les informations.
[1] : c'est le numéro du processus en arrière
arrière-plan dans .
2577 : c'est le numéro d'identification général du processus.
Cette information vous permet de tuer le processus avec kill si nécessaire.
sudo kill 2577
sudo kill 2579
Troisième partie Eclairage à distance
sudo apt-get update
Installer Apache et PHP:
sudo apt-get install apache2
sudo apt-get install php7.3
Installer WiringPi:
sudo apt-get install git-core
9
TANIT Training & Consulting
git clone [Link]
[Link]/wiringpi/wiringpi
cd wiringpi
sudo git pull origin
./build
cd
Tester Wiringpi:
gpio -v
gpio readall
Rendez-vous
vous au dossier racine du serveur Apache:
cd /var/www/html
Supprimez [Link]:
sudo rm –rf [Link]
Créez [Link]:
sudo nano [Link]
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Contrôle GPIO</title>
<link rel="stylesheet" type="text/css" href="[Link]">
</head>
<body>
<form action="[Link]" method="post">
<input type="submit" name="executer" value="ON" class="button" id="ON">
<br/>
10
TANIT Training & Consulting
<input type="submit" name="executer" value="OFF" class="button" id="OFF">
</form>
</body>
</html>
Créez [Link]:
sudo nano [Link]
html, body
{
margin: 0;
}
.button
{
border: none;
color: white;
text-align: center;
font-size: 10em;
padding: 25px 25px;
cursor: pointer;
width: 100%;
height: 50vh;
}
#ON
{
background-color: green;
}
#OFF
{
background-color: red;
}
créez [Link]:
sudo nano [Link]
<?php
system("gpio -gg mode 4 out");
if($_POST['executer'] == 'ON')
{
system("gpio -g write 4 1");
}
else
{
system("gpio -g write 4 0");
}
header('Location: [Link]');
');
?>
11
TANIT Training & Consulting
Robotique Le robot est piloté par une carte qui nous permet de commander deux moteurs à
courant continu jusqu'à environ 2A dans le deux sens, ainsi que le changement de leurs
vitesses via le circuit L298.
Contrôleur de moteur L298
Pin de l’Interface Pin Raspberry pi
IN1 26
IN2 19
IN3 13
IN4 6
La carte à base de L298 peut commander deux moteurs à courant continu simultanément. Le
port d'entrée de commande du moteur A (Courant Continu) est composé de 3 broches IN1,
IN2 et ENA. IN1 et IN2 sont des broches de commande numérique qui sont utilisées pour
commander le sens de rotation du moteur. ENA est habituellement connectée à une sortie
PWM du contrôleur de la carte, ce qui permet de contrôler la vitesse du moteur mais ENA
peut aussi être raccordée à une sortie numérique pour commander
mmander le moteur en simple
marche/arrêt. De même, un second moteur continu peut
peut-être
être raccordé et utilisé
indépendamment du premier grâce aux entrées EN3, EN4, ENB.
12
TANIT Training & Consulting
Moteur1 :
ENA IN1 IN2 Description
0 X X Arrêt de
moteur
1 1 0 Vers l’Avant
1 0 1 Sens inverse
1 IN1=IN2
IN1=IN2=0 Arrêt du
moteur
Moteur2 :
ENB IN3 IN4 Description
0 X X Arrêt de moteur
1 1 0 Vers l’avant
1 0 1 Sens inverse
1 IN3=IN4=0 Arrêt du moteur
Quatrième partie Computer vision
Détection de visage et Reconnaissance faciale
L'installation d'OpenCV pour Python :
sudo apt-get install python
python-opencv
sudo apt-get install libcv
libcv-dev libopencv-dev libcv2.4 opencv-doc
opencv
Mettre le dossier 'haarcascade_frontalface_default.xml' dans /home/pi
Créer un dossier ‘dataSet’ et un dossier ‘recognizer’
13
TANIT Training & Consulting
Ecrire le programme suivant qu’on nommera ‘
‘prise’
A chaque fois on ajoute des nouvelles photos il faut changer ‘id=x’
Exécutez le code en tapant : sudo python [Link]
Ecrire le programme suivant qu’on nommera ‘trainer’
14
TANIT Training & Consulting
Exécutez le code en tapant : sudo python [Link]
Ecrire le programme suivant qu’on nommera ‘detector’
Exécutez le code en tapant : sudo python [Link]
15
TANIT Training & Consulting
Reconnaissance d’objets
- Installation de tensorflow
tensorflow(2.1) et opencv(3.4)
- >> sudo -H
H pip3 install --upgrade pip
- >> sudo apt-get
get install openjdk
openjdk-8-jdk
jdk automake autoconf
- >> sudo apt-get
get install curl zip unzip libtool swig libpng libpng-dev
zlib1g-dev pkg-config
config git g++ wget xz xz-utils
- >> sudo apt-get
get install libatlas-base-dev
- Dans le navigateur internet de la carte télécharger la version suivante de tensorflow :
tensorflow-2.1.0-cp37-none
none-linux_armv7l.whl
- et ce depuis le lien suivant : [Link]
on-arm/releases
- Dans le terminal taper:
- >> cd Downloads
- >> ls
- >> pip3 install tensorflow
tensorflow-2.1.0-cp37-none-linux_armv7l.whl
- >> pip3 install scikit-learn==0.21.3
learn==0.21.3
- >> pip3 install opencv-python==[Link]
python==[Link]
- >> sudo apt-get get install libjasper
libjasper-dev
- >> sudo apt-get get install libqtgui4
- >> sudo apt-get get install python3
python3-pyqt5
- >>sudo apt-get
get install libqt4
libqt4-test
Créer un dossier nommé images_bouteilles dans lequel mettre des photos quelconques et
des photos de l’objet qu’on désire reconnaitre.
Faire l’entrainement en utilisant le code [Link]
Procéder à la reconnaissance en utilisant le code lire_paquet
16