Verzenden en ontvangen van 433MHz op Raspberry Pi
In dit artikel leggen we uit hoe je met je Raspberry Pi draadloze (433 MHz) schakelaars (bijvoorbeeld van het merk klik aan / klik uit, maar ook andere merken werken goed) kunt aansturen. De kosten van de receiver en transmitter zijn ongeveer 1 tot 5 euro inclusief verzendkosten.
Benodigdheden
- Raspberry Pi (bij versie 1 moet je even de pin-out opzoeken aangezien deze anders is. Voor versie 2 en 3 zijn ze hetzelfde als hieronder), linux met SSH toegang.
- Klik aan / klik uit (of een ander merk) schakelaars en afstandsbediening. Tip: kijk een bij de Action rond, daar kun je ze vaak voor een paar euro kopen.
- 433 MHz receiver / transmitter, voor een beter bereik moet je wel zeg een antenne erop solderen. Deze antennes kun je op AliExpress kopen, maar je kunt ook een recht koperdraad van 17,3 cm gebruiken.
-
Kabels; in principe kan je elke kabel gebruiken maar dan zal je moeten solderen. Het is gemakkelijker om Dupot female to female kabels, dan hoef je niks te solderen.
Aansluiten van de receiver / transmitter
De transmitter heeft 3 pinnen en de receiver heeft er 4. Bij de receiver heb je 2 data pinnen deze doen precies hetzelfde, je hoeft dus ook maar 1 van de 2 pinnen te gebruiken.
Mocht je een ander setje hebben dan ik gebruik kijk dan altijd even wat de pin-out van het onderdeel is (hetzelfde geldt als je een Raspberry Pi 1 hebt).
De receiver en transmitter moeten als volgt worden aangesloten:
Nu alles goed aangesloten is kan de Raspberry Pi weer aangezet worden. Maak vervolgens met SSH verbinding met je Raspberry.
Software
Het is tijd om de software te installeren:
git-core:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
wiringPi:
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build
433Utils
git clone --recursive git://github.com/ninjablocks/433Utils.git
cd 433Utils/RPi_utils
Wanneer je dezelfde pinnen als beschreven hebt gebruikt kan je doorgaan, mocht je andere pinnen gebruikt hebben dan zal je die in *.ccp bestanden moeten aanpassen. Er wordt hier gebruik gemaakt van wiringPi dus je moet de pin-nummers gebruiken die overeen komen met wiringPi (kijk hier voor meer informatie).
make all
Je kunt, als alles goed gegaan is, nu gebruik maken van 433Utils, nu kunnen we de codes die verstuurd worden vanuit de afstandbediening lezen:
sudo ./RFSniffer
RFSniffer is nu gestart. Als je nu een knop op je afstandsbediening drukt verschijnt de code. Let op dat je wel dichtbij (ik moest echt binnen 0,5 meter zitten) moet zijn, voordat hij de code goed ontvangt. Je kunt nu de codes voor het aan en uitzetten opslaan. Je kunt stoppen door ctr + c te drukken.
We kunnen codes vanaf de Raspberry Pi sturen door het volgende commando te gebruiken:
sudo ./codesend xxxxxx
Waarbij de xxxxx
natuurlijk de code is die je wilt versturen. Als het goed is kun je nu je schakelaars bedienen vanaf je Raspberry Pi! Het kan zijn dat het bereik niet zo goed is, ik heb zelf een extra antenne aan m’n transmitter gezet.
Je zou nu bijvoorbeeld Domoticz kunnen installeren om die te gebruiken om bijvoorbeeld bij zonsondergang de lampen automatisch aan te laten gaan of om via de app van domoticz de lampen vanaf je smartphone te schakelen. Om wat zekerder te zijn van het schakelen heb ik een apart shell script geschreven die een bepaald aantal keren de code versturen, omdat de codes soms niet gepakt worden.
verzenden.sh
#!/bin/bash
for (( i=1; i <= $2; i++ ))
do
sudo //home/root/433Utils/RPi_utils/codesend $1
done
Je kunt dan via ./verzenden.sh xxxxx 3
waarbij 3 natuurlijk het aantal keren is dat het de code verstuurd moet worden. Je zou ook het codesend script kunnen aanpassen maar had daar niet zo’n zin in ;-).
Hoe je Domoticz installeert kun je hier vinden. Na de installatie kun je onder instellingen -> hardware nieuwe hardware toevoegen. Je moet dan kiezen voor type hardware -> dummy.
Je kunt daarna switches handmatig aanmaken, je kiest hier dan voor de dummy hardware, schakelaar type on/off, type x10, waardes van de rest maken niet zoveel uit. Het kan zijn dat deze uniek moeten zijn per schakelaar. Dan kun je gewoon wat invullen. Je slaat de schakelaar dan op, hierna kun je de schakelaar bewerken. Je krijgt dan meer opties, waaronder actie aan en actie uit. Je kunt hier nu een verwijzing naar het script maken, bij mij is dit bijv.: script:///home/root/433Utils/RPi_utils/verzenden.sh 12345 3
(Let op dat er na script: 3x een / staat).
Wat is het verschil tussen deze kit en de RFXCom ?
Ik ben nieuwe met de PI en Domoticz maar je uitleg heeft zeer geholpen.
Tot aan het schrijven van het .sh bestand lukt, alleen bij uitvoer krijg ik foutcode ( ./kaku1.sh: line 2: ((i
Hoi Joost,
Bedankt voor deze blog.
Ik heb alles geinstalleerd. Als ik een codesend commando geeft, wordt hij netjes ontvangen door de receiver.
Echter, KAKU signalen pikt de RFSniffer niet op. Zelfs niet met een antenne gemonteerd en de remote zowat tegen de receiver aan. Ik heb behalve het setje wat jij gebruikt, ook een superheterodyne setje geprobeerd. Echter, het resultaat is hetzelfde.
Heb jij enig idee?
Hendrik
Hier hetzelfde 🙁
WiringPi is niet meer beschikbaar op de bovengenoemde link op git;
Deze vond ik op de wiringPi website :
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
Check with:
gpio -v
wiringPi zit tegenwoordig al standaard in raspbian, niet nodig om nog te installeren.
Ik kan geen Klik aan Klik uit codes ontvangen.
Heeft iemand hier een oplossing voor?
Ja: Sonoff RF
Hier idem dito met rpi3+ …
Set van een 433MHz RF onvanger- en zendermodule te gebruiken voor oa. Arduino AVR PIC projecten. Bijvoorbeeld aansturen van een kaku set, deurbellen, garagedeur, domotica of robot projecten.
Kun je de data pin van de receiver rechtstreeks aansluiten op GPIO27? Moet daar niet een logic level shifter tussen van 5V naar 3.3V?
De software van git://github.com/ninjablocks/433Utils.git is geschikt voor de oude KaKu schakelaars die met de dipswitches giconfigureerd moeten worden.
Voor de huidige Type A KaKu waarbij de ontvanger de code van de zender “leert” en opslaat, is andere software nodig.
Zie repo https://github.com/joostfra68/rpi433