• 忘れないようにいろいろ書きます。

     

    やりつくされたネタで参考サイトも山のようにあるが、その分古い情報も多く少しハマった。

    全体の流れはここを参考した。

    Raspberry pi 3 を使って、 LINE から 赤外線リモコンを操作

    赤外線リモコンを使う

     

    回路作成

    回路は下の参考にした。

    Raspberry Pi Zero で赤外線リモコンを作る

    赤外線リモコン回路とラズパイ

    写真には余計なICも載ってる。

     

    LIRCで赤外線リモコンを学習する

    赤外線リモコンを学習するためのパッケージLIRCをインストール。

    sudo apt-get install lirc

    /etc/lirc/lirc_options.confを修正。
    hardware.confを修正するという記事がたくさんあるが、Raspbian Stretchからは/etc/lirc/lirc_options.confファイルを編集するので注意。

    sudo nano /etc/lirc/lirc_options.conf

    して

    driver = devinput
    device = auto

    ↓修正

    driver = default
    device = /dev/lirc0

     

    /boot/config.txtを修正。

    sudo nano /boot/config.txt

    して、一番最後の行に下の記述を追加。

    dtoverlay=lirc-rpi:gpio_out_pin=25,gpio_in_pin=24,gpio_in_pull=up

    ※pin番号は適宜読み替え。上のサイトの通りに回路を作ったなら上のコマンド。

    再起動する。

    sudo reboot

     

    再起動したら、lircdを止める。

    sudo systemctl stop lircd.service

    以下のコマンドを実行してから、学習したいリモコンのボタンを押して赤外線受光部に赤外線をあてる。

    sudo mode2 -d /dev/lirc0 | tee signal

    signalというファイルが作成される。中身は赤外線データ。

    実際に赤外線データを使用するには、数字の羅列を整形する必要がある。

    データの整形は以下をサイトのものを使わせてもらった。

    Raspberry Pi 2 でエアコン操作(赤外線リモコン編)

    整形用のlirc_cut.pyファイルを以下のように作成する。

    #coding: UTF-8
    import sys
    
    argvs = sys.argv
    argc = len(argvs)
    
    if (argc < 2):
     print 'Error: argument not enough'
     quit()
    
    f = open(argvs[1])
    line = f.readline() # 一行目は不要なので読み捨てる
    line = f.readline()
    
    count = 0
    
    while line:
     print line.split(' ')[1].strip(),
     line = f.readline()
     count += 1
     if (count > 20): # 1行が長すぎると後で困る為適当に改行を入れる
     count = 0
     print
    
    f.close

    以下のコマンドでlirc_cut.pyを使ってsignalから整形したsignal.batファイルを作成する。

    python lirc_cut.py signal> signal.dat

    出来上がったsignal.datの最初の値は不要なので必ず削除する。最初の数字は大体ばかでかい値になっている。

     

    /etc/lirc/lircd.conf.d/pc_room_light.lircd.confを作成しsignal.batのデータをpc_room_light.lircd.confに記述する。

    sudo touch /etc/lirc/lircd.conf.d/pc_room_light.lircd.conf
    sudo nano /etc/lirc/lircd.conf.d/pc_room_light.lircd.conf

    pc_room_light.lircd.conf中身。

    begin remote
     name pc_room_light
     flags RAW_CODES
     eps 30
     aeps 100
     gap 200000
     toggle_bit_mask 0x0
    
    begin raw_codes
    
    name on
    10252 5022 688 1847 686 1848 688 1852 688 581 773 494 689 1857 679 1849 688 1855 689
    573 691 582 776 1760 769 1774 691 575 781 490 684 580 772 504 772 1763 763 1767 774 1762
    773 501 688 1844 689 582 774 496 773 501 690 573 689 582 772 496 773 1772 685 576 776
    1763 688 1868 673 1850 686 44945 10317 2387 775
    
    name off
    6
    
    
     end raw_codes
    end remote

    リモコンのボタンの数だけname ”ボタン名”で追加して、学習と登録を繰り返す。

     

    登録が全部終わったら、再度lircdを起動する。

    sudo systemctl start lircd.service

    以下のコマンドでリモコンファイルの一覧が表示される。
    devinputは最初からあるファイル。消したら動かなくなったので、消さないようにしてる。

    irsend LIST '' ''

    以下のコマンドで”pc_room_light.conf”の”off”の赤外線を出力できる。

    irsend SEND_ONCE pc_room_light off

     

    上手くいかない場合

    以下のコマンドで正常にlircdが起動しているかチェックする。

    sudo systemctl start lircd.service
    sudo systemctl status lircd.service

    上でいうpc_room_light.confの形式がおかしかったりすると、エラーになる。

    confの形式は以下の2点に注意する。
    ・signal.datの最初の値は必ず削除すること。

    ・数字の羅列はpulseで始まりpulseで終わること。つまり必ず奇数個になる。偶数だとエラーになる。

     

    irsend LIST '' ''で作成したpc_room_light.confが表示されない場合、以下のコマンドで再起動すると直るかも。

    sudo systemctl stop lircd.service
    sudo systemctl start lircd.service

     

    単純に赤外光が弱い可能性もある。

    自分の場合、最初LED1つに330Ωの抵抗で実験していたが、1mぐらいまで近付けないと反応してくれなかった。

    抵抗を50Ωに変えたところ上手く動くようになった。

    最終的に冒頭の記事のようにLED2つに10Ωで運用している。

     

    サイト内リンク

    ラズパイでNASを構築する

    ラズパイにAlexaをインストールする

    ラズパイを赤外線リモコンにして家電を操作する

    Raspberry Pi3自作Webサーバー構築記part.1(ラズパイセットアップ編)


    コメントを残す

    メールアドレスが公開されることはありません。