lundi 17 juin 2013

Introduction au Raspberry pi

Si vous ne le connaissez pas encore malgré son immense succès international, cet article vous présente le Raspberry pi. Il s'agit d'un petit ordinateur de la grandeur d'une carte banquaire et sur lequel on peut faire tourner linux. Le Raspberry pi a été créé par une société caritative Britannique dans le but de promouvoir l'éducation en informatique au plus faible coût possible. En effet la carte Raspberry pi ne coûte que 25$ dans sa version A et 35$ dans sa version B. bien sur pour son utilisation il faut au mininum ajouter à ce coût un clavier, une souris et un moniteur. Il n'en demeure pas moins que grâce au Raspberry pi les écoles peuvent équiper les classes d'ordinateurs à faible coût. Mais le Raspberry pi ne doit pas seulement son succès au monde de l'écudation mais au fait que les hobbyistes se le sont appropriés avec enthousiame. En moins d'un an il s'en est vendu plus d'un million dans le monde.

comparaison des 2 modèles

Les modèles A et B se distinguent de plusieurs façons mais voyons d'abord ce qu'ils ont en commun. En fait le circuit est le même pour les 2 modèles sauf que sur le modèle A certains composants n'ont pas été installés. L'ordinateur utilise un Soc (Systen On Chip) Broadcom BCM2835 qui tourne à 700Mhz et qui contient un core ARM1176JZFS et un module GPU Videocore 4 permettant la Haute définition 1080p30. Commun aux 2 modèles il y a la sortie HDMI (vidéo HD), sortie vidéo composite, sortie AUDIO (prise 3,5mm standard), une prise µUSB pour l'alimentation, un connecteur pour la carte SD, un connecteur GPIO et 2 connecteurs de périphériques spéciaux (i.e. caméra et LCD).

comparaison
modèle Amodèle B
ProcesseurBroadcom BCM3855, ARM11idem
RAM256Mo512Mo
Conn. USB 2.0 A12
Ethernet 10/100nonoui
Conn. HDMIouioui
Conn. µUSB alimentationouioui
Conn. audio 3,5mmouioui
sortie vidéo NTSCouioui
Conn. GPIO 26 brochesouioui
Conn. carte SDouioui
Conn. S5 pour caméraouioui
Conn. S2 DSI (LCD)ouioui

Démarrage rapide

Comme je n'avais pas besoin de l'accès internet pour l'usage que je veux en faire j'ai acheté le modèle A. Donc ce qui suis s'applique à ce modèle mais pour l'essentiel c'est indentique pour le modèle B.

Préparation de la carte SD

Vous pouvez achetez chez Newark/element14 une carte SD 4Go avec Raspbian Linux pré-installé sinon il faut le télécharger à partir de cette page. Notez qu'il y a d'autres OS de disponibles, voir à ce sujet l'article de Wikipedia francophone. Comme mon laptop fonctionne sous windows 7, j'ai utilisé le logiciel unetbootin pour transférer l'image de Raspbian wheezy sur la carte SD. La procédure est si simple que je pense que ça se passe d'explications.

N'ayant pas de moniteur (ou téléviseur) avec entrée HDMI, pour mon premier démarrage j'ai utilisé la sortie composite que j'ai branché sur mon téléviseur. J'ai branché un clavier et j'ai utilisé une chargeur 5 volt avec un cable USB A vers µUSB pour alimenter le Raspberry pi. Au premier démarrage l'applicatif de configuration raspi-config est lancé automatiquement. Pour naviger dans cette application il faut utiliser les touches FLÈCHE HAUT,FLÈCHE BAS, TAB et ENTER. Le menu de configuration est le suivant:

