Raspberry PI
- présentation du Raspberry Pi
- Entrées-sorties et interfaces de communication
Introduction et présentation
du Raspberry Pi
Introduction et présentation du Raspberry Pi
Définition :
Le Raspberry Pi est un nano-ordinateur à processeur ARM conçu par le
créateur de jeux vidéo David Braben, dans le cadre de sa fondation
Raspberry Pi.
Cet ordinateur, qui a la taille d'une carte de crédit, est destiné à
encourager l'apprentissage de la programmation informatique ; il permet
l'exécution de plusieurs variantes du système d'exploitation libre
GNU/Linux et des logiciels compatibles. Il est fourni nu (carte mère
seule, sans boîtier, alimentation, clavier, souris ni écran) dans l'objectif
de diminuer les coûts et de permettre l'utilisation de matériel de
récupération.
Introduction et présentation du Raspberry Pi
Historique:
2006 : une nouvelle idée germe dans la tête d’étudiants de
cambridge : des micro-ordinateurs a petite prix !
L’objectif : rendre l’informatique plus accessible .
2006 – 2010 : l’équipe teste diverses mini machines et tente de
mettre au point un prototype de raspberry pi.
Décembre 2011 : les 10 premiers exemples sont mis en vente
pour réaliser un premier test.
Février 2012 : lancement de la production et la mise en vente.
Introduction et présentation du Raspberry Pi
Les différents modèles
Modèle A
Ce modèle A est équipé des entrées/sorties suivantes :
1 port USB 2.0
1 lecteur de cartes SD
1 port HDMI
1 sortie audio (jack 3,5 mm)
1 sortie RCA
26 broches GPIO
RAM 256 Mo
Fréquence de processeur 700 MHz
Introduction et présentation du Raspberry Pi
Les différents modèles
Modèle A+
Ce modèle A est équipé des entrées/sorties suivantes :
1 port USB 2.0
1 lecteur de cartes micro-SD
1 port HDMI
1 sortie audio (jack 3,5 mm)
40 broches GPIO
RAM 256 Mo
Fréquence de processeur 700 MHz
Introduction et présentation du Raspberry Pi
Les différents modèles
Modèle B
Ce modèle A est équipé des entrées/sorties suivantes :
2 port USB 2.0
1 port RJ45
1 lecteur de cartes SD
1 port HDMI
1 sortie audio (jack 3,5 mm)
1 sortie RCA
26 broches GPIO
RAM 512 Mo
Fréquence de processeur 700 MHz
Introduction et présentation du Raspberry Pi
Les différents modèles
Modèle B+
Ce modèle A est équipé des entrées/sorties suivantes :
4 port USB 2.0
1 port RJ45
1 lecteur de cartes SD
1 port HDMI
1 sortie audio (jack 3,5 mm)
40 broches GPIO
RAM 512 Mo
Fréquence de processeur 700 MHz
Introduction et présentation du Raspberry Pi
Les différents modèles
RPi 2 modèle B-
Ce modèle A est équipé des entrées/sorties suivantes
: 1 lecteur micro SD / SDHC
4 sorties USB 2.0
1 port RJ45 (Ethernet 10/100)
1 port HDMI
1 audio Jack 3,5 mm
GPIO 40 broches
RAM 1 Go
Fréquence de processeur 900 MHz
Introduction et présentation du Raspberry Pi
Les différents modèles
RPi Zero
- Un processeur Broadcom BCM2835
Core de 1 GHz ARM11 (40% plus rapide que le Rpi 1)
- 512MB de SDRAM LPDDR2
- Un slot pour carte micro SD
- Un port mini HDMI pour cracher de la vidéo 1080p 60
- Des ports micro USB pour l'alimentation et le transfert de données
-Un connecteur vide GPIO de 40 pin (identique à ceux qu'on
retrouve sur les modèles A+ / B+ / 2B)
Introduction et présentation du Raspberry Pi
Les différents modèles
RPi 3
- A 1.2GHz 64-bit quad-core ARMv8 CPU
- 802.11n Wireless LAN
- Bluetooth 4.1
Bluetooth Low Energy (BLE)
Introduction et présentation du Raspberry Pi
Les différents modèles
RPi Zero W
- 512MB RAM
- Mini-HDMI and USB On-The-Go ports
- Micro-USB power
- 40-pin header
- Composite video and reset headers
- CSI camera connector
- 802.11n Wireless LAN
- Bluetooth 4.1
Introduction et présentation du Raspberry Pi
Les différents modèles
RPi 4
- 1G/2G/4G RAM
- 2 * Mini-HDMI and 4 USB ports
- USB-C power
- 40-pin header
- CSI camera connector
Introduction et présentation du Raspberry Pi
Software : les distributions
La fondation Raspberry Pi recommande d'utiliser Raspbian, une
distribution GNU/Linux optimisée pour le matériel du Raspberry Pi.
Raspbian est basée sur Debian,
D'autre distributions GNU/Linux ont été testées avec succès avec le
Raspberry Pi. C'est le cas de Slackware, Arch et Gentoo dans leur
version destinée au processeurs ARM. Red Hat recommande d'utiliser
Raspberry Pi Fedora Remix et les debianeux s'orienteront vers
Raspbian.
Android fonctionne également sur le Raspberry Pi, tout comme FreeBSD
et NetBSD.
Introduction et présentation du Raspberry Pi
Software : les distributions
Introduction et présentation du Raspberry Pi
Software : les distributions
ARCHLINUX Robotics Operating
System
KALILINUX RISC OS
NOOBS ANDROID
Introduction et présentation du Raspberry Pi
Hardware : matérielles nécessaire
Un écran
Clavier USB
Souris USB
Carte mémoire SD 2Go minimum
Câble mini-USB pour l’alimentation
Equipements supplémentaire:
Carte réseau wifi
clés USB
disques durs alimentés séparément
clé Bluetooth
clé Wifi
Imprimante
webcam
Time to start
Prise en main du
Raspberry Pi
Prise en main du Raspberry Pi
Préparation de la carte SD
Télécharger Raspbian
Première étape, télécharger le système d’exploitation Raspbian. C’est
totalement gratuit !
Pour ce faire, il suffit de se rendre sur le site officiel du Raspberry Pi
dans la rubrique dédiée aux téléchargements.
[Link]
Prise en main du Raspberry Pi
Préparation de la carte SD
Formatage de la carte SD:
Formater la carte SD avec l’outil SD Formater :
Prise en main du Raspberry Pi
Préparation de la carte SD
Installer Raspbian sur une carte SD depuis Windows
Une fois que vous avez récupéré l’archive ZIP de Raspbian, dézippez-
la et vous obtiendrez un fichier image (.img).
Vous ne pourrez pas directement coller cette image sur votre carte SD.
Il faudra auparavant utiliser un logiciel pour installer correctement l’image
de Raspbian. Win32 Disk Imager
double-cliquez sur [Link] Vous devriez voir apparaître
ceci :
Prise en main du Raspberry Pi
Préparation de la carte SD
Dans « image file », sélectionnez le fichier image de Raspbian 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.
Vous pouvez retirer la carte SD du lecteur.
Raspbian est installé sur votre carte !
Prise en main du Raspberry Pi
Préparation de la carte SD
Activer l’accès a distance :
- Ouvrir le fichier [Link] sur la carte SD et à la fin de ligne
ajouter : ip=[Link] (exemple [Link])
- Pour activer le protocole SSH il suffit de créer un fichier vide
sous le nom ‘ssh’ sans extension
Prise en main du Raspberry Pi
Préparation de la carte SD
Insérer la carte SD dans votre Raspberry Pi
Il ne vous reste plus qu’à insérer votre carte SD contenant Raspbian
dans votre Raspberry Pi ! Et voilà !
Prise en main du Raspberry Pi
Démarrage et authentification:
Pour l’acces a distance via le protocole ssh on vas utiliser Putty
Prise en main du Raspberry Pi
Démarrage et authentification:
Il faut s’authentifier pour connecter : login : pi et password : raspberry
Prise en main du Raspberry Pi
Démarrage et authentification:
Configurer Raspbian
Apres la connexion on doit configuré notre raspberry:
Pour ce la on execute la commande suivante sous putty:
« sudo raspi-config »
On se retrouve face à un menu plutôt fourni permettant de configurer
Raspbian :
Prise en main du Raspberry Pi
Donner une IP statique à votre machine
Par défaut le Raspberry Pi utilise DHCP pour configurer ses interfaces
réseau.
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/dhcpcd,conf
pour ouvrir ce fichier:
« sudo nano /etc/[Link] »
Prise en main du Raspberry Pi
Donner une IP statique à votre machine
à la fin de fichier on ajoute les lignes suivants :
interface eth0
static ip_address=[Link]
static routers=[Link]
static domain_name_servers=[Link]
Puis enregistrer et quitter
Faire un redémarrage:
« sudo reboot »
Prise en main du Raspberry Pi
Donner une IP statique à votre machine
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 ».
interface wlan0
static ip_address=[Link]
static routers=[Link]
static domain_name_servers=[Link]
Prise en main du Raspberry Pi
Configuration WIFI
éditer le fichier wpa_supplicant.conf
« sudo nano /etc/wpa_supplicant/wpa_supplicant.conf »
à la fin du fichier et ajoutez les lignes suivantes:
network={
ssid="nomDeLaBox"
psk="cléDeSécurité"
key_mgmt=WPA-PSK
}
Entrées-sorties et interfaces
de communication
Entrées-sorties et interfaces de communication
Les GPIO du Raspberry Pi:
Pi B et Pi B+: la compatibilité du GPIO
Avec l'arrivée du Raspberry Pi-B PLUS, vient également un GPIO
étendu de 40 broches rétro-compatible avec le GPIO du Raspberry Pi
B qui, lui, n'avait que 26 broches.
Entrées-sorties et interfaces de communication
Les GPIO du Raspberry Pi:
Entrées-sorties et interfaces de communication
Configure GPIO
Les broches du GPIO peuvent être utilisées comme sortie ou entrée
digitale.
Placer une broche à l'état HIGH (HAUT) applique une tension de 3.3V
sur celle-ci.
Placer une broche à l'état LOW (BAS) applique une tension de 0V sur
celle-ci.
Pour piloter une LED depuis l'une des broches, vous aurez besoin d'une
résistance de 330Ω en série avec une LED
(une broche GPIO n'est capable de gérer qu'une très faible puissance...
c'est pour cela que l'on utilise une résistance).
Entrées-sorties et interfaces de communication
Gestion d’une sortie (LED):
Matérielle nécessaire :
Diode LED
Resistance
Des jumper wire
Bread Board
Raspberry pi
Montage :
Entrées-sorties et interfaces de communication
Gestion d’une sortie (LED):
Code :
Entrées-sorties et interfaces de communication
Gestion d’une sortie (LED):
Compilation et exécution :
« python3 nom_du_programme.py »
Pour quitter « ctrl+c »
Si vous essayiez de ré-exécuter le programme une autre fois, un
message de warning est affiché
« This channel is already in use »
Pour ignorer le message ajouter la ligne suivant au programme juste
après l’import des bibliothèques :
« [Link](False) »
Entrées-sorties et interfaces de communication
Gestion d’une sortie (LED):
Explication du programme:
Import 'time' library.
Import GPIO library
Use board pin numbering
Setup GPIO Pin 1 to OUT
Turn on or off GPIO pin 1
Wait for one second
Entrées-sorties et interfaces de communication
Acquisition d’une entrée (bouton poussoir):
Matérielle nécessaire :
Bouton poussoir
Résistance
Des jumper wire
Bread Board
Raspberry pi
Montage :
Entrées-sorties et interfaces de communication
Acquisition d’une entrée (bouton poussoir):
Code :
PWM:
La PWM pour Pulse Width
Modulation consiste en un signal carré
dont on fait varier le rapport cyclique,
en d'autres termes, dont on fait varier
la durée de l'état haut, par rapport à
l'état bas.
La PWM fonctionne comme un objet, en Python et sur Raspberry Pi. Il
faut donc commencer par créer une instance PWM, en déclarant le canal
(channel) utilisé, ainsi que la fréquence désirée. En cours de route, vous
pourrez changer aussi bien le rapport cyclique, que la fréquence.
PWM:
Pour raspberry il y’a deux types de PWM :
Hardware PWM et Software PWM
- Hardware PWM : pin GPIO18 et GPIO33
- Software PWM : avec programmation
de n’importe quelle pin à travers
la bibliothèque [Link]
PWM: Le programme ci-dessous fait varier l’intensité de l’éclairement de la Led
sur GPIO4.
PWM: Avec de simples boucles, on veut réaliser un
éclairement progressif, puis dégressif de la LED en continu :
PWM:
p = [Link](11, 50) # active GPIO11 en mode PWM avec la
fréquence 50Hz sous le nom “P”
[Link](5) # demarer la génération de pwm avec dutyCycle = 5%
[Link](10)
[Link](3)
# changer DutyCycle 10%
[Link]() # arreter le génération de pwm
[Link]() # désactiver tt les GPIO
Entrées-sorties et interfaces de communication
Servo motors
Pour commander un servomoteur, il faut lui envoyer une impulsion
comprise entre 1 ms et 2 ms, répéter cette impulsion toutes les 20 ms
pour maintenir l'axe du servomoteur en position.
La position neutre du servomoteur correspond à une impulsion de 1,5
ms.
- 1ms : -90° en angle de sortie
- 1.5ms : 0° en angle de sortie
-2ms : +90° en angle de sortie
Le déplacement angulaire total
est de 180°.
Servo motors
Controller un moteur DC
les ponts en H
Pour quoi l'utiliser ?
Les fonctions du pont en H sont :
- fournir de forts courants aux moteurs en permettant leur contrôle par
le microcontrôleur.
- pouvoir inverser la tension aux bornes du moteur pour inverser le
sens de rotation.
Controller un moteur DC
Quelque type des « driver » existant sur le marché :
Breakout L298 L91 0s MOSFET IRF3205
Controller un moteur DC
Pour notre exemple on va utiliser un driver L293D
Controller un moteur DC
Sans PWM
Controller un moteur DC
Avec PWM:
Raspberry Pi pour robotique
Servo motors
code:
Entrées-sorties et interfaces de communication
Interface RS-232 :
L’UART ou récepteur/émetteur asynchrone universel, est un circuit physique
intégré à un microcontrôleur ou à un circuit intégré (CI) unique, utilisé pour
mettre en œuvre la communication série entre les appareils d'un système
embarqué. Son rôle principal est essentiellement de transmettre et de
recevoir des données série.
Dans la communication UART, deux UART communiquent directement entre
eux. L'UART de l'appareil émetteur, ou UART émetteur, reçoit les données
parallèles du processeur ( microprocesseur ou microcontrôleur) et les convertit
en données série. Ces données série sont transmises à l'UART du récepteur, ou
UART récepteur. L'UART récepteur reconvertit les données série reçues en
données parallèles et les envoie au processeur. Pour que l'UART convertisse les
données série-parallèle et parallèle-série, des registres à décalage sont utilisés
sur les UART émetteur et récepteur.
Entrées-sorties et interfaces de communication
Interface RS-232 :
Dans la communication UART, seuls deux fils sont nécessaires à la
communication : les données circulent de la broche Tx de l'UART émetteur
(Transmitter Tx) vers la broche Rx de l'UART récepteur (Receiver Rx).
Les données UART sont transmises sur le bus sous forme de paquet. Un
paquet est composé d'un bit de départ, d'une trame de données, d'un bit de
parité et de bits d'arrêt. Le bit de parité sert de mécanisme de contrôle d'erreur
pour garantir l'intégrité des données.
Entrées-sorties et interfaces de communication
Interface RS-232 (UART):
Quelques modules nécessitant l’utilisation de l’UART du Raspberry Pi.
Module WIFI Microchip RN171XV
Module XBEE Maxstream XBP24-AWI-001
Télémètre ultrason MS-EZ1
Entrées-sorties et interfaces de communication
Interface RS-232 :
Les UART (Universal Asynchronous Receiver Transmitter) assurent
l’émission et la réception asynchrone.
Sur le Raspberry Pi, les niveaux sont 0v, 3.3v
TXD : Port GPIO14 (broche 8)
RXD : Port GPIO15 (broche 10)
Entrées-sorties et interfaces de communication
Interface RS-232 :
Libérer l’UART du mode debug
« sudo nano /boot/[Link] »
Supprimer : console=serial0,115200
Enregistrer
Redémarrer
Télécharger et installer la bibliothèque Python:
« sudo apt-get install python-serial »
Entrées-sorties et interfaces de communication
Interface RS-232 :
Libérer l’UART du Bluetooth :
Note : pour le modèle Raspberry pi4 le port est par
défaut occupé par le Bluetooth
Pour libérer ce port il faut désactiver le Bluetooth :
« sudo nano /boot/[Link] »
a la fin de fichier ajouter :
dtoverlay=pi3-disable-bt
Entrées-sorties et interfaces de communication
Serial comminucation:
$ pip3 install pyserial
# python program :
import serial
ser = [Link](
port=‘/dev/ttyACM0’,
baudrate=9600)
while True :
data = [Link]()
data = [Link]()
print(data)
Entrées-sorties et interfaces de communication
Interface I2C
Inter-Integrated Circuit, est un protocole de communication simple, souvent
utilisé dans les systèmes embarqués pour transférer des données entre un maître
(ou plusieurs maîtres) et un ou plusieurs esclaves. Il s'agit d'un bus série
bidirectionnel à deux fils qui utilise des fils d'horloge série (SCL) et de données
série (SDA) pour transmettre et gérer les données bit à bit entre les
périphériques connectés au bus.
Entrées-sorties et interfaces de communication
Interface I2C
Lors de l'envoi de données sur le bus, chaque message I2C comprend une trame
d'adresse de l'esclave et une ou plusieurs trames de données contenant les
données transmises. Le message inclut également les conditions de démarrage et
d'arrêt, les bits de lecture/écriture du maître ou de l'esclave, ainsi que les bits
ACK/NACK envoyés par le récepteur pour la vérification des erreurs.
L’I2C est considéré comme synchrone, ce qui signifie qu'il fonctionne à l'aide
d'une horloge série. Cette horloge est pilotée par le dispositif maître, ce qui
permet de synchroniser la sortie des bits avec l'échantillonnage des bits par le
signal d'horloge partagé entre le maître et l'esclave.
Le taux de transfert de données standard du protocole I2C est de 100 kbps, bien
que des vitesses de données allant jusqu'à 5 Mbps soient possibles avec des
périphériques I2C configurés en « mode rapide » ou en « mode ultra-rapide ».
Entrées-sorties et interfaces de communication
Interface I2C
Quelques modules nécessitant l’utilisation de l’I2C du Raspberry Pi.
capteur Texas Instrument TMP102
Entrées-sorties et interfaces de communication
Interface I2C:
Rasperry Pi dispose d’un interface I2C et d’une bibliothèque
Les broches sont:
SDA : Port GPIO2 (broche 3)
SCL : Port GPIO3 (broche 5)
Commandes de la librairie i2c-dev:
sudo i2cdetect -y 1
Entrées-sorties et interfaces de communication
Interface I2C:
Utilisation de la bibliothèque Python I2C-SMBUS
Gestion capteur tmp102 en python
Entrées-sorties et interfaces de communication
Interface SPI :
Serial Peripheral Interface(SPI), est un protocole de communication
série souvent utilisé dans les systèmes embarqués pour les échanges de
données à haut débit entre les périphériques du bus.
Entrées-sorties et interfaces de communication
Interface SPI:
Il fonctionne selon un modèle maître-esclave comprenant au moins quatre
signaux :
• une horloge (SCLK),
• une sortie maître/entrée esclave (MOSI),
• une entrée maître/sortie esclave (MISO)
• un signal de sélection d'esclave (SS).
Les signaux SCLK, MOSI et MISO sont partagés par tous les
périphériques du bus. Le signal SCLK est généré par le périphérique maître
pour la synchronisation, tandis que les lignes MOSI et MISO servent à
l'échange de données. De plus, chaque périphérique esclave ajouté au bus
possède sa propre ligne SS. Le maître tire le signal bas sur la ligne SS d'un
esclave pour sélectionner un périphérique pour la communication.
Entrées-sorties et interfaces de communication
Interface SPI:
Raspberry Pi dispose d’un interface SPI et d’une bibliothèque
Les broches sont:
MOSI : Port GPIO10 (broche 19)
MISO : Port GPIO9 (broche 21)
SCLK: Port GPIO11 (broche 23)
Entrées-sorties et interfaces de communication
Exécuter plus d'un programme de contrôle au même temps
Exemple :
Entrées-sorties et interfaces de communication
Exécuter plus d'un programme de contrôle au même temps
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-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 »
Autre méthode sans numéro d’identification :
« sudo killall sudo python [Link] »
Entrées-sorties et interfaces de communication
Auto Start dans Raspberry Pi
Exécuter un script après la connexion
modifier le fichier /etc/profile
« sudo nano /etc/profile »
Ajoutez le nom et le chemin de votre script suivit de & à la fin du fichier
Exemple :
« sudo python /home/pi/python_program_1.py & »
« sudo python /home/pi/python_program_2.py & »
« /home/pi/your_program_1.sh & »
« /home/pi/your_program_2.sh & »
Enregistrer et quitter
Computer Vision
Computer Vision
Serveur webcam avec motion: video streaming
Motion est un système de surveillance assez complet,
Il est extrêmement personnalisable : détection de mouvement,
enregistrement image par image, enregistrement vidéo, timelapse, etc..
Son installation est simple
« sudo apt-get install motion »
On va s’intéresser maintenant au fichier de configuration :
« sudo nano /etc/motion/[Link] »
Modifiez [Link] en fonction de vos besoins.
daemon on
process_id_file /home/pi/motion/[Link]
width 640
height 480
webcam_quality 75
webcam_motion on
webcam_localhost off
Computer Vision
OpenCV
L'installation d'OpenCV pour Python
« sudo apt-get install –y python-opencv »
« sudo apt-get install –y libcv-dev libopencv-dev libcv2.3 opencv-doc »
test de la lib openCV :
« wget [Link] »
« chmod +x test »
« ./test »
Resultat :
Computer Vision
OpenCV
Reconnaissance faciale en python:
Téléchargement:
« wget [Link] »
extraction de dossier :
« unzip face_detect_rpi.zip »
pour démarrer le programme de reconnaissance :
« python [Link] –-cascade=[Link] 0 »
resultat:
Le Raspberry Pi comme émetteur FM
Le RasPi émettra un signal dans la bande FM (87,5 à 108 MHz). Ce
signal pourra être reçu par un récepteur radio réglé sur la fréquence de
notre émission.
Branchement de l’antenne
Connectez un simple morceau de fil à la broche 7 de P1 (GPIO 4)
Installer le logiciel
créer un répertoire pour accueillir le logiciel pifm
« mkdir pifm »
« cd pifm »
« wget [Link] »
« tar -xzf [Link] »
Puis jouer le morceau qui doit être un fichier wav 16 bit mono
« sudo ./pifm [Link] 103.0 »
Computer Vision
Utilisation d’une USB webcam standard:
Tout d'abord, installez le paquet fswebcam:
« sudo apt-get install fswebcam »
Prendre photo
« fswebcam [Link] »
Préciser la résolution
« fswebcam -r 1280x720 [Link] »
Pas de bannière :
« fswebcam -r 1280x720 --no-banner [Link] »
Pour stopper fswebcam :
« pkill fswebcam »
Internet des objets
WebIOPi
Démarrer WebIOPi au démarrage du système :
« sudo update-rc.d webiopi defaults »
« sudo reboot »
Modifier le port HTTP :
« cd /etc/webiopi/config »
Puis il vous suffit de remplacer la ligne correspondant au port souhaité :
[HTTP]
enabled = true
port = 8000
passwd-file = /etc/webiopi/passwd
doc-root = /home/pi/webiopi/examples/scripts/macros
welcome-file = [Link]
Thank You !