برد تینسی Teensy

ساخت کیبرد با استفاده از برد Teency 3.2

نوشته شده توسط CiferTech

همواره در پروژه های مختلفی شاهد این مورد بوده اید که با استفاده از کی‌پد ها با میکروکنترلر ها ارتباط برقرار شده و مقادیر مدنظر به آن ها اعمال شده، برای مثال برای وارد کردن رمز در یک سیستم تایید هویت. اما در این پروژه قصد داریم با استفاده از برد Teency  و قابلیت رفتار آن به عنوان کیبرد، این ماژول های کی‌پد را به یک کیبرد استاندارد تبدیل کنیم. به این شکل که با فشردن کلید های مختلف در کی‌پد مقادر بجای خوانده شدن توسط میکرو، توسط سیستم ما شناخته شده و تایپ خواهند شد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

 


برد Teensy 


تینسی Teensy یک برد توسعه با رابط کاربری آسان و دارای ویژگی های زیادی در یک بسته خوب ارائه شده است. هر برد Teensy همراه با یک بوت لودر از قبل فلش می شود بنابراین می توانید با استفاده از اتصال USB روی آن برنامه ریزی کنید، نیازی به برنامه نویس خارجی نیست و می‌توانید با استفاده از C برای Teensy در ویرایشگر مورد علاقه خود برنامه نویسی کنید و یا می‌توانید افزونه Teensyduino را برای Arduino IDE نصب کرده و با  Arduino IDE را برای آن برنامه بنویسید.

برد تینسی Teensy 3.2 - دیحی اسپارک

 

پردازنده موجود در Teensy به USB نیز دسترسی دارد و می‌تواند هر نوع دستگاه USB مورد نیاز شما را تقلید کند و آن را برای USB-MIDI و سایر پروژه های HID آماده کار کند. پردازنده ۳۲ بیتی چند ویژگی دیگر نیز فراهم کرده است، از جمله چند کانال دسترسی مستقیم به حافظه، چند ADC با رزولوشن بالا و حتی یک رابط صوتی دیجیتال I2S. همچنین چهار تایمر جداگانه وجود دارد، به علاوه یک تایمر تأخیر. و همه پین های دیجیتال دارای قابلیت وقفه هستند و قابلیت ارائه ولتاژ سیستم ۳٫۳ ولت را تا حداکثر ۲۵۰ میلی آمپر را دارد.

 


ماژول کی‌پد


وقتی می خواهیم یک کلید را به میکروکنترلر وصل کنیم، به یک پایه GPIO نیاز داریم. اما وقتی می خواهیم کلیدهای زیادی مانند ۹، ۱۲ یا ۱۶ و تعداد بیشتری را به میکرو متصل کنیم، ممکن است همه پین های میکروکنترلر را مشغول کند. برای ذخیره برخی از پین های میکروکنترلر، می توانیم از صفحه کلید ماتریس استفاده کنیم. به عنوان مثال؛ اگر می خواهیم ۱۶ کلید را به میکروکنترلر وصل کنیم، بنابراین به ۱۶ پایه GPIO نیاز داریم اما اگر از صفحه کلید ماتریس ۴×۴ استفاده کنیم، فقط به ۸ پایه GPIO میکروکنترلر نیاز داریم. صفحه کلیدها در ماتریس با ردیف ها و ستون ها سازماندهی می شوند. با فشار دادن یک کلید، یک ردیف و یک ستون با هم تماس می گیرند در غیر این صورت. هیچ ارتباطی بین ردیف ها و ستون ها وجود ندارد.

 


نحوه کار پروژه


در این پروژه از برد Teency 3.2 استفاده خواهیم کرد که قابلیت اتصال به سیستم به عنوان کیبورد را دارد، همچنین قادر خواهیم بود زبان مدنظر را برای پروژه مشخص کنیم. در این پروژه با استفاده از یک کی‌پد به میکروکنترلر فرمان می‌دهیم و به ازای هر کلید یک حرف یا نشانه از قبل تعریف شده در سیستم تایپ خواهد شد. در ادامه این پروژه من از میکروسوییچ استفاده کردم تا نتیجه بهتری بدست آوریم. همچنین با استفاده از توابع موجود قادر خواهیم بود زمان فشرده شدن و رها شدن میکروسوییچ ها را بدست آوریم و حتی از این پروژه برای کنترل پخش آهنگ نیز استفاده کنیم.

 


وسایل مورد نیاز


برد Teency 3.2

میکروسوییچ

 


نصب Teensyduino


در موارد قبلی برای نصب افزونه مرجع برد هایی مانند ESP32 با استفاده از لینکی از منوی prefences اقدام به نصب افزونه برد مورد نظر برای شروع کار با برد و تشخیص توسط نرم‌افزار استفاده می‌کردیم، اما این فرآیند برای برد های Teency به لطف Teensyduino بسیار آسان تر و سریع شده. در آموزش مقدماتی مرحله به مرحله با هم اقدام به نصب Teensyduino کرده‌ایم. برای مشاهده مراحل نصب به این آموزش مراجعه کنید. پروتکل صفحه کلید USB برای انتقال داده با پهنای باند بالا طراحی نشده است. هر تغییر حالت صفحه کلید به صورت یک بسته منتقل می شود. از آنجا که از نوع انتقال وقفه USB استفاده می شود ، حداکثر ۱۰۰۰ بسته در ثانیه می تواند ارسال شود.

