IRKit Cloneのまねごと Part2 [Arduino]
IRKit CloneのPart2。
今回は,ユニバーサル基盤に乗っけて,実際,動作するまでです。
SSRをつけて,SW操作も出来るように作ってましたが,まずは,よりCloneっぽくする為に,SSRは無しとしました。
製作過程は,いつも通り一筋縄では,いかない訳で…
今回は,使用したライブラリ”IRremoteESP8266”にやられます orz
2017/02/27 15:46 追記
誤動作対応を修正しました。
2017/03/09 追記
誤動作対応が甘く,リモコン情報の取得ができない orz
とりあえず,loop()の所,”decode_type != UNKNOWN”をコメントアウトしました。
まずは,早速,「今回のどハマり」ポイントです(笑
ライブラリ側の問題で,disableIRIn() → 再enableIRIn() がおかしかったので,再enableIRIn()のタイミング変更は,不要かも…
irrecv()誤動作は,もっと良い方法が有りそうですが,やっつけ(UNKNOWは無視)で対応です。
回路は,元ネタ”まるまんま”ですが,赤外線LEDを1つ追加,ステータス表示用の為,IO0にLEDを追加しました。
POSTしたりGETしたりすると,LEDが点滅します。
当然,使用するIOは,他でもOKです。 IOが余っているので3色LEDに変更すれば,より華やかになると思います。
実物は,IRKitと比べると,こんな感じ…
タカチのプラケース”TW5-3-5B”に入れるのを想定してます。
単品では,こんな感じ…
なんか,前側がギュウギュウ詰め。
実際は,ESP8266に付き物な,PullUp/Down抵抗は全部,ブレークアウトボード(裏)に付いてますので,基盤上はすっきりしています。 赤外線LEDは,前方に2つ,上向きに1つ。 青色LEDはステータス用。 後ろ側に,ResetスイッチとMicroUSB(電源のみ)があります。
当方,CEREVO製ブレークアウトボードのJ1にスイッチを実装,実装前に3V3とGNDのパターンカットし,抵抗器(10k)を挟みPullUp/Down化することで,IO0もI/Oとして使えるようにしています。
コードの方は,WifiManagerを入れてあるので,初回起動時,APモードとなりSSID/Passwordの設定をすることができます。
これで,アクセスポイントが変わっても,簡単に対処できます。
# 当方,1つの部屋にAPが3つある…
実際のコードはこんな感じ… いつも通り”フランケンシュタイン”状態。
行数は,元ネタの約5割増し(笑
書き込み前に,必要なライブラリをIDEにセットアップしておいてください。(GitHubにあります)
# ブラウザーのjavascriptを有効にして頂かないと,コードの一部が表示されません。
IRKitClone with WifiManager
今後,最終的には,ケースに入れて,他の部屋に設置しようと思ってます。
あと,赤外線LEDの指向性(?)が,びっくりするほとピーキー(?)なので,”拡散キャップ”を付けないと,部屋全体をカーバーするには厳しいかも。
リモコンの情報を取得してしまえば,curlで操作できるので,homebridgeなどで使うことも出来たりで,夢は広がります(笑
リモコン情報の取得作業が,地味なくせに一番大変かも…ですが。
最後にいつものお約束。
試すなら自己責任で,おねがします。
# こんなの誰も試さないか…
今回は,ユニバーサル基盤に乗っけて,実際,動作するまでです。
SSRをつけて,SW操作も出来るように作ってましたが,まずは,よりCloneっぽくする為に,SSRは無しとしました。
製作過程は,いつも通り一筋縄では,いかない訳で…
今回は,使用したライブラリ”IRremoteESP8266”にやられます orz
2017/02/27 15:46 追記
誤動作対応を修正しました。
2017/03/09 追記
誤動作対応が甘く,リモコン情報の取得ができない orz
とりあえず,loop()の所,”decode_type != UNKNOWN”をコメントアウトしました。
まずは,早速,「今回のどハマり」ポイントです(笑
- IRremoteESP8266(20170221現在)でコンパイルエラー
- IRremoteESP8266.cppに #include "IRKelvinator.h" を追加
- GitHubのIssuesに報告が上がってた(#74 missing include)
- 20170227現在,修正されている。
- POST /messages後,以後のIRデータの取得(GET /messages)が出来なくなる。
- POSTするJSONネタが不正な場合,disableIRIn()したままになってしまう。
- 再enableIRIn()のタイミングを変更。
- disableIRIn()が動かないらしい…(20172227現在)
- GitHubのIssuesに報告が上がってた。(#57 Receiving is not working after irrecv.disableIRIn() and irrecv.enableIRIn())。
- disableIRIn()すると,再enableIRIn()が出来ない。
- Issuesの通り,disableIRIn()の中身を,detachInterrupt(irparams.recvpin);に変更すればOKっぽい。
- irrecv()する際,他の赤外線を拾って誤動作する。
- decode_type = UNKNOWNの時,無視するのように修正。...外からは,誤動作中なのか判りづらいので,シリアルモニターに接続を推奨。
- まさか,石油ファンヒータの対人センサーから出ている赤外線で,irrecv()が誤動作するとは orz
ライブラリ側の問題で,disableIRIn() → 再enableIRIn() がおかしかったので,再enableIRIn()のタイミング変更は,不要かも…
irrecv()誤動作は,もっと良い方法が有りそうですが,やっつけ(UNKNOWは無視)で対応です。
回路は,元ネタ”まるまんま”ですが,赤外線LEDを1つ追加,ステータス表示用の為,IO0にLEDを追加しました。
POSTしたりGETしたりすると,LEDが点滅します。
当然,使用するIOは,他でもOKです。 IOが余っているので3色LEDに変更すれば,より華やかになると思います。
実物は,IRKitと比べると,こんな感じ…
タカチのプラケース”TW5-3-5B”に入れるのを想定してます。
単品では,こんな感じ…
なんか,前側がギュウギュウ詰め。
実際は,ESP8266に付き物な,PullUp/Down抵抗は全部,ブレークアウトボード(裏)に付いてますので,基盤上はすっきりしています。 赤外線LEDは,前方に2つ,上向きに1つ。 青色LEDはステータス用。 後ろ側に,ResetスイッチとMicroUSB(電源のみ)があります。
当方,CEREVO製ブレークアウトボードのJ1にスイッチを実装,実装前に3V3とGNDのパターンカットし,抵抗器(10k)を挟みPullUp/Down化することで,IO0もI/Oとして使えるようにしています。
コードの方は,WifiManagerを入れてあるので,初回起動時,APモードとなりSSID/Passwordの設定をすることができます。
これで,アクセスポイントが変わっても,簡単に対処できます。
# 当方,1つの部屋にAPが3つある…
実際のコードはこんな感じ… いつも通り”フランケンシュタイン”状態。
行数は,元ネタの約5割増し(笑
書き込み前に,必要なライブラリをIDEにセットアップしておいてください。(GitHubにあります)
# ブラウザーのjavascriptを有効にして頂かないと,コードの一部が表示されません。
IRKitClone with WifiManager
今後,最終的には,ケースに入れて,他の部屋に設置しようと思ってます。
あと,赤外線LEDの指向性(?)が,びっくりするほとピーキー(?)なので,”拡散キャップ”を付けないと,部屋全体をカーバーするには厳しいかも。
リモコンの情報を取得してしまえば,curlで操作できるので,homebridgeなどで使うことも出来たりで,夢は広がります(笑
リモコン情報の取得作業が,地味なくせに一番大変かも…ですが。
最後にいつものお約束。
試すなら自己責任で,おねがします。
# こんなの誰も試さないか…
タグ:IoT IRKit Clone
コメント 0