DIY USB-трекпад на Arduino: превращаем старый ноутбучный тачпад в современное устройство ввода
Компоненты и материалы
| Arduino Micro | ×1 |
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Каждый раз, когда выходит новая Raspberry Pi, я смотрю характеристики и думаю: «Хочу сделать из неё ноутбук», но всегда встает одна проблема — не найти отдельный USB-трекпад. В этом проекте мы спасаем трекпад из старого сломанного ноутбука и превращаем его в USB-устройство с помощью Arduino Pro Micro.
Шаг 1: Детали

Нужны: трекпад от старого ноутбука, Arduino Micro и провода. Важно: подходят только Arduino Micro, Pro Micro и Leonardo — их можно запрограммировать как HID (устройства ввода), чтобы они определялись компьютером как мышь или клавиатура. Arduino Uno это не умеет. Arduino Pro Micro можно купить здесь. Если хотите купить трекпад — можно найти здесь.
Шаг 2: Почему это работает

Большинство старых ноутбучных трекпадов общались с компьютером через PS/2-интерфейс — у трекпада есть выходы PS/2: данные (Data) и такт (Clock). Arduino считывает эти данные и конвертирует в USB-протокол мыши. Не все трекпады одинаковые: почти все старые — PS/2, но некоторые новые — USB. Если нашли USB-трекпад, просто найдите его распиновку и подключите к USB — будет работать. Здесь мы используем обычный PS/2-трекпад и Arduino для превращения в USB-мышь.
Шаг 3: Проводка

Нужно найти 4 контактные площадки на трекпаде. Они обычно подписаны: T10 (Data), T11 (Clock), T20 и земля — большой открытый металлический участок. Аккуратно припаяйте провод к каждой площадке и соедините с соответствующими пинами Arduino Micro:
- T10 → пин 10 Arduino Micro
- T11 → пин 9 Arduino Micro
- T20 → 5V Arduino Micro
- Земля (металлическая плоскость) → GND Arduino Micro
Важно: После пайки не давите на площадки — даже легкое давление может сдернуть их, и трекпад станет бесполезен. Лучше сразу зальте соединения горячим клеем.
Шаг 4: Установка библиотек
Нужны две библиотеки для Arduino IDE:
- Mouse Library
- PS/2 Library
Скачайте, откройте папку libraries в Arduino IDE и положите их туда. PS/2 Library считывает данные с трекпада, Mouse Library превращает их в команды мыши для USB.
Шаг 5: Код

Загрузите код (ниже). Важно: В меню Tools → Board должен быть выбран Arduino Micro или Leonardo, иначе код не скомпилируется/не загрузится. После загрузки Arduino перезагрузится как HID-устройство и определится компьютером как мышь.
Код (thistouchpad.ino)
#include <Mouse.h>
#include <ps2.h>
#define PS2_DATA 10
#define PS2_CLK 9
byte mstat1, mstat2, mxy, mx, my, mz;
int msval[2];
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 && 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-мышь независимо от ОС.
Если не хотите программировать и паять — можно купить PS/2→USB преобразователь, но не рекомендую: читал, что он портит данные трекпада и может сделать его непригодным. С Arduino можно полностью настроить всё под себя: скорость мыши, действия двойного тапа, прокрутка — см. страницу Arduino Mouse.
Если трекпад не шлет данные — посмотрите на обратную сторону, найдите номер детали, погуглите его с словом «pinout» — покажет, где Data, Clock и 5V.
Спасибо за чтение! Вопросы — в комментариях, постараюсь ответить.
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Настольная RGB-лампа с управлением жестами – Интерактивное беспроводное освещение
- Android-управляемая робот-платформа на Raspberry Pi и Motor Shield
- Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
- Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
- Голосовое управление бытовыми приборами: Bluetooth-управление через Google Assistant
- PiBot: Робот-пианист на Arduino для точного исполнения музыки