LoginSignup
0
0

iphoneで操作可能な学習機能付きスマートリモコンを作ってみた。

Last updated at Posted at 2024-05-10

初投稿となります。

iphoneで操作可能な学習機能付きスマートリモコンを開発した(2か月前)ので、ここに記録として留めておきます。

開発経緯

  • IRを利用した赤外線スマートリモコンはwebで多く見られるが、iphoneと通信可能な学習機能付きスマートリモコンが無かった。
  • IRについて学習したかった。

動作

受信(学習)

①iphoneのショートカットからIRSCANを実行
②任意のデバイス名を入力
③任意の機能名を入力
④学習させる信号を送信(2回)
⑤学習完了
images.png

送信

①iphoneのショートカットからIRSENDを実行
②デバイスを選択
③リストから機能を選択
④LED点灯
images (2).png

外観

回路

images (3).png

(googleスライドで作ったけど、普通にspiceかfritzingで作った方が楽そうでした)

pythonコード

赤外線信号の送受信にはirrp.pyを使用しました。下記サイト参考。irrp.pyはコマンドライン引数を利用して動作を指定できるので、iphoneのショートカット機能と相性が良かったです。
https://ediy-fan.com/ir-remote/

また、送信時に、デバイスと機能のリストを読みとってiphoneに表示するために、ファイル名。もしくはIRデータのtxtファイルの中身から機能名を取得する簡単なコードを作成しました。

get_device_names

import os

def list_device_files():
    files = [f for f in os.listdir() if f.endswith(f)and '.' not in f]
    print('\n'.join(files))

if __name__ == "__main__":
    list_device_files()  

get_function_names

import sys

def list_functions(device_file):
    try:
        with open(device_file, 'r') as file:
            functions =  [line.split(':')[0].replace('"', '').replace('{', '').strip() for line in file.readlines()]
        print('\n'.join(functions))
    except FileNotFoundError:
        print('File not found')

if __name__ == "__main__":
    device_file = sys.argv[1]
    list_functions(device_file)

iphoneショートカット

SSH通信を利用してwifi経由でiphoneからいろいろ操作するショートカットです。

IRSCAN

iphone側でデバイス名と機能名を入力し、それを読み取ります。その後、入力したテキストをコマンドライン引数とする形で、ラズパイの指定のフォルダに格納されているirrp.pyを実行します。通信にはssh通信を使用しますが、iphoneのショートカット機能にそれはデフォルトで備わっていました。

IRSEND

iphone側からssh通信で、上記2つのpyコードを実行します。その返り値をデバイス名、もしくは機能名としてiphoneでリスト形式で出力、選択させます。その後選択された信号を実行するためにもう一度ssh通信を行い、ラズパイから信号を送信します。

感想

普段使いできるレベルのものを電子工作で作ったのは初めてだったので、完成したときは嬉しかったです。ただ、赤外線の送信可能範囲はまだ数m程度のため、部屋によっては機能しづらいものとなっています。出力向上のためにはピンの容量が足りないので、リレー回路を組むのが良さそう??

以上になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0