optiondescription
infoune brève description de cet application.
expand_rootfsSi vous voulez que linux utilise tout l'espace disponible sur la carte SD, utilisez cette option pour étendre la partition.
overscanDétermine le type de balayage utilisé par le moniteur vidéo. Cette option n'a aucun effet sur l'affichage d'un téléviseur du moins si on utilise l'entrée composite.
configure_keyboardaccède à une liste permettant de choisir le type de clavier que vous utilisez. Dans la majorité des cas la valeur par défaut convient.
change_passRaspbian viens avec l'utilisateur pi pré-configuré, cette option permet de définir le mot de passe de cet utlisateur. Faites-le maintenant! Vous pourrez créer un autre utilisateur plus tard. Celui-là a le privilège SUDOERS donc il pourra servir pour l'administration.
change_localeLà il s'agit de choisir votre langue et la disposition des touches sur le clavier. Par exemple pour le Québécois que je suis ma préférence va à fr_CA.UTF8 UTF8 pour un Français se sera sans sans doute fr_FR.UTF8 UTF8. Les 2 premières lettres c'est la langue. Les 2 lettres après (en majuscules) c'est la disposition du clavier. UTF8 c'est l'encodage des caractères. Vous pouvez choisir un encodage ISO mais UTF8 est maintenant la norme internationale.
change_timezoneChoississez dans la première liste votre continent et ensuite dans la deuxième votre ville de résidence ou une ville qui a le même fuseau horaire que votre lieu de résidence.
memory_splitPermet de déterminer la quantité de mémoire allouée au GPU, 64Mo par défaut. J'ai laissé la valeur par défaut.
overclockSi vous trouvez que 700Mhz ce n'est pas assé rapide vous pouvez overclocker le CPU, jusqu'à 1Ghz. Prudence! L'overclocking a 2 effets néfastes. Premièrement il peut rendre le système instable. Deuxièmement il use le CPU plus rapidement car il devient plus chaud. Pour ma part je me contente d'un modeste overclocking à 800Mhz.
sshCette option n'a d'intérêt que si vous avez le modèle B. Activez ssh si vous voulez accéder à votre raspberry pi via l'application ssh (ou autre secure telnet) à partir d'un autre ordinateur à travers le réseau local ou l'internet.
boot_behaviorCette option détermine si l'environnement graphique X et le bureau LXDE seront lancés automatiquement au démarrrage. Si vous préférez travailler en ligne de commande choississez no. Vous pourrez toujours lancer X à partir de la ligne de commande avec startx. Étant donner l'usage que je veux faire de mon r-pi et le peut de ressource RAM du modèle A je préfère travailler en ligne de commande.
updateCette option ne concerne que le modèle B. Elle permet de faire les mises à jour à partir de l'internet.

Après configuration raspi-config demande si vous voulez redémarrer maintenant. Répondez yes. Par la suite l'application raspi-config n'apparaît plus au démaarrage mais peut-être relancée à partir de la ligne de commande.

Utilisation sans moniteur ni clavier/souris

Après avoir fait cette configuration, j'ai débranché clavier, téléviseur et alimentation du r-pi pour l'utiliser comme s'il s'agissait d'une platine de développement de micro-contrôleur. Au départ Raspbian configure les broches 8 et 10 du connecteur P1 (GPIO) comme une interface console sérielle. Si on se réfère à la photo on voit comment j'ai utilisé l'interface console du r-pi pour accéder au système en utilisant PuTTY comme émulateur de terminal. J'ai utilisé:
  • raspberry pi modèle A
  • petite platine sans soudure
  • adapteur de niveaux de tension RS-232/TTL Pololu 23201a
  • adapteur USB/RS-232
  • émulateur de terminal PuTTY
En résumé, le r-pi est alimenté par le laptop en utilisant un cable USB A-µUSB et la sortie console sur GPIO 8 et 10 du r-pi est connecté à l'adapteur Pololu qui lui est connecté à l'adapteur USB-rs232 qui lui est branché à mon laptop. l'alimentation de l'adapteur Pololu se fait par les broches 1 (3.3v) et 13 (gnd) du connecteur P1 du r-pi.

PuTTY est configuré de la façon suivante:

On met l'alimentation a ON et on voit apparaître dans la fenêtre de PuTTY les messages de boot du r-pi jusqu'au prompt du login.

