介護ロボットを創る(赤外線リモコン部)
娘:ねえ、ネエ お母さん! お父さんAIスピーカー作ってんだって!
娘:『フリスク! テレビつけて!』って言えば良いのね
・・・・・などと無謀な会話から始まった介護ロボットの作成
まずは、家電を操作する(赤外線)リモコン部の作成
(1)ハード設計
と言ったたいそうなモノでは無いけど、
①赤外線リモコンの信号をコード化するためにリモコンの信号を受信する回路
②そのコード化した信号を赤外線で照射する回路
これまた先人の技術を参考に次のような回路を組む
この発光ダイオード(OSI5FU5111C-40)の標準順方向電流は100mAだが、パルスだと最大1,000mAが可能なので、
なるべく遠くからいろんな家電を操作できるよう電流を大きくとる
ので、R2を200Ωにすると実測16mAだが、R2を4.7Ωに変えて計算上700mAで運用する
実験してみると、斜め約45°から2mの距離から操作が可能だった (^_^)v
(200Ωだと1mの距離から斜め30°で制御可能だったので、これで充分ではあるのだが)
(2)ソフト製造
これまた製造といえるモノでは無く、やはり先人のお知恵をお借りしてパッケージ等をinstallして環境を構築する
RaspberryPiのGPIO制御ライブラリPiGPIOを使って制御する赤外線リモコン用ツールがあったのでそれを使わせて頂く
1 2 3 4 |
$ sudo apt install pigpio python3-pigpio #PiGPIOをインストール $ sudo systemctl enable pigpiod.service #PiGPIOの自動的起動設定 $ sudo systemctl start pigp #とりあえずPiGPIOを起動しておきます $ echo 'm 25 w w 25 0 m 24 r pud 24 u' > /dev/pigpio # ポートのモードと初期値を設定 |
ここで、PiGPIOの作者自らが作った IR Record and Playbackをダウンロードする
1 |
$ curl http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip | zcat > irrp.py |
(3)さっそく、リモコン・コード記録(保存)
①次のコマンドを起動して、リモコンを受光モジュールに向けてボタンを押すと、コードが記録される
1 |
$ python3 irrp.py -r -g24 -f codes light:on --no-confirm --post 130 |
[TVの電源SW]ボタンのコード受信の様子と受信コードは次のようになる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberrypi:~ $ python3 irrp.py -r -g24 -f codes light:on --no-confirm --post 130 Recording Press key for 'light:on' Okay pi@raspberrypi:~ $ ls Downloads Pictures Videos oldconffiles Desktop MagPi Public codes python_games Documents Music Templates irrp.py pi@raspberrypi:~ $ more codes {"light:on": [3390, 1695, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 1246, 441, 1246, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 1246,441, 401, 441, 1246, 441, 401, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 401,441, 401, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 1246, 441, 69280, 3390, 1695, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441,1246, 441, 401, 441, 1246, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 1246, 441, 1246, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 1246, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 401, 441, 401, 441, 401, 441, 1246, 441, 401, 441, 1246, 441, 1246, 441]} pi@raspberrypi:~ $ |
注) 1)ボタンを押し終えると”Okay”が表示される
2)結果、codesファイルが作成される
(4)保存したコードを送信してみる(記録したcodesファイルは「電源ボタン」の意のBon.codeにリネームしておく)
1 |
$ python3 irrp.py -p -g25 -f Bon.code light:on |
やったね !(^^)! SHARP製TVの電源がはいった!
ここまでの完成フリスクはこれ(↓)