مقدمة
تجدر الإشارة إلى أن نطاق هذا الجهاز ليس كبيرًا جدًا. بالنسبة للعمل ، هذا هو المراقبة ، ومراقبة وقت العمل ، والحماية من تسرب المعلومات ، وربما هذا هو كل شيء.في الحياة اليومية ، هذا الشيء يمكن أن يجعل الحياة أسهل. على سبيل المثال ، ضغطوا على مجموعة معينة من المفاتيح - تعرف عليها أردوينو و ... أرسل إشارة لتشغيل الغلاية. إذا لم يكن غلاية ، ثم شيء آخر.ولكن مع ذلك ، يعد هذا تتبعًا عاديًا (ربما مخفيًا) للموظف ، وهو ليس جيدًا من وجهة نظر أخلاقية. ولكن مع ذلك ، تمنح الشهادة القانونية الضوء الأخضر إذا تم تحديده في عقد العمل ، إذا تم هذا الرصد خلال ساعات العمل وفي مكان العمل ، وإذا تم بالطبع إبلاغ الموظف وتوقيفه.حسنًا ، في حياتك الشخصية ، أنت حر في فعل ما تريد ، طالما أنه يتعلق بممتلكاتك.كل شيء ، نحن محميون من الناحية القانونية ، الآن سأخبر وأظهر ما نحتاجه وكيفية تجميعه للحصول على اعتراض بسيط لضربات المفاتيح من لوحة المفاتيح.لنبدأ
لذا ، نحتاج إلى عشرة أسلاك ولوحين:1) Arduino Leonardo
2) USB Host Shield
لماذا Arduino Leonardo؟ نظرًا لأنها رخيصة نسبيًا ، وعلى عكس سابقاتها ، فإن ATmega32u4 يحتوي على دعم مدمج لاتصالات USB.يحدد بروتوكول USB نوعين من الأجهزة: المضيف (الرئيسي ، الخادم) والأجهزة الطرفية (التابعة ، العميل). يقوم USB Host Shield بإدارة وتوفير الأجهزة الطرفية. على سبيل المثال ، عندما تقوم بتوصيل لوحة المفاتيح بجهاز كمبيوتر ، فإن الكمبيوتر هو المضيف الذي يتحكم في العميل ، والعميل في هذه الحالة هو لوحة المفاتيح.وهناك عدد قليل من الأجهزة الطرفية المدعومة. الأكثر إثارة للاهتمام منها هي:1) أجهزة HID: لوحة المفاتيح والماوس وعصا التحكم وما إلى ذلك2) وحدات التحكم في الألعاب3) هواتف Android والأجهزة اللوحية المتوافقة مع ADK.ولمزيد من المعلومات التفصيلية ، يرجى زيارة الموقع الرسمي .في حالتنا ، هذه هي لوحة المفاتيح. إنه ينتمي إلى فئة أجهزة HID. يتم ترميز رمز HID للوحة المفاتيح في 8 بايت:1) 1 بايت - كل بت يتوافق مع معدله الخاص (L Ctrl ، R Ctrl ، L Shift ، R Shift ، إلخ).2) 2 بايت - محفوظة ولا نحتاج إليها ، وعادة ما تكون فارغة.3) 3-8 بايت - تحتوي على رموز 6 مفاتيح.يمكنك قراءة المزيد عن هذا هنا .كل شيء ، مع انتهاء النظرية ، يمكنك الآن تجميع الدائرة.
بالمناسبة ، يوجد برنامج ملائم للغاية لرسم المخططات ، حيث تم رسم هذا المخطط ، هنا .الآن يجدر شرح ما هو.يحتوي Arduino Leonardo على ميزة صغيرة لا يمكننا من خلالها توصيله في الأعلى: توجد موصلات SPI على ICSP (هذه الموصلات 6 في الوسط على اليمين) وبسبب هذا يجب أن تكون متصلة بموصلات USB Host Shield الرقمية.1) سلك أصفر: دبوس 4 MOSI (متصل بالطرف 11 على درع مضيف USB).2) سلك رمادي: دبوس 1 MISO (متصل بـ 12 دبوس على درع مضيف USB).3) السلك الأخضر: دبوس 3 SCK (متصل بالطرف 13 على درع مضيف USB).نحن نقدم الطاقة مع الأسلاك الخمسة السفلية والبنفسج واحد:1) إعادة الضبط إلى إعادة الضبط2) 3.3V إلى 3.3V3) 5V إلى 5V4) GND إلى GND5) VIN إلى VIN6) إعادة الضبط على D7الآن نحتاج إلى توصيل دبابيس التحكم:1) من D7 إلى D72) من D10 إلى D10يعد هذا الحد الأدنى الضروري لتشغيله.لذلك ، هناك دائرة ، الآن نحن بحاجة إلى برمجتها بطريقة أو بأخرى ويتم ذلك باستخدام Arduino IDE. إنه مجاني تمامًا وهو في المجال العام. يمكن العثور على أمثلة للبرامج و IDE نفسها على الموقع الرسمي.للعمل مع USB Host Shield ، نحتاج إلى مكتبة إضافية ( هنا ).الكود نفسه بسيط قدر الإمكان:#include <hidboot.h>
#include <SPI.h>
#include <SD.h>
class KeyboardOut
{
private:
KeyReport _keyReport;
void send_report();
public:
size_t press(uint8_t mod, uint8_t key);
size_t release(uint8_t mod, uint8_t key);
};
KeyboardOut keyboard_out;
size_t KeyboardOut::press(uint8_t mod, uint8_t key) {
uint8_t i;
_keyReport.modifiers |= mod;
if (_keyReport.keys[0] != key && _keyReport.keys[1] != key &&
_keyReport.keys[2] != key && _keyReport.keys[3] != key &&
_keyReport.keys[4] != key && _keyReport.keys[5] != key) {
for (i=0; i<6; i++) {
if (_keyReport.keys[i] == 0x00) {
_keyReport.keys[i] = key;
break;
}
}
if (i == 6) {
return 0;
}
}
send_report();
return 1;
}
size_t KeyboardOut::release(uint8_t mod, uint8_t key) {
uint8_t i;
_keyReport.modifiers &= mod;
for (i=0; i<6; i++) {
if (0 != key && _keyReport.keys[i] == key) {
_keyReport.keys[i] = 0x00;
}
}
send_report();
return 1;
}
void KeyboardOut::send_report()
{
HID_SendReport(2, &_keyReport, sizeof(KeyReport));
}
class KeyboardIn : public KeyboardReportParser
{
protected:
void OnKeyDown (uint8_t mod, uint8_t key);
void OnKeyUp (uint8_t mod, uint8_t key);
};
KeyboardIn keyboard_in;
void KeyboardIn::OnKeyDown(uint8_t mod, uint8_t key)
{
keyboard_out.press(mod, key);
uint8_t c = OemToAscii(mod, key);
PrintHex<uint8_t>(key, 0x80);
}
void KeyboardIn::OnKeyUp(uint8_t mod, uint8_t key)
{
keyboard_out.release(mod, key);
uint8_t c = OemToAscii(mod, key);
PrintHex<uint8_t>(key, 0x80);
}
USB UsbHost;
HIDBoot<HID_PROTOCOL_KEYBOARD> HidKeyboard(&UsbHost);
void setup()
{
UsbHost.Init();
delay( 200 );
HidKeyboard.SetReportParser(0, (HIDReportParser*)&keyboard_in);
}
void loop()
{
UsbHost.Task();
}
يبقى فقط للاتصال عبر USB Arduino بجهاز الكمبيوتر ، ولوحة المفاتيح إلى USB Host Shield ، قم بتنزيل البرنامج إلى Arduino باستخدام IDE وهذا كل شيء! Key Catcher جاهز!النتائج:1) يوفر Arduino العديد من الميزات بسعره المنخفض ومجموعة متنوعة من الوحدات والمستشعرات.2) يمكن لهذا الجهاز أن يسمح لك بتحويل لوحة المفاتيح الخاصة بك إلى لوحة تحكم ، على سبيل المثال ، تلفزيون ، غلاية كهربائية ، مصباح ، عليك فقط شراء وحدتين.