کنترل کردن USB Switcher با موبایل
ستاپ من اینطوریه که یک لپتاپ دارم که اکثر وقتا با اون کار میکنم و یک PC هم هست که به عنوان سرور و سیستم ویندوزیم ازش استفاده میکنم. این وسط یک میکروفون دارم که با USB وصل میتونه بشه به یکی از این سیستمها. مشکل اینجاست که بعضی وقتا میخوام میکروفون رو روی لپتاپ استفاده کنم بعضی وقتا روی PC. یک راهش اینه که USB رو جدا کنم و بین این دوتا سوئیچ کنم. یک راه هم اینه که از USB Switcher استفاده کنم. اومدم چند وقت پیش یکی از اینارو گرفتم:
سمت راست و چپ رو با دو تا کابل پرینتر میتونم وصل کنم به دوتا سیستم و از بالا هم میتونم میکروفون رو وصل کنم. دکمه روش هم وقتی بزنم بین این دوتا سوئیچ میشه. چراغ روش هم مشخص میکنه الان کدوم یکیش فعاله. اول روی میز گذاشته بودمش ولی چون ظاهر زیاد قشنگی نداشت گذاشتمش گذاشتم زیر میز و با شست پام دکمشو میزنم 😀
تا همینجا در اصل مشکلمو حل کردم ولی از همون اول که راش انداختم دوست داشتم که بشه با گوشی یا خود لپتاپ هم سوئیچش کرد. USB Switcher ای که همچین کاری رو بکنه و قیمت معقولانهای هم داشته باشه پیدا نکردم. چند روز پیش دست به هویه شدم و گفتم خودم درستش میکنم.
بازش کنیم ببینیم چطور کار میکنه
دیسکلیمر!: تقریبا هیچ بکگراندی توی الکترونیک ندارم و هرچی بلدم رو با آزمون و خطا و چارتا کلیپ توی یوتیوب یاد گرفتم. در نتیجه بزرگان الکترونیک به بزرگی خودتون ببخشید اگر چیزی رو اشتباه میگم و همیطور خوشحال میشم بهم بگید تا بتونم متن رو اصلاح کنم 🙏
اول بازش کردم که ببینم چطوری کار میکنه. اون دکمهای که با شست پا میزدمش اینجاست که در اصل یک Push button ئه و کارش اینه که تا وقتی که نگهش داشتیم اتصال بین دو نقطه رو برقرار میکنه. دو نقطه هم مشخص شده رو عکس:
ممکنه با خودتون بگید این که ۴ تا پایه داره! در اصل دوتا پایه پایین به هم و دوتا پایه بالا به هم وصلن
اومدم با یک تیکه سیم این دو نقطه رو بهم وصل کردم که ببینم سوئیچ میشه یا نه که دیدم میشه! خیلی هم عالی!
استفاده از یک ترانزیستور
خیلی خلاصه بخوام توضیح بدم اکثر ترانزیستور سه تا پایه دارن:
چپ Emitter وسط Base و راست Collector هست. کارشم اینه که وقتی یک جریانی از Base به Emitter برقرار باشه، جریان Collector به Emitter باز میشه.
یا خیلی سادهتر اگه Collector رو به نقطه آبی وصل کنیم و Emitter رو به نقطه قرمز، وقتی به Base یک سیگنال وارد کنیم این دوتا به هم وصل میشه. دقیقا چیزی که میخوایم :)
دست به هویه شدم و دوتا پایه رو لحیم کردم و یک سیم هم وصل کردم به پایه Base که کارم راحت باشه.
ارسال سیگنال به پایه 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 ترانزیستورمون. اینم عکس اتصالات:
حالا کافیه که یک پیام با tty برای دیوایس بفرستم. توی لینوکس خیلی سادست، اسکریپت زیر رو آماده کردم و اسمشو گذاشتم
usb-switch.sh
stty -F /dev/ttyACM0 9600echo 00000 > /dev/ttyACM0
و تموم! چون کل دیوایسام توی یک شبکه هستن و با ssh به صورت لوکال میتونن صحبت کنن، خیلی راحت میتونم از رو گوشیم دستور زیر رو بزنم و با گوشیم هم بتونم سوئیچ کنم.
ssh dev-laptop usb-switch.sh