作ったもの
ラズパイでコマンド叩いたら、CDプレイヤーが再生される(だけ)。
とりあえず、とりあえず、、、動くデモを作ってみたかったので、
見た目とか操作性とか特にこだわっていません。
次はWebページとかアレクサなどから制御できるようにしたい。
手を動かさずできるだけ楽に家電を操作したい。。。
必要なもの
- LED赤外線
- 赤外線受信機
- トランジスタ
- ブレットボード
- ジャンパワイヤ オスメス
- ラズパイとラズパイ動かすのに必要なもの(ラズパイ、MicroSD、AC電源)
手順
ラズパイの初期設定なんかは終わっているものとします。
初期設定は簡単なのでサクッと終わると思います!
- LED赤外線、赤外線受信機のデータシートから回路を考える
- 受信機を使って赤外線の信号を学習
- 学習した信号をコマンドラインから送信
回路
データシートの見方から抵抗の求め方、電圧電流とかわからないことだらけで知り合いの方にお世話になりながら(ほぼ作ってもらいましたが)作りました。
赤外線の学習
このデモを作るまで赤外線ってどのような仕組みで動いているのかよく知らなかったのですが、今回の学習ですこしわかってきました。
当初のイメージでは、赤外線に記号みたいな情報が乗っていて、それをピッっと一回で送信できるものだと思っていました。
それは違っていて、赤外線自体は記号や情報を飛ばしているだけではなく、0か1かの情報だけで、
それを一定の間隔で点滅して色々な機器を制御しているらしいです。
もちろん機器ごとに点滅の間隔は変わります。モールス信号的なイメージじです。
脱線しましたが、話を赤外線の学習に戻します。
学習には LIRC というツールを使います。
まずラズパイに LIRC を入れます。
sudo apt-get install lirc
インストールが終わったら /boot/config.txt
を編集します。 gpio ピンの情報を書き足します。
# IR-Remote controller
dtoverlay=lirc-rpi
dtparam=gpio_in_pin=4
dtparam=gpio_out_pin=17
編集が終わったら ラズパイ を リスタート します!
sudo shutdown -r now
lire が自動起動すると GPIO をへんなところにわりあててしまうらしいので、下記コマンドで自動起動をOFFにします!
sudo systemctl disable lirc.service
続いて下記コマンド実行
sudo modprobe lirc-rpi gpio_in_pin=4 gpio_out_pin=17
sudo systemctl stop lircd.socket
sudo systemctl stop lircd.service
sudo /etc/init.d/lircd stop
sudo /etc/init.d/lircd start
sudo systemctl restart lircd.service
続いて赤外線学習していきます!
/etc/lirc/lirc_options.conf ファイルに↓を記入
[lircd]
nodaemon = False
driver = default
device = /dev/lirc0
設定を反映
sudo systemctl restart lircd.service
mode2コマンドをたたきます。
mode2 -d /dev/lirc0 —driver default
ついに学習コマンドです!
irrecord --disable-namespace -f -d /dev/lirc0 --driver default ~/lircd.conf
色々出てきます。。
irrecord - application for recording IR-codes for usage with lirc
中略...
Press RETURN to continue. ←ここでENTER
中略...
Press RETURN now to start recording. ←ここでENTER
...............................................................................
ここまできたら、学習させたいボタンをひたすら押します。
学習が終わったら↓のメッセージが出るので、学習させたボタンの名前を適当につけてENTER
Please enter the name for the next button (press <ENTER> to finish recording)
次に「さっき学習した***ってボタンを押して!」っていう↓のようなメッセージが出るので、ボタンを押します。
Now hold down button “on”.
Got it.
Signal length is 67
これで一つのボタン学習が完了しました。
次々学習させたい場合はメッセージに従って同じように登録していってください。
学習したファイルを適用するには、学習したファイルをコピーして、LIRC サービスを再起動します。
sudo cp ~/foobar.lirc.conf /etc/lirc/lircd.conf.d
sudo systemctl restart lircd.service
次に学習したボタンをコマンドラインから実行してみます!
irsend SEND_ONCE "cd" "on"
赤外線は角度結構シビアなので、そのへん調整が必要でした。