Archives de catégorie : Projets

4 – Configuration réseau et point d’accès WiFi

MPD est un daemon administré par une application cliente via le réseau. Il nous faut donc créer un réseau WiFi dans la voiture afin de pouvoir piloter MPD grâce à des périphériques divers. Nous n’allons pas poser de routeur wifi sous le siège pour créer un réseau wifi… Nous allons plutôt transformer le Pi en point d’accès WiFi !

Hostapd

Le paramétrage de hostapd se fait grâce au fichier de configuration /etc/hostapd/hostapd.conf.Il n’est pas nécessaire d’avoir un haut niveau de sécurité sur ce réseau WiFi. Aussi, je décide de laisser le réseau WiFi ouvert 🙂 C’est open bar !

Voici ma configuration :

interface=wlan0
ssid=Carpo
channel=1
auth_algs=1
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek

dnsmasq

J’utilise dnsmasq pour attribuer une adresse IP automatiquement à tous les clients WiFi qui se connectent au Pi. Voici le contenu de mon fichier de configuration /etc/dnsmasq.conf.

interface=wlan0
dhcp-leasefile=/tmp/dnsmasq.leases
dhcp-authoritative
dhcp-option=1,255.255.255.0
dhcp-option=3,192.168.103.1 # default gateway
dhcp-option=6,192.168.103.1 # dns server
dhcp-range=192.168.103.10,192.168.103.99,255.255.255.0,72h

Configuration minimaliste 🙂

Configuration de l’interface réseau

Il convient enfin de configurer l’interface WiFi du Pi avec une adresse IP fixe. Voici le contenu de mon fichier /etc/network/interfaces.

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 192.168.100.31
        netmask 255.255.255.0
        network 192.168.100.0
        broadcast 192.168.100.255
        gateway 192.168.100.1
        dns-nameservers 192.168.100.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
        address 192.168.103.1
        netmask 255.255.255.0
        network 192.168.103.0
        broadcast 192.168.103.255

J’en profite pour configurer l’interface ethernet afin de pouvoir prendre facilement la main sur le Pi en le connectant simplement sur mon LAN.

Initialisation du point d’accès WiFi au démarrage du Pi

Si vous rebootez votre Pi dans l’état, vous constaterez que votre interface WiFi n’a pas d’adresse IP ce qui rend impossible la connexion d’un client WiFi au point d’accès. Il convient donc de créer un petit script d’initialisation, /etc/init.d/ap.sh, qui démarre hostapd et donne une adresse IP statique à l’interface réseau WiFi :

#!/bin/bash

### BEGIN INIT INFO
# Provides:          ap
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Init access point
# Description:       Init access point
### END INIT INFO

service hostapd start
ifconfig wlan0 up
ifconfig wlan0 192.168.103.1

Il suffit ensuite d’ajouter le script au démarrage du Pi grâce à la commande update-rc.d :

cd /etc/init.d
chmod 755 ./ap.sh
update-rc.d ap.sh defaults

Voilà ! A chaque démarrage du Pi, le point d’accès est initialisé et vous pouvez vous y connecter depuis n’importe quel périphérique WiFi 🙂

Liens utiles :

Création d’un hotspot wifi sur votre RPI

3 – Installation du système

raspbian_logo_tinyA nouveau, je choisi Raspbian pour faire tourner mon Raspberry Pi. Téléchargement de la dernière version ici Raspbian “wheezy”, puis installation de la carte SD en suivant le tuto du site elinux.org. On commence à avoir l’habitude, donc je passe rapidement sur ces étapes…

A noter qu’il existe une version dérivée de Raspbian, optimisé pour MPD, mais je préfère conserver une Raspbian standard, et faire la conf moi même.

Raspi-config

Après l’installation de la Raspbian, un passage par raspi-config est indispensable :

