息抜きにUSBセレクターを自作する

久しぶりの投稿ですが皆様いかがお過ごしでしょうか。

私自身は”コ”で始まるウイルスの影響はあまりうけず、仕事が減ることもなく(逆に増えたかも)生活に支障をきたすような状況ではないので助かっていますが、接客業で人と密になることを避けられない状況で常にヒヤヒヤ

毎日危険と隣り合わせの状況で精神的にすり減っています…

そんな状況で模型って集中力がいりますがその集中力を注ぐ体力が無いので、2月以降スープラにも全く手を付けられていません。


でまぁそんなことはどうでもいいんで本題に入っていきますが、じゃあ仕事以外の休みの日は何をしているかと。

ゲームしてます。

主にPS4とSwitchですが、コントローラーでの文字入力が毎度面倒すぎてキーボードを使えるようにしたかったんです。

PS4とSwitchをPCと同じデスクで遊べる環境にしてあるのですが、それぞれにキーボードを用意するともちろん邪魔なので、1つのキーボードを3端末に繋いで切り替えできるようにします。


内容的には模型の電飾の応用(というか電飾より単純)ですので模型を再開するきっかけになるかな…なんて


作る物

USBセレクター

機能はシンプルで、「1つのキーボードの出力先を3つから選べる」それだけ。

接続先の切り替えはリレーを使った機械式です。

詳しい説明はナシでパパっと進めます。

用意した物

  • PIC12F1840(持ってたから)
  • ユニバーサル基板(必要なサイズの物)
  • 941H-2C-5D(リレー、5V、C接点、2回路)
  • トグルスイッチ(電源のオンオフ用)
  • タクトスイッチ(出力先を選ぶ用のスイッチ)
  • 各種抵抗
  • 2SC1815GR(リレー駆動用トランジスタ)
  • ダイオード(リレーサージ対策用)
  • コンデンサ(デカップリング用)
  • 発光ダイオード(電源確認用)
  • AE-USB-A-DIP(USBコネクタDIP化キット)
  • A-AタイプのUSBケーブル
  • 電源用microUSBコネクタ

作る

まず回路図です。

サージ吸収用ダイオード(その他諸々)が書いて無かったり清書もしてなかったりするのであしからず。

USBセレクター回路図。かなり部品を端折っています。

仕組みは単純です。

USB2.0は4線(+、-、データ+、データ-)なので、2回路入りのリレーを2個単位でオンオフして制御。

ちなみに接続したキーボードやゲーム機は壊したくないので「セレクターの制御回路」と「接続したUSBの回路」は完全に切り分けています。

では組みあげていきます。
まずはUSBコネクタDIP化キットをはんだ付けして組み立て。

秋月電子のUSBコネクタDIP化キットを組み立て。

そして大体のレイアウトを考えて基板にはんだ付けしていきます。

大体のレイアウトを決めてはんだ付けしていきます。
上3つが出力、右が入力と制御用電源

さらにその他のパーツも

スイッチやコンデンサ、ダイオード等もはんだ付けしていきます。

あとは回路図を参考に裏の配線をすれば出来上がり。

実際に使用テスト。それぞれの出力先で問題なくキーボードが使用できました。


PICのプログラムもめっちゃシンプルで、

  1. //初期化
  2. a = 0; //変数の初期化
  3. RA0 = 0; //出力ピンの初期化
  4. RA1 = 0; //出力ピンの初期化
  5. RA2 = 0; //5番ピンは不使用
  6. while(1){
  7. //ボタン検知
  8. if(RA5 == 0){ //2番ピンがオン(プルアップでオフ)ならフラグ切り替え
  9. __delay_ms(10); //チャタリング対策
  10. if(RA5 == 0){
  11. a = 0;
  12. __delay_ms(1000);
  13. }
  14. }
  15. if(RA4 == 0){ //3番ピンがオンならフラグ切り替え
  16. __delay_ms(10);
  17. if(RA4 == 0){
  18. a = 1;
  19. __delay_ms(1000);
  20. }
  21. }
  22. if(RA3 == 0){ //4番ピンがオンならフラグ切り替え
  23. __delay_ms(10);
  24. if(RA3 == 0){
  25. a = 2;
  26. __delay_ms(1000);
  27. }
  28. }
  29. //データを受け取り動作を選択
  30. if(a == 0){ //出力先「1」選択状態
  31. RA0 = 0;
  32. RA1 = 0;
  33. }
  34. if(a == 1){ //出力先「2」選択状態
  35. RA0 = 1;
  36. RA1 = 0;
  37. }
  38. if(a == 2){ //出力先「3」選択状態
  39. RA0 = 1;
  40. RA1 = 1;
  41. }
  42. } //while
  43. } //main

特に変わったこともしていませんが、唯一のこだわりは切り替え時のディレイ(遅延)です。

リレーが動作する音を聴きたい(リレーの動作音が大好き)ので、ボタンを押してから切り替わるまでの間に1秒間の遅延を挟みました。


という感じで完成したのでPC、PS4、Switchに接続し、それぞれの機器に切り替えてもキーボードは問題なく動作しています。
リレーのカチカチ音も最高。
大成功です😎

ちなみに使用したA-AタイプのUSBケーブルはサンワサプライの両面挿せるUSBケーブルってやつなんですが、めっちゃ便利です。

ただ内部の端子が非常に薄いので強度的には若干不安が残りますが…


ということで久しぶりの投稿でしたがブログはやっぱり楽しいですね。

これから模型の製作に取り掛かれるかは正直まだわかりませんが、のんびりとやっていこうと思います。

おつかれさまでした

0 件のコメント :

コメントを投稿 (クリックでコメント入力欄を表示)