Mes passions, le boulots, mes coups de gueule...




Raspberry Pi : Construire un récepteur 433MHz

Catégories : Domotique, Geek, Informatique, Linux, Raspberry Pi · par 1 Avr 2020

Introduction

Dans un précédent article, j’avais abordé le contrôle de périphériques 433Mhz à l’aide d’un Raspberry Pi. Il était alors possible d’allumer ou d’éteindre divers prises ou récepteurs.

Nous allons voir ici qu’il est tout à fait possible de faire l’inverse et de recevoir des informations émises depuis une télécommande ou des appareils comme les détecteurs d’intrusions.

Malheureusement, cette fonction d’écoute permanente de la bande 433,92MHz consomme beaucoup de ressources processeur (aux alentours de 30% en permanence) et il est peut-être intéressant d’y consacrer un ancien RPi qui enverra une instruction générique en SSH à une autre RPi à chaque réception d’un signal.

Montage

Concernant le montage, je vous renvoie vers mon précédent article qui décrit les branchements du récepteur sur le Pi : https://www.fanjoe.be/?p=2301.

Ce module de réception peut se trouver pour quelques euros sur des sites comme Amazon : https://amzn.to/3bFSeEI.

Les antennes hélicoïdale peuvent simplifier le montage : https://amzn.to/2R3YEpo

Software

Installation

Pour la partie software, pareil, tout est expliqué sur l’autre article. On installe WiringPi et 433Utils.

Modifications

Une fois tout cela installé et testé, nous allons éditer le fichier /home/pi/433Utils/RPi_utils .

Nous allons supprimer la ligne :

printf("Received %i\n", mySwitch.getReceivedValue() );

Et la remplacer par ces lignes :

char command[150];
sprintf (command, "ssh pi@192.168.0.250 /home/pi/scripts/./receive-433-actions.sh %d", value);
// printf("Received %i\n", value );
system(command);
usleep(3000000); // Pause de 3 secondes

Ceci aura pour effet de déclencher le script receive-433-action.sh sur un autre Raspberry Pi (192.168.0.250).

La variable « value » contient le code émis par la télécommande et est passée en arguments dans le script.

Une fois les modifications terminées, on compile le code avec la commande make.

S’il n’y a pas d’erreur dans les modifications apportées au fichier, vous devriez obtenir le message ci-dessus.

Un exemple de script que vous pourriez utiliser :

#!/bin/bash

# $1 est le code émis reçu en argument par le script
case $1 in
   15037246) <Action pour ce code>
   ;;
   5845481) <Action pour ce code>
   ;;
   5440005) <Action pour ce code>
   ;;
   5440004) <Action pour ce code>
   ;;
esac

A chaque exécution du script, le code sera vérifié et une action sera déclenchée s’il correspond. Par exemple, envoyer une notification avec PushBullet.

Pour que la commande SSH passe sans mot de passe, il faudra utiliser une authentification par certificats : https://www.fanjoe.be/?p=1600.

(5) comments

Thierry
3 ans ago · Répondre

Bonjour,
Intéressant mais je suis surpris de voir que l’émetteur et le récepteur sont reliés au +5V alors que les E/S du Raspberry sont en 3.3V
Il serait préférable d’utiliser des modules 3.3V

    fanjoe
    3 ans ago · Répondre

    Bonjour,

    L’émetteur 5V semble avoir un portée supérieure à celui en 3,3V.
    L’alimentation se fait en 5V entre PIN 5V et masse.
    Le DATA se fait en 3,3V entre la PIN DATA et la masse.
    Certains émetteurs peuvent monter jusqu’à 12V pour augmenter la portée.
    Exemple : https://www.seeedstudio.com/433Mhz-RF-link-kit-p-127.html

    Didier.

Lars
3 ans ago · Répondre

ça fait 3 jours que j’essaie de trouver un tuto qui explique comment faire une action avec un script… Je te remercie t’es génial.
J’aurai une petite question.
J’ai une télécommande avec un seul bouton, je voudrais avec un seul bouton lancer trois scripts différents.
Je m’explique :
J’appuie sur le bouton : mon 1er script se lance.
J’appuie une seconde fois sur le même bouton : deuxieme script se lance.
J’appuie une troisieme fois sur le même bouton : troisieme script se lance.
J’appuie une quatrieme fois sur le même bouton : 1er script se lance.
Et former une boucle…

Pense-tu que c’est possible ?
Je te remercie encore une fois.

    fanjoe
    3 ans ago · Répondre

    Bonjour,
    C’est possible.
    Tu dois inscrire un compteur dans un fichier à chaque fin d’exécution du script.
    En fonction de la valeur de ce compteur lu en début de script, il effectue une tâche spécifique.
    Didier.

lars
3 ans ago · Répondre

Merci Fanjoe, finalement je me suis pas fait chier, j’ai pris une télécommande avec plusieurs boutons, c’est même plus pratique.

Laisser un commentaire

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