H3V4F ASK ワイヤレスモジュールを使う

Raspberry<->ATmega328


H3V4Fを使って、RaspberryとATmega328の通信を試してみました。
wiringPiライブラリを使っているので、wiringPiライブラリのインストールが必要になります。
Raspberryへのライブラリのインストールとコンパイルは以下の通りです。
$ sudo apt install git                   
$ cd $HOME
$ git clone https://github.com/WiringPi/WiringPi
$ cd WiringPi
$ sudo ./build

$ cd $HOME
$ git clone --recursive https://github.com/ninjablocks/433Utils.git
$ cd 433Utils/RPi_utils
$ make

Raspberry→ATmega328
codesendのソースは、wiringPiSetup()を使って初期化していて、WiringPi番号は1固定です。
そこで、送信モジュールのDataピンをRPIのGPIO17(Pin#11)に接続し、以下のコマンドを実行します。
RaspberryPi以外のボードで使う場合は、ピン番号が変わります。
2番目の引数はプロトコルの指定ですが、何が変わるのかよく分かりません。
$ sudo ./codesend
Usage: ./codesend decimalcode [protocol] [pulselength] [bitlength]
decimalcode     - As decoded by RFSniffer
protocol        - According to rc-switch definitions
pulselength     - pulselength in microseconds
bitlength       - bit length

$ sudo ./codesend 1
$ sudo ./codesend 2
$ sudo ./codesend 1 2
$ sudo ./codesend 2 2

ATmega側でRaspberryからのデータを受信しています。



ATmega→Raspberry
RFSnifferのソースは、wiringPiSetup()を使って初期化していて、WiringPi番号は2固定です。
そこで、受信モジュールのDataピンをRPIのGPIO27(PIN#13)に接続し、以下のコマンドを実行します。
RaspberryPi以外のボードを使う場合は、ピン番号が変わります。
$ sudo ./RFSniffer

きちんとATmegaからのデータを受信できています。


こちらも大体8mぐらい離れても送受信できます。



この様な無線リモコンユニットから送信してみました。
見た目は同じですが使用する周波数帯域が違います。




こちらが315MHzのリモコンを使った時の結果です。
4つのボタンの値が正しく受信出来ています。


こちらが433MHzのリモコンを使った時の結果です。
使用する帯域が違うだけで全く同じリモコンコードでした。
赤外線リモコンはリモコンコードを学習する必要が有りますが、無線リモコンは学習の手間が無いので簡単に使うことができます。
また赤外線リモコンと違って、蛍光灯の影響は受けません。
送信機をあさっての方向に向けてボタンを押しても、きちんと受信してくれます。


こちらでSYN480Rの受信モジュールを紹介しています。