Lecture de capteurs analogiques sur le Raspberry Pi
Lors d’une récente rubrique, nous avons appris comment utiliser les pins GPIO du Raspberry Pi pour lire des signaux numériques. Toutefois, contrairement à l’Arduino, le Raspberry Pi ne comporte pas la moindre entrée analogique. Et pourtant, lire un signal analogique (provenant d’un potentiomètre, d’une photorésistance, d’une thermistance, etc.), ça peut être drôlement pratique…
Évidemment, il existe une solution à ce problème: l’utilisation d’un convertisseur numérique-analogique externe (ou ADC, pour analog to digital converter). J’ai utilisé le MCP3008 de Microchip, qui est un ADC à 8 canaux, ce qui signifie que vous pouvez y brancher pas moins de 8 capteurs analogiques simultanément (si vos besoins sont plus modestes, vous pouvez vous rabattre sur le MCP3004, qui ne comporte que 4 canaux).
Le rôle du MCP3008 sera donc de transmettre au Raspberry Pi un signal numérique entre 0 et 1023 qui sera la traduction du signal analogique (qui, lui, peut prendre n’importe quelle valeur située entre 0 et 3,3 V).
Interface SPI matérielle ou logicielle?
Puisque que le MCP3008 utilise le protocole SPI, nous avons le choix entre une approche matérielle (hardware SPI) ou logicielle (bit banged SPI). L’approche logicielle consiste à gérer nous-mêmes le signal d’horloge et le chip select à l’intérieur de notre script. C’est un peu plus lent que le « hardware SPI », et ça nécessite des scripts un peu plus complexes. Par contre, on peut utiliser n’importe quelle pin GPIO. Pour un exemple de ce type, vous pouvez consulter l’adaptation que Dominique Meurisse de MC Hobby a faite du tutoriel d’Adafruit.