Rasp-Hack-Hall

De MCHobby - Wiki
Aller à : navigation, rechercher

Introduction

Les senseurs à Effet Hall permettent de détecter si un aimant est a proximité. Ils sont très utiles pour constituer un senseur SANS contact et résistant à l'eau. Ils peuvent aussi servir comme senseur de position, encodeur, détection de rotation.


Détecter la présence d'un aimant est une opération qui présente un avantage majeure en prototypage électronique.
Un senseur US5881LUA et un aimant permet de mettre en oeuvre de détecteur de type "switch" là ou il serait impossible de placer un vrai switch
Par exemple, vous pouvez détecter la rotation d'un élément rotatif. C'est grâce à ce senseur que je peux détecter l'ouverture de ma poubelle.

Parmi les nombreux senseurs à effet Hall disponibles sur le marché, l'un des meilleurs est certainement le US5881LUA. de Melexis

HallEffect.jpg

Aimant-Rare-Earth.jpg

Le but de cet exemple est d'allumer une LED lorsque le senseur à effet Hall est activé par un aimant.

Un Pi-Cobbler (disponible chez MC Hobby) est utiliser pour faciliter le montage.

Pi-Cobbler ou Pi-Cobbler-Plus?

Avec l'arrivée du Raspberry Raspberry Pi 3, Raspberry Pi-2 et Raspberry Pi-B PLUS, Raspberry Pi Zero W vient également un GPIO étendu de 40 broches rétro-compatible avec le GPIO des premières générations du Raspberry-Pi qui, lui, n'avait que 26 broches.

GPIO-Compatibility-00v3.jpg

La seule vraie différence réside dans la longueur du GPIO du modèle Pi-3, Pi-2 ou B+ qui contient des broches en plus... et le Pi-Cobbler PLUS qui à également grandi pour accueillir les broches en plus.

Avec l'apparition du Pi Zero, nous pouvons reparler de la correspondance des GPIO.

Pour notre plus grand bonheur, le GPIO du Pi Zero et du Pi 3 (ou Pi 2) sont identiques :) chouette.

RASP-PIZERO-Correspondance-GPIO v2.jpg
Cliquez pour agrandir

Prérequis

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

Matériel

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 le senseur n'est pas activé par un aimant, la sortie du senseur Hall est "libre" et la résistance ramène le potentiel à 3.3v.
Lorsque le senseur est activé par un aimant (pôle sud uniquement), la sortie du senseur est ramené à la masse. Le potentiel du GPIO est donc de 0v.

Pour connecter un senseur US5881LUA sur un GPIO, il faut utiliser le montage suivant:

PiHall-schematic.jpg

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).
La résistance de pull-up ramène la tension à 3.3v, il n'y a donc aucun risque pour le GPIO.
Par contre, la logique du senseur doit, elle, être alimentée avec une tension de 5 Volts.

Montage

Voici le détail du montage

PiHall1.jpg


PiHall2.jpg

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-hall.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 = 23   # Led branchée sur GPIO 23 
HALL_SENSOR = 24 # Senseur Hall branché sur GPIO 24
hallActive  = False # Etat du senseur effet Hall

GPIO.setup( GREEN_LED  , GPIO.OUT )
GPIO.setup( HALL_SENSOR, GPIO.IN  )

while True:
        # Le senseur effet HALL est HIGH s'il n'y a pas d'aimant
        # et Low s'il y a un aimant. Il faut donc inverser la logique
        hallActive = False
        if( GPIO.input( HALL_SENSOR ) == False ):
                hallActive = True
        else:
                hallActive = False

        # Allumer la LED si le senseur est activé
        GPIO.output( GREEN_LED, hallActive )

        # Attendre 300ms
        time.sleep( 0.300 )

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-button.py

chmod +x raspi-hall.py

Executer le programme

Taper simplement la commande suivante:

 sudo ./raspi-hall.py

Vidéo

Voici une vidéo de démontration

Ou Acheter

Tous les produits sont disponible sur le WebShop de MCHobby.

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

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.