raspiconfig

  • Expand Filesystem : permet d’étendre la partition racine à la taille de la carte mémoire afin de pouvoir exploiter tout l’espace disponible
  • Internationalisation Options -> Change Keyboard Layout : permet de sélectionner un clavier AZERTY
  • Advanced Options -> Hostname : Ce Pi sera baptisé Carpo 🙂
  • Advanced Options -> Memory Split : permet de définir la mémoire allouée au chipset graphique (n’ayant besoin que d’une interface en ligne de commande, 16Mo suffiront)
  • Advanced Options -> SSH : On active SSH

Installation des paquets

Avant tout, et comme d’habitude, on met à jour l’ensemble des paquets existants :

apt-get update
apt-get upgrade

Une fois l’opération terminée, on installe les paquets nécessaires :

apt-get install vim mpd dnsmasq hostapd
  • vim : Editeur en ligne de commande
  • mdp : Music Player Daemon
  • dnsmasq : serveur DHCP
  • hostapd : permet de créer un point d’accès wifi

ATTENTION : Dans la grosse majorité des cas, le paquet hostapd fonctionnera bien avec votre carte Wifi. Or, mon dongle Wifi NetGear WNA1000M n’est pas supporté par le driver nl80211.

Hostapd pour chipset RTL8188

Il existe une version de hostapd qui supporte le chipsset RTL8188 de mon dongle WiFi. Vous pouvez le télécharger ici : RTL8188-hostapd-1.1.tar

Téléchargez le sur votre Pi, décompressez la tarball, compilez et installez :

tar -xzf ./RTL8188-hostapd-1.1.tar.gz
cd ./RTL8188-hostapd-1.1/hostapd
make
make install

L’installation est relativement longue, mais tout se passe sans problème.

C’est tout pour l’installation 🙂 Il nous reste un peu de configuration à faire, et le tour sera joué 🙂

2 – Le choix du matériel

Raspberry Pi modèle B

205039Plus besoin de se poser la question entre le modèle A ou le modèle B, autant prendre le modèle le plus complet et le plus récent. Le Raspberry Pi Model B rev 2 doté de 512Mo de RAM et d’un port ethernet est désormais disponible chez beaucoup de revendeurs. J’ai trouvé celui-ci chez Amazon.

Commandé sur le site Amazon pour 39 €

Boîtier Adafruit

ID859angle_LRGJe reste très attaché à l’Adafruit Pi Box ! Ce boîtier transparent, livré en « kit », met en valeur la carte et permet de nombreuses personnalisations. Il permet notamment de faire passer une nappe branchée sur le GPIO du Pi grâce à une fente. Vous pouvez également retirer certaines parois pour faciliter l’accès à certaines parties de la carte tout en protégeant l’ensemble.

Commandé sur Amazon pour 10 € (livraison gratuite)

Carte SDHC 32Go

41i-JeRaW6L._SX385_Initialement, je souhaitais prendre une carte SD de 2Go ou 4Go pour l’OS puis stocker les musiques sur un disque dur externe. L’ennui, c’est qu’un disque externe dans une boite à gants de voiture, ça prend de la place, ça chauffe, ça risque de se détériorer, et ça occupe un port USB… Et ça coûte des sous… ‘Fin bref, j’ai rapidement laissé tomber cette option et ai choisi une carte SDHC de 32Go. Vous pouvez évidemment opter pour une carte de 64Go pour un peu plus de 50€.

Commandé sur Amazon pour 17 € (livraison gratuite)

Dongle WiFi USB

144267Il convient de choisir un dongle WiFi USB qui soit compact (inutile de s’encombrer d’une antenne), et surtout, qui supporte le mode « access point » !

Le site elinux.org nous informe que le dongle NetGear WNA1000M est parfaitement supporté par le Pi sans passer par un hub USB alimenté.

Commandé sur Amazon pour 12€

Carte son USB

