0% ont trouvé ce document utile (0 vote)
118 vues239 pages

Cours sur la programmation Raspberry Pi

Transféré par

lassmerauf
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
118 vues239 pages

Cours sur la programmation Raspberry Pi

Transféré par

lassmerauf
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cours: Prog Syst Embarqués

Raspberry PI

Enseignant : Nejmeddine Bahri

1
Objectifs du cours:

 Installer et configurer la Raspberry Pi pour préparer un système


embarqué sous Linux.
 Maitriser les commandes Linux.
 Ecrire, compiler et exécuter des programmes avec différents langages
de programmation (Langage C/C++, Python, Scratch) sous Linux.
 Commander différents modules externes à travers les GPIO de la
Raspberry Pi
 Commander les interfaces de communication (Ethernet, RS-232, SPI,
I²C pour l‟acquisition et l‟envoie des données.
 Utiliser la Raspberry Pi pour la robotique, computer vision et IoT
(Internet of Things)

Travaux pratiques :

 Les travaux pratiques sont réalisés sur une carte Raspberry Pi 3

2
Plan détaillé:

Les systèmes embarqués

 Les systèmes embarqués


 Les différents types de calculateurs dans un système embarqué

Introduction et présentation du Raspberry Pi

 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

Langages de programmation pour Raspberry Pi

 Les différents langages de programmation


 Initiation à la programmation C et Python
 Exécution d‟un programme C et Python sous Linux
 Utilisation d‟un MAKEFILE
 Cross-compilation

4
Plan détaillé:

Prise en main du Raspberry Pi

 Préparation de la carte SD
 Démarrage et authentification :
 Différent méthode d‟affichage

Entrées-sorties et interfaces de communication

 Les GPIO du Raspberry Pi


 Acquisition d‟une entrée (bouton poussoir)
 Gestion d‟une sortie (LED)
 Interface RS-232 :
 SPI : Communication en SPI avec un microcontrôleur.
 I²C : Interrogation en I²C d‟un capteur de température.

5
Plan détaillé:

Raspberry Pi pour la robotique

 PWM
 Commande d‟un moteur DC
 Commande d‟un moteur pas à pas
 Commande d‟un Servo moteur

Computer vision
 Module caméra
 Opencv

Internet des objets (Internet of things IOT)


 Serveur web

6
Les systèmes embarqués

7
Les systèmes embarqués

Définition:

C‟est un système électronique et informatique autonome, souvent temps


réel, spécialisé dans une tâche bien précise.

Les systèmes embarqués exécutent des tâches prédéfinies et ont un


cahier des charges bien déterminé, qui peut être d'ordre :

 De coût: le prix de revient doit être le plus faible possible.


 D’encombrement: Il convient de concevoir des systèmes
embarqués de taille réduite qui répondent aux besoins au plus juste
pour éviter un surcoût.
 D'autonomie: la consommation énergétique doit être la plus faible
possible, due à l'utilisation de batteries et/ou, de panneaux
solaires ou de piles pour certains prototypes.

8
Les systèmes embarqués

 De puissance de calcul: Choix de processeur et des composants


doit être bien étudié pour avoir la puissance de calcul juste
nécessaire pour répondre aux besoins et aux contraintes temporelles
de la tâche prédéfinie. Ceci en vue d'éviter un surcoût de l'appareil et
une consommation excédentaire d'énergie (courant électrique).
 Temporel: les temps d'exécution et l'échéance temporelle d‟une
tâche sont déterminés. Certains systèmes ont des propriétés temps
réel.
 De sûreté de fonctionnement: Ils doivent donner des résultats
justes, pertinents et ce dans les délais attendus par les utilisateurs
(machines et/ou humains). S'il arrive que certains de ces systèmes
embarqués subissent une défaillance, ils mettent des vies humaines
en danger ou mettent en périls des investissements importants.

9
Les systèmes embarqués

Compétences requises:

Des compétences pluridisciplinaires en termes d’électronique (de

commande et de puissance), d’automatique et d’informatique

industrielle sont donc nécessaires pour concevoir de tels systèmes.

10
Les systèmes embarqués

Architecture d’un système embarqué:

11
Les systèmes embarqués

Domaines d’application:

12
Les systèmes embarqués

Les différents types de calculateurs dans un système embarqué :

Les microcontrôleurs

Ces sont des circuits intégrés caractérisés par un plus


haut degré d'intégration, une faible consommation
électrique et un coût réduit
Ils sont fréquemment utilisés dans le contrôle et la
gestion de certains processus industriels non complexes

Les FPGA (Field Programmable Gate Arrays)

Les FPGA sont des circuits reconfigurables caractérisés par


un traitement massivement parallèle. Ils sont utilisés dans
diverses applications nécessitant de l'électronique numérique
(télécommunications, aéronautique, automobile).

13
Les systèmes embarqués

Les différents types de calculateurs dans un système embarqué :

Les DSP (Digital Signal Processor)

Ils sont des microprocesseurs optimisés pour exécuter des


applications de traitement numérique du signal
(télécommunication, mobiles, routeurs.)
Certains modèles sont utilisés dans certains processus
industriels comme la commande des machines électriques

Processeurs graphiques, ou GPU ( Graphics Processing Unit)

Ils assurent en général des tâches graphiques comme le


rendu 3D, le traitement du signal vidéo, la
décompression MPEG, h264/AVC, les jeux vidéo etc.

14
Les systèmes embarqués

Les différents types de calculateurs dans un système embarqué :

Les Processeurs ARM

Ils sont devenus dominants dans le domaine de l'informatique


embarquée, en particulier les tablettes électroniques et la
téléphonie mobile, les cameras numériques etc.

Produits à base de ARM


Raspberry Pi BeagleBone OK6410 ODROID Freescale

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 :

 Raspberry Pi est un petit ordinateur sous le système d‟exploitation Linux


démarré à partir d‟une carte SD, destiné à des applications d‟informatique
embarquée.
 Le cœur de l‟ordinateur est un FPGA (Broadcom) intégrant un processeur
ARM cadencé à une fréquence allant de 700 MHz jusqu‟à 1,2 GHz selon le
modèle de Raspberry Pi et intégrant différents périphériques de
communication.

18
Introduction et présentation du Raspberry Pi

Définition :

 Raspberry Pi peut être directement connecté à une IHM classique,


souris/clavier/écran HDMI ou vidéo composite, cependant comme tout
ordinateur Linux, Raspberry Pi peut intégrer ses propres outils de
développement et une interface homme‐machine reposant sur SSH (Secure
Shell) contrôlable depuis un autre ordinateur par Ethernet ou WIFI.
 Le connecteur d’extension supporte des entrées/sorties (GPIO) ainsi que la
plupart des bus de communication. C‟est un support particulièrement
économique et puissant qui peut être facilement mis en œuvre dans de petits
systèmes nécessitant un accès au monde physique par des
capteurs/actionneurs disposants d‟interfaces numériques.

19
Introduction et présentation du Raspberry Pi

20
Introduction et présentation du Raspberry Pi

Power
5V micro
USB connector

(Similar to the one on a lot of mobile phones!)

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)

SOC (System On a Chip: Broadcom)


24
Storage

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.

Un serveur web est donc un « simple » logiciel capable d'interpréter les


requêtes HTTP arrivant sur le port associé au protocole HTTP (par défaut le port
80), et de fournir une réponse avec ce même protocole.

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

