Blog

Viewing posts from October, 2013

RPI#1 : 2 diodes

Utilisation du GPIO du Raspberry Pi pour faire clignoter deux LEDs en alternance.

Montage

Nous allons utiliser les pins 16 et 18 de l'interface GPIO. Le montage est on ne peux plus simple, nous récupérons la masse ( pin 6 : GND ) sur la breadbox, chacune des diodes est protégée par une résistance de 330 Ohms. La programmation du port GPIO permettra d'envoyer ou non du courant dans notre circuit.

Créer un booklet avec PyPDF

Si il manque bien une fonctionnalité dans les logiciels libres de visualisation de PDF, c'est l'impression de livret (booklet). Acroread dispose de cette fonction fort utile lorsque l'on veux économiser du papier, imprimer un document en mode Booklet permet de diviser la consommation de papier par 4 et d'avoir un document pratique à utiliser.

La dernière fois que j'ai essayé la fonction booklet de Acroread, celui ci n'en a fait qu'a sa tête, il me retournait les feuilles dans tous les sens... Galère... J'ai donc développé un script Python nommé bookletizer.py qui s'appuie sur la bibliothèque PyPDF. Ce script permet de reclasser les pages dans l'ordre ad-hoc pour une impression en mode 2 page par feuille avec recto verso sur les bord courts.

PyPDF Manipuler des fichiers PDF avec Python

En faisant Bookletizer.py j'ai découvert la bibliothèque python PyPDF qui permet de manipuler des documents PDF via des scripts. Je vais décortiquer le script que j'ai créé pour ré-ordonner les pages en mode booklet.
# Import du module
import pyPdf

[...]
# ouverture du fichier PDF avec une execption
# différente en cas de pbm fichier (fichier 
# inexistant) ou pbm PDF (le fichier n'est
# pas un fichier PDF)
try:
    inputfile = pyPdf.PdfFileReader(file, "rb"))
    inputfile.numPages
except IOError:
    sys.exit("Input file error")
except pyPdf.utils.PdfReadError:
    sys.exit("Bad PDF file")
[...]

# Creation d'un simple fichier PDF vide (0 pages)
# qui va recevoir les pages dans l'ordre booklet 
output = pyPdf.PdfFileWriter()
[...]

# Ajout d'une page dans le le fichier output
#Ici c'est la page n° i de inputfile
 output.addPage(inputfile.getPage(i))

# Pour finir écrivons le fichier output
outputStream = file(options.outputfilename, "wb")
output.write(outputStream)
outputStream.close()

Avec cette librairie nous pouvons donc facilement tronquer, assembler, mélanger ou re-indexer des documents.

RPI#2 : 2 boutons

Le montage

Voici le montage, les boutons poussoir sont connectés sur les ports GPIO #18 (pin 12) et GPIO #23 (pin 16).

LUKS : 2 drives, password prompted twice

If you've two LUKS encrypted drive in your linux host, you'll be prompted for password twice at boot time. Painful, not ?