Comment Générer des codes RF 433 Mhz avec un Raspberry pi 3 ?

Installer RFSniffer et rpi-rf-master :

Schéma de montage sur le Raspberry pi

On commence par mettre à jour le Raspberry pi

apt-get update && apt-get upgrade

RFSniffer (C++) :

On télécharge le dossier 433Utils

git clone --recursive git://github.com/ninjablocks/433Utils.git

On se positionne dans le dossier RPI_utils

cd 433Utils/RPi_utils

Comme c’est un programme C++ il faut le compiler avec la commande make

make RFSniffer.cpp

Pour pouvoir capter les signaux 433 Mhz de la telecommande avec le code C++ vous pouvez lancer la commande

./RFSniffer

rpi-rf-master (script Python3) :

On installe python 3 et pip si pas déjà installée

apt-get install python3-pip

On installe rpi-rf-master

pip3 install rpi-rf

Pour pouvoir capter les signaux 433 Mhz de la telecommande avec le code Python vous pouvez lancer la commande

rpi-rf_receive

Pour pouvoir envoyer des signaux 433 Mhz avec le code Python vous pouvez lancer la commande

rpi-rf_send "code a envoyer" "arguments -h help"

Le code send.py :

send.py (telecharger)

#!/usr/bin/env python3
# coding: utf-8

import argparse
import logging
import os
import time
import urllib
from datetime import date, datetime, timedelta
import requests


from rpi_rf import RFDevice

nb = input("combien de commandes souhaitez vous envoyer ? : ")

i=0
while i < int(nb):
  logging.basicConfig(level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S',
                    format='%(asctime)-15s - [%(levelname)s] %(module)s: %(message)s',)

  parser = argparse.ArgumentParser(description='Sends a decimal code via a 433/315MHz GPIO device')
  parser.add_argument('code', metavar='CODE', type=int,
                    help="Decimal code to send")
  parser.add_argument('-g', dest='gpio', type=int, default=17,
                    help="GPIO pin (Default: 17)")
  parser.add_argument('-p', dest='pulselength', type=int, default=None,
                    help="pulselength (Default: 350)")
  parser.add_argument('-t', dest='protocol', type=int, default=None,
                    help="Protocol (Default: 1)")
  args = parser.parse_args()
  
  rfdevice = RFDevice(args.gpio)
  rfdevice.enable_tx()

  if args.protocol:
      protocol = args.protocol
  else:
      protocol = "default"
  if args.pulselength:
      pulselength = args.pulselength
  else:
      pulselength = "default"
  logging.info(str(args.code) +
             " [protocol: " + str(protocol) +
             ", pulselength: " + str(pulselength) + "]")
  rfdevice.tx_code(args.code, args.protocol, args.pulselength)

          
  rfdevice.cleanup()  
  i=i +1

Autres liens :

Github rpi-rf_master
Github RFSniffer