turn your Raspberry Pi into an HTPC with a Linux


distribution called Raspbmc

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

Les différents modèles

Modèle A Modèle A+

48
Introduction et présentation du Raspberry Pi

Les différents modèles

Modèle 1 B Modèle 1 B+

49
Introduction et présentation du Raspberry Pi

Les différents modèles

Modèle Zero

50
Introduction et présentation du Raspberry Pi

Les différents modèles

Modèle 2 B (Raspberry Pi 2) Modèle 3 B (Raspberry Pi 3)

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

stéréo stéréo Jack 3,5 mm (sortie


stéréo Jack 3,5 mm (sortie son 5.1 sur la
Sorties audio Jack3,5 mm HDMI son 5.1 sur la prise HDMI)
prise HDMI)
etComposite et Composite

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)

Alimentation 5 volt via Micro-B USB ou GPIO header

53
Introduction et présentation du Raspberry Pi

Les différents modules

54
Introduction et présentation du Raspberry Pi

Hardware : les matériels nécessaires

 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

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.

56
Introduction et présentation du Raspberry Pi

Software : les distributions

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

Software : les distributions

ARCHLINUX Robotics Operating


System

KALILINUX RISC OS

NOOBS ANDROID

58
Linux embarqué

59
Linux embarqué

Définition

Linux embarqué (en anglais Embedded Linux) désigne un système


d'exploitation basé sur Linux et adapté à un système embarqué.

Ce système d'exploitation est conçu avec des spécificités à gérer afin de


répondre à des besoins spécifiques au type de système embarqué.

L'adaptation se fait donc en trouvant le bon compromis entre taille et


performances pour optimiser le système d'exploitation.

60
Un système d'exploitation

 Un système d'exploitation (Operating System ou OS)


est un ensemble de programmes spécialisés qui
permet l'utilisation des ressources matérielles d'un
ordinateur.
 Parmi les services d‟un OS, on cite: la gestion de la
mémoire, l'accès aux périphériques (disque dur,
lecteur de CD-Rom, clavier, souris, carte graphique...),
la gestion du réseau, le partage du temps
microprocesseur entre les programmes (multi-tâche),
etc.)
 Le système d'exploitation est un intermédiaire entre les
logiciels d'application et le matériel.

61
Linux embarqué

Systèmes de fichiers

Le système d‟exploitation Linux est basé sur un système de fichiers


(Filesystem)

Pour l'utilisateur, un système de fichiers est vu comme une


arborescence : les fichiers sont regroupés dans des répertoires.
Ces répertoires contiennent soit des fichiers, soit récursivement
d'autres répertoires. Il y a donc un répertoire racine et des sous-
répertoires. Une telle organisation génère une hiérarchie de
répertoires et de fichiers organisés en arbre.

62
Systèmes de fichiers

63
Systèmes de fichiers

64
Systèmes de fichiers

Utilité Windows Linux


Partition La partition où vous avez installé
Toujours "/"
principale Windows (généralement C:\)
Autres Par défaut, tout se trouve dans
A:\ D:\ E:\ F:\ …
partitions /media/
Exécutables
Programmes Généralement C:\Program Files\ : /bin/ & /usr/bin & /usr/local/bin/
Fichiers supplémentaires : /usr/
Dossiers C:\Documents and Settings\
/home/
personnels C:\Users\ (Vista & 7 & 8)
C:\Documents and
Settings\utilisateur\Mes
Fichiers de
Documents\ (WinXP) /home/utilisateur/
l'utilisateur
C:\Users\utilisateur\Documents\ (Vista
& 7 & 8)

65
Systèmes de fichiers

Le répertoire racine du système de fichiers. Tout le système, tous les


fichiers sont situés en dessous (hiérarchiquement) de cette racine.

Ce répertoire contient un certain nombre de commandes


essentielles pour tous les utilisateurs n‟ayant pas forcément les
droits de super-utilisateur (les commandes cat, chmod, etc), mais
également les shells (comme bash par exemple).
A un peu la même fonction que /bin, sauf que tous les programmes
/sbin
issus ne sont accessibles qu'à l'administrateur
Ce dossier contient tout le nécessaire pour le processus de
démarrage. Sans ce répertoire, l‟ordinateur ne peut pas démarrer.
Ce dossier contient tous les périphériques branchés sur l‟ordinateur
: les lecteurs, les dispositifs branchés en USB, les disques durs: tout
ce qui est « branché » à la carte mère. Les disques durs vont , bref
être nommé par hda, hdb, hdc. Les périphériques USB externes par
sda, sdb, sdc. le répertoire /dev contient également énormément de
fichiers qui peuvent être associés á ces périphériques.

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

il contient tous les exécutables ainsi que les bibliothèques, les


documentations et les fichiers d‟en-tête de ces exécutables, liés aux
utilisateurs
Dossier contenant tout ce qui est variable au système. Par exemple,
les fameux fichiers « log » enregistrant ce qui se passe sur votre
système, utiles quand quelque chose ne fonctionne plus par
exemple – contenus dans /var/log/ .
Comme son nom l'indique, ici sont stockés les fichiers temporaires
/tmp
utiles aux programmes en cours d'exécution. Ce dossier est vidé à
chaque redémarrage.
Ce dossier contient des fichiers et dossiers virtuels qui
/proc correspondent à l'état du système en temps réel : programmes ( processus )
lancés, occupation mémoire, RAM disponible, etc...

68
Linux embarqué

Les droits

Sous Linux, un fichier a :

 un propriétaire,
 un groupe,
 des droits.

Les droits permettent de définir les accès à ce fichier. On peut les


caractériser de deux manières : un nombre (755 par exemple) ou 9
caractères (rwx rw- rw-).

69
Linux embarqué

Comprendre les droits

On peut distinguer 3 groupements dans rwx r-x r-x :

 les droits d‟accès du propriétaire,


 les droits d‟accès des membres du groupe du fichier,
 les droits des autres comptes du système.

Signification :

 r : le fichier est accessible en lecture,


 w : le fichier est accessible en écriture,
 x : le fichier est exécutable.

70
Linux embarqué

Calcul des droits

71
Linux embarqué

Les commandes de base

 Obtenir de l’aide

 man <nom de la commande> : permet de consulter le manuel


associé à la commande passée en paramètre (man = manual).
 apropos : permet de rechercher des pages de manuel par mot-clé.
Exemple apropos permissions
 whatis : affiche la description des pages de manuels. whatis chown

72
Linux embarqué

Les commandes de base

Système

 top : permet de lister les processus du système.


 kill : permet de terminer un processus.
 df : permet de connaître l‟espace disponible sur les disques.
 uname : permet d‟afficher des informations importantes du système
(version du système…).
 su : permet de changer d‟utilisateur courant (su = switch user).
 halt ou shutdown -n now : arrêter le système
 reboot ou shutdown -r now : redémarrer le système

73
Linux embarqué

Les commandes de base

 Obtenir des informations et se déplacer dans l’arborescence

 Ls <répertoire> : Lister le contenu d‟un répertoire. ls /usr/bin


 pwd : Où suis-je ?
 cd <nom ou chemin du répertoire>: Aller dans un répertoire.
• cd répertoire
• cd / positionnement à la racine
• cd .. positionnement sur le répertoire parent
• cd /usr/X11R6/bin positionnement depuis la racine sur le répertoire
/usr/X11R6/bin .
• cd ../lib positionnement à partir du répertoire parent sur le répertoire
/lib.
• cd cd~ ou cd $HOME positionnement depuis n'importe où sur le
répertoire personnel.
• cd - positionnement sur le répertoire précédent.
74
Linux embarqué

