Door je RF Receiver en Transmitter op een Arduino Nano aan te sluiten i.p.v. rechtstreeks op je Raspberry Pi, kun je deze qua CPU flink ontlasten.
Het volgende artikel is een schaamteloze copy van het artikel van K-Jay op Tweakers. Alle credits gaan dan ook naar hem. Ik publiceer het ook hier om dit zo voor mezelf ook te kunnen documenteren. Het oorspronkelijke artikel is op een paar kleine punten aangepast aan mijn situatie.
Het aansturen van mijn KAKU modules door de Superheterodyne RF Receiver en RF Transmitter rechtstreeks op de Raspberry Pi aan te sluiten werkte tot nu uitstekend bij mij.
Ik merkte echter wel dat dit erg veel CPU kost op de Raspberry Pi. Dit is de wijten aan het feit dat de RF ontvanger veel ruis ontvangt en het filteren hiervan veel CPU kost. De oplossing is simpel. Je moet in dat geval de RF Receiver en RF Transmitter aansluiten op een apart Arduino Nano bordje. De Arduino Nano filtert de ruis uit het 433-MhZ signaal weg en kost ongeveer Euro 2,=. Verbind de Arduino Nano via USB met je Raspberry Pi. Verbind verder de RF Receiver en RF Transmitter als volgt:RF Ontvanger (het brede blokje met 8 pinnen):
- VCC op pin 27 +5V
- GND op pin 29 GND
- DATA op pin 5 D2
RF Zender (het smalle blokje met 4 pinnen):
- VCC op pin 27 +5V
- GND op png 29 GND
- DATA op pin 7 D4
Je kunt kijken welk adres de Arduino Nano op je Raspberry Pi heeft gekregen door het volgende commando:
cd /dev ls -l ttyUSB?
Vaak zal dit dan ’ttyUSB0′ zijn.
Nu moet je de software voor de nano compileren:
sudo apt-get install arduino-core avr-libc avrdude binutils-avr gcc-avr libconfig-yaml-perl libftdi1 libyaml-perl screen python-serial
Hierna moet je de sketch-file downloaden:
cd /home/pi git clone --recursive https://github.com/pimatic/homeduino.git
Nu moet je nog de Makefile controleren of deze de juiste waarde heeft staan voor MONITOR_PORT. Controleer met de ‘VI’ editor of hier de poort staat zoals je Arduino Nano bekend is (bijvoorbeeld ttyUSB0)
sudo vi /home/pi/homeduino/Makefile
Tenslotte kun je de software compileren en uploaden met het volgende commando:
cd /home/pi/homeduino make upload
Tenslotte moeten we nog het configuratie-bestand van Pimatic aanpassen. Zorg ervoor dat Pimatic niet draait met het volgende commando:
/etc/init.d/pimatic stop
Open nu je ‘config.json’ configuratie bestand in de VI editor en pas deze aan. Zorg dat in de plugin sectie het volgende staat:
{ "plugin": "homeduino", "driver": "serialport", "driverOptions": { "serialDevice": "/dev/ttyUSB0", "baudrate": 115200 }, "receiverPin": 0, "transmitterPin": 4, "debug": true }
Je kunt nu tenslotte pimatic weer opstarten met het commando:
/etc/init.d/pimatic start
Pimatic kan nu weer 433 MHz signalen van KAKU ontvangen en verzenden. Dit kun je eenvoudig controleren door in het Menu naar “Messages” te gaan en Debug aan te zetten. Verzend nu een command met je KAKU afstandbediening en je zult zien dat er debug-regels verschijnen op het scherm.
Dit alles ging bij mij in 1 keer goed. Ik heb de combinatie nu als volgt in mijn meterkast staan: Het CPU gebruik is nu van gemiddeld 70% gedaald naar 1%. Prima dus. Nogmaals de credits van dit artikel gaat naar de oorspronkelijk auteur K-Jay.
De laatste dagen had ik last van het feit dat ik opeens geen RF verkeer meer kon ontvangen op mijn RF Receiver. Nader onderzoek wees uit dat de pimatic-homeduino plugin zijn communiatie was kwijt geraakt met de Arduino Nano. In de debug-logging zie je dan de volgende regel:
[pimatic-homeduino] warn: Couldn’t connect (operation timed out), retrying…
De oplossing voor mij was het verhogen van de ‘connectionTimeout van 5 minuten naar 60 minuten. Dit doe je in de file ‘/pimatic-app/node_modules/pimatic-homeduino/homeduino-config-schema.coffee’
Indien dit niet helpt dan schijnt het probleem ook aan je USB kabel te kunnen liggen. Vooral goedkope Chinese kabels willen nogal eens storing opvangen/veroorzaken. Als laatste moet je ervoor zorgen dat je USB voeding voldoende is (minimaal 2A wordt aangeraden).
Hallo Henri,
Wat een fantastische blog heb je, erg leuk om te lezen, vooral de technische blogposts (a).
Mede door jou de RPI zo ver gekregen dat ik mijn KAKU schakelaars ermee kan bedienen, super!
Dan nu mijn vraag:
De master in mijn domoticasysteem is een Siemens PLC, de communicatie tussen een Siemens PLC en de RPI heb ik al voor elkaar in een Python script. Weet jij of het mogelijk is om de KAKU ontvangers te schakelen via een python script (als ze bijvoorbeeld al zijn toegevoegd via Pimatic)?
Bedankt voor je compliment.
Ik heb zelf nog nooit m.b.v. python scripts KAKU modules aangestuurd. Maar kijk eens naar het ESPimatic project (https://github.com/koffienl/ESPimatic/wiki). Deze heeft ook een API waarmee je HTTP commando’s kunt versturen (dat kun je dus ook in Python aanroepen). Ik heb dit geprobeerd met een relay en dat werkt erg goed.
Zie ook mijn andere blog hierover: http://eye-vision.homeip.net/6625/draadloze-temperatuur-sensor-voor-pimatic/ over hoe je ESPimatic opzet.
Dank je, ik ga ernaar kijken!
aller eerst bedankt voor de tutorials!! ze helpen me behoorlijk hahah
nu stuit ik op een “probleem” als ik de rpi (3) reboot dan vindt hij me nano niet ” cd /dev
ls -l ttyUSB? ” … dan moet ik een paar keer usb in en uit (ik heb 4 nano’s nieuw en het is bij allemaal zo verschillende kabels geprobeerd en dan vindt hij hem pas ( dan werkt hij ook in pimatic na een restart ) wat kan hier een oorzaak van zijn ?
Ik herken het probleem niet Edwin. Wel heb ik gelezen dat je voor de RPI 3 een zwaardere voeding moet kiezen. Er wordt aangeraden om minimaal 2.5A te kiezen. Is dat wellicht je issue?
dank voor je snelle reactie ,en spijt voor de late reactie terug “zit in verhuizing weinig tijd dus” heb het weer opgepakt omdat we nu versie 0.9 hebben en dacht probeer het weer eens ..het probleem zit volgens mij niet in de voeding aangezien ik de originele rpi3 voeding heb aangeschaft ,nano heeft gewoon power ,allen de rpi herkent hem niet ,,moet echt de usb 10x in en uit halen voordat hij herkent wordt ..heeeeeel vaag… heb originele nanos “naar mijn weten” inclusief de daar bij behorende usb kabels.. maar goed probleem was niet bekent bij jou zal wel aan me rpi3 liggen … hehe
Hoi Henri,
Na gebruik gemaakt te hebben van je handleiding om een raspberry voor domotica in te zetten, en de handleiding om een garagedeur aan te sturen heb ik daarna deze handleiding maar eens gevolgd. Op een probleem met mijn SD-kaart na verliep het goed. CPU load is inderdaad drastisch gezakt. Bedankt voor je goede handleidingen. Ik heb er veel aan gehad.
Heb zelfs ook nog gekeken naar je deurbel oplossing. Maar dat heb ik opgelost met 2 draadloze deurbellen van KAKU en een zender op de bestaande deurbel. Oude deurbel dus uitgeschakeld.
Heb je nog nieuwe plannen voor domotica-projecten voor thuis?
Ik hou je site in ieder geval in de gaten. Nogmaals bedankt voor de handleidingen.
Ik wil binnenkort nog een IP camera toevoegen aan mijn setup. Als een en ander klaar is wil ik dat weer documenteren op mijn blog.
Hoi Henri,
super bedankt voor informatie op deze blog, ik ben er mee aan de slag gegaan en heb inmiddels alles werkend. Wat mij alleen nog opviel was dat in de specs van de superheterodyne rx en tx staat dat de input resp. 2.0 – 3.6v en 3.0 – 5.0v is (). In de blog geef je zelf aan alles op 5v aan te sluiten. In de praktijk werkt alles nu op 5v zoals beschreven in je blog, maar de theorie van de specs geven volgens mij aan dat het op 3v3 pin aangesloten moet worden toch? Misschien een domme vraag of zie ik wat over het hoofd, maar ik vroeg me af hoe dit zat.
Link naar 433 modules; https://nl.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html
Mvg,
Marnix
Goede opmerking Marnix. Het ligt aan welke type Superheterodyne RF set je hebt. Zo heb ik zelf een set waarbij RF Receive tot 5V gaat en de RF Send tot 12V. Dat laatste heb ik dan ook gebruikt om mijn zendvermogen te verhogen. Zie ook deze link.
Hallo Henry
Als een totale noob op dit gebied vind ik zelf dat ik toch al een aardig eind ben gekomen 🙂 maar heb nu een vraagje.
De ontvanger heeft 2 x 4 pinnen. De gnd en data zijn me duidelijk maar wordt met vcc de +5 bedoeld? Zo ja moeten dan de vcc links EN rechts worden doorgezet?
Overigens alles erg duidelijk beschreven, ook de Pimatic install, dank daarvoor!
Groet
Frans
Met VCC (Voltage at the Common Collector) wordt inderdaad +5V bedoeld. Je hoeft er maar 1 aan te sluiten.
Maakt het dan nog uit welke kant de vcc, of gnd wordt aangeslopen?
GND op GND aansluiten en de +5V op VCC. Welke kant maakt niet uit.
Hallo Henri,
Heb je tips hoe ik de Arduino Nano + receiver kan troubleshooten. Ik heb je handleiding inmiddels een keer of 25 doorlopen. Met verschillende receivers, verschillende Arduino’s en verschillende Pi’s. Alles gaat elke keer prima, alleen krijg ik maar geen signaal binnen. Ik heb het ook al rechtstreeks op de GPIO geprobeerd maar ook dit was geen succes.
Als ik 5V aansluit op de receiver aan de kant waar de antenne aansluiting zit zie ik wel een lampje op de arduino knipperen wanneer ik een KAKU signaal stuur. Als ik de 5V aan de andere kant aansluit is dit niet zo.
Ik krijg haast het idee dat ik het allemaal niet goed aansluit, maar aangezien de Arduino wel knippert twijfel ik hier toch aan. Ik heb trouwens geen fatsoenlijke antenne, maar gebruik op dit moment een jumpwire hiervoor.
Niels
Ik heb nooit problemen ondervonden en heb dus nooit te hoeven troubleshooten. Ik zou in dat geval alles 1 voor 1 systematisch aflopen en pas verder gaan met de volgende stap als de vorige stap 100% zeker goed is gegaan. Zorg er ten eerste voor dat je de Arduino Nano goed geprogrammeerd hebt. Compileerde de software voor je Arduino Nano goed? Heb je de juiste USB poort gekozen en is het uploaden goed gelukt? Heb je de goede USB poort ingesteld in je configuratie voor de Homeduino sectie van je config.json file? Heb je de debug logging gecheckt of er er wel signalen worden ontvangen. Je hebt hier echt niet een extra antenne voor nodig.
Bedankt voor de snelle reactie!
De software voor de Arduino compileerde goed ja. Die eindigt netjes met “avrdude done. Thank you”.
De poort heb ik inderdaad gecontrolleerd, Dit doe ik na elke reboot of het ontkoppelen en weer koppelen van de Arduino. Deze staat ook ingesteld in de json.config.
In de debuglogging zie ik dus niks binnen komen, dat is precies het punt waarop ik elke keer vastloop.
Zijn er zaken die ik kan controleren? Moet het lampje op de Arduino bijvoorbeeld knipperen als het een signaal ontvangt?
Waarmee stuur jij een signaal naar je RF ontvanger als test om op die manier de debug te controleren of je wel wat ontvangt? Ik gebruik zelf als test altijd de afstandsbediening van zo’n KAKU startersset. Of er een lampje moet branden bij RF communicatie heb ik eigenlijk nog nooit gecontroleerd..
Daarom heb ik net even speciaal voor je gecontroleerd in de meterkast hoe mijn setup reageert. Bij mijn Arduino Nano brand continue een rood lampje.
Als ik een RF signaal ontvang (ik gebruik een RF afstandsbediening hiervoor als zender) knippert er even een lampje naast het rode lampje.
Als ik een RF signaal verstuur vanaf de Arduino Nano (dan gebruik is dus de RF Zender aangesloten op de Arduino Nano) dan zie ik ook een lampje ernaast even oplichten.
Heb je dezelfde Arduino als mij en heb je alles op de goede pinnen aangesloten net zoals ik heb gedaan? Heb je verder in je Homeduino sectie ook het volgende staan:
“receiverPin”: 0,
“transmitterPin”: 4
@Niels,
Ik had hetzelfde probleem als wat jij hebt.
Ook bij mijn Nano knipperde wel het tweede lampje ten teken dat deze wat ontvangt, alleen zie helemaal niks binnen komen.
Nu heb ik de config van de Homeduino-plugin ook de debug aangezet, en vanaf dat moment kreeg ik alles binnen. Misschien helpt dit bij jouw ook?
“plugin”: “homeduino”,
“driver”: “serialport”,
“debug”: true,
Hee Harold en Henri,
Ik heb er veel tijd in gestopt, maar helaas kreeg ik het niet werkend. Ik heb toen een RFLink bordje gekocht en deze gekoppeld aan Domoticz en dat werkt nu gelukkig.
In ieder geval bedankt voor jullie tips. Misschien als ik aan mijn andere Pi ook RF dingetjes ga koppelen, ga ik er weer mee stoeien.
@Henri: Ga zo door met je blog. Het heeft me wel het eerste zetje gegeven. 😉
Goedenavond allemaal,
Heb je ook een blog over hoe je Kaku signalen kunt ontvangen? Zodat ik de bestaande schakelaars ook kan onderscheppen?
Groet Hans
Gewoon in Pimatic naar Messages gaan en debug level logging aanzetten. Je ziet dan alle ontvangen RF signalen voorbij komen.
Kun je ook dat script programmeren via de windows-Arduino-IDE?
Ik heb het geprobeerd maar hij vind de SerialCommand.h niet ….
Deze staat ook niet in het zip bestand, nergens ….
Dit gaat niet via de Arduino IDE, maar de compiler van Raspbian/Debian. Je zou dit eventueel gewoon op je Raspberry Pi kunnen uitvoeren.
Hallo Henri,
Zeer bedankt voor de duidelijke Homeduino-tutorial.
Ik gebruik al enkele jaren met plezier Pimatic (de GPIO-versie).
Nu met Pi3 en een 7inch display ben ik de boel opnieuw aan het configureren met Homeduino.
Groet, Frans
ik heb de nano en ontvanger en zender aan gesloten zoals hier beschreven
maar krijg geen contact met de 433 MHz Kanaals Draadloze Relais
link
als ik op de homeduinoRFSwitch drukt knippert er wel een lampje op de nano
wat doe ik niet goed ?
Heb je de homeduino plugin goed ingesteld? Check vooral of de poort goed ingevuld staat zoals de Arduino op jouw Raspberry Pi gedetecteerd wordt. Je kunt verder de debug logging eens aanzetten om te kijken of je 433 MHz verkeer voorbij ziet komen:
{
"plugin": "homeduino",
"driver": "serialport",
"driverOptions": {
"serialDevice": "/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0",
"baudrate": 115200
},
"receiverPin": 0,
"transmitterPin": 4,
"debug": true,
"apikey": "1234567890",
"active": true,
"rfrepeats": 6
},
ik heb deze plugin in de config gezet
{
“plugin”: “homeduino”,
“driver”: “serialport”,
“driverOptions”: {
“serialDevice”: “/dev/ttyUSB0”,
“baudrate”: 115200
},
“receiverPin”: 0,
“transmitterPin”: 4
},
als ik bij de messages de debug aan zet zie ik niks kom er niks
ben hier pas mee begonnen dus alles is nog nieuw voor mij
Ik zie de volgende regel niet bij jou:
"debug": true,
debug op true gezet
als ik op het knopje van de nano druk krijg ik
debug [pimatic-homeduino]: data: “ready” te zien
maar als ik op het knopje van de Relais druk krijg ik niks te zien
voor dat ik de nano installeerde brande er een rood lampje en knipperde er nog een ander lampje
na installatie brand er no nog maar alleen het rode lampje
is dat oke
Ik heb nog nooit op het knopje van de Arduino gedrukt en dat hoeft ook niet nodig te zijn. In het commentaar van deze thread heb ik nog wat andere tips gegevens wat je probleem eventueel kan zijn. Dit heeft bij andere mensen ook geholpen, dus dan moet het bij jou ook lukken. Check dus even deze thread met tips in het commentaar. Succes Kees.
Bedankt tot zover
Beste Henri, het heeft veel zweetdruppeltjes gekost, maar eindelijk de boel werkend gekregen. Bedankt voor de goede uitleg. Alleen het weer en de voorspelling werkt niet Welk device heb je hiervoor gebruikt? Of welke moet ik gaan gebruiken?
Groetjes Joop
Ik gebruik geen device voor de weersvoorspelling. Wel zijn er diverse Pimatic plugins voor het weer. Kijk maar eens hier.
Inderdaad, KNMI-weather geïnstalleerd en ik krijg nu ieder geval wat weergegevens. Prima.
Heb je toevallig deze opstelling ook werkend gekregen op domoticz? Dus 433 via Arduino nano naar Pi/domoticz. Ik kan enkel voorbeelden vinden met een Arduino mega.
Nee niet met de Arduino Nano, wel met de Arduino Mega. Hier heb ik beschreven hoe je dat doet. In totaal ben je dan ongeveer Euro 10,= kwijt aan hardware.
helder en slim opgelost. Wel vreemd dat het niet direct werkt, kan dit niet binnen de raspberry worden opgelost?