On n'est pas limité à la ligne de commande, en installant VNC sur le r-pi et vnc viewer sur le PC on pourrait en principe utiliser l'environnement graphique sur le r-pi à partir du PC. Je n'ai pas fait le test pour voir à quel vitesse ça fonctionne cependant considérant que le lien est a 115200BAUD ça pourrait-être trop lent. Cependant il est possible d'augmenter cette vitesse jusqu'à 1MBAUD. En passant le nom du périphérique pour le port sériel de la console sur le r-pi est /dev/ttyAMA0. Il faut aussi savoir que tant que le UART1 est utilisé comme console il ne peut-être utilisé pour autre chose, mais si vous utilisez le r-pi avec moniteur/clavier/souris vous pouvez reconfigurer Raspbian pour qu'il n'utilise plus les broches 8 et 10 comme console sérielle.

suppression de la console sérielle

faites une copie de sécurité du fichier /boot/cmdline.txt
>cp /boot/cmdline.txt /boot/cmdline.bak
Utilisez l'éditeur nano pour modifier son contenu pour enlever les références à /dev/ttyAMA0. la ligne modifiée devrait ressemblé à ceci:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Il faut aussi supprimer les références à /dev/ttyAMA0 dans le fichier /etc/inittab. Faites une copie de sécurité du fichier avant de le modifier.
>cp /etc/inittab /etc/inittab.bak
Mettez simplement en commentaire la dernière ligne du fichier comme ceci:
>#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Après redémarrage les pin 8 et 10 seront toujours configurées comme périphérique /dev/ttyAMA0 mais celui-ci ne sera plus une console et les broches 8 et 10 pourront être reprogrammées comme GPIO.

Développement

Python version 2.7.3 et 3.2 sont installés sur Raspbian ainsi que le module pygame qui permet de créer des jeux vidéo ainsi que le module RPi qui donne accès aux GPIO.

Voici un exemple de script python qui bascule l'état de la broche 18 de P1 entre 0 et 1.
le module RPi nécessite des privilèges root pour fonctionner il faut donc lancer python avec la commande sudo tel qu'illustré sur cette capture d'écran.

WiringPi

WiringPi est une librairie créé par Gordon Henderson qui permet de programmer les GPIO et périphériques du r-pi à la manière du système Wiring d'Arduino. Pour télécharger suivez ce lien, cliquez avec le bouton droit de la souris sur le snapshot le plus récent et dans le menu surgissant cliquez enregistrer sous... Si vous avez un modièle B vous pouvez le faire à partir du r-pi sinon sauvegarder le fichier sur une clé USB. Branchez la clé USB sur le port USB du r-pi. le système Raspbian va détecter la clé automatiquement. Voici la série de commandes à faire dans la console. Il y a plusieurs exemples d'utilisation de la librairie dans le dossier wiringPi-xxxx/examples.

En conclusion

Considérant son faible coût le Raspberry pi est certaiment un système intéressant pour les hobbyistes. Grâce à l'utilisation du langage de haut niveau Python et le module RPi il est facile de faire du contrôle sans avoir à se casser la tête avec de la programmation bas niveau et la lecture de centaines de pages de spécifications. C'est une sorte de super Arduino.

D'autres se servent du modèle B comme lecteur multimedia en utilisant le logiciel XBMC.

Il n'y a pas que des avantages. D'un part GNU/Linux n'est pas un système d'exploitation temps réel et d'autre part sa consommation électrique est bien supérieure à ce qu'on peut obtenir avec une carte micro-contrôleur basée sur ARMm ou PIC32MX. Donc pour l'utilisation sur piles ce n'est pa l'idéal.

Liens utiles

Il y a beaucoup de références à Raspberry pi dans l'internet ceci n'est qu'un petit échantillon.

Anglais

Fondation Raspberry pi
Accès bas niveau aux périphériques
WiringPi

Français

Forum francophone
ModMyPi
Article Wikipedia
Raspberry-pi sur Lea-Linux
Raspberry-pi sur eLinux