赤外線リモコン自作
五号機-2 yokubarino
5号機のネジ留めに苦労したので、NANOとディップスイッチを基板にのせたバージョンを作ってみた。
ずい分楽にはなったが、もっと楽にならないか。
(ArduinoのPin13についての覚え書き)
UNOやNANOの基板には電源表示のLEDの他にPin13(D13)に繋がったLEDがついている。
blink.ino(いわゆるLチカプログラム)のLED_BUILTINのことだが、sketchのテストで出力を確認したりするのに非常に重宝する。
yokubarinoでもブレッドボードの段階ではリレーの代わりにこの13番LEDを使ってテストを行った。
そして、実装でもリレーモジュールへの出力にP13を割り当てた。
ところが、実装後のテストで基板のリセットボタンを押した直後にリレーがカチカチ動くことが発覚した。
はじめはarduino特有のノイズなのかとVCCとGNDの間にコンデンサをかましたり、ダイオードを入れてみたりしたが改善しない。
困ったものだとネットで調べていくと、ArduinoのPin13についての注意書きの記事が大量に見つかった。
Arduinoボードをリセットすると、ブートローダがP13にパルスを送りLEDを点滅させていたことがわかった。
要するにPin13は入出力には使わずにモニター用のLED専用として使えということだ。
またひとつ賢くなったということにしておこう。
居酒屋ガレージ日記 Arduino PB5(デジタル入出力D13)に注意を
人力検索はてな Arduino起動時、SSRが正常に動作しない。
Arduinoチュートリアル 基礎編 ブートローダ
ラジオペンチ Arduino よもやま話-8 (LEDピン (D13pin) の回路あれこれ)
(arduinoの電源としてのモバイルバッテリーの検討)
arduinoの電源供給には以下の3つの方法があるが、yokubarinoは3-2(USBチャージャー、単3×2を5Vに昇圧、 セリア )の方法で給電を行っている。(https://www.g200kg.com/archives/2018/03/arduino.html )
1 USBポート:5V
1-1 プログラムを仕込んでいる時にPC
1-2 モバイルバッテリー?
2.Vin-GND(or電源コネクタ):7-12V
2-1 ACアダプタ(7-12V)
2-2 1.5V電池直列
2-3 006P電池(9V)
3-2 コンバータで7-12Vにした電源
3.5V-GND:5V
3-1 ACアダプタ(5V)
3-2 コンバータで5Vにした電源
ところが、このyokubarinoを屋外でモバイルバッテリーで給電して使いたいという要望があった。
モバイルバッテリーは元々スマホなどのチャージ用に作られているので、スマホのバッテリーが満タンになって電流がほとんど流れなくなったら自動的に給電を止めてバッテリーが過充電にならないように作られている。
試しに手持ちのモバイルバッテリーを静止状態のNANOにUSBで繋いだら約1分で給電が止まった。
それだけarduinoが省エネだともいえるが、並列に別回路で負荷をかけるか、sketchで周期的にLチカさせるとかの対策が必要である。
だがしかし、せっかくの省電力設計の意味がない。ネットで調べると、モバイルバッテリーを騙すインターフェースやオートパワーオフ機能のない特殊なモバイルバッテリーもあるようだが、乾電池かエボルタとかの充電式を使ったほうが簡単である。
おまけ:セリアのUSBチャージャーの性能についての記事
五号機 yokubarino 2020.4.12
BDアダプタ等への出力と赤外線リモコンセントへの出力ができる参号機の設定を少し変えて実装してみました。
半田づけを最小限に抑えるために、アマゾンのジャンパー線を使ってみました。品質に多少問題がありますが上手くいきました。
今後の検討課題として
リレーモジュールとNANOの固定にM3、M1.7のボルトとナットを使いましたが、取り付けるのに大変苦労しました。(特にM1.7)
また、ディップスイッチの代わりに使ったスライドスイッチが華奢すぎました。
(機能) タイマーモードでは一度スイッチを押すと、指定時間内はその後のスイッチ入力を受け付けない。
[リレー出力] BDアダプタ等への出力
0000 ダイレクトモード
0001 ラッチモード
0010 ONパルスモード(ON時にパルス)
0011 ON・OFFパルスモード(ON時とOFF時にパルス)
0100 タイマーモード(2秒)
0101 タイマーモード(5秒)
0110 タイマーモード(7秒)
0111 タイマーモード(10秒)
1000 タイマーモード(15秒)
[赤外線出力] オーム電機リモコンセント への赤外線出力
1001 ダイレクトモード
1010 ラッチモード
1011 タイマーモード(2秒)
1100 タイマーモード(5秒)
1101 タイマーモード(7秒)
1110 タイマーモード(10秒)
1111 タイマーモード(15秒)
0000 [リレー出力]ダイレクトモード(スイッチを押している間だけON)
0001 [リレー出力]ラッチモード(スイッチを押す度にONとOFFをくり返す)
0100 [リレー出力]タイマーモード(2秒)
1001 [赤外線出力]ダイレクトモード(スイッチを押している間だけON)
1010 [赤外線出力]ラッチモード(スイッチを押す度にONとOFFをくり返す)
1100 [赤外線出力]タイマーモード(5秒)
(部品など)
Arduino NANO( アマゾン )、
リレーモジュール(5V、 アマゾン )、
赤外線LED(940nm、OSI5FU3A11C、 秋月電商 )、
USBチャージャー(単3×2を5Vに昇圧、 セリア )、
スライドスイッチ( アマゾン )、
ジャンパー線(メス、 アマゾン )、
10オーム抵抗(シリコンハウス)、3.5φモノラルジャック(シリコンハウス)、熱収縮チューブ(シリコンハウス)、
M3ボルト、ナット(コーナン)、M1.7ボルト、ナット(ナニワネジ)、
ケーブル(シリコンハウス、デジットのジャンク品)、タッパーウェア(ダイソー)
(その他)
赤外線送信には オーム電機リモコンセント が必要です。
(回路)sketch のダウンロード
四号機 yokubarino 2019.12.15
卒業生から依頼を受けて、ダイレクトモードとラッチモードだけで実装してみました。 NANO と電源とモード切替のスライドスイッチを基板にとめて電源は100均の乾電池式USBバッテリーから取りました。
(始めにダイレクトモードで動作させて、その後ディップスイッチを切り替えてラッチモードで動作させています。
モードの切り替えは電源を一度落としてsetup()でディップスイッチの状態を読み取る必要があります)
(回路) sketch のダウンロード
参号機 yokubarino 2019.12.08
浅田先生の ラッチボックス の4313に乗せられないか思ってプログラムのダイエットを試みました。
もし4313に入ればホンの少しのパーツの変更だけでラッチボックスの汎用性がまた高くなります。
残念ながら思ったほど小さくなりませんでした。→ sketch のダウンロード
赤外線LEDの出力が弱いので MOSFET をかませて1つから3つにしてみました。
オーム電機のコントローラーには負けますが、ある程度改善しました。
aruduinoを UNO から NANO に乗り換えました。
UNOはジャンパーピンがそのまま挿せますがその分かさ高い。NANOは小さいですが半田づけが必要です。
どちらを採用するか迷っています。
電源は100均の乾電池式USBバッテリーをセリアで見つけたのでこれを使うことにしました。
USBケーブルでarduinoのUSBポートから給電することも考えましたが、ケーブルがかさばること、リレーや赤外線LEDにも給電が必要なのでUSBバッテリーを開けて基板から5Vを取ることにしました。
(赤外線出力:ダイレクトモードの動作)
(回路)
弐号機 yokubarino 2019.11.17
以前ATtiny4313で作った インターフェース のプログラムと合体させて、arduinoでリレー出力と赤外線出力の両方を切り替えられるようにしました。
モードはディップスイッチで切り替えます。
→ sketch のダウンロード
[リレー出力]
0 ダイレクトモード(押している間ずっとON)
1 ラッチモード(押すたびにONとOFFをくり返す)
2 ONパルスモード(ON時にパルス)
3 ON・OFFパルスモード(ON時とOFF時にパルス)
4 タイマーモード(2秒)
5 タイマーモード(5秒)
6 タイマーモード(10秒)
7 タイマーモード(15秒)
8 タイマーモード(30秒)
[赤外線出力]
9 ダイレクトモード(押している間ずっとON)
A ラッチモード(押すたびにONとOFFをくり返す)
B タイマーモード(2秒)
C タイマーモード(5秒)
D タイマーモード(10秒)
E タイマーモード(15秒)
F タイマーモード(30秒)
初号機 取りあえず出来た 2019/11/10
赤ボタンを押すとON、黄ボタンを押すとOFF、よく見ると(見えないか)コンセントのランプが点いたり消えたりしている
材料
・Arduino UNO R3 の中国製互換品
・赤外線リモコン受信モジュールOSRB38C9AA
・赤外線LED(940nm、OSI5FU3A11C)
・タクトスイッチ
参考にしたサイト
・試行錯誤な日々 Arduinoで赤外線リモコンの値を読み取り、送信する方法
・Make 赤外線リモコンを作る
・hawksnowlog Arduino で赤外線信号を学習してエアコンを制御してみた