を使った
を使った
アナログ・スイッチ回路基板
アナログ・スイッチ回路基板
組み立ての書
組み立ての書
作:じむ
feat . @
Hirameki_Sora|Twitter
■はじめに:
「回路を組み立てる」にあたっての注意事項
1. 本回路基板を組み立てるには「電子工作」や「電子回路」、「ソフトウエア」についての一般
的な知識や工作環境などが必要です。
電子工作にあたっては火傷、切り傷等にもご注意ください。
2. 本回路基板は学習用の基板です。
工業製品への組み込みなど、用途外の使用はご遠慮ください。t
また、本回路基板によって生じた損害などについては、一切責任を負いかねます。
3. 本回路基板の仕様は予告なく変更になる場合があります。ご注意ください。
4. 本書は、内容について絶対の保証をするものではありません。
5. FlashAir を使った一ファン(個人)の開発した内容です。
そのため、製造元(株)東芝から許可を得たものではありません。
よって同社への問い合わせはご遠慮ください。
目次
■はじめに:「回路を組み立てる」にあたっての注意事項...1
■更新履歴
...2
■回路図
...3
■構成部品表:(ほとんどの部品は配布しています)...3
■その他の部品...3
■組み立て順序
...4
■電源投入の前に…
...7
■電源投入...7
■回路の原理と動作上のお願い...7
■動作チェック
...8
■動かなかった場合の簡易チェック
...9
【応用例】...9
【Arduino 用 SD カード・シールドするには】...10
【回路図】
...11
【パーツリスト】
...12
【動作チェック用の
Javascript サンプル=“List.htm”】...13
【最後に】...15
■更新履歴
日時
更新内容
2014/10/12
初版
■回路図
→巻末参照
■構成部品表:(ほとんどの部品は配布しています)
→巻末参照
■その他の部品
FlashAir は各自用意してください。GPIO 機能が備わっている Class10(
ファームウエア
バージョン
2.00.03 以上
)のものが必要になります。
IC([U2],[U3],[U4])には、「IC ソケット」(14 ピン x2,20 ピン x1)を付けるとより便利に利
用できます。
失敗したときすぐに外せますし、いらなくなったときには部品が再利用できます。
また、本回路基板を「
Arduino 用 SD カード・シールド」として用いたい場合も、IC ソケットで
すと信号線の接続が簡単に行えます。
本回路基板を Arduino 用 SD カード・シールドとしてお使いの場合は、別途 Arduino のた
めのピンが必要になります。(
6 ピン x2,8 ピン x1,10 ピン x1)
AC アダプターは 5V1A(センタープラス)のもので動作確認しております。
■組み立て順序
1 SD カードスロット…[U1]
部品の裏側に
2 つの「位置合わせ用ポッチ」があります。
取り付ける際、出っ張り部分が浮いてしまうのでニッパーやカッターで
削ってください。
2 電源周り
2.1
3 端子レギュレータ…[Q1],[C1],[C2]
3 端子レギュレータ([Q1])は、足を曲げて取り付けます。
電解コンデンサー(35V/47μF…[C2])は、背の高いコンデンサーです。([C3]と間違え
ないようにしてください。)
[C1]はどちらでもかまいませんが、[C2]は極
性がありますので、取り付けには注意してくだ
さい。
(足の短いほうがマイナス。)
2.2
電解コンデンサー(16V/100μF)…[C3]
背が低いコンデンサーです。(
[C2]と間違えないようにしてくだ
さい。)
極性がありますので、取り付けには注意してください。
(足が短い方がマイナス。)
2.3
LED(青)周り…[D1][R1]
LED([D1])は青色ですが、光らないとわからないので見た目透明です。
極性がありますので、取り付けには注意してください。
(足が短いほうがマイナス。)
ニッパーで切るときも、足の長さ
を意識してカットし
てください。
2.4
LED(赤)周り…[D2],[R2]
LED([D2])赤です。
極性がありますので、取り付けには注意してください。
([D1]と同様なので、前項の[D1]の写真を参考にしてください)
2.5
DC コネクタ…[CON1]
センタープラスになります。
3 集合抵抗…[RR1]
方向が決まっているので向きを間違えないように付けてください。(写真参照)
4 IC 群…[U2],[U3],[U4]
(※本回路基板を「
SD カード・シールド」で利用する場合は、[U3],[U4]の取り付けは必要
ありません。)
IC の取り付けには向きがあります。基板のシルクと IC の切り欠きの位置を合わせてくだ
さい。
また、後々のことを考えて、できれば
IC
ソケットを取付けることをお勧めします。
5 スイッチコネクタ…[P1]
(写真参照)
6 Arduiono ピン…[P2],[P3],[P4],[P5]
詳細は「Arduino 用 SD カード・シールドするには」を参照してください。
■電源投入の前に…
できたので、すぐに電源を入れたい気持ち、よくわかります。
が、電源を入れる前に、ぜひしていただきたいのが「電源部のショートチェック」。
通電時に“ピー♪”と鳴るテスターを用意して、
DC コネクタの VSS,VCC 部分にリード棒をあてて
ショートしていないかを確認してください。
これは大切なことですので、お願いいたします。
■電源投入
まずは
FlashAir を挿さずに、AC アダプター(5V 1A)を
つないで、LEDx2([D1],[D2 ])が点灯するのを確認してく
ださい。
点灯を確認後電源を落とし、改めて
FlashAir を挿して、
電源を入れます。
しばらくしてスマホ、タブレット、PC 等で FlashAir の SSID
が表示されればハードウエアは完成です。
■回路の原理と動作上のお願い
本回路基板は
FlashAir(Class10:
ファームウエアバージョン 2.00.03 以上
)に搭載されて
いる。「
GPIO 機能」を使っています。(GPIO 機能の詳細に関しては FlashAir デベロッ
パーズサイトを参照してください。
http://flashair-developers.com/ja/)
提供されいている
5 つのポートを全て出力に設定し、無線で接続された機器(スマホ、タ
ブレット、PC 等)から HTTP プロトコルによって、各ポート毎に High/Low を出力しています。
出力された
High/Low 信号は、レベルコンバー
タ(
FXMA108)を介してアナログスイッチ回路
(74HC4066)内で信号をショートさせることで、ス
イッチが入る仕組みです。
よって、スイッチの電気仕様・特性は
74HC4066 のスペックに依存します。
このスペックを逸脱する信号線の、スイッチ制
御は行わないでください。
■動作チェック
1. FlashAir は通常 GPIO 機能が働かないようになっています。
FlashAir の隠しフォルダ=“\SD_WLAN”に
CONFIG ファイルがありますので、PC 等の
エディターで編集をします。
2. CONFIG ファイルに、以下の一文(半角)を
追加します。
IFMODE=1
保存し、閉じてください。
3. エディタを使って、巻末の Javascript を
“
List.htm”という名称で、FlashAir の
SD_WLAN フォルダ内に保存します。
4. PC から編集し終えた FlashAir を取り出して、回路基板に挿して、電源を入れます
ただし、FlashAir のポートがまだ設定していませんので不定の値となっています。
よってスイッチコネクタ(
[P1])へのスイッチ配線はしないでください。
5. スマホ、タブレット、PC 等で FlashAir の SSID,パスワードを入力して、FlashAir との
通信を確立します。
6. スマホ、タブレット、PC 等のブラウザを起動して、URL に“
http://flashair
”と打ち込
み、FlashAir から 1 で作ったデータを受け取ります。
ブラウザ画面には図のような表示がされます。
任意のポートのボタンを押すことでスイッチが入るようになります。
◦ ショットスイッチ
上段のスイッチはチョン♪と
ON/OFF するスイッチ。
◦
ON/OFF スイッチ
下段のスイッチは
ON の状態、OFF の状態を維持するスイッチです。
7. この時点で FlashAir の GPIO 機能が設定されます。
ここで初めて回路基板のスイッチコネクタ(
[P1])の1~5へ、任意のスイッチ配線を
接続してください。
配線に当たっては、
QI コネクタ(※)が便利で
す。
(※:写真内①~⑤のコネクタ)
■動かなかった場合の簡易チェック
「半田付けの抜け」や「イモ半」はありませんか?
LED 青・赤は光っていますか?
FlashAir は Class10 のモノで、のバージョンは
2.00.03
以降ですか?
CONFIG ファイルに“
IFMODE=1
”を記述してます
か?
【応用例】
動画
◦ 「DVD ドライブの EJECT」(試作基板での動作)
http://youtu.be/PgvQzvUKKhw
◦ 「クレーンゲームのスイッチ制御」(試作基板での動作)
http://youtu.be/6vQAW5jOXjU
◦ 「デジカメのスイッチ制御」(本回路基板での動作)
http://youtu.be/owWEKEd7HVM
【
Arduino 用 SD カード・シールドするには】
IC の[U3],[U4]は不要なので付けません。
以下の
4 本の信号線を Arduino の各ピン番号へ接続します。
番号
GPIO 機能基板
部品番号-ピン番号
Arduino ピン
1
[U2]-7
13(CLK)
2
[U3]-5
12(MISO)
3
[U3]-12
10(CS)
4
[U4]-6
11(MOSI)
Arduino の IDE にあるサンプルスケッチでは、CS が 4 番に割り当てられているので、10
番に変更してコンパイルします。
その後書き込んで、実行すると
SD カード・シールドとして動作します。
※:[U3],[U4]を IC ソケットにしておく恩恵と
して、ジャンパー線が挿せるので、半田する
手間が省けます。
元のアナログ・スイッチ回路として使用した
ければ、[U3],[U4]を挿せば OK。
【パーツリスト】
【動作チェック用の
Javascript サンプル=“List.htm”】
<html> <head>
<meta charset="UTF-8">
<title>FlashAir Analog Circuit - ButtonTest(Sample)</title> <script language="javascript" type="text/javascript">
//関数:FlashAir に対して HTTP 通信 GET をする function flashair_get( param ){
var request = new XMLHttpRequest(); request.open("GET", param, false); request.send(null); //通信結果 document.getElementById('RESULT').value += (request.responseText+"\r\n"); } //関数:GPIO ポートをすべて Low function gpio_off(){
var url = "http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00"; flashair_get(url);
p = 0x00; }
//グローバル変数定義
var send_mess = "http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x"; var p = 0x00; //関数:任意のポートを High⇒Low にする(=ショットスイッチ) function gpio_shot(port){ switch( port ){ case 1: gpio_onoff(1); //[ON] setTimeout("gpio_onoff(-1)",300); //300ms 後[OFF] break; case 2: gpio_onoff(2); //[ON] setTimeout("gpio_onoff(-2)",300); //300ms 後[OFF] break; case 3: gpio_onoff(3); //[ON] setTimeout("gpio_onoff(-3)",300); //300ms 後[OFF] break; case 4: gpio_onoff(4); //[ON] setTimeout("gpio_onoff(-4)",300); //300ms 後[OFF] break; case 5: gpio_onoff(5); //[ON] setTimeout("gpio_onoff(-5)",300); //300ms 後[OFF] break; } } //関数:任意のポートを High/Low にする function gpio_onoff(port){ switch( port ){ case 1: //[ON] p |= 0x10;
url = send_mess + p.toString(16); flashair_get(url);
break;
case 2: //[ON] p |= 0x04;
flashair_get(url); break;
case 3: //[ON] p |= 0x08;
url = send_mess + p.toString(16); flashair_get(url);
break;
case 4: //[ON] p |= 0x02;
url = send_mess + p.toString(16); flashair_get(url);
break;
case 5: //[ON] p |= 0x01;
url = send_mess + p.toString(16); flashair_get(url);
break;
case -1: //[OFF] p &= (~0x10);
url = send_mess + p.toString(16); flashair_get(url);
break;
case -2: //[OFF] p &= (~0x04);
url = send_mess + p.toString(16); flashair_get(url);
break;
case -3: //[OFF] p &= (~0x08);
url = send_mess + p.toString(16); flashair_get(url);
break;
case -4: //[OFF] p &= (~0x02);
url = send_mess + p.toString(16); flashair_get(url);
break;
case -5: //[OFF] p &= (~0x01);
url = send_mess + p.toString(16); flashair_get(url); break; } // document.getElementById('RESULT').value = p.toString(16); } // --> </script> </head> <!-- ロードされたとき、ポートを全て OFF する --> <body onLoad="gpio_off()"> <P>FlashAir GPIO スイッチ(ロードで全ポートクリア)</P> <form> <FIELDSET> <LEGEND>全ポート オフ</LEGEND> <br>
<input type="button" value="全ポート オフ" onclick="gpio_off()"> <br>
</FIELDSET> </form> <form> <FIELDSET>
<LEGEND>ショットスイッチ</LEGEND> <br>
<input type="button" value="Port 1" onclick="gpio_shot(1)"> <input type="button" value="Port 2" onclick="gpio_shot(2)"> <input type="button" value="Port 3" onclick="gpio_shot(3)"> <input type="button" value="Port 4" onclick="gpio_shot(4)"> <input type="button" value="Port 5" onclick="gpio_shot(5)"> <br> </FIELDSET> </form> <form> <FIELDSET> <LEGEND>ON/OFF スイッチ</LEGEND> <table><tr><td> <FIELDSET> <LEGEND>Port1</LEGEND>
<input type="button" value="[ON]" onclick="gpio_onoff(1)" style="WIDTH: 60px"><br><br> <input type="button" value="[OFF]" onclick="gpio_onoff(-1)" style="WIDTH: 60px"> </FIELDSET>
</td><td> <FIELDSET>
<LEGEND>Port2</LEGEND>
<input type="button" value="[ON]" onclick="gpio_onoff(2)" style="WIDTH: 60px"><br><br> <input type="button" value="[OFF]" onclick="gpio_onoff(-2)" style="WIDTH: 60px"> </FIELDSET>
</td><td> <FIELDSET>
<LEGEND>Port3</LEGEND>
<input type="button" value="[ON]" onclick="gpio_onoff(3)" style="WIDTH: 60px"><br><br> <input type="button" value="[OFF]" onclick="gpio_onoff(-3)" style="WIDTH: 60px"> </FIELDSET>
</td><td> <FIELDSET>
<LEGEND>Port4</LEGEND>
<input type="button" value="[ON]" onclick="gpio_onoff(4)" style="WIDTH: 60px"><br><br> <input type="button" value="[OFF]" onclick="gpio_onoff(-4)" style="WIDTH: 60px"> </FIELDSET>
</td><td> <FIELDSET>
<LEGEND>Port5</LEGEND>
<input type="button" value="[ON]" onclick="gpio_onoff(5)" style="WIDTH: 60px"><br><br> <input type="button" value="[OFF]" onclick="gpio_onoff(-5)" style="WIDTH: 60px"> </FIELDSET>
</td></tr></table> </FIELDSET> </form>
<input type="text" id="RESULT" value="結果="> </body>
</html>