Tutoriel Le RaspberryPi
Par X. HINAULT - Octobre 2012 : http//mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.RASPBERRYPI
La carte RaspberryPi
|
|
Synthèse des caractéristiques
- CPU : ARMv6@700MHz - Broadcom 2835
- RAM : 256Mo (version A) / 512 Mo (version B)
- Supp. Masse : Carte SD standard (->32Go)
- GPU : OpenGL ES 2.0,
- Système compatible : Raspbian (portage ARM de Debian Wheezy)
- Son : HDMI, out : jack 3,5mm, in : --
- vidéo : HDMI, RCA
- Réseau : Eth 10/100/1000
- USB : 2 ports USB
- GPIO : 8 E/S en 3.3V (jusqu'à 17...) - Connecteur non compatible Arduino
Entrées Analogiques : NON
- Sorties analogiques : 1 x PWM hardware (!)
- Comm. Sérielles : I2C, SPI, UART
- Alim. : micro USB en 5V@400mA (Alim 5V@1A conseillée)
|
Le RaspberyPi
est une carte électronique tout juste un peu plus grande qu'une carte de
crédit, d'un poids de 45g, et qui intègre un véritable PC miniature
(base ARM), alimentable en 5V / 400mA, intégrant une carte son, une
carte graphique, un port éthernet, deux ports USB 2.0.... le tout pour
un coût avoisinant les 30€ seulement ! L'intérêt majeur du RaspberryPi
est l'utilisation en embarqué, couplé notamment avec une carte Arduino.
En quelques minutes, sur un petit robot ou tout autre projet, il devient
possible d'ajouter la lecture de fichier sons, la synthèse vocale, le
retour vidéo, la programmation à distance d'Arduino ! Voici comment
utiliser la "bête" en toute simplicité !
la librairie qui vous permet de programmer votre miniPC comme une carte Arduino... et bien plus encore !Vous en avez rêvé ? www.mon-club-elec.fr l'a fait !
1. Pour commencer
|
|
L'essentiel :
Pour approfondir :
Raspberry-Pi, Raspbian et matériels :
- Liste de périphériques USB fonctionnant "out of the box" avec le RaspberryPi sous Raspbian
- Tests et trucs techniques en vrac
|
2. Avant d'aller plus loin, pour ceux qui ne connaissent pas Gnu/Linux...
|
|
Notions générales sur le système Gnu/Linux
Tester / Installer un système Gnu/Linux
Utiliser un système Gnu/Linux
Et aussi : Notion de logiciels et licences libres
- Les principes du logiciel libre
- Les licences libres
|
L'intérêt
majeur du RaspberryPi, c'est sa petite taille... et il est dommage de
perdre cet atout en utilisant les nombreux périphériques d'un PC...!
D'où l'idée de rendre le RaspberryPi utilisable à distance via le réseau
filaire ou wifi et de le contrôler, y accéder depuis un poste fixe de
contrôle ou une tablette. Suivez le guide !
|
|
Procédures utiles pour utiliser le RaspberryPi en mode "embarqué"
Développement et programmation avec le Raspberry-Pi
Procédures avancées
Matériel
Archive :
|
Programmer le RaspberryPi aussi facilement qu'Arduino, çà vous tente ? Suivez le guide !
Intro
- Quel langage choisir pour programmer le RaspberryPi? PDF
- S'installer pour programmer le RaspberryPi en Python et intro au langage Python PDF
Programmer les broches E/S du pcDuino en Python tout en utilisant les instructions Arduino
Pour approfondir le langage Python
Développer des interfaces graphiques sur le pcDuino

J'utilise
préférentiellement le pcDuino que je trouve très bien (fluide d'usage
grâce à sa mémoire NAND, 1G de RAM, 6 entrées analogiques intégrées dont
4 en 12 bits, 6 voies PWM, 18 E/S dispo, brochage simple à utiliser,
SPI/I2C/UART, etc...). Pourtant régulièrement je me dis : "y'à plein de
monde qui utilise le Raspberry Pi... faut que je mette des exemples
Pyduino en ligne pour le RPi... Mais, je n'arrive pas à me convaincre :
le RPi est moins cher (40€ contre 59€), certes... mais faut acheter une
carte SD de classe 10 si on veut que çà dépote (compter 10€ si c'est pas
15€...), côté système, c'est plus lent d'usage, faut compiler la voix
pico, le pavucontrol ne marche pas... côté GPIO, c'est "tordu" sur le
RPi et moins fourni et surtout pas de broches analogiques, ce qui sert
très souvent en pratique... donc faut une Arduino minimale en plus
(compter 5 voire 10€)... Bref, j'arrive pas à me convaincre... Tous les
exemples Pyduino proposés pour le pcDUino seront faciles à transposer...
et si ils ne sont pas, çà vous montrera ce que le pcDuino permet de
faire et que ne permet pas le RPi !
C'est
pourquoi, je vous propose ici les exemples Pyduino tournant sur le
pcDuino et qui seront adaptables au Raspberry Pi dans la majorité des
cas...
5. Quelques exemples d'adaptation de codes Pyduino au RaspberryPi
6. Codes Pyduino
Utiliser un
minipc pour simplement contrôler des broches E/S est quelque peu
démesuré si l'on ne souhaite faire que çà... Le but de cette rubrique
est de montrer que l'on pourra faire avec la librairie Pyduino ce que
l'on fait avec Arduino... L'objectif final est cependant de coupler le
contrôle des broches E/S avec les fonctions avancées du système
(fichiers, capture d'image, synthèse vocale, etc... ) comme cela est
décrit dans les sections qui suivent. La bonne nouvelle : un code Arduino contrôlant les broches E/S sera utilisable quasiment à l'identique avec Pyduino !
S'installer
Bases
Sorties Numériques
Sorties analogiques
Entrées Numériques
Entrées analogiques
Console
A VENIR :
Sorties Numériques " de puissance"
- Adaptation simple en tension et en intensité de 8 broches E/S numériques d'un mini-PC à l'aide d'un ULN2803
- Contrôler un ruban à LEDs RGB à l'aide d'un miniPC
- Isoler totalement une broche E/S numérique du mini-PC en sortie et le circuit contrôlé à l'aide d'un opto-coupleur
- Contrôler un moteur CC à l'aide d'une interface de puissance
- Contrôler 2 moteurs CC à l'aide d'une interface de puissance

La très grande
force d'un miniPC : de nombreuses fonctions dites de "haut-niveau" sont
immédiatement disponibles (périphériques d'entrée, fichiers, réseau,
sons, vidéo, webcam, synthèse vocale, reconnaissance vocale...), le tout
SANS AUCUN SHIELD supplémentaire ! C'est ce qui fait
toute la différence avec Arduino et sa pile de shields nécessaires pour
arriver à un résultat même pas équivalent... D'autre part, le langage Python offre plusieurs facilités de codage qui simplifie grandement les choses !
Dans cette rubrique quelques exemples d'utilisation des fonctions du
système à partir d'un code Pyduino : utilisation de périphériques
d'entrée, des fichiers, du réseau (serveur HTML, Javascript et même Ajax
!), de la webcam, de la synthèse vocale, de la reconnaissance vocale...
Histoire de prendre en main la programmation du système avec Pyduino :
amusez-vous bien !
Y avez-vous pensé ?
Les
codes Pyduino de cette rubrique sont exécutables sur n'importe quel
mini-PC ou poste fixe tournant sous Gnu/Linux, puisqu'aucune fonction
E/S n'est utilisée. Vous pouvez donc transformer votre PC en serveur
graphique, le contrôler à la voix ou autre très simplement !
Périphériques d'entrée
Simple :
Multimédia :
Ligne de commande
Fichiers
Répertoires :
Texte :
Image :
Audio :
Video :
- Capturer une vidéo avec son à partir de la webcam
Reseau
Intro :
Serveur TCP/Http :
Serveur TCP/Http/HTML:
Serveur TCP/Http/HTML + Javascript
Non graphique
- Afficher le contenu d'un fichier dans une zone texte à partir du code Javascript *
Graphique sans librairie graphique
Avec la librairie graphique RGraph
Avec la librairie graphique Dygraphs
- Données générées :
- Tableau Numpy :
- Fichier de données texte :
Serveur TCP/Http/HTML + Javascript + Ajax
Non graphique
Graphique ans librairie graphique
Avec la librairie graphique RGRaph
Avec la librairie graphique Dygraph
Mail:
La très grande
force d'un miniPC : de nombreuses fonctions dites de "haut-niveau" sont
immédiatement disponibles (périphériques d'entrée, fichiers, réseau,
sons, vidéo, webcam, synthèse vocale, reconnaissance vocale...), le tout
SANS AUCUN SHIELD supplémentaire ! C'est ce qui fait
toute la différence avec Arduino et sa pile de shields nécessaires pour
arriver à un résultat même pas équivalent... D'autre part, le langage Python offre plusieurs facilités de codage qui simplifie grandement les choses !
Dans cette rubrique quelques exemples d'utilisation des fonctions
Multimédia à partir d'un code Pyduino : utilisation du son, de la
webcam, de la synthèse vocale, de la reconnaissance vocale... Histoire
de prendre en main la programmation du système avec Pyduino :
amusez-vous bien !
Y avez-vous pensé ?
Les
codes Pyduino de cette rubrique sont exécutables sur n'importe quel
mini-PC ou poste fixe tournant sous Gnu/Linux, puisqu'aucune fonction
E/S n'est utilisée. Vous pouvez donc transformer votre PC en serveur
graphique, le contrôler à la voix ou autre très simplement !
Audio
En sortie :
En entrée :
Voix
Synthèse vocale :
Reconnaissance vocale :
Image
Video
En sortie :
En entrée :
- Capturer une vidéo avec son à partir de la webcam
Nous voilà au
coeur du sujet : coupler ensemble les fonctions du système (fichier,
réseau, son, voix, ...) et les broches E/S (capteurs, dispositifs,
etc...) ! Les possibilités deviennent alors très très intéressantes et
n'ont pour limite que l'imagination, LE TOUT AVEC UNE SEULE ET MEME CARTE, sans shield supplémentaire nécessaire ! Il
devient alors possible, soit de déclencher des fonctions systèmes à
partir d'un évènement sur une broche E/S ( par exemple : capturer une
image par appui sur un bouton poussoir), ou de contrôler les broches E/S
à partir des fonctions système (par exemple : contrôler les broches
numériques en sortie à la voix !)... Ma librairie Pyduino vous simplifie la vie pour faire tout çà : à vous de jouer !
Y avez-vous pensé ?
Il est possible d'exécuter simultanément plusieurs codes Pyduino sur
votre miniPC : la même carte pourra donc simultanément être un serveur
TCP opérationnel avec un premier code tout en contrôlant localement les
broches E/S avec un second code et tout en permettant l'édition
simultanée d'un nouveau code ! Impossible à réaliser avec Arduino et un
shield Ethernet par exemple... Au final, un miniPC avec Pyduino peut
potentiellement jouer le rôle de plusieurs ensembles "cartes Arduino +
shields", et en tout cas vous permet simultanément d'exécuter un ou
plusieurs codes opérationnels tout en continuant à développer !
==== Broches E/S ====
Sorties numériques
Simples
Multimédia
Entrées numériques
Système
Fichier
Réseau
Audio
Voix
Image
Video
Entrées analogiques
Voix :
Fichier :
Reseau :
Reseau : HTML + Javascript
Reseau : HTML + Javascript + Ajax
Sorties analogiques
==== Système ====
Périphériques d'entrée USB
Numpad :
GPS :
- Afficher la position du lieu
Souris :
- Détecter appui sur bouton souris
Joystick :
- Détecter position et appui sur bouton de Joystick
Ligne de commande
Fichiers
Texte :
Image :
Audio :
- Enregistrer un fichier son lors appui sur un bouton poussoir
Video :
- Enregistrer un fichier vidéo avec son lors appui sur un bouton poussoir
Reseau
Intro :
Serveur TCP/Http :
Serveur TCP/Http/HTML:
Serveur TCP/Http/HTML + Javascript
Serveur TCP/Http/HTML + Javascript + Ajax
Sans librairie Graphique
Avec librairie RGraph
Avec librairie Dygraphs
Mail:
==== Multimédia ====
Audio
En sortie :
En entrée :
- Enregistrer un fichier son lors appui sur un bouton poussoir
Voix
Synthèse vocale :
Reconnaissance vocale :
Image
Vidéo
En sortie :
En entrée :
- Enregistrer un fichier vidéo avec son lors appui sur un bouton poussoir
7. Codes Pyduino + PyQt (interface graphique)
Sur un miniPC
embarqué auquel on accède par accès distant VNC, l'utilisation de
l'environnement graphique Processing pour créer des interfaces montre
vite ses limites, aussi bien en ce qui concerne les ressources utilisées
(lancer un programme Java met la CPU à 100% pendant plusieurs
secondes...) que des possibilités graphiques elle-même (avec Processing,
l'aspect des GUI est basique...) . Or il est indispensable de pouvoir
exécuter des interfaces graphiques fluides et rapides pour contrôler le
miniPC à partir d'une tablette tactile ou d'un poste fixe. Une solution
élégante et relativement simple passe par l'utilisation du logiciel
QtDesigner pour créer des interfaces graphiques utilisant la librairie
Qt et programmables en Python, avec PyQt. Suivez le guide !

Dans cette
rubrique, apprenez à créer des interfaces graphiques pour contrôler et
interagir avec les broches E/S : une fois l'interface graphique lancée,
vous pourrez simplement l'afficher sur un écran HDMI de votre choix,
mais surtout, vous pourrez contrôler le pcduino à partir d'un poste fixe
ou d'une tablette tactile par accès distant via le réseau ethernet
filaire ou wifi !
S'installer
Sorties numériques
Entrées numériques
Entrées analogiques
Affichages numériques
Affichages analogiques
Affichages sous forme de courbe
Monovoie :
Multivoies :
- Oscilloscope basse fréquence 6 voies sur 1 graphique
- Oscilloscope basse fréquence 6 voies sur 1 graphique avec widget de sélection des courbes à afficher
- Oscilloscope basse fréquence 6 voies sur 6 graphiques
A savoir
: toutes les interfaces graphiques affichant les courbes proposées ici,
basées sur la librairie pyqtgraph, permettent le zoom sur le graphique,
l'export par simple clic droit, au format vectoriel *.svg, image *.png,
data texte *.csv et même le copier/coller dans le presse-papier ! Une réutilisation maximale des graphiques obtenus est ainsi possible.
Sorties analogiques
Voir les rubriques PyQt du site :
|
|
Grâce aux nombreux tutos détaillés
proposés (légèrement payants), apprenez à créer de vraies petites
interfaces graphiques opérationnelles. De l'utilisation d'un simple
bouton à l'utilisation d'un graphique scientifique avancé ou bien
l'utilisation de la reconnaissance visuelle ou encore la création d'un
terminal série ou réseau, découvrez à votre rythme les étonnantes et
très nombreuse possibilités de PyQt.
|
|
|
Je rassemble dans cette rubrique la
plupart des codes Python + Qt que j'ai écrit sous forme "as is", bruts
de décoffrage. C'est un peu ma "boite à codes" PyQt où je rassemble
tests, idées et tout ce qui me passe par la tête, en vrac. Les codes les
plus pertinents sont détaillés et repris dans la rubrique Ateliers Python + Qt et les codes d'interfaces opérationnelles utilisables en pratique sont disponibles dans la rubrique PyQt Apps.
|
Quelques Programmes essentiels
Périphériques d'entrée
- Clavier numérique graphique (utilisable avec un tablette graphique...)
Systeme
Fichiers
- Visualisateur fichier de données sous forme de courbe avec timeline
Reseau
Audio/Voix
- Interface de test de la synthèse vocale
Image
- Capturer une image par clic sur un bouton graphique (appareil photo)
- Détection de visage avec la librairie OpenCV
S'installer
Sorties numériques
- Interface de contrôle à 5 boutons pour contrôle d'un robot mobile avec retour vidéo
Entrées numériques
Entrées analogiques
- Serveur graphique de données analogiques
Sorties analogiques
Périphériques d'entrée
- Utiliser un keypad en tant que télécommande
- Allumer des LEDs à l'aide d'un Joystick
- Application "pompe à essence"
Systeme
Fichiers
Reseau
- Contrôler les broches E/S à partir d'une interface web javascript + Ajax
- Serveur graphique de données analogiques
Audio/Voix
Image
- Capturer une image webcam et la visualiser par appui sur un bouton poussoir
- Application photomaton
8. Exemples d'utilisation du RaspberryPi seul
8.1 Réseau
- Le RaspberryPi en serveur web
8.2 Vidéo
8.3 Audio
- Lecture de fichier son
- Synthèse vocale
8.4 Fichiers
- Copier/coller des fichiers vers et depuis le RaspberryPi, sans fil.
9. Exemples d'utilisation du RaspberryPi avec Arduino
Certains
voudraient opposer RaspberryPi et Arduino... Moi, je vois au contraire
la possibilité d'une alliance, et même une symbiose entre les 2 cartes,
chacune apportant sa spécificité : Arduino pour une gestion facilitée
des aspects de bas niveau et le contrôle de dispositifs (moteurs, LCD,
etc...), RaspberryPi pour les fonctions avancées telle que la lecture de
fichier son, la synthèse vocale, etc... En faisant communiquer les 2
cartes au sein d'un même système embarqué, on obtient une solution
polyvalente, programmable à distance et sans fil. Suivez le guide !
Juin 2016 : l'arrivée du pcDuino vient changer la donne : un miniPC avec une connectique Arduino intégrée !
10. Applications complètes basées sur le RaspberryPi
- Traqueur solaire temps réel avec visualisation 3D de la position courante du soleil sur l'Horizon (Arduino + RPi )
11. Liens utiles