を使った アナログ スイッチ回路基板 組み立ての書 作 : じむ 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 コネクタ ( ) が便利です ( : 写真内 1~5 のコネクタ ) 動かなかった場合の簡易チェック 半田付けの抜け や イモ半 はありませんか? 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"; 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); settimeout("gpio_onoff(-1)",300); //300ms 後 [OFF] case 2: gpio_onoff(2); settimeout("gpio_onoff(-2)",300); //300ms 後 [OFF] case 3: gpio_onoff(3); settimeout("gpio_onoff(-3)",300); //300ms 後 [OFF] case 4: gpio_onoff(4); settimeout("gpio_onoff(-4)",300); //300ms 後 [OFF] case 5: gpio_onoff(5); settimeout("gpio_onoff(-5)",300); //300ms 後 [OFF] } } // 関数 : 任意のポートを High/Low にする function gpio_onoff(port){ switch( port ){ case 1: p = 0x10; case 2: p = 0x04;
case 3: p = 0x08; case 4: p = 0x02; case 5: p = 0x01; case -1: //[OFF] p &= (~0x10); case -2: //[OFF] p &= (~0x04); case -3: //[OFF] p &= (~0x08); case -4: //[OFF] p &= (~0x02); case -5: //[OFF] p &= (~0x01); } // 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> 最後に 本書を作成するにあたり アドバイス 添削をしてくださった 余熱さん @ れすぽん さん ありがとうございました