نصب Teensyduino - دیجی اسپارک

 


شماتیک و اتصالات


در این پروژه برای تست از چهار GPIO استفاده کردم، که به دلخواه می‌توانید تعداد این میکروسوییچ ها را با تعریف در برنامه مشخص کنید. در این پروژه از پین های D1, D2, D3, D4 استفاده خواهیم کرد، و هر میکروسوییچ در ادامه به GND متصل می‌شود. در مرحله اول اتصالات را مطابق تصویر زیر برقرار کنید.

شماتیک پروژه کیبرد با Teensy - دیجی اسپارک

 


کدها و اجرای پروژه


با استفاده از ()usb_keyboard_press، برای هر ضربه کلید دو بسته ارسال می شود، دسته اول برای فشار دادن کلید و دیگری برای انتشار یا تایپ مقدار مورد نظر. این مورد منجر به حداکثر ۵۰۰ فشار کلید در ثانیه می شود.نرم افزارهای موجود در رایانه ممکن است زمان پردازنده قابل توجهی را برای پردازش هر ضربه کلید صرف کنند ، با این فرض که هیچ انسانی نمی تواند بیش از چند کلید در ثانیه فشار دهد. حتی ۵۰۰ کلید در ثانیه نیز ممکن است بر چنین نرم افزاری غلبه کند. با استفاده از ()usb_keyboard_send، یک بسته واحد با محتوای کلیدهای صفحه کلید و کلیدهای اصلاح کننده صفحه کلید ارسال می شود. در اولین بخش از راه‌اندازی باید توجه داشته باشید که مطابق تصویر زیر باید از منوی Tools در نرم‌افزار Arduino IDE اقدام به تغییر UsbType کنید و مقدار را بر روی keyboard تنظیم کنید تا ارتباط به درستی با سیستم و میکرو برقرار شود.

 

  • در این پروژه از این کتابخانه استفاده خواهیم کرد که همزمان با نصب افزونه TeencyDuino در نرم‌افزار Arduino قابل دسترسی است.
#include <Bounce.h>

 

  • با استفاده از این تابع قادر خواهیم زمانی که میکروسوییچ مدنطر فعال می‌شود را تشخیص دهیم و در ادامه اقدام مدنظر را انحام دهیم.
button1.fallingEdge()

 

  • در ادامه مبحث قبل این تابع زمان رها شدن یا غیر فعال شدن میکروسوییچ را به ما اطلاع خواهد داد.
button1.risingEdge()

 

کد های کامل پروژه ساخت کیبرد با استفاده از برد Teency 3.2

#include <Bounce.h>  //فراخوانی کتابخانه

Bounce button1 = Bounce(1, 10);   //ساخت آبجکت ها و مقدار دهی اولیه
Bounce button2 = Bounce(2, 10);  
Bounce button3 = Bounce(3, 10);  
Bounce button4 = Bounce(4, 10);


void setup() {

  pinMode(1, INPUT_PULLUP);  //مشخص کردن وضعیت هر پین
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
}

void loop() {

  button1.update(); //بروز شدن وضعیت آبجت ها پس از تکرار حلقه
  button2.update();
  button3.update();
  button4.update();


  if (button1.fallingEdge()) {  //تایپ مقادیر به ازای هربار فشردن شدن کلید
    Keyboard.println("A");
  }
  if (button2.fallingEdge()) {
    Keyboard.println("B");
  }
  if (button3.fallingEdge()) {
    Keyboard.println("C");
  }
  if (button4.fallingEdge()) {
    Keyboard.println("D");
  }


  if (button1.risingEdge()) {   //تایپ مقادیر پس از هربار رها شدن کلید ها
    Keyboard.println("a");
  }
  if (button2.risingEdge()) {
    Keyboard.println("b");
  }
  if (button3.risingEdge()) {
    Keyboard.println("c");
  }
  if (button4.risingEdge()) {
    Keyboard.println("d");
  }
}

 


جمع بندی


در این پروژه اقدام به طراحی یک کیبرد با استفاده از برد Teency 3.2 کردیم، که می‌توانید با افزایش تعداد کلیلد ها بصورت سخت افزاری و تعریف نرم‌افزاری آن ها کارایی این پروژه را افزایش دهید. از این پروژه همچنین میتوان در مواردی که نیاز به یک پنل Shortcut در استفاده از نرم افزار های مختلف داریم از این پروژه استفاده کنیم و به راحتی به قابلیت های مختلف در سیستم عامل یا برنامه مدنظر دسترسی داشته باشیم.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه

  • سلام
    من میخوام کیبردی بسازم که باهاش کلیدهای کنترلی رو بفرستم به کامپیوتر.
    برای مثال کلید پخش آهنگ، کم و زیاد کردن صدا و …
    با آردیونو مینی هم میشه کیبورد ساخت اما کلاسی که اونجا استفاده میشه فقط توانایی ارسال کد کلیدهای اصلی رو داره
    ینی حروف انگلیسی و نهایتا نمادها
    کد کلیدهای کنترلی رو بهش میدم چیزی دیگه ارسال میکنه
    کلی کد هم امتحان کردم نشد که نشد
    میخوام بدونم با این ماژول میشه کلیدهای کنترلی رو ارسال کرد؟
    play, mute, next, forward, volume up and down and …