کنترل کردن USB Switcher با موبایل


ستاپ من اینطوریه که یک لپ‌تاپ دارم که اکثر وقتا با اون کار می‌کنم و یک PC هم هست که به عنوان سرور و سیستم ویندوزیم ازش استفاده می‌کنم. این وسط یک میکروفون دارم که با USB وصل می‌تونه بشه به یکی از این سیستم‌ها. مشکل اینجاست که بعضی وقتا میخوام میکروفون رو روی لپ‌تاپ استفاده کنم بعضی وقتا روی PC. یک راهش اینه که USB رو جدا کنم و بین این دوتا سوئیچ کنم. یک راه هم اینه که از USB Switcher استفاده کنم. اومدم چند وقت پیش یکی از اینارو گرفتم:


usb switcher


سمت راست و چپ رو با دو تا کابل پرینتر می‌تونم وصل کنم به دوتا سیستم و از بالا هم می‌تونم میکروفون رو وصل کنم. دکمه روش هم وقتی بزنم بین این دوتا سوئیچ می‌شه. چراغ روش هم مشخص می‌کنه الان کدوم یکیش فعاله. اول روی میز گذاشته بودمش ولی چون ظاهر زیاد قشنگی نداشت گذاشتمش گذاشتم زیر میز و با شست پام دکمشو میزنم 😀

تا همینجا در اصل مشکلمو حل کردم ولی از همون اول که راش انداختم دوست داشتم که بشه با گوشی یا خود لپ‌تاپ هم سوئیچش کرد. USB Switcher ای که همچین کاری رو بکنه و قیمت معقولانه‌ای هم داشته باشه پیدا نکردم. چند روز پیش دست به هویه شدم و گفتم خودم درستش میکنم.


بازش کنیم ببینیم چطور کار میکنه



usb switcher inside

دیسکلیمر!: تقریبا هیچ بک‌گراندی توی الکترونیک ندارم و هرچی بلدم رو با آزمون و خطا و چارتا کلیپ توی یوتیوب یاد گرفتم. در نتیجه بزرگان الکترونیک به بزرگی خودتون ببخشید اگر چیزی رو اشتباه می‌گم و همیطور خوشحال می‌شم بهم بگید تا بتونم متن رو اصلاح کنم 🙏

اول بازش کردم که ببینم چطوری کار میکنه. اون دکمه‌ای که با شست پا میزدمش اینجاست که در اصل یک Push button ئه و کارش اینه که تا وقتی که نگهش داشتیم اتصال بین دو نقطه رو برقرار می‌کنه. دو نقطه هم مشخص شده رو عکس:
usb switcher push button

ممکنه با خودتون بگید این که ۴ تا پایه داره! در اصل دوتا پایه پایین به هم و دوتا پایه بالا به هم وصلن
اومدم با یک تیکه سیم این دو نقطه رو بهم وصل کردم که ببینم سوئیچ میشه یا نه که دیدم می‌شه! خیلی هم عالی!

connect buttons using a usb

استفاده از یک ترانزیستور



a transistor

خیلی خلاصه بخوام توضیح بدم اکثر ترانزیستور سه تا پایه دارن:
چپ Emitter وسط Base و راست Collector هست. کارشم اینه که وقتی یک جریانی از Base به Emitter برقرار باشه، جریان Collector به Emitter باز میشه.

a transistor

یا خیلی ساده‌تر اگه Collector رو به نقطه آبی وصل کنیم و Emitter رو به نقطه قرمز، وقتی به Base یک سیگنال وارد کنیم این دوتا به هم وصل میشه. دقیقا چیزی که میخوایم :)
دست به هویه شدم و دوتا پایه رو لحیم کردم و یک سیم هم وصل کردم به پایه Base که کارم راحت باشه.

a transistor

ارسال سیگنال به پایه Base



چند سال پیش یک Arduino mega گرفته بودم و استفاده‌ای نمی‌شد ازش. پرفکت! با وصل کردن Arduino به لپ‌تاپ میشه باهاش از طریق tty صحبت کرد. کافیه یک پیام به Arduino بفرستیم و اون بیاد برامون سیگنال رو به Base ترانزیستورمون بفرسته.

کد روی board:
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
pinMode(2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
String msg = Serial.readString();
if (msg.length() > 0)
{
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(1000);
}
}

کد بالا منتظر می‌مونه یک پیام از پورت Serial بیاد و به مدت ۱۰۰ میلی ثانیه پین ۲ رو HIGH می‌کنه (که تو ستاپ من 5V می‌شه). پین ۲ هم از اون ور وصل شده به Base ترانزیستورمون. اینم عکس اتصالات:

final

حالا کافیه که یک پیام با tty برای دیوایس بفرستم. توی لینوکس خیلی سادست، اسکریپت زیر رو آماده کردم و اسمشو گذاشتم usb-switch.sh
stty -F /dev/ttyACM0 9600
echo 00000 > /dev/ttyACM0

و تموم! چون کل دیوایسام توی یک شبکه هستن و با ssh به صورت لوکال می‌تونن صحبت کنن، خیلی راحت می‌تونم از رو گوشیم دستور زیر رو بزنم و با گوشیم هم بتونم سوئیچ کنم.

ssh dev-laptop usb-switch.sh