plantronics_gamecom_777_para_jugones_418x241Je ne m’attends pas à obtenir une qualité de son extra-ordinaire, mais la qualité de la prise jack disponible sur le Pi n’est franchement pas suffisante pour une écoute de musique dans de bonnes conditions. J’ai retrouvé dans mes tiroirs une carte son USB Plantronics qui était fournis avec un casque (le Plantronics GameCom 777). Elle est très compacte, fonctionne très bien sous Raspbian, et m’évite d’en acheter une…

Alimentation

LD0000719626Dans une voiture, les différentes sources d’alimentations (allume-cigare, alimentation de l’autoradio, etc…) fournissent en général un courant en 12V. Nous avons besoin d’un transformateur qui fournis une tension en 5V pour alimenter correctement le Pi. Après avoir cherché des circuits convertisseurs ou régulateurs de tension 12V -> 5V, je me suis réveillé un jour en me disant qu’un chargeur allume-cigare pour smartphone devrait faire l’affaire… Bingo ! Très compact et peu onéreux, on peut en trouver un peu partout…

Le plus compliqué est d’en trouver un qui puisse délivrer un courant d’au moins 1A (La plupart des chargeur allume-cigare que l’on peut trouver dans le commerce ne dépassent pas les 500mA).

J’ai trouvé mon bonheur sur Amazon pour environ 15€

Mise à jour – 30 juillet 2013 :

imageL’immense majorité des chargeurs allume-cigare que l’on trouve dans le commerce ne sont pas blindé contre les variations de tension. C’est déjà problématique pour la durée de vie des batteries de téléphones, mais pour un Pi, c’est encore pire. De plus, lorsque la voiture démarre, la séquence « contact » puis « allumage du moteur » entraine des piques et des chutes de tensions importantes. Le Pi n’étant pas du tout protégé contre ce genre de parasitage et nécessitant une alimentation correctement régulée, j’ai préféré choisir un convertisseur de tension continue stabilisé  KEMO M015N.

  • Tension d’entrée 6-28V (idéal pour les 12V fournis par le circuit électrique de la voiture)
  • Tension de sortie 3-15V (parfait pour les 5V demandé par le Pi)

Il s’agira de faire un branchement parallèle sur le faisceau de l’allume cigare. En effet, c’est un circuit spécifiquement prévu pour tirer du courant et qui est géré par le système d’économie d’énergie qui coupera automatiquement l’alimentation du circuit si il consomme trop de courant sur la batterie lorsque le moteur est éteint. Ce qui nous évitera de mauvaises surprises 😉

Acheté chez Amazon pour moins de 15€

Interface entrée auxiliaire pour mon autoradio d’origine

IMG_4758La majeure partie des autoradios d’aujourd’hui disposent d’une entré auxiliaire. Dans mon cas, ma voiture datant de 2008 et souhaitant conserver l’autoradio d’origine (le très répandu RD4), je n’ai d’autre choix que d’utiliser une interface vendue par PSA pour environ 35€… A savoir qu’il faudra également faire activer une entrée auxiliaire dans un garage afin de pouvoir l’exploiter (Je ferai un article détaillé à ce sujet dans les prochains jours).

Commander dans un garage Citroën pour 35€ sous la référence faisceau auxiliaire autoradio RD4 réf. 9706.AG.

Vous pouvez également le commander ici sur Amazon.

 Note : Il est également possible de bricoler soit même ce faisceau auxiliaire. Voici un exemple de réalisation : http://www.forum-peugeot.com/Forum/forum-peugeot/Electronique-embarquee/Seconde-monte/auxiliaire-entree-maison-sujet_32999_1.htm

1 – Raspberry Pi Car JukeBox

Depuis quelques temps déjà, j’utilise un Raspberry Pi en tant que JukeBox dans mon salon. J’utilise MPD (Music Player Daemon) pour jouer la musique. Le Pi est directement relié au réseau par éthernet et un DAC (Digital Analog Converter) (pour ceux que ça intéresse, il s’agit d’un Cambridge DacMagic très bien supporté par le Pi) fait l’interface entre le Pi et l’ampli HiFi. Montage très simple à mettre en place ; ça m’a pris une grosse demie-heure, installation de la Raspbian comprise…

