初投稿となります。
iphoneで操作可能な学習機能付きスマートリモコンを開発した(2か月前)ので、ここに記録として留めておきます。
開発経緯
- IRを利用した赤外線スマートリモコンはwebで多く見られるが、iphoneと通信可能な学習機能付きスマートリモコンが無かった。
- IRについて学習したかった。
動作
受信(学習)
①iphoneのショートカットからIRSCANを実行
②任意のデバイス名を入力
③任意の機能名を入力
④学習させる信号を送信(2回)
⑤学習完了
送信
①iphoneのショートカットからIRSENDを実行
②デバイスを選択
③リストから機能を選択
④LED点灯
外観
回路
(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程度のため、部屋によっては機能しづらいものとなっています。出力向上のためにはピンの容量が足りないので、リレー回路を組むのが良さそう??
以上になります。