lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

Raspberry PiとArduinoを使用した家電制御デバイス

 今春、専門学校を卒業し内定先へ入社する運びとなった。
修了制作のプレゼンが終わり提出用レポートも仕上がったので

暇な時間の有効活用と言うことでどんなものを作ったのかとか参考になったサイトとかを紹介しようと思う。

概要

 なぜこのテーマかと言うとIoTデバイスってカッコいい名前を付けたけど
自分の技術・知識力でできることがこんな感じのことだったから

まあRPiとArduino組み合わせて赤外線で動いてる家電用リモコン作りましょうねーって話
それを家の外から操作できるといいよねって感じ。


・システム構成

プレゼンで使用したスライドそのまま
f:id:HM_Atlas:20170308095913j:plain

RPiのGPIOでいいじゃんと言う話題には後で触れる。

・買ったもの

  • Arduino Uno
  • Raspberry Pi 3 Model B
  • SPS-440-1
  • 赤外線LED(どれでもいい)
  • その他必要な物

赤外線の解析

 とりあえずリモコンにするのだからリモコンから送信される赤外線通信を解析しようってことで
Arduino 赤外線解析」でググった。

ほんで一番詳しく書いてあるのがこのサイト
赤外線リモコンの通信フォーマット

自分がバカ高校卒ってのもあって
普通の高校で周期Tとか勉強するのか知らないんだけども
知ってれば理解できる。よくわかんなかったらそこの勉強から

なんかフォーマットがあるってことがわかってザーッとArduinoでプログラム書いてみたんだけども
環境ノイズが多すぎてまともに取得できない。
いろいろ書いてたけどだるくなってほかの道を模索へ...

・IRremote

 Arduinoのライブラリで赤外線解析とか送信とか用のがあった
めっちゃ便利。一緒に入ってるサンプルプログラムで全部おkまである。
github.com

Raspberry Piのいろいろ

 ほんとはTCPサーバ化してスマフォ専用アプリ作ってってやりたかったんだけど
遊びすぎて時間がなかった
なんでapache入れてCGIプログラムでArduinoにシリアル通信で情報を伝達する。

修了制作のプレゼン自体はRPiのセキュリティ設定で時間を稼いだ。
だって赤外線解析の話IRremote使って全然なかったんだもん。

CGIプログラム

CGIプログラムはCで書いた
formメソッドを使ったリモコン画面から環境変数として文字列を受け取る
んで分解して指令部分を比較みたいな流れ
シリアル通信にはwiringPiのSerialPutsを使った
wiringPiマジ便利

Arduinoリモコンプログラム

 操作対象物に合わせたプログラム書いてどうぞ

Raspberry PiArduinoのシリアル通信

 正直ここが一番困った
RPiからシリアル通信を開始したはずなのに
Arduinoほんとに赤外線発信してる?って状態
赤外線見えないからLEDで実験。動いてなかった。

このサイト見つけるのにとても時間がかかった
d.hatena.ne.jp

wiringPiのdelay使って1.5秒待機して解決

Arduinoでの状態保持

 ガバガバなものを作ってるので時間がなくなっていろいろガバガバです。
Arduinoに状態を保持させると言うガバガバプログラム
でもなぜか状態保持できない!?なんで!?あいええええええええ!?ニンジャ!?状態

そうするとこんなのを見つけた
nuneno.cocolog-nifty.com
d.hatena.ne.jp

リンク先のブログでArduinoの公式サイトに載ってる仕様に触れているのでここでは触れません
とりまRESET ENのランドを削るかResetとGNDに110Ωの抵抗をつないでやるかの2つの方法

自分は学校に買ってもらったものなので躊躇なくランド削りました。
私物だったら絶対削ってない笑

これで状態保持も解決
完成です。

まとめみたいなやつ

 やる気があればArduino省略してRaspberry Pi単体で赤外線リモコン製作は可能な気がする。
簡単にしてくれるArduinoライブラリに頼った末路
赤外線解析で挫折したので送信は最初っから自作せずにライブラリの物を使ってる。

 赤外線通信だから双方向性が無くてうごいたかどうかがわからない
もっといろいろやりようがあったんだろうけど

 CGIプログラムだからいろいろあんなことやこんなことができない
当初計画のTCPサーバにしてAndroidアプリ開発とやらはどこへ飛んでいったのだか

途中でめんどくさくなってめっちゃ助けられたサイトだけささっと紹介
勝手に紹介しちゃったけどダメだったら教えてください。






今提出完了と思ったレポートが図が無さ過ぎるってことで帰ってきた
面倒だから入れなかったのだけど
図入れて印刷しなおすの面倒だから提出ギリギリにこのまま提出する作戦で行く。