Raspberry PI : Commande GPIO via CRONTAB

RPI3B-500x334

Ce micro ordinateur peut vous permettre très simplement de commander quelques prises ou carrément tout un pan de votre installation si vous le rapprocher de votre tableau électrique. En le "couplant" à un crontab, on peut facilement alimenter ou couper certains circuits sur des plages horaires précises. Dans ce petit post, nous allons voir comment commander le port GPIO 1 de notre raspberry.

Prérequis

Bien sûr il faut un minimum de matériel à commencer par un raspberry (le modèle importe peut) ainsi que son alimentation et l'installation de raspbian. Il faut avoir installé la librairie Wiring PI.

Il faut également avoir activé le service SSH et donc connaitre l'ip de la machine sur le réseau.

Enfin, il faut un minimum de connaissance sur l'utilisation de nano.

1/ Création du script avec nano

Connectez vous en ssh à votre machine puis créer un petit fichier dans le répertoire "/home/pi/task/" par exemple:

pi@raspberrypi:~ $ sudo nano /home/pi/task/switchGPIO.sh

Et coller le code suivant

#
# usecase : 
# ./switchGPIO 1
#
# argument = 0 pour éteindre ou = 1 pour allumer
# 
#
# set le pin 1 en SORTIE
gpio mode 1 OUT
if [ $1 = 1 ]
then
 echo "Allumage de ..."
 gpio write 1 1
else
 echo "Extinction de ..."
 gpio write 1 0
fi
echo "Done."

Sauvez puis fermez le fichier.

Et rendez-le exécutable:

pi@raspberrypi:~ $ sudo chmod 777 /home/pi/task/switchGPIO.sh

 

2/ Lien avec la crontab

Entrez la commande suivante pour éditer votre crontab:

pi@raspberrypi:~ $ crontab -e

Le fichier contient normalement des explications sur le formalisme des expressions CRON

Il faut donc insérer les lignes utiles à la fin comme par exemple :

#Extinction à 22h00 tous les jours
0 22 * * * /home/pi/task/switchGPIO.sh 0
#Allumage à 6h30 tous les jours
30 6 * * * /home/pi/task/switchGPIO.sh 1

3/ Pour aller plus loin

Etat des ports GPIO

Pour connaitre l'emplacement de votre broche physique qui peut varier selon les versions, les modèles du raspberry et même la configuration logiciel, vous pouvez entrer la commande suivante :

pi@raspberrypi:~ $ gpio readall

Cela devrait vous retourner un résultat comme ça (pour le PI 2) :

readall

On voit bien ici que la broche GPIO 1 est en fait la broche physique numéro 12 et qu'elle est configurée en IN (state initial au démarrage du pi)

Exemple de câblage simple

Si vous décidez de commander des prises 240V-10A, il va obligatoirement falloir passer par un relais 5V de ce type (par exemple)

relais5V

Il vous faudra juste raccorder 3 fils :

  • Broche physique numéro 2 (5V) du PI avec VCC du relais
  • Broche physique numéro 6 (GND) du PI avec GND du relais
  • Broche physique numéro 12 (GPIO 1.) du PI avec IN1 du relais

Enregistrer

Un commentaire

  1. Bonjour , ca n ‘ as pas l ‘ air de fonctionner chez moi pourtant les droits sont bons …
    lorsque je fait un gpio readall rien ne changeau niveau du gpio physique7 et bcm 4 .
    voici le contenu du fichier :
    #
    # usecase :
    # ./switchGPIO 1
    #
    # argument = 0 pour éteindre , = 1 pour allumer
    #
    #
    # set le pin 4 en SORTIE
    gpio 4 mode OUT
    if [ $1 = 1 ]
    then
    echo « Allumage de test »
    gpio write 4 1
    else
    echo « Extinction de test »
    gpio write 4 0
    fi
    echo « Done. »
    et la ligne crontab : 11 18 * * * /home/pi/projets_auto/switchGPIO.sh 1

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.