(Raspbian) de base - Mon Club-Elec
Transcription
(Raspbian) de base - Mon Club-Elec
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr L'objectif • • Le Raspberry est un mini-PC aux caractéristiques physiques impressionnantes : poids 45g, consommation 3W, petite taille. L'idée est donc de pouvoir préserver ce « potentiel » de légèreté et de simplicité sans avoir besoin d'ajouter de nombreux périphériques pour contrôler le système. Ajouter des périphériques encombrants à une petite plateforme lui fait perdre une bonne partie de son intérêt ! L'idéal serait donc de n'utiliser que l'indispensable à savoir une alimentation 5V régulé et une connexion réseau sans fil (par wifi) pour pouvoir contrôler le RaspberryPi à distance. C'est ce que nous allons faire ici : configurer le système de base pour le rendre accessible à distance et sans fil permettant de le contrôler depuis un poste fixe et lui préservant ainsi toutes ses caractéristiques de légèreté, petite taille et basse consommation. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 1 / 52 Ce que l'on va faire ici : le système final obtenu La procédure décrite ici permet d'obtenir un Raspberry Pi : Caractéristiques générales du système > qui démarre en autologin à la mise sous tension > avec autoconnexion réseau wifi ou éthernet à la mise sous tension > avec accès au bureau distant activé par serveur VNC qui démarre automatiquement au démarrage ce qui permet l'accès sans fil et à distance au RaspberryPi laissé en situation réelle d'utilisation et libérant les 2 ports USB disponibles pour des périphériques USB (webcam, clé wifi...) A noter que le simple copier/coller de texte entre le poste fixe et le RaspberryPi est actif... > en résolution 800x600 modifiable si besoin > basé sur le système Raspbian (Base Debian + LXDE – Openbox ) installé initialement qui n'utilise que 40 Mo au démarrage (mesure avec htop) Fonctionnalités systèmes utiles > avec Capture vidéo par webcam activée (et donc retour vidéo distant sans fil) > Lecture de fichier son facile ( et donc déclenchement de sons, bruitages, etc...) > synthèse vocale installée > enregistrement de son > reconnaissance vocale en mode connecté Système de développement > IDE Arduino 1.0.1 opérationnel et communication avec carte UNO opérationnelle et donc fonction de programmation distante sans fil et à distance de la carte Arduino + visualisation Terminal Série + saisie de chaîne via le Terminal Série, etc... > IDE Processing 1.5.1 opérationnel avec communication série opérationnelle avec la carte Arduino et donc : > accès par ligne de commande programmée aux fonctions de synthèse vocale, etc... déclenchable depuis Arduino... > fonctions de datalogging texte et image simplifié > accès à la reconnaissance vocale google à partir d'une entrée son de la webcam > etc... Fonctionnalités systèmes avancées : > partage de fichier NFS opérationnel (et donc transfert de fichier sans fil par simple copier/coller depuis le poste fixe Gnu/Linux) Utile pour des fichiers sons, des codes etc... > +/- sécurisation SSH Remarque Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 2 / 52 Vous pourriez très bien vous contentez d'utiliser une image du système tout prêt comme celle que je mets en ligne. Mais je vous conseille très fortement de personnaliser vous-même le système de base, au moins une fois, pour comprendre la procédure et vous familiarisez avec Gnu/Linux. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 3 / 52 Schéma fonctionnel de synthèse • Au final, on va obtenir le système fonctionnel suivant, accessible sans fil et par wifi, programmable à distance, ce qui ouvre pas mal de possibilités de combinaisons utilisant tout ou partie des fonctionnalités disponibles tant au niveau du RaspberryPi que d'Arduino. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 4 / 52 Principe d'installation en ligne de commande • On commence par lancer le RaspberryPi avec tous ses périphériques branchés, comme pour l'installation initiale. Connexion internet active obligatoire ! • Pour la suite, nous allons utiliser l'installation des différents paquets logiciels utiles, en ligne de commande. Pour ce faire, il suffit d'ouvrir un Terminal, ce qui se fait par un double clic sur l'icône LXTerminal présente sur le bureau du RaspberryPi. On obtient alors une fenêtre avec une invite. Ce qu'il faut au minimum savoir concernant le système Gnu/Linux (Raspbian) installé sur le RaspberryPi • • Un système Gnu/Linux repose sur l'assemblage de « morceaux » logiciels, que l'on va assembler entre eux à la façon d'un lego. Pour assurer une cohérence d'ensemble, ces paquets compilés sont stockés sur des serveurs appelés « dépôts ». En fonction des besoins, on va ajouter des paquets au système. Sur le système Gnu/Linux, un utilitaire va permettre de gérer ces paquets : il s'agit d'apt qui dispose de plusieurs commandes notamment : • ◦ apt-get install nompaquet pour installer un paquet D'autre part, un système Gnu/Linux repose sur un système de droits accordés à un utilisateur donné. L'utilisateur lambda ne peut pas faire tout ce qu'il veut sur le système. Seul un administrateur (ou « root ») peut réaliser toutes les opérations. Dans certaines situations, on donne à un utilisateur donné les droits « root » à l'aide de la commande sudo qui sera placée avant la commande à exécuter. • Enfin, certaines commandes de base sont à connaître : cd pour se déplacer dans les répertoires, ls pour lister un contenu de répertoire, etc... Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 5 / 52 Pour faire simple... • Pour vous faire comprendre simplement ce qu'est la distribution Debian (et donc Raspian), imaginez un stock de 35000 pièces de Lego différentes : • A partir de toutes ces « pièces logicielles », appelées « paquets » qui sont stockés dans les dépôts, il est possible d'enrichir à la demande le système de base. Une fois le système de base installé, vous disposez d'un système fonctionnel mais limité à l'essentiel. Ici, nous allons l'enrichir de façon à lui ajouter des fonctions utiles (accès distant, wifi, vidéo, synthèse vocale, etc...) tout en gardant un système de petite taille (on a que 8Go sur la carte SD et 256 Mo de RAM... donc va falloir la jouer « fine et rusée »!). Suivez le guide... ! Nous allons ici améliorer la distribution Raspian de base pour l'adapter à nos besoins... Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 6 / 52 Mise à jour du système • La première chose à faire va être de mettre le système à jour avec la commande : $ sudo apt-get update • Noter que çà peut prendre un certain temps. Une fois fait, on peut fermer le terminal. Remarque Pour l'installation de nouveaux paquets, en fait aller à l'essentiel sur le RaspberryPi : tout paquet de plus de 10 Mo est à éviter... sauf cas particulier. Sinon, on peut aussi installer le gestionnaire de mise à jour avec la commande $ sudo apt-get install update-manager puis le lancer manuellement $ sudo update-manager Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 7 / 52 Petites adaptations de base du système installé • Une chose simple à faire et plutôt utile en pratique est de mettre la barre des tâches en partie supérieure. Pour ce faire, clic droit sur la barre des tâches et choisir l'option « Paramètres su tableau de bord : • Dans la fenêtre qui s'ouvre, cliquer sur l'onglet « taille » et cocher position « Haut » puis fermer. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 8 / 52 • Le tableau de bord est désormais en position haute ce qui sera plus pratique pour un contrôle à partir d'un petit écran notamment (netbook, tablette) : Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 9 / 52 Installation de quelques logiciels système utiles Htop, un moniteur système léger • htop est un moniteur système léger qui permet d'avoir des informations sur l'usage de la RAM, etc... • Installation : $ sudo apt-get install htop • Utilisation : $ htop • Résultat : • Intéressant pour avoir des informations sur le système. Premières caractéristiques du système : moins de 50 Mo de RAM utilisés sur 184 Mo... Ok. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 10 / 52 Geany, un éditeur de texte et de code léger • Geany est un éditeur de texte et de code léger. Utile pour modifier facilement les fichiers de configuration ultérieurement. • Installation : $ sudo apt-get install geany • Utilisation : $ geany • Résultat : Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 11 / 52 Modifier la résolution d'affichage par défaut • Par défaut, la résolution de l'affichage utilisé, notamment par connexion vidéo RCA, peut être assez petite. Il devient alors intéressant de fixer cette résolution manuellement. La résolution de l'affichage se fait via un fichier de configuration (comme beaucoup de paramétrages sur un système Gnu/Linux). On va donc ouvrir ce fichier : $ cd /boot/ $ sudo geany config.txt • décommenter framebuffer_width et framebuffer_height et fixer les valeurs voulues. 800 x 600 c'est pas mal : Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 12 / 52 +/- xfce4-power-manager, un gestionnaire d'énergie • xfce4-power-manager est un gestionnaire d'énergie et de mise en veille léger. • Installation $ sudo apt-get install xfce4-power-manager • Utilisation : pour les réglages : $ xfce4-power-manager-settings • Résultat : on pourra régler au besoin le gestionnaire de façon à ce que l'écran ne passe pas en veille, etc... • +/- activer le chargement au lancement via menu Préférences > Paramètres de la session . En fait, il n'est pas évident que ce gestionnaire soit vraiment utile sur le raspberryPi Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 13 / 52 Autres logiciels ? • Des logiciels habituels tels que chromium, firefox, etc... sont trop gourmands pour être utilisés sur le RaspberryPi. Les essais sont peu concluants. • Une bonne source d'inspiration en fonction de ses propres besoins : http://harbhag.wordpress.com/2010/07/02/best-lightweight-applications-for-linux/ Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 14 / 52 Rendre le système accessible à distance • Nous voilà enfin au cœur du sujet : rendre le système accessible à distance par « accès au bureau distant » par réseau ethernet ou sans fil. • Le RaspberryPi est un système minimal et ne dispose que de 2 ports USB qu'il vaut mieux réserver pour des périphériques plutôt que de les utiliser pour un clavier et une souris... De plus, tout l'intérêt du RaspberryPi est sa petite taille, sa légèreté et il est dommage de perdre tous ces atouts en l'encombrant de périphériques de contrôle encombrants...C'est pourquoi maintenant que le système est installé et opérationnel, on va le rendre accessible à distance sur un réseau à partir de n'importe quel autre système (Windows, Linux, MacOsX et même une tablette Android si on veut... ) • Comme çà on va pouvoir ensuite travailler sur RaspberryPi... sans le toucher, via le réseau éthernet ou sans fil... par accès au bureau distant. On va donc commencer par installer un serveur VNC (VNC est une technologie ancienne mais robuste qui permet d'accéder à distance au bureau d'un PC) : $ sudo apt-get install vino • Ensuite, on va configurer les préférences du serveur vino en lançant l'utilitaire de paramétrage (pas en sudo +++) : $ vino-preferences • Dans la fenêtre obtenue, autoriser visionnage et contrôle du bureau distant, désactiver la confirmation de l'accès et activer accès distant avec mot de passe et mettre un mot de passe de son choix. Puis clic sur « fermer » Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 15 / 52 • On peut à présent tester l'accès distant manuellement à l'aide de la commande (pas sudo +++) : $ /usr/lib/vino/vino-server • On peut alors tester la connexion depuis le poste fixe. Pour connaître l'adresse ip du RaspberryPi, saisir la commande ifconfig dans un Terminal et chercher l'adresse de l'interface eth0 (de la forme inet adr : xxx.xxx.xxx.xxx) Utiliser cette adresse pour se connecter depuis le poste fixe. Capture de la fenêtre VNC sur le poste fixe client : cool non ? Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 16 / 52 • L'idéal est bien sûr de pouvoir lancer vino au démarrage automatiquement. On va ouvrir à nouveau un fichier de configuration. $ sudo geany /etc/xdg/lxsession/LXDE/autostart • Puis ajouter la ligne @/usr/lib/vino/vino-server puis enregistrer et relancer le RaspberryPi (clic sur le bouton d'arrêt dans la barre des tâches) : • Normalement, au lancement suivant, vous pouvez vous connecter directement au RaspberryPi, une fois qu'il a redémarré ! A ce stade, vous pouvez débrancher la souris, le clavier, l'écran (gardez-le connecté quand même pour le moment..) et travailler sur votre RaspberryPi directement à partir du poste fixe via le réseau éthernet ! Ceci veut aussi dire que vous pouvez utiliser votre RaspberryPi sur un réseau de bloc CPL dans votre maison : vous dans votre bureau, le RaspberryPi à la cave ou au grenier. Et vous pouvez en mettre plusieurs sur le réseau si vous arrivez à en avoir... ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 17 / 52 Installation de fonctionnalités système utiles • A présent nous allons poursuivre l'installation de fonctionnalités utiles. Vidéo par webcam : logiciel de capture Guvcview • • Pour pouvoir utiliser facilement une webcam sur le RaspberryPi, je vous conseille d'utiliser guvcview, un utilitaire léger et efficace. Installation : $ sudo apt-get install guvcview • Utilisation : ◦ connecter à présent une webcam sur la port USB. La seule contrainte est l'utilisation d'une webcam qui sera reconnue « out-of-the-box » par la distribution Raspbian utilisée. Moi j'ai utilisé sans problème une Hercules Dualpix Exchange, une Logitech C270, une Eye PS3... D'une manière générale, toute webcam compatible avec le driver uvc devrait fonctionner. Voir la liste complète ici : http://www.ideasonboard.org/uvc/ ◦ Il est préférable de lancer guvcview en ligne de commande car les paramètres par défaut risque de faire bugguer la capture vidéo (eh oui, on est sur un petit système...) : $ guvcview -s 320x240 ◦ Sinon, on peut lancer depuis le menu Applications > Son et vidéo > guvcview mais les paramètres par défaut ne sont pas supportés très longtemps par le RaspberryPi (648x480@25fps...) ◦ On obtient 1 fenêtre de réglage et une fenêtre vidéo : aller dans l'onglet « Video et fichier » et régler la vitesse à 10 fps voir 5fps et la taille à 320x240 Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 18 / 52 • Cocher également la case « afficher » si vous souhaitez que le débit d'image s'affiche dans le titre de la fenêtre vidéo. Pratique. • Il suffit ensuite de limiter la taille de la fenêtre VNC sur le poste fixe pour n'avoir que l'image vidéo de visible. Mettez la fenêtre au premier plan et le tour est joué ! Vous pouvez même surveiller vos poissons rouges si vous voulez ! Capture de la fenêtre VNC sur le poste fixe. La taille est réduite à celle de la vidéo. Conseils techniques : • • Plus vous utiliserez une résolution petite et plus la fluidité sera au rendez-vous Vous pouvez également capturer une image ou une vidéo à tout moment avec l'interface guvcview • Pour connaître la bande passant utilisée par la connexion VNC, utiliser l'utilitaire cbm A ce stade vous disposez d'un système permettant l'accès sans fil au retour vidéo en provenance du Raspberry Pi ! Mettez « la bête » sur un robot mobile ou dans la nacelle d'un petit ballon sonde : vous ferez des trucs déjà très sympa ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 19 / 52 Matériel nécessaire pour les fonctions utilisant la sortie audio • Le Raspberry dispose d'une sortie audio jack 3,5mm. Pour pouvoir utiliser les sons avec le RaspberryPi, la solution la plus simple consiste à utiliser une paire d'enceintes de PC. Choisir un modèle avec ampli intégré et alimentation dédiée et si possible miniature. On pourrait aussi utiliser un simple casque audio. • Noter qu'en situation « embarquée », sur un robot ou autre, il pourra être intéressant d'utiliser une petite carte ampli avec un simple haut-parleur. Exemple avec kit Velleman ampli 2x5W MK190 (dispo chez Gotronic – réf 01359) Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 20 / 52 Synthèse vocale Introduction • Avec la synthèse vocale, on rentre dans un domaine qui fait toujours un peu rêver : un robot, une application qui parle, çà lui donne un petit côté humain... Il est possible de le faire avec des cartes d'extension dédiées, notamment avec Arduino, mais les coûts sont tout de même assez élevés, et en tout cas beaucoup plus qu'un simple RaspberryPi... • La bonne nouvelle, c'est que le système Raspbian que nous avons installé sur RaspberryPi est capable de réaliser la synthèse vocale à partir de chaînes de caractères : nous allons donc ajouter de ce pas cette possibilité à notre système embarqué. Une fois que la synthèse vocale sera installée sur le raspberryPi, il sera ensuite possible de déclencher la synthèse vocale à partir d'Arduino comme nous le verrons ultérieurement. Vous pourrez ainsi annoncer la distance d'un obstacle, dire quelque chose à l'appui sur un bouton poussoir, etc... Non, non, vous ne rếvez pas ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 21 / 52 Solution 1 : synthétiseur vocal espeak et son interface graphique gespeaker • Ce synthétiseur de voix permet la synthèse de voix à partir de chaine texte. Il offre plusieurs vois masculines et feminines. Son un peu métallique cependant. Il existe également une interface graphique appelée gespeaker. • Installation : $ sudo apt-get install libportaudio0 $ sudo apt-get install espeak $ sudo apt-get install gespeaker • Utilisation : ◦ soit lancement en interface graphique depuis le menu Application > Son et Vidéo > Gespeaker. On obtient une interface permettant de générer de la synthèse vocale. ◦ soit lancement en ligne de commande : $ espeak -v fr -s 140 'lecture de texte avec ispik' • Note : lors de l'installation initiale de espeak sur le raspberryPi, il semblait que les voix n'étaient pas installées au bon endroit. ◦ Pour les trouver : find / -name 'espeak-data' -type d ◦ Ensuite se placer dans le répertoire où elles se trouvent : cd /usr/lib/arm-linux-gnueabihf/espeak-data ◦ puis créer répertoire de destination attendu : sudo mkdir /usr/share/espeak-data ◦ puis copier le contenu : sudo cp * /usr/share/espeak-data/ -r Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 22 / 52 Solution 2 : synthétiseur vocal picotts • picottts est un synthétiseur vocal qui donne une bonne qualité de voix féminine. C'est la voix d'Android. A priori pas dispo avec raspbian... Ceci étant, il devrait être possible de compiler les sources... à suivre.. • • Une documentation utile est disponible ici : http://forums.debian.net/viewtopic.php?f=16&t=38976 Tout d'abor ajouter le dépôt des sources : $ sudo geany /etc/apt/sources.list Coller les 2 lignes : deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi Ensuite, mettre à jour avec : $ sudo apt-get update • $ $ $ $ $ $ $ $ $ $ Ensuite : apt-get update apt-get install fakeroot apt-get build-dep libttspico-utils cd mkdir my_build/ cd /my_build/ apt-get source libttspico-utils ls cd svox-1.0-<version>/ dpkg-buildpackage -rfakeroot -us -uc Ensuite c'est parti pour un moment... compter un bon 1/4h d'heure... On est quand même en train de faire une compil' sur le raspberryPi lui-même... excusez du peu... Puis ensuite, on peut faire l'install $ cd $ cd my_build $ ls On obtient plusieurs fichiers *.deb : libttspico0..armhf.deb libttspico-data..all.deb Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 23 / 52 libttspico-dev...armhf.deb libttspico-utils...armhf.deb Il faut installer dans l'ordre pico0, pico-data et pico-utils (le pico-dev n'est pas indispensable) avec : sudo dpkg -i <packagename>_<version>_<architecture>.deb ce qui donne : $ sudo dpkg -i libttspico0..armhf.deb $ sudo dpkg -i libttspico-data..all.deb $ sudo dpkg -i libttspico-utils...armhf.deb Ensuite, on peut tester la synthèse vocale Pico sur notre système RaspberryPi : $ pico2wave -l fr-FR -w test.wav « Salut les amis. Je mappelle pico » $ aplay test.wav Et bingo, çà marche !! Pas belle la vie ? Donc la synthèse vocale pico est opérationnelle sur le RapberryPi... beaucoup mieux que la voix métallique de Espeak, même si c'est déjà sympa quand même. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 24 / 52 Lecture de fichiers sons : lecteur polyvalent mplayer • Pour lire des fichiers sons, notamment des bruitages de toutes sortes, il est nécessaire d'utiliser un lecteur de fichier son. Un lecteur polyvalent est le lecteur mplayer, aussi bien pour la vidéo que les fichiers audio. • Installation $ sudo apt-get install mplayer $ sudo apt-get install mencoder • Utilisation : en ligne de commande, mplayer suivi du nom du fichier à lire : $ mplayer mes_sons/r2d2.mp3 • $ $ $ $ Vous trouverez dans l'archive suivante plusieurs sons utiles à tester : http://www.mon-club-elec.fr/mes_downloads/mes_sons.tar.gz cd mkdir Telechargements cd Telechargements/ wget http://www.mon-club-elec.fr/mes_downloads/mes_sons.tar.gz • puis ouvrir le gestionnaire de fichier et extraire l'archive. Amusez-vous bien ! Remarque A ce stade, vous disposez d'une possibilité très intéressante : il vous suffit de télécharger des fichiers de sons de bruitages (r2d2, alarmes, etc...) et, sans besoin de les convertir, vous pouvez les lire directement sur le raspberryPi. Vous pouvez ainsi ajouter toutes sortes d'effets sonores à vos applications en quelques minutes ! Vous pouvez également lire des fichiers audio de votre choix. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 25 / 52 Fonctions utilisant l'entrée audio • Note technique : RaspberryPi ne dispose pas d'une entrée audio.... mais les webcams intègrent le plus souvent une entrée audio. Donc, il est tout à fait possible de disposer d'une entrée son sur le RaspberryPi • Pour gérer les entrées audio sur le aspberryPi, le plus simple est d'utiliser alsamixer , utilitaire qui s'appelle en ligne de commande $ alsamixer • On obtient une interface sommaire qui permet de gérer les niveaux, entrées, sorties à l'aide des touches de fonctions : • Note : j'ai tenté d'installer PulseAudio qui est une bonne interface pour gérer les entrées sorties/audio mais cela a posé des problèmes (plus de son...) Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 26 / 52 Enregistrement sons • Plusieurs solutions possibles : rec, arecord, … à utiliser selon ses besoins. Le plus simple est d'utiliser arecord déjà installé. • Installation : installer le paquet alsa-utils qui contient arecord. Déjà installé par défaut. $ sudo apt-get install alsa-utils Utilisation : $ arecord <params> • $ arecord Information : $ man arecord • ◦ -l donne la liste des périphériques ◦ -t type de fichier parmi voc, wav, raw,au ◦ - r débit en Hz ◦ - d durée de l'enregistrement en secondes ◦ -V activation vumètre = ne marche pas.. ◦ -c nombre de canaux 1 par défaut ◦ -f cd (16 bit little endian, 44100, stereo) Exemples : • $ arecord -d 5 test.wav $ arecord -d 5 -r 16000 -f cd test.wav # enregistre 5 secondes en qualité CD à 16000hz dans fichier test.wav PS : utilisation de -f cd limite les « craquements » de début et fin d'enregistrement... Note technique : par défaut, mon micro de webcam n'était détecté. J'ai créé le fichier .asoundrc avec la commande $ geany .asoundrc et copier coller le code suivant qui indique d'utiliser le micro de la webcam hw:1,0 pour la capture par défaut : pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:0,0" } capture.pcm { type plug slave.pcm "hw:1,0" } } Plus de détails ici : http://wiki.audacityteam.org/wiki/USB_mic_on_Linux Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 27 / 52 Conversion de fichier son • Un utilitaire polyvalent : sox • Installation : le paquet sox $ sudo apt-get install sox • Utilisation : $ sox test.wav fichier.flac rate 16k # convertit le fichier *.wav en fichier *.flac avec échantillonage 16000hz • Information : $ man sox Reconnaissance vocale • En combinant l'enregistrement de son et la conversion, il est possible sur le RaspberryPi d'utiliser la reconnaissance vocale de Google sous réserve d'être connecté à internet (via le routeur) ! • Il suffit d'enregistrer un fichier son puis de l'envoyer vers le serveur Google pour obtenir la chaîne texte correspondante. A suivre... $ arecord -d 5 -r 16000 -f cd test.wav $ sox test.wav fichier.flac rate 16k $ wget -q -U "Mozilla/5.0" --post-file fichier.flac --header="Content-Type: audio/x-flac; rate=16000" -O "http://www.google.com/speech-api/v1/recognize?lang=fr&client=chromium" | sed 's/^.*\[{.*:"\(.*\)",".*$/\1/' • Exécuter les commandes suivantes en parlant après la première : la 3ème commande doit renvoyer le texte correspondant à ce que vous avez dit ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 28 / 52 Installation de Python ▪ Pour développement Python • • Procédure sous Linux (voir ici : http://python-gtk-3-tutorial.readthedocs.org/en/latest/install.html) : > installer libgtk-3-0 (déjà par défaut sur Raspbian et sous Xubuntu 12.04 LTS) • • > installer python3 (déjà par défaut sur Raspbian et sous Xubuntu 12.04 LTS) > installer gobject-introspection (pas installé par défaut sur Raspbian et sous Xubuntu 12.04 LTS) • Ajouter cependant : ◦ python-serial Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 29 / 52 Installer le système de développement embarqué (Arduino, Processing) • A présent, nous allons aborder ce que je considère comme l'une des choses les plus intéressantes en ce qui concerne le RaspberryPi : ◦ l'installation de l'IDE Arduino qui va donc permettre de contrôler, programmer Arduino à distance et sans fil !! ◦ l'installation de l'interface Processing qui va permettre de contrôler le système assez facilement à partir d'Arduino !! • Il va devenir ainsi possible : ◦ d'utiliser la puissance de calcul du raspberryPi pour positionner des moteurs (traqueur solaire par exemple), ◦ d'enregistrer des données sous forme de fichier texte facile à réutiliser et même à les visualiser par simple accès au bureau du RaspberryPi, ◦ de capturer des images, de la vidéo, des sons à partir d'évènements Arduino ou à intervalles réguliers ◦ de déclencher des sons, de la synthèse vocale à partir d'Arduino, ◦ etc... Rien que la programmation à distance de l'Arduino vaut largement le prix du raspberryPi : des modules à plus de 60€ existent pour obtenir cette fonction mais sans le retour vidéo, ni la synthèse vocale, ni la lecture des fichiers sons, etc... Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 30 / 52 Installation et test de l'IDE Arduino • L'IDE Arduino est un logiciel qui permet de programmer et d'interagir avec Arduino, une petite carte électronique facile à programmer. • On commence l'installation en installant l'openjdk car l'IDE Arduino est un programme java (çà dure un moment.... !) : $ sudo apt-get install openjdk-7-jdk • Ensuite on installe tout simplement le paquet arduino contenu dans les dépôts et qui intègre la version 1.0.1 de l'IDE $ sudo apt-get install arduino • Ainsi sont installés les paquets suivants (dépendances): • g++ (le compilateur GNU C++) • gcc-avr (compilateur C pour les microcontrôleurs AVR) • avr-libc • avrdude • binutils-avr • libftdi1 • libjna-java • librxtx-java • Utilisation : • soit en ligne de commande : $ arduino • soit, le plus simple, à partir du menu applications > programmation > Arduino • Fignolages : la taille de la fenêtre Arduino peut être trop grande par défaut. On va donc configurer la taille de la fenêtre Arduino au démarrage : • en ligne de commande, saisir : $ geany .arduino/preferences.txt • modifier les valeurs des lignes : • editor.window.height.default=400 • editor.window.height.min=200 • enregistrer et relancer Arduino. Remarque A ce stade, vous disposez d'un système permettant la programmation distante de l'Arduino et en tout cas le contrôle distant de l'exécution d'un programme Arduino, l'interaction potentielle en direct avec Arduino à partir du Terminal série, etc... Une solution très efficace pour développer en situation, sur un robot par exemple. Quelques limites cependant : la compilation est plus lente... et il ne faut pas ouvrir trop de fenêtres à la fois.. Pour de gros programmes, il sera donc préférable de programmer l'arduino à partir du poste fixe pour ensuite interagir avec l'Arduino à partir du raspberyPi. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 31 / 52 Capture de la fenêtre VNC sur le poste fixe : l'IDE Arduino est bel et bien exécuté sur le raspberryPi et est contrôlé à distance. RAM utilisée : 90Mo Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 32 / 52 Installation des librairies Arduino utiles • Une fois Arduino installé, il est intéressant d'installer des librairies Arduino utiles : notamment, j'aime bien installer mes librairies personnelles Utils, Cdbot, etc... • Comme Arduino a été installé automatiquement, où se trouve le répertoire Arduino ? La documentation du package Debian correspondant donne l'information : /usr/share/arduino/libraries La procédure consiste alors à enregistrer les librairies dans le répertoire de son choix, transitoirement puis ensuite à exécuter la commande : • $ sudo cp chemin/de/la/lib/nomlib /usr/share/arduino/libraries -r • Le -r c'est pour copier le répertoire entier... • Et c'est bon normalement. Relancer Arduino : la librairie doit être présente dans le menu Sketch > import library Installation et test de Processing Installation • Processing est un environnement de développement « véritable couteau suisse » permettant notamment l'interfaçage avec la carte Arduino mais également l'utilisation de librairies permettant de réaliser des interfaces ou encore de contrôler le système Gnu/Linux en ligne de commande programmée. • L'installation se fait en plusieurs étapes : ◦ L'installation nécessite l'openjdk et le paquet librxtx-java déjà installés précédemment ◦ Télécharger l'archive de Processing 1.5.1 (version Linux 32 bits) sur le site de Processing : http://processing.org/download/ à l'aide du navigateur installé sur votre RaspberryPi ◦ ensuite ouvrir le dossier de l'archive et l'extraire ◦ Une fois fait, nous allons utiliser la bonne librairie java. ▪ Effacer ou renommer le sous répertoire Processing-1.5.1/java ▪ Remplacer ce répertoire par un lien symbolique vers le java du système : ln -s /usr/lib/jvm/java-7-openjdk-armhf java ◦ Enfin, nous allons également remplacer la librairie Serial utilisée par défaut pour une version compatible ARM : ▪ supprimer ou renommer le fichier Processing-1.5.1/modes/java/libraries/serial/library/linux32/librxtxSerial.so ▪ Supprimer et renommer le fichier Processing-1.5.1/modes/java/libraries/serial/library/RXTXcomm.jar ▪ A présent, copier la bonne version dans le même sous-répertoire avec la commande $ sudo cp /usr/share/java/RXTXcomm.jar Telechargements/Processing-1.5.1/modes/java/libraries/serial/library/ • Voilà, c'est terminé ! Ouf... ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 33 / 52 • Pour info, j'ai suivi la procédure trouvée ici : http://scruss.com/blog/2012/08/12/controlling-an-arduino-from-raspberry-pi-using-processing/ • Fignolages : comme pour Arduino, il faut réduire la taille de la fenêtre utilisée par défaut. On va donc configurer la taille de la fenêtre Processing au démarrage : ◦ en ligne de commande, saisir : $ geany .processing/preferences.txt ◦ modifier les valeurs des lignes : ▪ editor.window.height.default=400 ▪ editor.window.height.min=200 Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 34 / 52 Lancement de Processing • Pour lancer Processing, ouvrir un terminal et saisir la commande (à adapter en fonction de l'endroit où vous avez mis Processing ) : $ cd Telechargements/processing-1 .5.1/ $ ./processing • • Vous pouvez ignorer le message indiquant que l'on n'utilise pas pas Sun java Ensuite lancer l'un ou l'autre exemple, notamment le cube RGB : Le fameux cube RGB 3D marche... mais c'est vraiment très lent.... CPU à fond, etc... • A priori pour de petites interfaces graphiques avec Control P5 (voir ci-après) çà doit être bon ou bien un programme Processing pour gestion du système depuis Arduino mais guère plus... Capture de la fenêtre VNC sur le poste fixe : l'exemple RGB lancé occupe 116Mo de RAM. L'effet « monocoeur » du raspberryPi se fait ici clairement ressentir puisque l'on obtient un mouvement à 1 image que toutes les 2 ou 3 secondes ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 35 / 52 Installation et test de librairies Processing utiles • Au vu des capacités réduites du raspberryPi lors de l'exécution du cube RGB, exemple « fétiche » permettant de se faire une bonne idée de la puissance de calcul, il est illusoire de vouloir installer des choses trop complexes. On se limitera à l'essentiel potentiellement utile. Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 36 / 52 La librairie pour interfaces graphiques : ControlP5 L'interface Processing est surtout orientée graphisme et traitement d'image : elle ne comporte pas d'outils standards pour créer des interfaces GUI. Plusieurs librairies existent pour cela, l'une d'entre elle étant controlP5. >Télécharger l'archive ici : http://www.sojamo.de/libraries/controlP5/ : choisir l'archive Processing 1.5.1 si on utilise cette version > Créer un dossier controlP5 et extraire dedans l'archive > Copier coller le dossier controlP5 dans le répertoire ~/Téléchargements/Processing-1-5/modes/java/librairies > Relancer Processing : la librairie doit être présente dans le menu Sketch > Import Library > Lancer un programme de test depuis le menu File > Examples > controlP5 Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 37 / 52 La librairie UDP hypermédia • Cette librairie est utile pour réaliser des communications réseau en UDP (protocole allégé par rapport à TCP). Un complément utile à la librairie réseau Processing • • Dispo ici : http://ubaa.net/shared/processing/udp/ A installer dans mode/java/librairies Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 38 / 52 La librairie GLAP-Box • Librairie perso qui permet de faire communiquer simplement Arduino avec Processing. Cette librairie permet de déclencher / contrôler les applications système simplement à l'aide de chaînes de caractères en provenance d'Arduino. • • Dispo ici : http://www.mon-club-elec.fr/pmwiki_reference_lib_glapbox/pmwiki.php?n=Main.HomePage A installer dans mode/java/librairies Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 39 / 52 Librairie Processing pour la capture vidéo : Gstreamer ? => à revoir – ne marche pas... Tester quand même Gstreamer au moins pour capture vidéo... intéressant pour datalogging d'images La librairie GSVideo implémente dans Processing le framework « GStreamer » qui dispose de toutes les fonctions utiles pour la lecture vidéo. A la différence de QuickTime utilisé par défaut, Gstreamer est opensource et libre. Il est prévu de Gstreamer soit utilisé par défaut à partir de Processing 2.0, mais en attendant, il est nécessaire d'installer la librairie GSVideo Voir le site officiel de Gstreamer : http://gstreamer.freedesktop.org/ Pré-requis : paquets nécessaires • Les paquets de la librairie gstreamer doivent être installés : Voici la liste des paquets installés sur une Xubuntu 12.04 qui « marche » avec gsvideo ii gir1.2-gstreamer-0.10 ii gstreamer0.10-alsa ii gstreamer0.10-ffmpeg ii gstreamer0.10-fluendo-mp3 ii gstreamer0.10-gnomevfs ii gstreamer0.10-gnonlin ii gstreamer0.10-nice ii gstreamer0.10-pulseaudio ii gstreamer0.10-tools ii gstreamer0.10-x 0.10.36-1ubuntu1 0.10.36-1ubuntu0.1 0.10.13-1 0.10.15.debian-1ubuntu1 0.10.36-1ubuntu0.1 0.10.17-2 0.1.1-2ubuntu1 0.10.31-1ubuntu1 0.10.36-1ubuntu1 0.10.36-1ubuntu0.1 Description: GObject introspection data for the GStreamer library GStreamer plugin for ALSA FFmpeg plugin for GStreamer Fluendo mp3 decoder GStrmer plugin GStreamer plugin for GnomeVFS non-linear editing module for GStreamer ICE library (GStreamer plugin) GStreamer plugin for PulseAudio Tools for use with GStreamer GStreamer plugins for X11 and Pango Attention c'est gstreamer0.10-plugins- pour la suite... ii gstreamer0.10-plugins-bad 0.10.22.3-2ubuntu2.1 GStreamer plugins from the "bad" set ii gstreamer0.10-plugins-base 0.10.36-1ubuntu0.1 GStreamer plugins from the "base" set ii gstreamer0.10-plugins-base-apps 0.10.36-1ubuntu0.1 GStreamer helper programs from the "base" set ii gstreamer0.10-plugins-good 0.10.31-1ubuntu1 GStreamer plugins from the "good" set ii gstreamer0.10-plugins-ugly 0.10.18.3-1ubuntu1 GStreamer plugins from the "ugly" set Attention c'est libgstreamer pour la suite... ii libgstreamer-perl 0.16-1build1 ii libgstreamer-plugins-bad0.10-0 0.10.22.3-2ubuntu2.1 GStreamer shared libraries from the "bad" set ii libgstreamer-plugins-base0.10-0 0.10.36-1ubuntu0.1 GStreamer libraries from the "base" set ii libgstreamer-plugins-base0.10-dev ii libgstreamer0.10-0 ii libgstreamer0.10-dev 0.10.36-1ubuntu0.1 0.10.36-1ubuntu1 0.10.36-1ubuntu1 Perl interface to the GStreamer media processing framework GStreamer development files for libraries from the "base" set Core GStreamer libraries and elements GStreamer core development files Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 40 / 52 Gstreamer fonctionne avec cette liste sous Madbox 12,04 LTS Installer la librairie GSVideo > Récupérer l'archive : http://sourceforge.net/projects/gsvideo/files/gsvideo/ Prendre la version 1.5.1 si on utilise Processing 1.5.1 > Extraire de copier/coller le répertoire GSVideo dans le répertoire ~/Téléchargements/Processing-1-5/modes/java/librairies > Relancer Processing : la librairie doit être présente dans le menu Sketch > Import Library Programme de test > Aller dans le menu Files > Examples et choisir un exemple, > par exemple, Movie > Speed, ce qui donne : Voilà, GSVideo est installé : avec une webcam, vous pourrez faire à présent de la capture de flux video avec la GLAP-Box dans Processing ! Infos utiles > Le site officiel pour les dernières infos : http://gsvideo.sourceforge.net/ > PS : Andres Colubri, l'auteur de la librairie, fait partie de l'équipe Processing 2.0 et est en charge de l'implémentation à venir dans la future version Processing 2.0. > Bon à savoir : Gstreamer est très intéressant également pour la lecture de « flux vidéo » sur un réseau, grâce à la gestion de « pipeline » Gstreamer (enchaînement d'instructions de traitement). On pourra ainsi lire un flux de caméra IP directement dans Processing ou encore streamer un flux webcam sur le réseau local depuis Processing ! > L'utilisation des pipeline avec Gstreamer est un sujet très intéressant en soi ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 41 / 52 Opengl : installer libegl... La vision par ordinateur à priori, on oublie avec le raspBerryPi... Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 42 / 52 Configuration du wifi avec wicd : pour rendre le raspberyPi accessible sans fil Installation de wicd • A présent, voyons comment activer le wifi afin de rendre le système accessible sans fil. Plutôt que d'utiliser l'utilitaire fourni par défaut avec Raspbian pour la configuration du wifi, je suggère d'utiliser wicd, une interface indépendante de l'environnement graphique, légère et stable. Une limite cependant : ne permet pas VPN (mais lancement manuel reste possible) , ni double connexion wifi et ethernet simultanée d'après mes essais... en fait si... ! • Connecter une clé wifi au RaspberryPi (la libération des ports USB vous permet normalement de le faire...) • Ouvrir un terminal (via l'accès au bureau distant, vous travaillez sur le RaspberryPi depuis votre poste fixe!) : $ sudo apt-get install wicd • Etre sûr que l'utilisateur courant est bien ajouté au groupe udev (ici l'utilisateur par défaut est pi) : $ sudo adduser pi netdev Lancement et paramétrage de l'interface wicd • Lancer l'interface wicd de configuration : $ wicd-client • • Pour ne pas perdre l'accès éthernet au RaspberryPi lors du lancement du wifi, il faut pouvoir utiliser simultanément la connexion wifi et ethernet avec wicd. Pour cela, il faut aller dans les préférences (petite flèche vers le bas dans le coin à droite) , et laisser vide le champ « interface filaire » qui contient eth0 par défaut. Valider. • Ensuite, configurer la ou les interfaces wifi que vous voulez utiliser (bien utiliser WEP si codage WEP...) (dans propriétés) Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 43 / 52 • cocher « se connecter automatiquement » pour que la connexion se fasse automatiquement à la détection du réseau • tester la connexion par appui sur « connecter » • Noter que le démarrage automatique de wicd-client se fera au prochain démarrage. • Débrancher le câble réseau éthernet et rebooter : vous devez normalement pouvoir accéder au RaspberryPi par wifi (attention : l'adresse IP peut avoir changé et un scan réseau avec l'utilitaire nmap côté poste fixe permettra de la connaître). • Remarque : par défaut pour que l'autoconnexion se fasse en wifi : il faut que le réseau éthernet soit déconnecté ! Sinon, c'est le réseau filaire qui est utilisé. Normalement, si vous avez activé la connexion simultanée comme indiqué précédemment, ceci ne doit pas poser de problème. • Besoin de plus d'infos sur wicd ? Voir ici notamment : http://www.linuxcore.fr/2012/03/wicd-internet/ A présent, vous disposez également du contrôle sans fil de votre RaspberryPi directement à partir du poste fixe via le réseau wifi ! Cool non ? Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 44 / 52 Fonctions avancées systèmes Installation du partage de fichier NFS : le raspberryPi en serveur NFS • J'ai déjà décrit la procédure sous Ubuntu en détail ici : Mise en place d'un partage de fichier NFS via réseau wifi entre le PC embarqué et le PC fixe, Installation des paquets nécessaire • On commence donc par installer les paquets nécessaire pour transformer le RaspberryPi en serveur NFS : nfs-kernel-server et nfs-common (est installé en même temps que nfs-kernel-server). Ce qui donne en ligne de commande : $ sudo apt-get install nfs-kernel-server nfs-common Paramétrage du dossier partagé • On va partager ici le répertoire /home/pi/ du RaspberryPi (serveur). On commence par éditer du fichier /etc/exports $ sudo geany /etc/exports • Ajouter dans le fichier exports (pour pouvoir partager sur des réseaux ayant comme racine 192.168.0, .1 ou .2 - à adapter à votre situation) : # pour avoir tous les droits root : /home/pi 192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.0.x en lecture / écriture /home/pi 192.168.1.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.1.x en lecture / écriture /home/pi 192.168.2.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.2.x en lecture / écriture • Une fois que fait, pour que les modifs soient prises en compte, on fait : $ sudo exportfs -a • ou mieux $ sudo exportfs -ra • avec ◦ -a : exporte tous les répertoires ◦ -r : ré-exporte tous les répertoires Configuration autorisations dans hosts.deny • On ouvre hosts.deny et on interdit tout par défaut $ sudo geany /etc/hosts.deny • Ajouter les lignes #pour partage NFS # Tout interdire sur portmap, nfsd et mountd # les autoriser par hosts.allow portmap:ALL Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 45 / 52 lockd : ALL mountd:ALL rquotad : ALL statd : ALL #nfsd:ALL Configuration autorisations dans hosts.allow • On ouvre hosts.allow et on autorise les adresses voulues : $ sudo geany /etc/hosts.allow • On ajoute les lignes : #partage NFS #Autoriser ces clients à se connecter avec services portmap, nfsd, moundt portmap:ALL lockd:192.168. mountd:192.168. rquotad:192.168. statd:192.168. #nfsd:192.168. Activation de rcpbind • • Lors du lancement du serveur NFS, il y a un warning avec portmapper... sur le raspberryPi. En fait, il semble que le service rpcbind ne fonctionne pas par défaut sur le raspberryPi. Voir ici : http://www.raspbian.org/RaspbianFAQ « On the current version of Raspbian, rpcbind (part of the portmap package) does not start by default. This is presumably done to control memory consumption on our small systems. However, it isn't very big and we need it to make an NFS mount. » Pour l'activer manuellement : $ sudo service rpcbind start • Pour l'activer au démarrage, ce qui est préférable : $ sudo update-rc.d rpcbind enable Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 46 / 52 Redémarrage serveur NFS • On relance NFS $ sudo /etc/init.d/nfs-kernel-server reload • ou mieux, on redémarre le service : $ sudo /etc/init.d/nfs-kernel-server restart +/- Activation ipv6 • Au démarrage du serveur NFS, on a un message de warning indiquant que nfsd ne supporte pas ipv6. A priori, çà n'a pas d'impact sur ipv4 donc çà doit marcher. Ceci étant, pour résoudre çà : • soit on l'installe en manuel avec : $ sudo modprobe ipv6 • soit on charge ipv6 au démarrage avec : $ sudo geany /etc/modules • Ajouter la ligne ipv6 Vérification • Pour vérifier que tout est ok, on peut faire : $ rpcinfo -p Récupérer adresse ip du RaspberryPi • Une fois fait, il suffit de monter le raspberryPi sur le poste client pour pouvoir échanger des copier coller des fichiers. On commence par retrouver l'adresse ip du raspberryPi avec la commande $ ifconfig Accéder au partage de fichier depuis le client Gnu/Linux Attention : la suite de la procédure se passe sur le poste fixe qui accède au Raspberry Pi Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 47 / 52 Installation des paquets utiles • Installer les paquets : nfs-common (et nfs-server tant qu'on y est... ? ) $ sudo apt-get install Création d'un point de montage sur le client • Dans une console, on crée un répertoire pour le montage : $ sudo mkdir /mnt/nfs Montage du serveur (le RaspberryPi) sur le client (le poste fixe) On utilise ici l'adresse du serveur : 192.168.1.x C'est l'adresse obtenue par ifconfig sur le raspberryPi On peut également obtenir cette adresse par nmap. $ sudo mount -t nfs 192.168.1.x:/home/pi/ /mnt/nfs ou $ sudo mount -t nfs -o rw 192.168.1.x:/home/pi/ /mnt/nfs Voilà, si pas de message d'erreur, c'est bon... Ne pas oublier le / avant le nom du chemin de montage après l'adresse... A noter, pour automatiser le montage NFS depuis le poste client, on pourra utiliser un sccript comme par exemple : #!/bin/bash # script montage NFS # par XH - Aout 2011 echo "--- script de Montage NFS côté client ---" $disque read -p "Quelle est l'adresse du serveur NFS (192.168.x.x ou équiv.) ? " adresse #saisie de l'adresse echo "L'adresse IP du serveur NFS à monter est :" $adresse read -p "Quel est le répertoire du /home du serveur NFS à monter sur le client (/xavier ou /glapbox/Bureau ou équiv) ?" repertoire #saisie du répertoire echo "Le répertoire du /home du serveur NFS à monter sur le client est :" $repertoire echo "Le script va monter "$adresse":/home"$repertoire"/ sur /mnt/nfs" read -p "<OK>" # pour attendre entrée pour continuer sudo mount -t nfs -o rw $adresse:/home$repertoire/ /mnt/nfs Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 48 / 52 echo "Opération terminée" read -p "<OK>" # pour attendre entrée pour sortir exit 0 ; Test • +/- Saisir dans la console pour voir si le montage nfs est bien en place : $ mount | grep nfs • ce qui donne nfsd on /proc/fs/nfsd type nfsd (rw) 192.168.1.3:/home/xavier/ on /mnt/nfs type nfs (rw,addr=192.168.1.3) • Aller dans le répertoire /mnt/nfs : on doit voir le contenu de RaspberryPi ! On peut dès lors réaliser des échanges de fichiers entre la RaspberryPi et le PC de contrôle en toute simplicité ! • On pourra également créer un lanceur sur le bureau du client vers le répertoire /mnt/nfs pour accéder facilement au contenu du répertoire. A noter que pour ouvrir un dossier à partir d'un lanceur, il faudra faire : • sous Ubuntu : nautilus /rep • sous xubuntu : thunar /rep Bon à savoir Si on veut démonter le partage NFS du côté client, dans un terminal on fait : $ sudo umount /mnt/nfs Sécurisation SSH A venir... Notamment exemple de connexion VNC Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 49 / 52 Serveur LAMP A venir... Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 50 / 52 Cloner le système obtenu HowTo avec Clonezilla Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 51 / 52 Le système final obtenu La procédure que nous avons suivi nous a permis successivement de mettre en place : • l'accès au bureau du raspberryPi à distance par réseau éthernet ou wifi • • la synthèse vocale la lecture de fichier sons et donc de bruitages sonores • • la capture de sons et donc potentiellement la reconnaissance vocale par serveur internet le logiciel Arduino et donc les fonctions de programmation et de contrôle à distance d'Arduino • • le logiciel Processing et donc les fonctions d'interaction entre Arduino et le système embarqué l'activation et la configuration du wifi permettant d'utiliser le raspberryPi à distance et sans fil à partir de n'importe quel type de plateforme • le partage de fichier entre le poste fixe sous Gnu/Linux et le raspberryPi par simple copier/coller Au final, on obtient une solution polyvalente de développement. Dès lors que l'on n'aura pas besoin d'utiliser des fonctions de capture et d'analyse d'image, le RaspberryPi, vu son prix, pourra rendre de fiers services ! Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 52 / 52