IMG_4761

Aujourd’hui, je vais faire la même chose, mais dans ma voiture 🙂

Objectifs

  • Garder l’autoradio d’orignie
  • Ne pas avoir à manipuler de câbles pour contrôler la musique
  • Pilotage de MPD par smartphone via WiFi

Note : Rien ne me force à garder mon autoradio d’origine. C’est simplement une question de budget, et parce que je préfère concerver les fonctionnalités existantes.

Le matériel nécessaire de base

Client MPD

432-1-mpodIl existe de nombreux clients pour piloter MPD à distance (GMPC notamment, que j’utilise tous les jours). Sur mon smartphone et ma tablette, j’utilise l’appli MPoD qui fonctionne très bien 🙂

IMG_4762

A noter qu’il existe également de client en PHP. Il est donc tout à fait possible d’installer Apache et PHP sur le Pi, et de se connecter à ce type de client web avec un navigateur standard (sans avoir besoin de passer par un client lourd, ou une appli dédiée). Voici une liste complète des clients existants : http://mpd.wikia.com/wiki/Clients

12 – En résumé

IMG_4746

J’ai pris énormément de plaisir à réaliser ce dispositif de TimeLapse totalement « home made ». Le Raspberry Pi est un jouet vraiement excellent avec lequel on peut pratiquement tout faire 🙂

Après plusieurs semaines de tests, le système fonctionne parfaitement bien. Je le lance le dimanche, et il commence son travail le lundi à 8h00. Je reçois des mails toutes les 1/2 heure jusqu’au vendredi 18h00. Le système continu de fonctionner jusqu’à épuisement total de la batterie du Pi, le samedi dans l’après midi, ce qui me laisse une marge confortable 🙂

Un grand merci à mon P’pa pour le circuit de tempo, sans lequel le système complet n’aurait pas pu fonctionner 🙂 Sacrifiant soirées et week ends, devant se replonger dans ses connaissances en électroniques 🙂

J’ai hâte de voir le résultat final de la construction de la maison, RDV en fin d’année 😉

En bref

Un système TimeLapse communicant à base d’un Raspberry Pi. Capable de prendre une photo toutes les 10 minutes en journée, sur une semaine complète, en parfaite autonomie.

Le matériel au complet (environ 256€ au total) :

  • Raspberry Pi modèle B 39€
  • Carte mémoire SDHC Kingston 32Go 21€
  • Boitier Adafruit 10€
  • Webcam Logitech C525 36€
  • Dongle 3G Huawei E220 40€
  • Batterie 5V TeckNet iEP389 9000mAh 39€
  • Boite plastique 6€
  • Légos, estimés à 15€
  • Circuit de tempo fait maison, composants estimés à 30€
  • Batterie plomb 12V 20€

Technos et logiciels utilisés

Raspberry Pi

  • Linux, Raspbian
  • Streamer
  • Imagemagick
  • Wvdial
  • CURL
  • Script Bash

Serveur de monitoring

  • Linux, Debian
  • Apache
  • MySQL
  • PHP
  • Sendmail

Sommaire

Forums de discussion

11 – Tout dans la boite

Quoi de mieux que les Légos pour réaliser le châssis qui maintiendra l’ensemble du dispositif en un seul bloc solidaire ? Il s’agit simplement de réaliser une structure compartimentée, à la taille de la boite en plastique afin de maintenir tous les éléments en place tout en facilitant les branchements.

IMG_4741

IMG_4742

IMG_4743

IMG_4744

IMG_4740

IMG_4747

Et voilà ! Le tour est joué 🙂 Tout est prêt pour une batterie de test sur le système complet en attendant le début de la construction de la maison 🙂

IMG_4749