Cet articlé décrit l'utilisation de pigpio sur un Raspberry Pi tournant sous Arch Arm. pigpio permet d'accéder aux entrée/sorties du Raspberry Pi qui se situent sur le connecteur d'extension.

Mes recherches pour pouvoir accéder aux ports GPIO en mode utilisateur (c'est à dire sans passer en mode root) ont été fastidieuses. En effet, la plupart des gens se contente d'exécuter leurs programmes en mode super-utilisateur, ce qui est une aberration.

J'ai exploré la voie du sysfs où j'ai essayé de modifier les propriétés des fichiers du répertoire /sys/class/gpio grâce à des règles udev. Cela m'a mené à une impasse à cause des liens symboliques remontants contenu dans /sys/class/gpio.

Les autre solutions passent par un accès direct à /dev/mem, ce qui mène à une impasse aussi. Une des solutions acceptables serait d'utiliser d'un driver dédié (cf Thèse de VU Nguyen dans les liens en fin d'article).

J'utilise maintenant la librairie pigpio. Elle n'a pas été facile à dégotter tant les fausses pistes furent nombreuses. Elle est bien faite, un module Python est disponible.

Instalation de git, si ce n'est pas déjà fait :

# apt install git

Modification du chemin de recherche des librairies : Modifiez le fichier /etc/ld.so.conf et ajoutez-y la ligne suivante :

/usr/local/lib

Mettez à jour la liste des répertoires des librairies dynamiques :

# ldconfig

Téléchargez pigpio :

$ git clone https://github.com/joan2937/pigpio.git
$ cd pigpio
$ make all
$ su
# make install

Création d'une unité systemd pour le daemon soit lancé au démarrage : Créez le fichier /etc/systemd/system/pigpiod.service contenant les lignes suivantes :

[Unit]
Description=Gpio daemon

[Service]
ExecStart=/usr/local/bin/pigpiod
Type=forking

[Install]
WantedBy=multi-user.target
# systemctl start pigpiod
# systemctl enable pigpiod
# systemctl status pigpiod
* pigpiod.service - pigpio daemon
   Loaded: loaded (/etc/systemd/system/pigpiod.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2015-09-18 19:51:36 CEST; 1min 16s ago
 Main PID: 512 (pigpiod)
   CGroup: /system.slice/pigpiod.service
           `-512 /usr/local/bin/pigpiod

Sep 18 19:51:36 jannequin systemd[1]: Starting Gpio daemon...
Sep 18 19:51:36 jannequin systemd[1]: Started Gpio daemon.

Vérification que ça marche sur le classique exemple de la led clignotante (connectée ici sur le gpio 24 soit la pin 18) :

#!/usr/bin/env python

import time
import pigpio

GPIO_LED = 24

pi = pigpio.pi()

pi.set_mode(GPIO_LED, pigpio.OUTPUT)

while True:

    pi.write(GPIO_LED, 1)
    time.sleep(1)

    pi.write(GPIO_LED, 0)
    time.sleep(1)

pi.stop()

Convertir un DVD en mp4

22 février 2015 - Mots-clés : Linux TVnum

Installation des packages

# apt install vobcopy
# apt install mjpegtools
# apt install ffmpeg

Explications

Le but est pour tous les DVD d'un coffet, d'obtenir un fichier par épisode au format mp4. Je souhaite garder les deux streams audio l'un en français, l'autre en anglais.

Je crée un répertoire quelque part dans …

suite...

Utilisation du bus i2c sur un Raspberry Pi

26 juillet 2014 - Mots-clés : Linux Raspberry Pi

Autorisez le bus i2c au boot : Ajoutez la ligne suivante au fichier /boot/config.txt :

device_tree_param=i2c_arm=on

Installez les packages nécessaires :

# pacman -S i2c-tools
# modprobe i2c-dev

Chargement du module i2c-dev au démarrage : Créez le fichier /etc/modules-load.d/i2c.conf en ajoutant la ligne suivante :

i2c-dev

Créez un groupe …

suite...

Utilisation du bus spi sur un Raspberri Pi

26 juillet 2014 - Mots-clés : Linux Raspberry Pi

Autorisez le bus spi au boot : Ajoutez la ligne suivante au fichier /boot/config.txt :

device_tree_param=spi=on
dtoverlay=spi-bcm2708

Créez un groupe spi et ajoutez l'utilisateur (franck ici) à ce groupe :

# groupadd spî
# gpasswd -a franck spi

Modification des droits des devices spi : Créez le fichier /etc/udev/rules …

suite...

Utilisation d'un module GPS (liaison série)

21 juillet 2014 - Mots-clés : Liens Linux Raspberry Pi

Jouons avec un récepteur GPS

Comme il est connecté au port série, il faut arrêter la console sur la laision série. Modifiez le fichier /boot/cmdline.txt et supprimez toutes référence /dev/AMA0 dans les parties «console=» et «kgdboc=»

Arrêtez le service console :

systemctl disable serial-getty@ttyAMA0.service

Pour pouvoir …

suite...