を使った アナログ・スイッチ回路基板...
TRANSCRIPT
を使ったを使った
アナログ・スイッチ回路基板アナログ・スイッチ回路基板
組み立ての書組み立ての書
作:じむ
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;
url = send_mess + p.toString(16);
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>
【最後に】
本書を作成するにあたり、アドバイス・添削をしてくださった“余熱さん@れすぽん”さん、
ありがとうございました。