GPIO draadloos inschakelen (Pi2Pi)

In deze tutorial gebruik ik twee Raspberry Pi's waarvan ik er een met een 433MHz zender uitrust en de ander met een 433MHz ontvanger en twee LEDs. Aan de hand van een gemodificeerd KlikAanKlikUit (KaKu) script kan je GPIO poorten op afstand draadloos in- en uit te schakelen.    

Als voorbeeld worden twee LEDs geschakeld, maar dat kunnen natuurlijk ook relais of andere stuurcomponenten (transistor, optocoupler, MOSFET, solid state relais, etc.) zijn.

De scripts zijn in de basis hetzelfde als die ik gebruikt heb bij de KlikAanKlikUit tutorial. Will je meer weten over de 433 Mhz ontvanger en zender kit, klik dan hier. Er staat o.a. interessante informatie over de beste antenne voor dit project.

Pi 1 van zender voorzien
Zoals gezegd gebruik ik voor deze tutorial twee Pi’s. Verbind de eerste met de zender. Volg hiervoor het onderstaande aansluitschema.

Bedradingsschema om de zender met Pi 1 te verbinden
Aansluittabel voor de zender en de Raspberry Pi

Let op!
De 433MHz zender kan het functioneren van apparatuur in en rond het huis beïnvloeden!

Pi 2 van ontvanger en LEDs voorzien
De tweede Pi wordt met de ontvanger en twee LEDs en serieweerstanden (270 Ohm) voorzien. Volg hiervoor het onderstaande aansluitschema.

Bedradingsschema om de ontvanger met de Pi te verbinden

Aansluittabel voor Raspberry Pi en de ontvanger, de LEDs en de weerstanden

Python scripts installeren
Nu de Pi’s met de zend- en ontvangstmodules en de LEDs verbonden zijn, kunnen we het script voor beide Pi’s downloaden.

Pi 1 – De zender
Open de terminal op de zendende Pi. Maak een map aan genaamd 433MHz.

mkdir 433MHz

Download het gezipte script zend.py

Unzip het gedownloade bestand en zet het script in de net aangemaakte directorie.

Pi 2 – De ontvanger
Open de terminal op de ontvangende Pi. Maak een map aan genaamd 433MHz.

mkdir 433MHz

Download het gezipte script ontvang7.py

Unzip het gedownloade bestand en zet het script in de net aangemaakte directorie.

Python scripts starten
Nu beide Pi’s met software voorzien zijn, kunnen we de scripts opstarten.

Pi 2 – De ontvanger
We starten eerst de ontvanger door in de directorie 433MHz het script ontvang7.py op te starten.

python3 ontvang7.py

De ontvanger ‘luistert’ of er iets verzonden is

Pi 1 – De zender
Vervolgens starten we in de directorie 433MHz het script zend.py

python3 zend.py -p 174 -t 1 1901

Met het opstarten van het script geef ik in de syntax een code mee. De oplettende lezer heeft direct door dat het hier het zgn. KaKu-script betreft. Dat klopt! Hier heb ik niets aan verandert, anders dat de code bepalend is welke LED er bij de ontvanger AAN of UIT gaat. Het script van de ontvanger is wel aangepast. Het herkent de code en weet welke LED in- of uitgeschakeld moet worden.

CODE
1901 = Rode LED AAN
1900 = Rode LED UIT
2001 = Groene LED AAN
2000 = Groene LED UIT

Op deze manier kan je alle GPIO-poorten schakelen door in het script ontvang7.py een ‘if’-routine op te nemen die de code afvangt en een LED of relais schakelt. De gebruikte codes kan je zelf kiezen, ook de lengte van de cijfercode kan je zelf bepalen.

Pi 2 – De ontvanger
Na verschillende codes verzonden te hebben zie je aan de kant van de ontvanger ongeveer het volgende in de terminal.

Opvallend zijn de vele regels ondanks dat je maar 4x een code verzonden hebt. Doordat codes soms maar deels doorkomen en daardoor ongeldig zijn volgt de melding: ‘De ontvangen code bevat geen geldige stuurcode

Zoals gezegd is iedere code (1901, 1900, 2002 en 2000) in het voorbeeld slechts één maal verzonden. Toch worden ze meerdere malen ontvangen. Dat maakt niet uit. Het script (ontvang7.py) vangt de code netjes af en schakelt de juiste LED AAN of UIT.

Ga je gang als je het script wat mooier wilt maken. Laat me het resultaat weten. Ik ben erg benieuwd.

Have A Nice Day!