Совсем недавно у нас был урок про то как сделать собственный ноутбук на Raspberry и Arduino. Одна из главных сложностей при создании ноутбука - найти хороший трекпад, который будет им управлять. Можно, в целом, купить готовый, но мы сегодня попробуем создать свой трекпад управляемый Arduino Micro. На самом деле даже готовый работающий трекпад найти очень сложно, так что мы будем спасать трекпад от старого сломанного ноутбука и преобразовывать его в USB-устройство, используя нашу Ардуину.
Шаг 1: Комплектующие
Комплектующий, необходимые для этого проекта, очень просты, нам понадобится трекпад от старого ноутбука, Arduino Micro и провода.
К сожалению, есть только несколько типов Ардуино, которые мы можем использовать, это Arduino micro, pro micro и Leonardo, поскольку они могут быть запрограммированы на отображение HID (устройств интерфейса пользователя). Это означает, что они могут отображаться на компьютере как мыши или клавиатуры. Собственно, это то, что Arduino Uno сделать не может.
Шаг 2: Почему это работает?
Причина, по которой мы можем связать трекпад с Arduino, состоит в том, что большинство старых трекпадов от ноутбуков, связаны с компьютером через интерфейс PS/2. Т.е. трекпады имеют выходы PS/2, которые передают данные. Эти данные затем считываются Arduino и преобразуются в другие данные, которые могут быть отправлены на компьютер через интерфейс USB.
Теперь я должен отметить, что не все портативные трекпады одинаковы, почти все старые ноутбуки используют интерфейс PS / 2, но некоторые более новые используют интерфейс USB вместо интерфейса PS / 2.
Если вам удастся найти один из этих трекпадов USB вместо PS / 2, вы можете просто указать название трекпада и найти USB-пин-код и подключить его к USB-компьютеру, и он будет работать. Однако для этого проекта мы будем использовать более распространенный трекпад PS / 2 и использовать Arduino, чтобы превратить его в USB-мышь.
Шаг 3: Подключение
Соединения для этого проекта довольно просты. Все, что нам нужно сделать, это найти 4 вывода (припои) на нашем трекпаде. Их довольно легко найти, поскольку они обозначены как T10 (данные), T11 (часы) и T20, а заземление - просто большая открытая металлическая плоскость. Нам нужно тщательно припаять провода к каждому из этих выводов, а затем подключить их к соответствующим цифровым выводам Arduino.
- T10 соединяем с выводом 10 Arduino micro
- T11 соединяем с выводом 9 Arduino micro
- T20 соединяем с питанием 5В Arduino micro
- Земля соединяется с землей (GND) Arduino micro
После того, как вы припаяли провода к выводам (припоям) на трекпаде, крайне важно, чтобы вы не оказывали никакого давления на них, даже малейшее давление на пэды может полностью отключить их и сделать ваш трекпад бесполезным. Лучше всего покрыть их горячим клеем после того, как вы всё припаяли.
Шаг 4: Установка некоторых библиотек
Нам понадобится установить две библиотеки в среду разработки Arduino:
- библиотека "Мышка" - скачать здесь
- библиотека PS/2 - скачать здесь
Скачайте их, откройте Arduino IDE и загрузите файлы библиотек в неё. Библиотека PS/2 используется для получения данных с трекпада, а библиотека "Мышка" позволяет нам принимать эти данные и превращать их в команды для мыши, которые компьютер может читать через порт USB.
Шаг 5: Код
Теперь, когда у нас есть установленные библиотеки, мы можем загрузить наш код в Arduino. Код можно найти ниже, но нужно отметить, что код не будет загружаться или компилироваться, пока не будет выбрана плата Arduino micro или Leonardo. Вспомните об этом если вы получите ошибку при компиляции кода. После загрузки кода Arduino должен перезагрузиться как HID-устройство и на компьютере отобразиться как мышь.
#include <Mouse.h> #include <ps2.h> #define PS2_DATA 10 #define PS2_CLK 9 byte mstat1; byte mstat2; byte mxy; byte mx; byte my; byte mz; int msval[2]; // здесь может быть цифра 3, если у вас возникает ошибка int repeatCnt; PS2 moose(PS2_CLK, PS2_DATA); void setup() { Mouse.begin(); moose.write(0xff); moose.read(); moose.read(); moose.read(); moose.write(0xf0); moose.read(); delayMicroseconds(100); moose.write(0xe8); moose.read(); moose.write(0x03); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x00); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x01); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x00); moose.read(); moose.write(0xf3); moose.read(); moose.write(0x14); moose.read(); Serial.begin(9600); } void ms_read() {moose.write(0xeb); moose.read(); mstat1 = moose.read(); mxy = moose.read(); mz = moose.read(); mstat2 = moose.read(); mx = moose.read(); my = moose.read(); msval[0] = (((mstat2 & 0x10) << 8) | ((mxy & 0x0F) << 8) | mx ); msval[1] = (((mstat2 & 0x20) << 7) | ((mxy & 0xF0) << 4) | my ); msval[2] = int(mz); } void loop() { ms_read(); if (msval[0] > 0 and msval[2] > 10) { repeatCnt++; } else { repeatCnt = 0; } if (repeatCnt > 2) { msval[0] = map(msval[0], 580, 5164, -1023, 1023); msval[1] = map(msval[1], 1120, 5967, 1023, -1023); Mouse.move(msval[0]/200,msval[1]/200); } }
Шаг 6: Завершение и устранение неисправностей
Итак, теперь, когда вы касаетесь сенсорной панели, вы должны заметить некоторое движение на экране. Поскольку Arduino работает как USB-устройство, вы можете подключить его к любому компьютеру, и он мгновенно загрузится как USB-мышь, независимо от операционной системы или типа компьютера.
Если вы не хотите проходить весь процесс программирования и подключения Arduino, вы можете просто купить переходник PS/2 в USB. Но мы бы не рекомендовали это, поскольку это создает беспорядок с данными, поступающими с трекпада и может сделать его непригодным. Плюс, используя Arduino, мы можем полностью настроить все, что касается мыши и так как нам хочется - скорость мыши и всякие действия, такие как двойное нажатие и прокрутка. Это всё можно настроить под себя. Больше информации можно найти на сайте Arduino.
Если ваш трекпад не отправляет данные обратно, это можно легко исправить - взгляните на заднюю панель трекпада и попытайтесь найти номер детали, после чего вы можете указать этот номер детали со словом "pinout" в Google, и он должен показать вам, где данные, часы и 5-вольтовые контакты.
Напоминаем, что данный трекпад отлично дополнит наш проект по созданию ноутбука на базе Raspberry и Arduino.