Cours sur la programmation Raspberry Pi
Cours sur la programmation Raspberry Pi
Raspberry PI
1
Objectifs du cours:
Travaux pratiques :
2
Plan détaillé:
Définition
Les utilisations de Raspberry Pi
Les différents modèles
Caractéristiques
Software : les distributions
Hardware : les matériels nécessaires
3
Plan détaillé:
Linux embarqué
Définition
Le système de fichiers
Les commandes de base pour Linux
4
Plan détaillé:
Préparation de la carte SD
Démarrage et authentification :
Différent méthode d‟affichage
5
Plan détaillé:
PWM
Commande d‟un moteur DC
Commande d‟un moteur pas à pas
Commande d‟un Servo moteur
Computer vision
Module caméra
Opencv
6
Les systèmes embarqués
7
Les systèmes embarqués
Définition:
8
Les systèmes embarqués
9
Les systèmes embarqués
Compétences requises:
10
Les systèmes embarqués
11
Les systèmes embarqués
Domaines d’application:
12
Les systèmes embarqués
Les microcontrôleurs
13
Les systèmes embarqués
14
Les systèmes embarqués
15
On s’intéresse dans ce cours
à la plateforme Raspberry Pi
16
Introduction et présentation
du Raspberry Pi
17
Introduction et présentation du Raspberry Pi
Définition :
18
Introduction et présentation du Raspberry Pi
Définition :
19
Introduction et présentation du Raspberry Pi
20
Introduction et présentation du Raspberry Pi
Power
5V micro
USB connector
21
A/V (Audio/Video)
3.5mm Audio
Standard headphone
socket
RCA Video
(works with
most older TVs)
HDMI Audio & Video: (works with modern TVs and DVI monitors)
22
Connectivity
USB 2.0
ports
GPIO
(General
Purpose
Input &
Output)
10/100Mb Ethernet
23
Internals LAN
Controller
DSI (display
serial interface)
for connecting
an LCD Panel)
CSI
(camera
interface)
SD Card Slot
(supports SD cards up to 32GB)
25
10 UTILISATIONS DE
RASPBERRY PI
26
10 Office
9 8 7 6 5 4 3 2 1
27
Office
9 8 7 6 5 4 3 2 1
28
9 Programming
8 7 6 5 4 3 2 1
29
Programming
9 8 7 6 5 4 3 2 1
30
Game
8
Console
9 7 6 5 4 3 2 1
31
Game Console
9 8 7 6 5 4 3 2 1
32
7 Web Server
Un serveur web est un logiciel permettant à des clients d'accéder à des pages
web, c'est-à-dire en réalité des fichiers au format HTML à partir d'un navigateur
(aussi appelé browser) installé sur leur ordinateur distant.
9 8 6 5 4 3 2 1
33
Web Server
9 8 7 6 5 4 3 2 1
34
6 Car Computer
9 8 7 5 4 3 2 1
35
Car Computer
9 8 7 6 5 4 3 2 1
36
5 HTPC
Home theater personal computer
9 8 7 6 4 3 2 1
37
HTPC
Un HTPC propose généralement les fonctionnalités classiques suivantes :
visualisation et enregistrement de la télévision
écoute de musique (lecture de CD, bibliothèque MP3, clips vidéo, etc.) ;
lecture des vidéos encodées (Xvid, DivX et autre MPEG-4, Blu-ray
visualisation de photos
console de jeux, via des émulateurs
informations pratiques, telles que les prévisions météorologiques locales
en temps réel
karaoké
9 8 7 6 4 3 2 1
38
HTPC
9 8 7 6 5 4 3 2 1
39
Domotique
4
Smart House
9 8 7 6 5 3 2 1
40
Smart House
9 8 7 6 5 4 3 2 1
41
Super
3
Computer
9 8 7 6 5 4 2 1
42
Supercomputer
9 8 7 6 5 4 3 2 1
43
2 Clock
9 8 7 6 5 4 3 1
44
Clock
9 8 7 6 5 4 3 2 1
45
1 PiBot!
9 8 7 6 5 4 3 2
46
PiBot!
9 8 7 6 5 4 3 2 1
47
Introduction et présentation du Raspberry Pi
Modèle A Modèle A+
48
Introduction et présentation du Raspberry Pi
Modèle 1 B Modèle 1 B+
49
Introduction et présentation du Raspberry Pi
Modèle Zero
50
Introduction et présentation du Raspberry Pi
51
Modèle A Modèle A+ Modèle 1 B Modèle 1 B+ Modèle Zero Modèle 2 B Modèle 3 B
Prix de
25 $ US 20 $ US 35 $ US 5$ 35 $US
lancement :
Date de Novembre Avril-Juin Novembre
Février 2013 Juillet 2014 Février 2015 Février 2016
lancement : 2014 2012 2015
Broadcom Broadcom
SoC : Broadcom BCM2835 (CPU, GPU, DSP, SDRAM, et 1 port USB)
BCM2836[7] BCM2837
1 GHz 900 MHz 1,2 GHz
ARM1176JZF quadricœur quadricœur
CPU : 700 MHz ARM1176JZF-S core (ARM11)
-S core ARM Cortex- ARM Cortex-
(ARM11) A7 A53
Broadcom VideoCore IV[8], OpenGL ES 2.0, MPEG-2 et VC-1 (avec licence), 1080p30 h.264/MPEG-4
GPU :
AVC high-profile decodeur et encodeur[6],[7]
Mémoire
256 Mo 512 Mo 1 Go
(SDRAM) :
Nombre de 1 (Micro-
1 2 4 4
ports USB 2.0 USB)
HDMI et HDMI et
HDMI et HDMI et
Composite Composite
Composite Composite HDMI et Composite (via un
Sorties vidéos: (via un (via un Mini HDMI
(via une Prise (via une Prise connecteur Jack)
connecteur connecteur
RCA) RCA)
Jack) Jack)
52
Modèle A Modèle A+ Modèle 1 B Modèle 1 B+ Modèle Zero Modèle 2 B Modèle 3 B
Unité de
SD / MMC / MicroSD SD / MMC / MicroSD
lecture/écriture
10/100
Carte/connecti 10/100 Ethernet, Wifi
Non 10/100 Ethernet Non
que réseau Ethernet 802.11n,
Bluetooth 4.1
8 × GPIO, 17 × GPIO, 8 × GPIO,
UART, I²C UART, I²C UART, I²C
bus, SPI bus bus, SPI bus bus, SPI bus 17 × GPIO, UART, I²C bus, SPI bus avec deux chip selects,
Périphériques
avec deux avec deux chip avec deux chip I²S audio, +3.3 V, +5 V
bas niveau
chip selects, selects, I²S selects, I²S
I²S audio[12] audio, +3.3 V, audio+3.3 V,
+3.3 V, +5 V +5 V +5 V
26 broches
40 broches 26 broches
GPIO en 40 broches GPIO en total
GPIO en total GPIO en total
total)
53
Introduction et présentation du Raspberry Pi
54
Introduction et présentation du Raspberry Pi
Un écran
Clavier USB
Souris USB
Carte mémoire SD 4Go minimum
Câble mini-USB pour l‟alimentation
Equipements supplémentaires:
Carte réseau wifi
clés USB
disques durs alimentés séparément
clé Bluetooth
clé Wifi
Imprimante
webcam
55
Introduction et présentation du Raspberry Pi
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.
56
Introduction et présentation du Raspberry Pi
RASPBIAN PIDORA
Debian Wheezy Fedora Remix
RISC OS OPENELEC
A non-Linux distribution An XBMC Media Centre
RASPBMC
An XBMC Media Centre OCCIDENTALIS
57
Introduction et présentation du Raspberry Pi
KALILINUX RISC OS
NOOBS ANDROID
58
Linux embarqué
59
Linux embarqué
Définition
60
Un système d'exploitation
61
Linux embarqué
Systèmes de fichiers
62
Systèmes de fichiers
63
Systèmes de fichiers
64
Systèmes de fichiers
65
Systèmes de fichiers
66
Systèmes de fichiers
Ce dossier est le lieu où sont rangés à peu près tous les fichiers de
configuration du système, tels que ceux de X, d‟Apache, de Samba, du
système d‟initialisation.
C‟est en gros là que toutes les donnèes relatives à chaque utilisateur se
trouvent (par exemple ses fichiers personnels, mais également les
fichiers de configuration des logiciels qu‟il utilise). Bien sûr, chaque
utilisateur est « rangé » dans un répertoire à son login.
Ce sont des bibliothèques utilisées par divers programme (C'est
l'équivalent des DLL Windows). Par exemple, [Link] permet à tous
les programme de lire et écrire des fichiers JPEG.
Les dossiers contenus correspondent aux accès de montage des
périphériques de stockage.
Il s‟agit là d‟un répertoire qui peut être utilisé pour installer des
applications qui ne sont pas installées par défaut (de la distribution).
C‟est le /home de l‟administrateur ! Ce dernier est séparé pour des
questions de sécurité.
67
Systèmes de fichiers
68
Linux embarqué
Les droits
un propriétaire,
un groupe,
des droits.
69
Linux embarqué
Signification :
70
Linux embarqué
71
Linux embarqué
Obtenir de l’aide
72
Linux embarqué
Système
73
Linux embarqué
less, more : Ces commande permettent d'afficher un fichier page par page.
On fait défiler le fichier ligne par ligne en appuyant sur la touche ''Entrée'',
page par page avec ''Espace'', on revient en arrière avec ''b'' et on quitte
l'affichage avec ''q'„
75
Linux embarqué
cp : Copier un fichier/répertoire.
cp [options] [répertoire1/]fichier1 [répertoire2/]fichier2
cp [options] fichier1 [fichier2] ... [fichiern] répertoire
mv : Déplacer un fichier/répertoire.
mv [répertoire1/]fichier1 [répertoire2/]fichier2
mv fichier1 [fichier2] ... [fichiern] répertoire
rm <nom du fichier> : Supprimer un fichier.
rm /home/[Link] rm *.txt Supprimer tous les fichiers ayant pour
extension txt.
vim, nano, emacs : Éditer un fichier. nano /etc/default/keyboard
mkdir : Créer un répertoire mkdir répertoire1 [répertoire2] [répertoireN]
76
Linux embarqué
77
Linux embarqué
Réseau et téléchargements
78
Linux embarqué
Les commandes de base
Packages
79
Linux embarqué
Les archives
80
Linux embarqué
Les archives
81
Linux embarqué
Divers
git clone [url] cloner (copier) un dépôt distant dans le dossier courant
git clone [Link]
make va tout simplement faire une série de commandes, située dans un
fichier appelé Makefile.
export variable : portée d‟une variable. (déclarer globalement)
export MYAPP=1
$ echo $MYAPP : Afficher MYAPP
1
export PATH=$PATH:/usr/local/bin : ajouter le répertoire /usr/local/bin
aux variables d‟environnement ( à la fin)
Pour l‟ajouter au début: export PATH=/usr/local/bin :$PATH
echo "$PATH“ : afficher PATH
82
Langages de
programmation
83
Langages de programmation
84
Langages de programmation
Scratch:
Python:
85
Langages de programmation
HTML5,
Java
C/C++,
Bash
86
Initiation à la programmation
C et Python
87
Introduction:
Python
88
Introduction:
C/C++
89
Introduction:
Afficher un message/résultat
Langage C Python
Afficher un message
print(‘’hello world’’)
printf(‘’hello world’’);
Afficher un résultat Afficher un résultat
printf(’’le résultat=%format’’,résultat); print(’’le résultat=’’,résultat)
int a=3; int b; >>> a = 3
a=a+3; >>> a = a + 3
b=a-2 >>> b = a - 2
printf("a=%d et b=%d\n ",a,b); >>> print("a =", a, "et b =", b)
a = 6 et b = 4 a = 6 et b = 4
90
Introduction:
Langage C Python
>>> annee = input("Saisissez une année : ")
Saisissez une année : 2009
>>> print(annee)
'2009'
Saisir d’une variable au >>> type(annee)
clavier <type 'str'>
int x >>> # convertir la variable en un entier
scanf(’’%d ’’,&x); >>> annee = int(annee)
>>> type(annee)
<type 'int'>
>>> print(annee)
2009
91
Introduction:
Condition if
Langage C Python
if(a>0) if a > 0:
{ print("a est positif.")
printf("a est positif."); a=a+5
a=a+5; elif a < 0:
} print("a est négatif.")
else if (a < 0) else:
printf("a est négatif."); print("a est nul.")
else
print("a est nul.");
92
Introduction:
Langage C Python
while (condition) while condition:
{ # instruction 1
# instruction 1; # instruction 2
# instruction 2; # ...
# ………….....; # instruction N
# instruction N;
} i=0
While i<10 :
i=0; Print (i)
while (i<10) i=i+1
{
printf("i=%d\n",i);
i=i+1;
}
93
Introduction:
Langage C Python
char lettre; while 1:
While (1) lettre = input("Tapez 'Q' pour quitter : ")
{ if lettre == "Q":
printf("Tapez 'Q' pour quitter : ") print("Fin de la boucle")
scanf("%c ",&lettre); break
if (lettre == ‘Q’)
{
printf("Fin de la boucle");
break;
}
}
94
Boucle for
Langage C Python
for(i=debut;i<fin;i++) for compteur in liste_valeurs
{ # instruction 1
# instruction 1; # ...
# instruction 2; # instruction N
# ………….....;
animaux = ['girafe', 'tigre', 'singe', 'souris']
# instruction N;
for i in range(0,4):
}
print animaux[i]
int T[5]={4,5,25}; Ou bien
for(i=0;i<10;i++) for i in animaux :
{ print i
printf("%d\n", T[i]);
} girafe
tigre
singe
Souris
95
Les fonctions
Langage C Python
void nom_fonction(param1,.. paramN) def nom_fonction(parametre1,.. parametreN):
{ # Bloc d'instructions
# instruction 1;
# ………….....;
# instruction N; def carre(valeur):
} return valeur * valeur
variable = carre(5);
96
Importation des modules
Langage C Python
#include <module.h > import module
97
Exécution d’un programme C et Python sous Linux
98
Exécution d’un programme C et Python sous Linux
Utiliser gcc
gcc [arguments] [fichiers à compiler] (-o fichier de sortie)
En C
gcc main.c fonctions.c -o Programme
99
Exécution d’un programme C et Python sous Linux
Par exemple, si vos .c sont dans le dossier sources et vos .h sont dans le
dossier headers, il vous faudra entrer :
100
Exécution d’un programme C et Python sous Linux
-pipe : avec cette option, GCC ne génère pas de fichiers temporaire s entre
chaque étape.
-Ox : indique le degré d'optimisation (x varie de 1 a 6).
gcc optimise votre code, c'est-à-dire qu'il va modifier le code source de façon
à ce que le programme ait le même résultat par le chemin le plus court.
-w : supprime tous les avertissements. Je suis pro en programmation
-W : GCC plus exigeant quant aux warnings.
Si votre programme se compile mais ne fait pas ce qu'il devrait faire,
essayez avec cet argument !
101
Exécution d’un programme C et Python sous Linux
102
Utilisation d’un Makefile
La commande make
cible: dépendances
commandes
où :
cible est le nom du fichier créé (par exemple, Programme)
dépendances représente la liste des fichiers (ou règles) nécessaires à la
construction de la cible
commandes représente les commandes à effectuer pour créer la cible
103
Utilisation d’un Makefile
104
Utilisation d’un Makefile
Le Makefile sera structuré comme le suivant :
105
Utilisation d’un Makefile Un makefile enrechi
-f, --force ignorer les fichiers et paramètres inexistants, ne pas demander de confirmation
-r, -R, --recursive enlever le contenu des répertoires récursivement (dossier et son contenu)
106
Utilisation d’un Makefile
Un makefile enrechi
107
Utilisation d’un Makefile
108
Utilisation d’un Makefile
109
Cross-compilation
Le cross-compilateur doit être construit sur mesure, pour une cible donnée et
sur un système hôte donné
110
Cross-compilation
111
Cross-compilation
112
Cross-compilation
113
Cross-compilation
114
Cross-compilation
3.2 Faire glisser le fichier test créé dans la fenêtre SmarTTY ou bien utiliser la
commande SCP->Upload file.
115
Cross-compilation
116
Cross-compilation sous Linux
Crosstool-NG
Les options sont nombreuses. Et pour les sélectionner l'outil propose une
interface menuconfig
117
Définir l’OS
Cross-compilation sous Linux
Crosstool-NG
Définir le compilateur
118
Time to start
119
Prise en main du
Raspberry Pi
120
Prise en main du Raspberry Pi
Préparation de la carte SD
Télécharger Raspbian
121
Prise en main du Raspberry Pi
Préparation de la carte SD
122
Prise en main du Raspberry Pi
Préparation de la carte SD
123
Prise en main du Raspberry Pi
Préparation de la carte SD
124
Prise en main du Raspberry Pi
Démarrage et authentification:
Brancher le Raspberry Pi
125
Prise en main du Raspberry Pi
Démarrage et authentification:
Configurer Raspbian
126
Prise en main du Raspberry Pi
Démarrage et authentification:
127
Prise en main du Raspberry Pi
Démarrage et authentification:
128
Prise en main du Raspberry Pi
Démarrage et authentification:
129
Prise en main du Raspberry Pi
Démarrage et authentification:
130
Prise en main du Raspberry Pi
« XKBLAYOUT="fr" »
« sudo reboot »
131
Prise en main du Raspberry Pi
réglage de l’heure :
résultat:
132
Prise en main du Raspberry Pi
affichage:
133
Prise en main du Raspberry Pi
affichage:
134
Prise en main du Raspberry Pi
affichage:
L'adresse IP du Raspberry
Méthode directe
Sur le terminal en écrit : « ifconfig »
Cette commande fournit les information réseaux, y compris l'adresse IP.
Méthode indirecte - ping
Une autre méthode est de faire un ping des différentes adresses IP pour
identifier celles qui sont allouées (qui retourne des information et non pas
des erreurs)
Il suffit de commencer par les adresses les plus basses ([Link]) et
d'augmenter le dernier chiffre essai par essai.
« ping [Link] »
135
Prise en main du Raspberry Pi
affichage:
Voici un retour indiquant qu'il n'y a pas machine sur cette adresse IP
Par contre:
136
Prise en main du Raspberry Pi
affichage:
Client SSH
137
Prise en main du Raspberry Pi
affichage:
138
Prise en main du Raspberry Pi
affichage:
139
Prise en main du Raspberry Pi
affichage:
140
Prise en main du Raspberry Pi
affichage:
141
Prise en main du Raspberry Pi
affichage:
Passer sur l'ordinateur à partir duquel vous voulez se connecter sur le Pi.
Encore une fois, il existe de nombreux clients VNC, parmi lesquels
“VNCViewer” ([Link]
La première fois que vous exécutez VNCViewer, vous devriez voir un écran
tel que celui-ci dessous:
142
Prise en main du Raspberry Pi
affichage:
143
Prise en main du Raspberry Pi
affichage:
144
Prise en main du Raspberry Pi
affichage:
VNC-AutoStart-Server
« cd /home/pi »
« cd .config »
créer le répertoire 'autostart' à l'intérieur du répertoire .config
« mkdir autostart »
Passez dans ce nouveau répertoire en tapant:
« cd autostart »
145
Prise en main du Raspberry Pi
affichage:
« nano [Link] »
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver:1
StartupNotify=false
146
Prise en main du Raspberry Pi
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é.
Dynamic Host Configuration Protocol (DHCP): protocole de configuration
dynamique des hôtes) est un protocole réseau dont le rôle est d'assurer la
configuration automatique des paramètres IP d'une station, notamment en lui
affectant automatiquement une adresse IP et un masque de sous-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/network/interfaces. Voici à quoi ce
fichier ressemble par défaut sur un Raspberry Pi doté de la version officielle de
Raspbian : auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
147
Prise en main du Raspberry Pi
3ème solution:
Ou dans le fichier /boot/[Link], ajouter à la fin de la commande
ip=[Link]
148
Prise en main du Raspberry Pi
auto eth0
iface eth0 inet static
address [Link]
netmask [Link]
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "Votre_SSID"
wpa-psk "Votre_mot_de_passe"
149
Prise en main du Raspberry Pi
150
Prise en main du Raspberry Pi
151
Prise en main du Raspberry Pi
152
Entrées-sorties et interfaces
de communication
153
Entrées-sorties et interfaces de communication
154
Entrées-sorties et interfaces de communication
155
Entrées-sorties et interfaces de communication
Raspberry Pi 3
40 Broches
156
Entrées-sorties et interfaces de communication
AdaFruit PiCode:
157
Entrées-sorties et interfaces de communication
AdaFruit PiCode:
Pour télécharger ce code, vous aurez besoin d'utiliser un logiciel appelé 'git'.
Avant tout autre chose, entrez la commande suivante dans LX Terminal. Cela
assure que les paquets puissent être localisés et que vous en obtiendrez la
dernière version
« sudo apt-get update »
« sudo apt-get upgrade »
La mise à jour peut prendre un moment
« sudo apt-get install git »
tapez ensuite
« git clone [Link]
[Link] »
158
Entrées-sorties et interfaces de communication
Préparer Python :
159
Entrées-sorties et interfaces de communication
Configure GPIO
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.
160
Entrées-sorties et interfaces de communication
Configure GPIO
161
Entrées-sorties et interfaces de communication
Matérielle nécessaire :
Diode LED
Résistance
Des jumper wire
Bread Board
Raspberry pi
Montage :
162
Entrées-sorties et interfaces de communication
Code python:
163
Entrées-sorties et interfaces de communication
Compilation et exécution :
164
Entrées-sorties et interfaces de communication
Explication du programme:
165
Entrées-sorties et interfaces de communication
166
Entrées-sorties et interfaces de communication
Matérielle nécessaire :
Bouton poussoir
Résistance
Des jumper wire
Bread Board
Raspberry pi
Montage :
167
Entrées-sorties et interfaces de communication
Code python:
168
Entrées-sorties et interfaces de communication
Matérielle nécessaire :
PIR motion detector
Diode LED
Résistance
Des jumper wire
Bread Board
Raspberry pi
Montage :
169
Entrées-sorties et interfaces de communication
Code :
170
Entrées-sorties et interfaces de communication
171
Entrées-sorties et interfaces de communication
172
Entrées-sorties et interfaces de communication
173
Entrées-sorties et interfaces de communication
174
Entrées-sorties et interfaces de communication
175
Entrées-sorties et interfaces de communication
176
Entrées-sorties et interfaces de communication
Interface RS-232 :
Par défaut l‟UART du Raspberry Pi sert comme un port de débug pour Linux.
Libérer l’UART du mode debug
1ère méthode:
Executer la commande sudo raspi-config et aller vers advanced options -
> serial. Choisir disabled. /dev/ttyAMA0 est maintenant un port Linux libre
177
Entrées-sorties et interfaces de communication
Interface RS-232 :
178
Entrées-sorties et interfaces de communication
Interface RS-232 :
179
Entrées-sorties et interfaces de communication
Interface RS-232 :
180
Entrées-sorties et interfaces de communication
Interface RS-232 :
181
Entrées-sorties et interfaces de communication
Interface RS-232 :
Programme en C avec wiringPi
182
Entrées-sorties et interfaces de communication
183
Entrées-sorties et interfaces de communication
Brochages
184
Entrées-sorties et interfaces de communication
Configurer I2C
1ère méthode: taper sudo raspi-config
185
Entrées-sorties et interfaces de communication
Configurer I2C
2ème méthode:
186
Entrées-sorties et interfaces de communication
Configurer I2C
3ème méthode:
La commande modprobe
modprobe permet d‟ajouter (et d‟enlever) des modules dans le Noyau
Linux, comme le module I2C.
187
Entrées-sorties et interfaces de communication
Configurer I2C
Le bus I2C permet à plusieurs périphériques d'être connectés sur votre
Raspberry Pi, chacun avec une adresse unique.
Il est très utile de pouvoir visualiser les appareils qui sont connectés au
Pi. C'est une façon bien pratique de s'assurer que tout fonctionne
correctement.
Pour effectuer cette tâche il faut installer des utilitaires I2C, il est
préférable d'utiliser la commande suivante dans un terminal pour les
installer
« sudo apt-get install python-smbus » permet à python d‟accéder au
bus I2C sur la raspberry
« sudo apt-get install i2c-tools » permet de déterminer l‟adresse du
périphérique lorsqu‟il devient connecté.
188
Entrées-sorties et interfaces de communication
Configurer I2C
vérifiez si le protocole I²C n‟est pas blacklisté
Vérifiez si vous avez les 2 lignes suivantes, si oui, alors il faut les
commenter (en ajoutant un #). Si non, alors vous n‟avez rien à faire.
blacklist spi-bcm2708
blacklist i2c-bcm2708
189
Entrées-sorties et interfaces de communication
Configurer I2C
Une fois qu'ils sont installés, vous pouvez taper la commande suivante
pour voir tous les périphériques connectés (si vous utilisez les nouveaux
modèles de Raspberry Pi)
« sudo i2cdetect -y 1 »
« sudo i2cdetect -y 0 »
190
Entrées-sorties et interfaces de communication
191
Entrées-sorties et interfaces de communication
Voir datasheet
192
Entrées-sorties et interfaces de communication
lire la température:
« i2cget -f -y 1 0x48 0x00 w »
193
Entrées-sorties et interfaces de communication
Code:
194
Entrées-sorties et interfaces de communication
195
Entrées-sorties et interfaces de communication
196
Entrées-sorties et interfaces de communication
Brochage
197
Entrées-sorties et interfaces de communication
Configuration SPI :
198
Entrées-sorties et interfaces de communication
Configuration SPI :
Vérifier si vous avez les 2 lignes suivantes, si oui, alors il faut les
commenter (en ajoutant un #). Si non, alors vous n‟avez rien à faire.
blacklist spi-bcm2708
blacklist i2c-bcm2708
Redémarrer :
Après le redémarrage, taper
« Lsmod »
les périphériques i2c et SPI doivent apparaitre dans la liste
199
Entrées-sorties et interfaces de communication
200
Entrées-sorties et interfaces de communication
Analogue input :
Matériel
Un potentiomètre
Un MCP3008 ADC (Convertisseur Analogique Digital) modèle DIP.
Un Raspberry
Du fil de prototypage pour breadboard
Un breadboard
201
Entrées-sorties et interfaces de communication
Analogue input :
202
Entrées-sorties et interfaces de communication
Analogue input :
Code:
203
Raspberry Pi pour robotique
204
Raspberry Pi pour robotique
PWM:
205
Raspberry Pi pour robotique
PWM:
206
Raspberry Pi pour robotique
PWM:
[Link](10)
[Link](3)
# changer DutyCycle 10%
207
Raspberry Pi pour robotique
Controller un moteur DC
les ponts en H
208
Raspberry Pi pour robotique
Controller un moteur DC
209
Raspberry Pi pour robotique
Controller un moteur DC
16
sensA1
out1A
sensA 2 LN298
Raspberry Pi 18 M
out2A
ENA
(PWM)
22
210
Raspberry Pi pour robotique
Controller un moteur DC
211
Raspberry Pi pour robotique
Servo motors
212
Raspberry Pi pour robotique
Servo motors
213
Raspberry Pi pour robotique
Servo motors
code:
214
Raspberry Pi pour robotique
Exemple :
215
Raspberry Pi pour robotique
216
Raspberry Pi pour robotique
217
Computer Vision
218
Computer Vision
219
Computer Vision
Serveur webcam avec motion: video streaming
220
Computer Vision
221
Computer Vision
222
Computer Vision
OpenCV
223
Internet des objets
224
Internet des objets
225
Internet des objets
WebIOPi
Webiopi est une application web qui permet de contrôler les broches
GPIO du raspberry depuis une interface web. L‟interface permet ainsi
de changer l‟état d‟une broche de « IN » à « OUT » ou inversement
comme l‟image ci-dessous.
226
Internet des objets
WebIOPi
Installation :
consulter le lien suivant [Link]
« wget [Link] »
« tar xvzf [Link] »
« cd WebIOPi-0.7.0 »
« sudo ./[Link] »
Démarrer/Arrêter le service :
« sudo python -m webiopi »
Ou
« sudo /etc/init.d/webiopi start »
« sudo /etc/init.d/webiopi stop »
227
Internet des objets
WebIOPi
228
Internet des objets
WebIOPi
Le soft utilise par défaut un fichier crypté qui contient à la fois login et mot
de passe. Vous devez utiliser « webiopi-passwd » pour générer ce fichier.
229
Internet des objets
WebIOPi
Première utilisation
Ouvrez un navigateur sur une machine de votre réseau, tapez l'URL
[Link]
Vous serez alors invité à vous connecter, l'utilisateur par défaut est
webiopi et le mot de passe est raspberry.
Vous devriez alors accéder à la page suivante :
230
230
Internet des objets
SERVEUR WEB
231
Internet des objets
SERVEUR WEB
232
Internet des objets
SERVEUR WEB
233
Internet des objets
SERVEUR WEB
234
Internet des objets
SERVEUR WEB
235
Internet des objets
SERVEUR WEB
Exemple2:
serveur webpy
Le contenu du
fichier [Link]
236
Internet des objets
<body>
<br />
<form class="form" method="post">
$:[Link]()
</form>
</body>
</html>
237
Internet des objets
238
239