Les commandes de base

Afficher et éditer des fichiers

 cat <nom du fichier> : Afficher le contenu d‟un fichier.


cat fichier fichier1 [fichier2]
 grep <mots à trouver> <fichiers cibles> : Permet de rechercher une
chaîne de caractères ou un motif dans un fichier
grep 'text' [Link] Recherche l'occurence 'text' dans le fichier [Link].

 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é

Les commandes de base

Afficher et éditer des fichiers

 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é

Les commandes de base

Modifier les droits

 chmod Changer les droits d‟un fichier.


chmod u+w fichier : Ajouter les droits d'écriture au propriétaire (user, write)
chmod g+r fichier : Ajouter les droits de lecture au groupe du fichier
(group, read)
chmod o-x fichier : Supprimer les droits d'exécution aux autres utilisateurs
(other, execution)
chmod a+rw dossier : Ajouter les droits de lecture / écriture à tous (all)
 chown Changer le propriétaire d‟un fichier.
exemple: chown bob:admin [Link] Attribuer l‟utilisateur bob et le groupe
admin au fichier [Link].
 passwd : permet à l'utilisateur de changer son mot de passe.
 sudo <commande> : exécuter une commande comme un super-utilisateur

77
Linux embarqué

Les commandes de base

Réseau et téléchargements

 ping <ip ou nom de domaine> : permet de vérifier si la machine cible


est bien accessible par le réseau.
 ifconfig : permet d‟afficher des informations concernant les interfaces
réseau. On l‟utilise fréquemment pour trouver son IP.
 wget <adresse de la ressource> : permet de télécharger la
ressource hébergée à l‟adresse définie.
 ssh <nom_utilisateur>@<ipaddress> -p <num_port> : permet de se
connecter de façon sécurisée à une machine distante
 scp <fichier> <username>@<ipaddressDistant>:<DestinationDirectory> de
copier des fichiers entre le serveur et le client ssh de manière sécurisée
Exemple: scp hello pi@[Link]: /home/pi

78
Linux embarqué
Les commandes de base

Packages

L'installation et la désinstallation de paquets peut se faire grâce à la


commande apt.
 apt-get update Mettre à jour la liste la liste des paquets disponibles
 apt-get upgrade : mettre à jour les paquets (logiciels) déjà installés
 apt-get upgrade-dist : mettre à jour les fichiers système de votre
distribution linux
 apt-get install gcc : installer du paquet gcc.
 apt-get install foo=2.2-1 : installer du paquet foo dans sa version 2.2-1.
 apt-get remove python2.7 : désinstallation du python2.7
 apt-get autoremove lynx : désisntaller le paquet (logiciel) qui ce nomme
"Lynx" ainsi que ses dépendance

79
Linux embarqué

Les commandes de base

Les archives

Que ce soit pour compresser ou décompresser des fichiers ou des dossiers,


cela se fait avec la commande tar.
Quelques options :
-c : créer
-t : tester / lister
-x : extraire
-v : description des fichiers désarchivés
-j : format de compression bzip2
-z : format de compression gzip

 tar -cvf [Link] fichier1 Création d‟une archive nommée [Link]


contenant le fichier fichier1.
 tar -cvf [Link] fichier1 fichier2 Création d‟une archive contenant deux
fichiers fichier1 et fichier2.

80
Linux embarqué

Les commandes de base

Les archives

 tar -cvf [Link] repertoire/ Création d‟une archive a partir d‟un


répertoire.
 tar -czvf [Link] repertoire/ Création d‟une archive au format [Link].
 tar -cjvf [Link].bz2 repertoire/ Création d‟une archive au format
tar.bz2.
 tar -xzvf [Link] : Extraction de l‟archive [Link].
 tar -xjvf [Link].bz2 : Extraction de l‟archive tar.bz2.
 tar -tf mon_fichier.tar : Liste tous les fichiers contenus dans une archive.
 zip -r nom_du_fichier.zip repertoire_ou_fichier : compresser un
ensemble de fichiers
 unzip nom_du_fichier.zip -d destination : décompresser un fichier

81
Linux embarqué

Les commandes de base

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

Le langage de programmation qui a été pris en charge comme langue


d‟apprentissage éducatif sur le Raspberry pi est le Python. Il est installé
par défaut dans Raspbian.

Cependant, n‟importe quel langage de programmation qui peut être


compilé sur un processeur ARMv6 est utilisable comme un moyen de
développement sur le Raspberry pi.

Deux logiciels de programmation ont été inclus par défaut dans


Raspbian. Ces deux logiciels sont :

84
Langages de programmation

Scratch:

C‟est un logiciel éducatif qui aide à comprendre


des concepts mathématiques et informatiques en
se basant sur une programmation graphique.

Python:

Comme c‟est le langage d‟officiel du Raspberry pi,


il est installé par défaut dans Raspbian.
Ce langage est puissant et n‟est pas très difficile
à apprendre.

85
Langages de programmation

D‟autres langages de programmation peuvent être utilisés avec un


Raspberry pi comme:

 HTML5,
 Java
 C/C++,
 Bash

Pour utiliser et compiler un de ces langages sur le Raspberry pi, vous


en aurez besoin d‟installer un programme ou des programmes qui ne
sont pas fournis par défaut.

86
Initiation à la programmation
C et Python

87
Introduction:

Environnement de développement IDLE:

Python

88
Introduction:

Environnement de développement IDLE:

C/C++

On peut installer le logiciel Code Blocks


ou bien travailler avec le terminal de
commande LXTerminal

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:

Saisir d’une variable au clavier

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:

Boucle while (tant que)

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:

Boucle while + break

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

int carre(int valeur)


{ Appel de la fonction
int x;
variable = carre(5)
x=valeur*valeur;
return(x);
}

variable = carre(5);

96
Importation des modules

Langage C Python
#include <module.h > import module

#include <math.h> import math


x=sqrt(16); Un espace de noms qui s’appelle math sera
crée et comporte toutes les fonctions et les
variables du module math
[Link](16)
On peut changer le nom de l'espace de noms
dans lequel sera stocké le module importé.
import math as mathematiques
[Link](25)

On peut charger une seule fonction à partir


d’un module
from math import fabs
>>> fabs(-5)
5

97
Exécution d’un programme C et Python sous Linux

Exécution d’un programme Python

Pour créer un programme sous l‟IDLE


File new file

Enregistrer sous le nom: nom_prog.py


Puis run
Pour exécuter le programme sous le terminal « python nom_prog.py »

98
Exécution d’un programme C et Python sous Linux

Exécution d’un programme C/C++

Pour compiler un fichier C/C++, on doit utiliser le compilateur GCC

GCC signifie GNU Compiler Collection, est un compilateur sous Linux,


permettant de compiler du C, du C++ et du Java

Utiliser gcc
gcc [arguments] [fichiers à compiler] (-o fichier de sortie)

En C
gcc main.c fonctions.c -o Programme

En C++, on utilise la commande g++


g++ [Link] [Link] -o Programme

Pour lancer le programme, il suffit de taper :


./Programme

99
Exécution d’un programme C et Python sous Linux

Exécution d’un programme C/C++

Les arguments de GCC

 -c : indique à GCC de ne pas linker.


