Rasp-Hack-PiAnalog

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Introduction

Apprendre comment lire une tension analogique à l'aide d'un Raspberry Pi pourrait être plus facile que vous ne le pensez!

MCP3008-PiDemo.jpg

Le Pi n'inclus pas de convertisseur Analogique/Digital mais un convertisseur ADC externe tel que le MCP3008 peut être utilisé avec du code Python pour faire une lecture analogique en utilisant le protocole SPI.

Voici une liste de quelques entrées analogiques qui peuvent être lue avec ce montage:

Ce guide utilise un potentiomètre pour controler le volume d'un MP3 en cours de de lecture, mais ce code peut être utilisé comme base pour n'importe quelle lecture analogique.

Le Pi Cobbler d'AdaFruit (disponible chez MC Hobby) est utiliser pour faciliter le montage.

Prérequis

Assurez-vous d'avoir mis votre environnement Python à jour.

Cette exemple essaye aussi de modifier le volume sonore du votre Raspberry Pi d'un fichier MP3 en cours de lecture.
Il vous faut donc installer mpg321

sudo apt-get install mpg321

Si vous rencontrez des problèmes d'installation, vous pouvez jeter un oeil sur notre article consacré à l'installation de mpg321 et le rendu sonore sur un moniteur.

Matériel

Pourquoi avons nous besoin d'un ADC?

ADC signifie "Analog to Digital Converter" autrement dit "Convertisseur Analogique vers Digital".

The Raspberry Pi computer does not have a way to read analog inputs. It's a digital-only computer. Compare this to the Arduino, AVR or PIC microcontrollers that often have 6 or more analog inputs! Analog inputs are handy because many sensors are analog outputs, so we need a way to make the Pi analog-friendly.

We'll do that by wiring up an MCP3008 chip to it. The MCP3008 acts like a 'bridge' between digital and analog. It has 8 analog inputs and the Pi can query it using 4 digital pins. That makes it a perfect addition to the Pi for integrating simple sensors like photocells, FSRs or potentiometers, thermistors, etc.!

Lets check the datasheet of the MCP3008 chip. On the first page in the lower right corner there's a pinout diagram showing the names of the pins

MCP3008.jpg

Montage

Détails du montage

Pour pouvoir lire des données analogiques nous devons utiliser les broches suivantes pour alimenter la puce MCP3008:

  • VDD (alimentation),
  • DGND (digital ground, masse digitale).

Nous avons aussi besoin de 4 broches/pins pour les données 'SPI':

  • DOUT: broche "Data Out", sortie de donnée de la puce MCP3008,
  • CLK : broche "Clock" pour le signal d'horloge,
  • DIN : broche "Data In", entrée des données dans la puce MCP3008, données provenant du Raspberry Pi,
  • /CS : broche "Chip Select", qui permet d'activer la puce.

Et bien entendu, pour finir, la source de donnée analogique. Nous allons utiliser un potentiomètre de 10k.

Le MCP3008 a quelques broches complémentaires qui doivent aussi être connectées:

  • AGND: (analog ground, masse analogique), broche quelque-fois utilisées dans les montages de précision... ce qui n'est pas le cas de cet exemple.
    Nous raccordons AGND à GND (la masse).
  • VREF: tension de référence. Utilisée pour changer l'échelle de mesure de la tension.
    Comme nous désirons une mesure sur l'échelle complete, nous raccordons VREF à 3.3V.

Diagramme

Vous trouverez ci-dessous le diagramme de raccordement.

Connectez la broche 3.3V du cobbler sur le rail d'alimentation de gauche (le rouge) et la broche GND du cobbler sur le rail d'alimentation à droite (le bleu).

Connectez les broches suivantes sur la puce MCP:

  • MCP3008 VDD -> 3.3V (rouge)
  • MCP3008 VREF -> 3.3V (rouge)
  • MCP3008 AGND -> GND (noir)
  • MCP3008 CLK -> #18 (orange)
  • MCP3008 DOUT -> #23 (jaune)
  • MCP3008 DIN -> #24 (bleu)
  • MCP3008 CS -> #25 (violet)
  • MCP3008 DGND -> GND (noir)

Raccordez ensuite le potentiomètre:

  • Broche No 1 (gauche) sur la masse/GND (NOIR),
  • Broche No 2 (milieu) branchée sur la broche CH0 du MCP3008 avec un fil gris.
    CH0 est l'abréviation anglaise de "Channel 0" signifiant "Canal analogique 0".
  • Broche No 3 (celle de droite) connectées à 3.3V (rail rouge)

Pi-MCP3008-Wiring.jpg Source: AdaFruit.com

Raspberry et SPI

Les utilisateurs avancés de Raspberry PI aurons certainement déjà notés que le Raspberry PI dispose d'une interface SPI matérielle.

Cette interface matérielle est identifiable sur le Cobbler aux broches identifiées par MISO/MOSI/SCLK/CE0/CE1. Une interface SPI matérielle est super rapide mais malheureusement elle n'est pas prise en charge par toutes les distributions.

C'est pour cette raison que notre exemple met oeuvre une interface SPI logicielle. C'est le programme qui contrôle les broches relatives à l'interface SPI, les bits et le protocole. Comme le protocole SPI est assez simple, le code mis en oeuvre n'est pas trop long.

Le principal avantage de cette approche logicielle c'est que le protocole SPI peut être utilisé avec n'importe quelles broches GPIO du Raspberry Pi.

Code

Voici notre exemple Rasp-PiAnalog.py écrit en python.

#!/usr/bin/env python
# -*- coding: latin-1 -*-

Pour savoir comment télécharger et exécuter ce programme sur votre Py, nous vous proposons de prendre connaissance de notre premiers articles sur Raspberry Pi et LED

Source: AdaFruit Learning System

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com