Différences entre versions de « Rasp-Hack-PiButton »
Ligne 41 : | Ligne 41 : | ||
[[Fichier:PiButton_bb.jpg|800px]] | [[Fichier:PiButton_bb.jpg|800px]] | ||
+ | |||
+ | == Le script Python == | ||
+ | Pour créer facilement ce script sur votre python, nous vous proposons une méthode à base de copier/coller à l'aide des étapes suivantes à réaliser dans un terminal (ou une connexion SSH). | ||
+ | |||
+ | === Copier/coller le code === | ||
+ | Voici une méthode Copier/Coller super simple<br /> | ||
+ | |||
+ | On commence par demander la création du fichier | ||
+ | <nowiki>cat <<! > raspi-button.py</nowiki> | ||
+ | |||
+ | On fait ensuite le copier/coller du code | ||
+ | |||
+ | <nowiki>#!/usr/bin/env python | ||
+ | # -*- coding: latin-1 -*- | ||
+ | |||
+ | import RPi.GPIO as GPIO, time | ||
+ | |||
+ | GPIO.setmode(GPIO.BCM) | ||
+ | GREEN_LED = 18 | ||
+ | RED_LED = 23 | ||
+ | BUTTON1 = 24 | ||
+ | |||
+ | GPIO.setup(GREEN_LED, GPIO.OUT) | ||
+ | GPIO.setup(RED_LED, GPIO.OUT) | ||
+ | GPIO.setup(BUTTON1, GPIO.IN) | ||
+ | |||
+ | while True: | ||
+ | # Si le bouton est pressé, la broche GPIO est raccordée | ||
+ | # à la masse. Le GPIO est donc à LOW (bas). | ||
+ | # Bouton pressé -> Input = LOW = False | ||
+ | if( GPIO.input( BUTTON1 ) == False ): | ||
+ | GPIO.output(GREEN_LED, True) | ||
+ | GPIO.output(RED_LED, False) | ||
+ | else: | ||
+ | GPIO.output(GREEN_LED, False) | ||
+ | GPIO.output(RED_LED, True) | ||
+ | </nowiki> | ||
+ | |||
+ | On termine l'opération de saisie simplement avec: | ||
+ | <nowiki>!</nowiki> | ||
+ | |||
+ | === Rendre le fichier exécutable === | ||
+ | Par défaut, les fichier sont considéré comme des fichiers texte non exécutable... même s'il contiennent des scripts. | ||
+ | |||
+ | Il faut donc indiquer au système d'exploitation qu'il peut autoriser l'exécution de notre raspi-blink.py | ||
+ | <nowiki>chmod +x raspi-button.py</nowiki> | ||
+ | |||
+ | === Executer le programme === | ||
+ | Taper simplement la commande suivante: | ||
+ | <nowiki>sudo ./raspi-button.py</nowiki> |
Version du 27 octobre 2012 à 22:35
Introduction
Savoir lire l'état d'une entrée du port GPIO du Raspberry PI est une action fondamentale en hacking électronique.
La détection de la pression d'un bouton permet de re-initialiser un programme, de passer à l'étape suivante, jouer du son, etc.
Voici un exemple qui vous propose de lire l'état d'un bouton (actuateur) placé sur le broche 24 du GPIO.
Note: Cet exemple aurait pu également utiliser la broche 23 ou 25.
En fonction de l'état du bouton, le programme allumera la led Rouge ou Verte.
Un 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.
Matériel
- Un Pi-Cobbler
- 2 x résistance de 330 Ohms (Orange, Orange, Brun)
- 1 x Led Rouge
- 1 x Led Verte
- 1 x résistance de 10 KOhms (Brun, Noir, Orange)
- 1 x Bouton poussoir momentané (aussi appelé actuateur)
- Un Rapsberry, fil pour breadboard, breadboard.
Résistance Pull-up
Tout comme pour un montage Arduino, il faut utiliser une résistance pull-up pour ramener le potentiel de la broche GPIO à HIGH (niveau haut).
Lorsque l'on pousse le bouton poussoir, le potentiel de la broche GPIO est forcé à LOW (niveau bas). On évite le court-circuit grâce à la résistance Pull-Up.
Pour connecter un bouton sur un GPIO, il faut utiliser le montage suivant:
3.3v --> Résistance pull-up de 10k --> GPIO --> Bouton --> GND
Note: Ceux d'entre-vous qui utilisent un Arduino noterons que la tension du GPIO d'un Raspberry est 3.3v (et non 5v comme pour un Arduino)
Montage
Voici le détail du montage
Le script Python
Pour créer facilement ce script sur votre python, nous vous proposons une méthode à base de copier/coller à l'aide des étapes suivantes à réaliser dans un terminal (ou une connexion SSH).
Copier/coller le code
Voici une méthode Copier/Coller super simple
On commence par demander la création du fichier
cat <<! > raspi-button.py
On fait ensuite le copier/coller du code
#!/usr/bin/env python # -*- coding: latin-1 -*- import RPi.GPIO as GPIO, time GPIO.setmode(GPIO.BCM) GREEN_LED = 18 RED_LED = 23 BUTTON1 = 24 GPIO.setup(GREEN_LED, GPIO.OUT) GPIO.setup(RED_LED, GPIO.OUT) GPIO.setup(BUTTON1, GPIO.IN) while True: # Si le bouton est pressé, la broche GPIO est raccordée # à la masse. Le GPIO est donc à LOW (bas). # Bouton pressé -> Input = LOW = False if( GPIO.input( BUTTON1 ) == False ): GPIO.output(GREEN_LED, True) GPIO.output(RED_LED, False) else: GPIO.output(GREEN_LED, False) GPIO.output(RED_LED, True)
On termine l'opération de saisie simplement avec:
!
Rendre le fichier exécutable
Par défaut, les fichier sont considéré comme des fichiers texte non exécutable... même s'il contiennent des scripts.
Il faut donc indiquer au système d'exploitation qu'il peut autoriser l'exécution de notre raspi-blink.py
chmod +x raspi-button.py
Executer le programme
Taper simplement la commande suivante:
sudo ./raspi-button.py