Vous obtiendrez alors un fichier objet (.o).
Exemple :
gcc -c main.c -o main.o

 -I : spécifie le ou les répertoire(s) des headers. Indique à gcc où


rechercher les fichiers .h.

Par exemple, si vos .c sont dans le dossier sources et vos .h sont dans le
dossier headers, il vous faudra entrer :

gcc sources/*.c -I headers -o Programme

100
Exécution d’un programme C et Python sous Linux

Exécution d’un programme C/C++

Les arguments de GCC

 -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

Exécution d’un programme C/C++

Les arguments de GCC

 -Wall : GCC est encore plus exigeant ! La solution ultime !


Attention tout de même : avec cette option, le compilateur peut trouver des
erreurs dans des bibliothèques externes qu'on utilise !
 -Werror : tous les warnings deviennent des erreurs. Seul le code parfait
compilera !
 -g : mode Debugger.
Ajoute des informations de débogage à l'exécutable. Ces informations
peuvent être utilisées par le débogueur GDB.

102
Utilisation d’un Makefile

La commande make

La commande make va tout simplement faire une série de commandes, située


dans un fichier appelé Makefile.

Les règles de Makefile


La structure de base du Makefile est :

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

Exemple d’un Makefile minimal

Soit un programme comportant trois fichiers :


main.c, fonctions.c et fonctions.h.

Les commandes à exécuter pour compiler seront :

104
Utilisation d’un Makefile
Le Makefile sera structuré comme le suivant :

Les tabulations avant les lignes de commandes sont obligatoires !


Il suffit d'enregistrer le projet sous Makefile (sans extension) puis de lancer
dans un terminal :
make Programme
make sans arguments exécute la première règle du Makefile, vous pouviez
donc taper tout simplement : make

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

 Pour créer l'exécutable Programme


make all
 pour supprimer les fichiers temporaires
make clean
 pour préparer une reconstruction complète.
make mrproper
 pour installer le programme sans laisser de fichiers temporaires.
Make && make clean
 fera une reconstruction complète du programme.
Make mrproper && make

107
Utilisation d’un Makefile

Intégration des variables

On peut introduire des variables dans make.


ce n'est pas vraiment des variables car leur valeur ne change pas !
En fait, ça ressemble aux macro-commandes #define en C !
On introduit une variable sous la forme NOM = VALEUR.
On appelle ensuite sa valeur avec $(NOM).

108
Utilisation d’un Makefile

109
Cross-compilation

Le processus de compilation mobilise les ressources du système (temps


processeur et mémoire). Il nécessite également un espace de stockage suffisant
pour l‟enregistrement des données temporaires de compilation.

Sur un système embarqué, ces caractéristiques matérielles sont limitées et il est


souvent préférable de procéder à la compilation des sources sur un système
plus performant puis de transférer les exécutables obtenus sur la cible.

Ce type de compilation s‟appelle cross-compilation ou compilation croisée


en français. Il s'agit de compiler sur une machine (PC) pour une autre
(Raspberry).

Le cross-compilateur doit être construit sur mesure, pour une cible donnée et
sur un système hôte donné

110
Cross-compilation

Les étapes de cross-compilation sous windows

1. Télécharger une chaîne de compilation (en anglais : « toolchain »)


pour raspbberry [Link]

Un toolchain désigne l'ensemble


des paquets utilisés dans le
processus de compilation d'un
programme, pour un processeur
donné.

Le compilateur n'est qu'un élément


de cette chaîne, laquelle varie selon
l'architecture matérielle cible.

111
Cross-compilation

Les étapes de cross-compilation sous windows

2. Compiler votre fichier C/C++ à partir de la fenêtre de commande


Windows cmd en utilisant la commande:

arm-linux-gnueabihf-g++.exe [Link] -o test

Vérifier si le fichier exécutable test a été créé dans le même répertoire


que [Link].

112
Cross-compilation

Les étapes de cross-compilation sous windows

3. Envoyer le fichier test à la carte raspberry en utilisant putty et Winscp


ou bien le logiciel smarTTY dejà installé avec le toolchain
(C:\SysGCC\Raspberry\Tools\PortableSmartty\[Link])

113
Cross-compilation

Les étapes de cross-compilation sous windows

3.1 Appuyer sur Connect et confirmer l'empreinte de la clé. Une nouvelle


fenêtre de SSH sera ouvert:

114
Cross-compilation

Les étapes de cross-compilation sous windows

3.2 Faire glisser le fichier test créé dans la fenêtre SmarTTY ou bien utiliser la
commande SCP->Upload file.

4. Exécuter les commandes suivantes pour tester l'exécutable:


chmod a + x test
./test

115
Cross-compilation

Les étapes de cross-compilation sous windows

En essayant d‟exécuter le fichier généré sur le PC, un message d‟erreur


s‟apparait cannot execute binary file

C‟est logique, puisque le compilateur utilisé n‟est pas adapté à l‟architecture du


PC x86

Si on utilise le compilateur gcc avec la commande gcc/g++ ou lieu de


arm-linux-gnueabihf-g++, le fichier généré sera exécutable sur le PC

116
Cross-compilation sous Linux

Crosstool-NG

 On peut installer l‟outil crosstool-NG qui vise à construire des toolchains


dédiés pour différentes architectures.

 L‟utilisateur doit expliquer à crosstool-NG de quelle toolchain – c'est à dire


de quels outils – vous avez besoin. Par exemple, en précisant l'architecture
cible ou la version du compilateur qui vous intéresse.

 Les options sont nombreuses. Et pour les sélectionner l'outil propose une
interface menuconfig

 Les étapes de cross-compilation pour raspberry sont détaillées sur ce lien


[Link]
Pi

117
Définir l’OS
Cross-compilation sous Linux

Crosstool-NG

Définir l’architecture (ARM)

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

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]

121
Prise en main du Raspberry Pi

Préparation de la carte SD

Installez 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).
Il ne faut pas directement coller cette image sur votre carte SD.
Il faudra auparavant utiliser un logiciel pour installer correctement l‟image de
Raspbian tel que le logiciel Win32 Disk Imager
Double-cliquez sur [Link]. Vous aurez cette fenêtre:

122
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 !

123
Prise en main du Raspberry Pi

Préparation de la carte SD

Insérez 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à !

124
Prise en main du Raspberry Pi

Démarrage et authentification:

Brancher le Raspberry Pi

Ensuite, il est nécessaire de préparer les branchements nécessaires de


Raspberry Pi.
On a besoin d‟alimentation électrique, d‟une carte SD et d‟autres
périphériques facultatifs : clavier, souris, réseau…

Pour certaines versions du Raspbian il faut taper au cours du


démarrage: startx pour travailler en mode graphique
Utilisateur : pi
Password : raspberry

125
Prise en main du Raspberry Pi

Démarrage et authentification:

Configurer Raspbian

Lorsque vous arrivez ici, normalement votre ordinateur a dû démarrer et


afficher l‟écran de paramétrage de Raspbian.

126
Prise en main du Raspberry Pi

Démarrage et authentification:

On se retrouve face à un menu plutôt fourni permettant de configurer


Raspbian :

 info : donne simplement des informations sur l‟écran de


paramétrage. Pas super utile.
 expand_rootfs : par défaut, la distribution utilisera seulement 2 GB
d‟espace sur la carte SD. Si vous avez une carte avec plus
d‟espaces (4Go ou +), vous pouvez dire par cette commande à
Raspbian d‟utiliser tout l‟espace disponible sur la carte.
 overscan : utile pour modifier l‟affichage afin qu‟il s‟adapte à du 16/9.
Avec des écrans et télé récentes, cette commande est inutile.
 configure_keyboard : pour configurer le clavier

127
Prise en main du Raspberry Pi

Démarrage et authentification:

 change_pass : pour changer le mot de passe de l‟utilisateur


 Par défaut : l’utilisateur : pi / mot de passe : raspberry
 change_locale : pour définir le jeu de caractères à utiliser
 change_timezone : pour afficher l‟heure en fonction de sa zone
géographique
 memory_split : pour répartir la mémoire physique entre le GPU
(processeur graphique) et le CPU (processeur). Par défaut, le GPU
utilise 64Mo.

128
Prise en main du Raspberry Pi

Démarrage et authentification:

 overclock : permet d‟augmenter la


performance des processeurs et de la
RAM en augmentant leur cadence. Ces
modifications peuvent réduire la durée de
vie du micro-PC. 5 overclocking types
sont prêts à l‟emploi

 ssh : pour activer le SSH. Déjà activé par défaut.


 boot_behaviour : pour indiquer si l‟on souhaite utiliser le Pi en
mode graphique ou en mode texte. Le mode graphique est activé
par défaut.
 update : pour mettre à jour le système

129
Prise en main du Raspberry Pi

Démarrage et authentification:

Une fois vous avez terminé,


il ne vous reste plus qu‟à sélectionner
« Finish ».
Et voilà, vous deviez arriver sur le bureau
de Raspbian !

Enfin, si vous souhaitez retrouver l‟écran


de paramétrage de Raspbian, il suffit de
saisir cette commande dans un terminal :
« sudo raspi-config »

130
Prise en main du Raspberry Pi

Changer layout du clavier:

Pour modifier le layout:

« sudo nano /etc/default/keyboard »

Dans le fichier, Remplacez le "gb" par "be" ou "fr" de façon à avoir la


ligne suivante:

« XKBLAYOUT="fr" »

« sudo reboot »

131
Prise en main du Raspberry Pi

réglage de l’heure :

« sudo date 0413144913 »

résultat:

Sat Apr 13 14:49:00 UTC 2013

132
Prise en main du Raspberry Pi

affichage:

 téléviseur : connecteur composite RCA, port HDMI, convertisseur


HDMI to VGA
 USB (protocole UART ) utilisant un convertisseur USB TTL
 Offline : a travers un câble Ethernet
 Sur PC, tablette ou smartphone: en utilisant un client VNC
 SSH (Secure Shell ): Putty

133
Prise en main du Raspberry Pi

affichage:

SSH (Secure Shell ): Putty

Secure Shell (SSH) est un protocole de communication sécurisé. Il


permet de prendre le contrôle d'une machine comme Raspberry PI à
distance en utilisant une console.

Par chance, SSH est actif dès le démarrage du Raspberry Pi.


Il suffit donc d'utiliser le logiciel adéquat pour entamer une connexion
SSH (de type console en ligne de commande) avec le Raspberry PI. La
seule chose à connaître, c'est l'adresse IP du Rapsberry sur votre
réseau.

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

PING [Link] ([Link]) 56(84) bytes of data.


From [Link] icmp_seq=2 Destination Host Unreachable
From [Link] icmp_seq=3 Destination Host Unreachable
From [Link] icmp_seq=4 Destination Host Unreachable

Par contre:

PING [Link] ([Link]) 56(84) bytes of data.64 bytes


from [Link]: icmp_req=1 ttl=64 time=3.06 ms64 bytes
from [Link]: icmp_req=2 ttl=64 time=0.720 ms

136
Prise en main du Raspberry Pi

affichage:

Client SSH

Pour se connecter en SSH sur le Raspberry


on peut utiliser un logiciel qu'on appelle SSH
Client.
Il y a deux types 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

137
Prise en main du Raspberry Pi

affichage:

Sur PC, tablette ou smartphone: en utilisant un client VNC (Virtual


Network Computing)

VNC (Virtual Network Computing) est un système de visualisation et


de contrôle de l'environnement de bureau d'un ordinateur distant. Il
permet au logiciel client VNC de transmettre les informations de
saisie du clavier et de la souris à l'ordinateur distant, possédant un
logiciel serveur VNC à travers un réseau informatique.

Plusieurs clients peuvent se connecter en même temps à un unique


serveur VNC.

138
Prise en main du Raspberry Pi

affichage:

Sur PC, tablette ou smartphone: en utilisant un client VNC

VNC (Virtual Network Computing) se compose de deux parties, le


client et le serveur.
 Le serveur est le programme fonctionnant sur l'ordinateur esclave,
partageant à la fois la sortie à l'écran et les entrées de la souris et du
clavier.
 Le client (appelé aussi visionneuse) est le programme fonctionnant
sur l'ordinateur maître, qui permet de visualiser et éventuellement
d'interagir avec le serveur en envoyant les informations de saisie
(clavier, souris), et uniquement si celui-ci l'autorise.

139
Prise en main du Raspberry Pi

affichage:

Sur PC, tablette ou smartphone: en utilisant un client VNC

1) Installer le serveur VNC sur Raspberry PI


Entrez la commande suivante dans votre terminal
« sudo apt-get install tightvncserver »
Le système vous demandera de confirmer l'installation que vous
confirmerez en tapant "Y" (ou "O" sur un système français).
Vous devez maintenant démarrer un serveur VNC Server, cela est
réalisé en tapant la commande suivante
« vncserver : 1 »

140
Prise en main du Raspberry Pi

affichage:

Sur PC, tablette ou smartphone: en utilisant un client VNC

Vous devrez alors entrer et confirmer un mot de passe VNC Serveur.


C'est le mot de passe que vous devrez utiliser pour se connecter à distance
sur votre Raspberry.
Il vous également demandera de créer un mot de passe "Read-Only" (lecture
seule). Répondez simplement "NON".

A partir de maintenant, la seule commande que nous avons besoin pour


démarrer le serveur VNC en SSH sera:
« vncserver :1 »

141
Prise en main du Raspberry Pi

affichage:

Sur PC, tablette ou smartphone: en utilisant un client VNC

2) Installer le client VNC sur votre ordinateur

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:

Entre l'adresse IP de votre Raspberry Pi,


ajoutez :1 (pour indiquer le port) et cliquez sur
“Connect”. Vous aurez le message d'information
suivant (ou similaire). Cliquez sur 'Continue' pour
poursuivre l'étape de connexion.
Par la suite, faire entrer le mot de passe qui vous
avez enregistré pour le serveur VNC

143
Prise en main du Raspberry Pi

affichage:

Finalement, la fenêtre de VNC elle même devrait apparaître. Vous serez


capable d'utiliser la souris et de faire tout ce que vous devriez être capable
de faire avec un clavier/souris/écran exceptez que vous le faite depuis
votre ordinateur.

144
Prise en main du Raspberry Pi

affichage:

VNC-AutoStart-Server

Cette méthode ne fonctionnera que si vous avez configuré votre Pi


pour qu'il démarre directement l'environnement graphique.

« 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:

Tout ce qui reste à faire c'est d'éditer un nouveau fichier de


configuration. Pour ce faire, tapez la commande suivante pour ouvrir
l'éditeur nano en créer notre nouveau fichier:

« nano [Link] »

Editez le contenu du fichier et entrez y le contenu suivant:

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver:1
StartupNotify=false

146
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, 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

Donner une IP statique à votre machine


1ère solution:
Éditez le fichier /etc/network/interfaces avec l'éditeur nano comme ceci :
« sudo nano /etc/network/interfaces »
Au lieu de la ligne :
iface eth0 inet dhcp
vous devez avoir les lignes suivantes :
iface eth0 inet static
address [Link]
netmask [Link]
L'exemple ci-dessus attribue l'adresse [Link] à eth0 avec
[Link] comme masque de sous-réseau.
2ème solution:
Éditez le fichier /etc/[Link] avec l'éditeur nano comme ceci :
« sudo nano /etc/[Link] »

3ème solution:
Ou dans le fichier /boot/[Link], ajouter à la fin de la commande
ip=[Link]
148
Prise en main du Raspberry Pi

Connecter Raspberry Pi à un réseau wifi

sudo nano /etc/network/interfaces


auto lo
iface lo inet loopback

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

Emulateur Raspberry Pi sous Windows

Il existe un autre moyen de tester une application Raspberry sans avoir


l'allumer. Il suffit de passer par un émulateur tel que QEMU qui permet de
lancer un OS pour processeur ARM sous Linux ou Windows.

L'émulateur sous Windows


1. Récupérez l'émulateur à l'adresse suivante
[Link]
2. Dézippés le contenu de l'image Rpi-Occidentalis-v02-qemu.7z avec 7-zip
3. Démarrez l'émulation en lançant [Link].

150
Prise en main du Raspberry Pi

Emulateur Raspberry Pi sous Windows

Utilisation en mode graphique


Une fois démarré en mode graphique ou en exécutant startx depuis la
ligne de commande, vous retrouverez votre environnement graphique
habituel.

151
Prise en main du Raspberry Pi

Emulateur Raspberry Pi sous Windows

Utilisation en mode ligne de commande


La machine virtuelle est pré-configurée pour rediriger le port 2222 vers le
port SSH (22). Vous pouvez vous connecter avec Putty ou n'importe quel
autre outils SSH en vous connectant sur "localhost:2222".

152
Entrées-sorties et interfaces
de communication

153
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.

154
Entrées-sorties et interfaces de communication

Les GPIO du Raspberry Pi:

Le connecteur d‟extension de la carte Raspberry PI est utilisé pour


raccorder des périphériques de communication (UART, I2C, SPI, ...)
ou fonctionner en mode TOR (Tout Ou Rien 0/1 0/3.3V).
Les broches peuvent avoir des fonctions différentes suivant qu‟elles sont
activées en tant que GPIO (Global Purpose Input Output), périphérique
de communication ou sorties PWM (Pulse Width Modulation).

155
Entrées-sorties et interfaces de communication

Les GPIO du Raspberry Pi:

Raspberry Pi 3
40 Broches

156
Entrées-sorties et interfaces de communication

AdaFruit PiCode:

AdaFruit Industries à développé une collection très étendue de


codes/utilitaires extrêmement utiles en vue de faciliter la tache des
personnes désirant faire des expérimentations en raccordant des
composants électroniques sur leur Raspberry Pi.

Cette collection inclus des librairies Python, simple et facile à utiliser et


convenant à un grand nombre de modules, incluant des afficheurs, des
capteurs, des contrôleurs PWM etc.

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 :

Mise à jour de Python

Raspberry PI dispose déjà de Python mais ça n‟empêche pas d‟installer


quelques paquet et librairies python complémentaires.
sudo apt-get install python-dev
sudo apt-get install python-pip

python-dev c‟est packet qui contient des header files .h nécessaires


pour les fonctions/ bibliothèques écrites en C et utilisées avec Python

Pip est un système de gestion de paquets utilisé pour installer et gérer


des librairies écrites en Python

pip install [Link] // installer la bibliothèque [Link]


pip uninstall [Link] // désinstaller la bibliothèque [Link]

159
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.

160
Entrées-sorties et interfaces de communication

Configure GPIO

Pour programmer des applications avec les GPIO du Raspberry Pi, on


peut soit:
 Programmer en Python
On doit installer la bibliothèque [Link]
sudo pip install [Link]
 Programmer en C
On doit installer la bibliothèque WiringPi
git clone git://[Link]/wiringPi
cd wiringPi
./build
Pour tester l’installation de la bibliothèque wiringPi
gpio -v
gpio readall

161
Entrées-sorties et interfaces de communication

Gestion d’une sortie (LED):

Matérielle nécessaire :

 Diode LED
 Résistance
 Des jumper wire
 Bread Board
 Raspberry pi

Montage :

162
Entrées-sorties et interfaces de communication

Gestion d’une sortie (LED):

Code python:

163
Entrées-sorties et interfaces de communication

Gestion d’une sortie (LED):

Compilation et exécution :

« Sudo python 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) »

164
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 11 to OUT

Turn on or off GPIO pin 11

Wait for one second

165
Entrées-sorties et interfaces de communication

Gestion d’une sortie (LED):

Programmation en C en utilisant la bibliothèque WiringPi:

 Enregistrer ce fichier sous le nom blink


avec l‟extension .c (blink.c)

 Pour compiler taper dans LXterminal:


gcc -Wall -o blink blink.c –lwiringPi

 Pour l‟exécuter taper:


sudo ./blink

166
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 :

167
Entrées-sorties et interfaces de communication

Acquisition d’une entrée (bouton poussoir):

Code python:

168
Entrées-sorties et interfaces de communication

PIR Motion Detector:

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

PIR Motion Detector:

Code :

170
Entrées-sorties et interfaces de communication

Contrôler GPIO avec Scratch:

Télécharger l'installeur de ScratchGPIO:


« sudo wget [Link] -O /boot/install_scratch_gpio.sh »
Ensuite, tapez et lancez :
« sudo /boot/install_scratch_gpio.sh »
Cela va installer tous les logiciels supplémentaires requis et quelques
exemples simples.
Vous pouvez maintenant lancer l'i cône Scratch spéciale ( Scratch
GPIO) de votre bureau.
Si d'autres programmes Python accédant au GPIO tournent déjà
« sudo killall python »

171
Entrées-sorties et interfaces de communication

Contrôler GPIO avec Scratch:

Pour tester l'accès au GPIO dans Scratch, cliquez sur Fichier>Ouvrir et


sélectionnez blink11 dans /home/pi /Scratch. Une fois le programme
chargé, cliquez sur le drapeau vert et votre LED devrait clignoter :
allumée 1 seconde, éteinte 2 secondes.

172
Entrées-sorties et interfaces de communication

Contrôle GPIO avec Scratch:

Cliquer sur « controls » puis choisir « When Key pressed »

Placer-le au-dessus « forever »

173
Entrées-sorties et interfaces de communication

Contrôle GPI O avec Scratch:

Maintenant changer la touche pour activer le clignotement de la LED en


cliquant sur « space »

174
Entrées-sorties et interfaces de communication

Interface RS-232 (UART):

 Les UART (Universal Asynchronous Receiver Transmitter) assurent


l’émission et la réception asynchrone.
 Les communications asynchrones (sans horloge) nécessitent une
resynchronisation systématique lors de l‟émission d‟un octet.
 L‟octet est encadré d‟un bit de start et d‟un bit de stop. Le bit de start
indique le début de la transmission (il peut arriver n‟importe quand
puisqu‟elle est asynchrone) et permet au récepteur de se resynchroniser.
 Les communications asynchrones sont utilisées pour les longues
distances (Ethernet, téléphonie) mais également en inter-circuit.

175
Entrées-sorties et interfaces de communication

Interface RS-232 (UART):

Sur le Raspberry Pi, les niveaux sont 0v, 3.3v


TXD : Port GPIO14 (broche 8)
RXD : Port GPIO15 (broche 10)

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

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

2ème méthode: (pour RaspberryPI3, il faut remplacer ttyAMA0 par ttyS0)


« sudo nano /boot/[Link] »
Supprimer : console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
Enregistrer
Désactiver la demande de connexion après le boot
« sudo nano /etc/inittab »
Commenter la dernière ligne en joutant un # :
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Enregistrer
Redémarrer  /dev/ttyAMA0 est maintenant un port Linux libre

177
Entrées-sorties et interfaces de communication

Interface RS-232 :

Les ordinateurs modernes n‟étant plus équipés de ports RS232, il est


nécessaire d‟utiliser un petit convertisseur USB-série asynchrone.
Par exemple une carte FTDI : [Link]
(installer le driver FTDI sur le PC) puis relier :

 TXD(RPi) vers RXD(FTDI)


 RXD(RPi) vers TXD(FTDI)
 GND(Pi) vers GND(FTDI)
 NE PAS CONNECTER L‟ALIMENTATION
3.3v DU FTDI AVEC RASPBERRY PI

Sur le PC, on peut utiliser putty

178
Entrées-sorties et interfaces de communication

Interface RS-232 :

Une deuxième solution: utiliser Adafruit console cable

Ce câble fournit un niveau logique 3.3V compatible avec les GPIO de


raspberry Pi .
Attention: Ne pas tous les câbles ont 3.3V de sortie. Donc de
préférence, il faut utiliser Adafruit console cable pour éviter
d'endommager les GPIO du Raspberry Pi.
Ce câble nécessite d‟installer le driver PL2303
:[Link]

179
Entrées-sorties et interfaces de communication

Interface RS-232 :

Sur le PC, on peut utiliser [Link]

180
Entrées-sorties et interfaces de communication

Interface RS-232 :

Test de connexion :Programme en Python


Récupérer la bibliothèque Python « sudo apt-get install python-serial »

181
Entrées-sorties et interfaces de communication

Interface RS-232 :
Programme en C avec wiringPi

182
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C :

Le bus I2C est un bus série synchrone bidirectionnel half-duplex


permettant les échanges séries à courte distance entre un
microcontrôleur (Maitre) et des périphériques (Esclaves : ADC, DAC,
afficheur, mémoire, capteurs etc …) ou un autre microcontrôleur, les
échanges sont gérés par protocole avec adressage.

183
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C :

Brochages

La connexion est réalisée par l'intermédiaire de


deux lignes :

 SDA (Serial Data Line) : ligne de données


bidirectionnelle,
 SCL (Serial Clock Line) : ligne d'horloge de
synchronisation bidirectionnelle.

184
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C:

Configurer I2C
1ère méthode: taper sudo raspi-config

Sélectionner “Advanced Options” choisir “I2C”


Une fenêtre vous demande si vous voulez activer l‟interface ARM I2C :
Sélectionner “Yes”  puis “Ok”
Sélectionner “Finish”  redémarrer la raspberry PI  i2c est activé

185
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C:

Configurer I2C
2ème méthode:

Taper dans la fenêtre de commande « sudo nano /etc/modules »


ajouter les deux lignes suivantes à la fin du fichier
i2c-bcm2708
i2c-dev
Ceci permet d’activer le bus I2C
Après la modification du fichier, vous devrez redémarrer (rebooter) votre
Pi pour que les modifications soient appliquées.

186
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C:

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.

« sudo modprobe i2c-dev »


« sudo modprobe i2c-bcm2708 »

lsmod retourne la liste des modules actifs


Ou bien lsmod | grep i2c_ : elle liste tous les modules dont les noms
commencent par “i2c_”. Si elle note “i2c_bcm2708” donc le module i2c
est bien activé

187
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C:

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

I²C : Interrogation en I²C:

Configurer I2C
vérifiez si le protocole I²C n‟est pas blacklisté

« sudo nano /etc/modprobe.d/[Link] »

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

I²C : Interrogation en I²C:

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 »

Notez que si vous utilisez l'un de premiers modèles de Raspberry Pi


(Raspberry Pi Modèle B 256MB ) alors vous aurez besoin de changer la
commande comme suit:

« sudo i2cdetect -y 0 »

190
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C:

191
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C d’un capteur de température:

Le capteur température LM92:

Voir datasheet

192
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C d’un capteur de température:

Le capteur température LM92:

Installer les packages i2c


« sudo apt-get install lm-sensors »
« sudo apt-get install libi2c-dev »

lire la température:
« i2cget -f -y 1 0x48 0x00 w »

Changer la résolution : 9bits (0.5°)- 12bits (0.0625°)


« i2cset -y 1 0x48 0x01 0x60 »
0x01 is the register address
0x60 is the value to enable 12 bit resolution

193
Entrées-sorties et interfaces de communication

I²C : Interrogation en I²C d’un capteur de température:

Code:

194
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Une liaison SPI (pour Serial Peripheral Interface) est un bus de


données série synchrone qui opère en mode Full-duplex. Les circuits
communiquent selon un schéma maître-esclaves, où le maître s'occupe
totalement de la communication. Plusieurs esclaves peuvent coexister
sur un même bus, dans ce cas, la sélection du destinataire se fait par
une ligne dédiée entre le maître et l'esclave appelée chip select.

195
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

196
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Brochage

SCLK - Broche 23 - GPIO #11 (aussi appelée abusivement "CLK")


MOSI - Broche 19 - GPIO #10
MISO - Broche 21 - GPIO #9
CE0 - Broche 24 - GPIO #8 (aussi appelée abusivement "CS0")
CE1 - Broche 26 - GPIO #7 (aussi appelée abusivement "CS1")

197
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Configuration SPI :

Sélectionner “Advanced Options” choisir “SPI”


Une fenêtre vous demande si vous voulez activer l‟interface ARM SPI :
Sélectionner “Yes”  puis “Ok”
Sélectionner “Finish”  redémarrer la raspberry PI  SPI est activé

198
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Configuration SPI :

vérifier si le protocole SPI n‟est pas blacklisté.


« sudo nano /etc/modprobe.d/[Link] »

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

SPI : Serial Peripheral Interface:

Installation de la bibliothèque SPI SPIdev :

« sudo apt-get install python-dev »


« mkdir python-spi »
« cd python-spi »
« git clone [Link] »
« cd py-spidev»
« sudo python [Link] install »

200
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Analogue input :

Le Pi n'inclus pas de convertisseur Analogique/Digital mais un


convertisseur ADC externe tel que le MCP3008 peut être utilisé avec du
code Python pour faire une lecture analogique en utilisant le protocole
SPI.

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

SPI : Serial Peripheral Interface:

Analogue input :

Les connexions entre le MCP3008 et le Raspberry Pi sont les suivantes:

MCP3008 VDD (pin 16) → Raspberry 3,3 V


MCP3008 VREF (pin 15) → Raspberry 3,3 V
MCP3008 AGND (pin 14) → Raspberry GND
MCP3008 CLK (pin 13) → Raspberry SCLK
MCP3008 DOUT (pin 12) → Raspberry MISO
MCP3008 DIN (pin 11) → Raspberry MOSI
MCP3008 CS (pin 10) → Raspberry CE0
MCP3008 DGND (pin 9) → Raspberry GND

202
Entrées-sorties et interfaces de communication

SPI : Serial Peripheral Interface:

Analogue input :

Code:

203
Raspberry Pi pour robotique

204
Raspberry Pi pour robotique

PWM:

Le signal PWM (Puls With Modulation) est un signal de fréquence


constante et de rapport cyclique variable.

Pour raspberry il y‟a deux types de PWM :


Hardware PWM et Software PWM

- Hardware PWM : pin GPIO12


- Software PWM : avec programmation
de n‟importe quelle pin à travers
la bibliothèque [Link]

205
Raspberry Pi pour robotique

PWM:

Le programme ci-dessous fait


varier l‟intensité de l‟éclairement
de la LED sur GPIO11.

206
Raspberry Pi pour robotique

PWM:

p = [Link](11, 50) # active GPIO11 en mode PWM avec la


fréquence 50Hz sous le nom “P”

[Link](5) # démarrer 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

207
Raspberry Pi pour robotique

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.

208
Raspberry Pi pour robotique

Controller un moteur DC

Quelques types de « driver » existants sur le marché :

Breakout L298 L9110s MOSFET IRF3205

209
Raspberry Pi pour robotique

Controller un moteur DC

Pour notre exemple on va utiliser un driver LN298

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

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°.

212
Raspberry Pi pour robotique

Servo motors

213
Raspberry Pi pour robotique

Servo motors

code:

214
Raspberry Pi pour robotique

Exécuter plus d'un programme de contrôle au même temps

Exemple :

215
Raspberry Pi pour robotique

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.
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] »

216
Raspberry Pi pour robotique

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_programe_1.py & »
« sudo python /home/pi/python_programe_2.py & »
« /home/pi/your_programe_1.sh & »
« /home/pi/your_programe_2.sh & »
Exemple : Programme_1.sh
#!/bin/sh
cd home/pi/
sudo python your_python_sript.py &
exit 0
cd /
Enregistrer et quitter

217
Computer Vision

218
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 »

219
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, 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

220
Computer Vision

Serveur webcam avec motion: video streaming

Le daemon (service) motion est désactivé par défaut, pour l'autoriser :


# sudo nano /etc/default/motion
// modifier start_motion_daemon=yes
Puis démarrer motion :
# motion
La mise en service de base est faite, le flux de la webcam se fait en
pointant sur [Link]
Vous pouvez accéder à votre Camera IP, avec votre smartphone ou
tablette.

221
Computer Vision

OpenCV : (Open Computer Vision) est une bibliothèque graphique libre,


spécialisée dans le traitement d'images et vidéos, calculs matriciels et les
algorithmes d‟apprentissage etc...

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 : Using a webcam with the Raspberry Pi

« git clone [Link]


[Link] »

Taper dans le terminal:


« cd RPi-OpenCV-Face-Rec-Python »
« python test_python_openCV.py »
Résultat :

222
Computer Vision

OpenCV

Reconnaissance faciale en python:


Dans le même dossier RPi-OpenCV-Face-Rec-Python
taper dans le terminal la commande:
« python fd_python_openCV.py --cascade=[Link] 0 »
résultat:

223
Internet des objets

224
Internet des objets

Définition 1: l'Internet des objets connectés représente les échanges


d'informations et de données provenant de dispositifs présents dans le
monde réel vers le réseau Internet.

Définition 2: L'internet des objets est « un réseau de réseaux qui


permet, via des systèmes d‟identification électronique normalisés et
sans fil, d‟identifier et de communiquer numériquement avec des objets
physiques afin de pouvoir mesurer et échanger des données entre les
mondes physiques et virtuels.

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.

Pour modifier les états, il faut :


Cliquer sur la touche OUT > IN pour
changer de direction GPIO .
Cliquer sur la broche pour changer l’état
de sortie GPIO .

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

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]

228
Internet des objets

WebIOPi

Changer son Identifiant/Mot de passe :

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

Exemple1 : Commander des LED connectées sur Raspberry Pi via


une page web en utilisant le serveur web Apache

L‟ordinateur Raspberry Pi est connecté en réseau par un connecteur


Ethernet et/ou une liaison WIFI. Il peut devenir un serveur WEB
permettant le contrôle distant de processus ou la transmission à
distance des données à travers Internet.

Procédure d’installation d’un serveur web Apache

Suivez les instructions présentées dans le lien ci-dessous:


[Link]
raspberry-pi-12/

231
Internet des objets

SERVEUR WEB

Exemple1 : Commander des LED connectées sur Raspberry Pi via


une page web en utilisant le serveur web Apache

1) Installation du serveur Appache et l’interpreteur php

• sudo apt-get update && sudo apt-get upgrade


• sudo apt-get install apache2 php5 libapache2-mod-php5

2) Donner des droits au dossier d’apache


Ceci permettra de facilement administrer les sites. Pour cela, lancez les
commandes suivantes :

sudo chown -R pi:www-data /var/www/


sudo chmod -R 770 /var/www/

232
Internet des objets

SERVEUR WEB

Exemple1 : Commander des LED connectées sur Raspberry Pi via


une page web en utilisant le serveur web Apache

3) Création de l’interface web

233
Internet des objets
SERVEUR WEB

Exemple2 : Commander une LED branchée sur le gpio4 du


Raspberry Pi via une page web en utilisant le module webpy

Le module webpy contient un serveur web interne

Procédure de création d’un site WEB avec webpy

Suivez les instructions présentées dans ce lien :


[Link]
partir-dun-navigateur-internet/

Télécharger et installer le module


« wget [Link] »
« tar -xzvf [Link] (décompression) »
« cd [Link]-0.37 »
« sudo python [Link] install »

234
Internet des objets

SERVEUR WEB

Exemple2 : Commander une LED branchée sur le gpio4 du Raspberry Pi


via une page web en utilisant le module webpy

Maintenant il va falloir créer une arborescence :


cd /
mkdir webpyserver
cd /webpyserver
mkdir templates
mkdir static

Le dossier webpyserver contiendra le fichier Python à exécuter; le dossier


webpyserver/templates contiendra une page HTML et le
dossier webpyserver/static contiendra une feuille de style au format CSS.
On va créer un programme en Python de nom [Link] qui permettra
d‟allumer ou d‟éteindre une LED en utilisant le port GPIO4 du Raspberry. Ce
fichier sera enregistré dans le dossier webpyserver, dont voici le contenu :

235
Internet des objets

SERVEUR WEB

Exemple2:
serveur webpy
Le contenu du
fichier [Link]

236
Internet des objets

SERVEUR WEB : webpy

Ensuite on crée un fichier de nom [Link] qui sera enregistré dans le


dossier templates dont voici le contenu :
$def with (form, title)
<!doctype html>
<html>
<head>
<title>$title</title>
</head>

<body>
<br />
<form class="form" method="post">
$:[Link]()
</form>
</body>
</html>

237
Internet des objets

SERVEUR WEB webpy

Maintenant il suffit de lancer la commande „python [Link]‟ pour démarrer


le serveur Web, puis à partir d‟un navigateur de taper l‟adresse IP du
Raspberry en utilisant le port 8080; voilà le résultat :

238
239

Vous aimerez peut-être aussi