برد های اردوینو تنوع بسیار زیادی دارند اما در بسیاری از امکانات با همدیگر مشترک اند . به طور مثال اغلب برد های آردوینو دارای یک مبدل USB-TTL هستند و یا به صورت خارجی از یک مبدل USB-TTL برای آن ها استفاده کرد مانند مدل های Pro Mini . در این میان آردوینو Leonardo و آردوینو Pro Micro که نسخه کوچک لئوناردو است یکی از خاص ترین برد های آردوینو به حساب می آیند . در این مدل ها از هیچگونه مبدل USB-TTL ای استفاده نشده است و میکروکنترلر های این برد ها مستقیما با پورت USB در ارتباط هستند . میکروکنترلر به کار رفته در برد Leonardo مدل ATmega32u4 هست که قابلیت پشتیبانی از USB را دارد . USB به عنوان یک درگاه ارتباط سریال همه کاره دارای کلاس ها و ارتباط های مختلفی است . در واقع USB شامل دو بخش سخت افزاری که شامل کانکتور های USB و یک بخش نرم افزاری شامل نحوه ارتباط و ارسال و دریافت دیتا می باشد . یک ابزار دارای USB ممکن است با اتصال به سیستم به عنوان یک درایو شناخته شود یا مانند یک کیبورد تنها برای دریافت ورودی از کار بر باشد . ATmega32u4 از کلاس های USB CDC و مهمتر از همه USB-HID پشتیبانی میکند . در مد USB-CDC دیتا از طریق USB دریافت شده و به UART تبدیل خواهشد . در واقع در این مد ATmega32u4 بدون هیچ مبدل USB-TTL ای دیتا را از طریق USB دریافت کرده و آن راه به UART بر میگرداند . یکی از کلاس های عملکرد USB حالت USB-HID می باشد . HID امکان ارتباط کاربر با کامپیوتر را فراهم می ساز . ای کلاس شامل مجموعه ای از استاندارد ها و پروتکل ها برای ارتباط ابزار های مانند موس ، کیبورد ، دسته های بازی و کلیه ابزار های ارتباط کاربر با کامپیوتر می باشد . USB-HID بر اساس مجموعه ای از قواعد از پیش تعیین شده عمل خواهد کرد . به طور مثال برای افزایش صدای کامپیوتر یا مثلا تایپ حرف ‘P’ مقادیر خاصی در نظر گرفته شده است . به راحتی می توانید آردیونو Leonardo را به عنوان یک کیبورد ، ماوس و یا یک سدته کنترل بازی به کامپیوتر خود متصل کنید فرمان هایی که می خواهید را اجرا کنید . شاید ایده Atmel برای ساخت میکروکنترلر ATmega32u4 استفاده از آن در ماوس و کیبورد و… بوده ولی شما می توانید ابزار های مبتنی بر HID خود را بر پایه این میکروکنترلر بسازید . به طور مثال می توانید یک ابزار برای کنترل ربات پرنده خودتان بسازید . یا مثلا از طریق یک ولوم حجم صدای کامپیوتر خودتان را کنترل کنید .
برای کار با USB-HID ابتدا کتابخانه زیر را دانلود و نصب کنید :
https://github.com/NicoHood/HID/archive/master.zip
این کتابخانه از ATmega16u2 نیز پشتیبانی می کند لذا به می توانید آن را بر روی برد های آردوینو UNO R3 پروگرام کنید ( بر روی ATmega16u2 موجود بر روی برد ) .
ساخت کیبورد با آردوینو Pro Micro :
/* Copyright (c) 2014-2015 NicoHood See the readme for credit to other people. Improved Keyboard example Shows how to use the new Keyboard API. See HID Project documentation for more information. https://github.com/NicoHood/HID/wiki/Keyboard-API#improved-keyboard */ #include "HID-Project.h" const int pinLed = LED_BUILTIN; const int pinButton = 7; void setup() { pinMode(pinLed, OUTPUT); pinMode(pinButton, INPUT_PULLUP); // Sends a clean report to the host. This is important on any Arduino type. Keyboard.begin(); } void loop() { // Trigger caps lock manually via button if (!digitalRead(pinButton)) { digitalWrite(pinLed, HIGH); // Use the default print functions Keyboard.println("Hello World!"); // Press a single character, special non ascii characters wont work. //Keyboard.write('a'); // Write single keys, do not use a number here! //Keyboard.write(KEY_ENTER); // If you really wish to press a RAW keycode without the name use this: //Keyboard.write(KeyboardKeycode(40)); // Use (a limited number of) consumer keys. // Only works with the lower 255 keys and on linux only. //Keyboard.write(MEDIA_PLAY_PAUSE); // Linux also supports several system function via consumer report. //Keyboard.write(CONSUMER_POWER); //Keyboard.write(CONSUMER_SLEEP); // You can also use some special keyboard keys on linux. //Keyboard.write(KEY_POWER); //Keyboard.write(KEY_F13); // You can wakeup you PC from sleep. // This might be not supported on all hardware, but on all OS types. //Keyboard.wakeupHost(); // Simple debounce delay(300); digitalWrite(pinLed, LOW); } }
پس از پروگرام کردن برد ، برنامه Notepad را باز کرده و کلید متصل به آردوینو را فشار دهید .