Самодельный HID-пульт для ЧПУ на Arduino Leonardo: 23 кнопки, 6 функций каждая
Зачем это нужно
Готовый пульт для ЧПУ стоит ~100€ и имеет 2 кнопки + ручку. Свой пульт на Leonardo (чип ATmega32u4) эмулирует клавиатуру/мышь, даёт 23 кнопки × 6 функций (одинарный/двойной/тройной клик, удержание) = 138 действий. Деревянный корпус — эргономичен и тяжёл (не скользит при вращении ручки).
Компоненты
- Arduino Leonardo (или Arduino Micro — тот же 32u4) — 1 шт.
- Моментальные кнопки с подсветкой и прозрачными колпачками — 23 шт. (под наклейки).
- Ручной импульсный генератор (MPG/Handwheel) 100 имп/об, 6 проводов — 1 шт.
- Махогоновая фанера/массив для корпуса (фрезеровка на ЧПУ).
- Резисторы 1 кОм × 23 (питание LED кнопок, 2 мА на 5В).
- Переключатель питания LED (защёлкивающийся).
Принцип: Arduino как HID-клавиатура
Leonardo/Micro с 32u4 могут отправлять нажатия клавиш (Keyboard.press/release) и комбинации (Ctrl, Shift, Alt, GUI). Программа ЧПУ (EdingCNC, Mach3, LinuxCNC, UCCNC) настраивается на горячие клавиши. Библиотека ClickButton даёт дебаунс и детектирование múlticlick/hold.
Логика одной кнопки (пример: ось X)
if (button[13].clicks != 0) {
switch (button[13].clicks) {
case 1: shortcut_HANDWHEEL_X(); break; // Ручка -> X
case 2: shortcut_ZERO_X(); break; // Обнулить X
case 3: break; // Triple click
case -1: press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); break; // Hold -> G0 X0
case -2: break; case -3: break;
}
}
Горячие клавиши EdingCNC (примеры)
| Действие | Комбинация | Функция скетча |
|---|---|---|
| RESET (F1) | F1 | press_RESET() |
| ESC | Esc | press_ESC() |
| MAIN MENU | Alt+F1 | goto_MAIN_MENU() |
| AUTO MENU | Alt+F4 | goto_AUTO_MENU() |
| HOME ALL | Ctrl+H | shortcut_HOME_ALL() |
| ZERO X/Y/Z | Ctrl+1/2/3 | shortcut_ZERO_X/Y/Z() |
| HANDWHEEL X/Y/Z | Ctrl+Shift+X/Y/Z | shortcut_HANDWHEEL_X/Y/Z() |
| HANDWHEEL x1/x10/x100 | Ctrl+N/O/P | shortcut_HANDWHEEL_X1/10/100() |
| TOGGLE AUX1 (вакуум) | Ctrl+M | shortcut_TOGGLE_AUX1() |
| USER MACRO 1..20 | Alt+1..0, Shift+Alt+1..0 | user_MACRO_N() |
Корпус и фрезеровка
- Чертежи в Vectric Cut2D (файлы в CAD:
cnc_pendant_SenmxC8UCj.zip). - Двухсторонняя обработка: верхняя панель с отверстиями под кнопки, нижняя — карманы для электроники.
- Толщина дерева 21 мм (верх+низ), итого 36.5 мм — удобно держать в руке.
- Поверхность — шлифовка + многослойный акриловый лак.
Электроника и пайка
- Все кнопки: один контакт → GND, второй → цифровые пины 0-13, A0-A5 (20 входов). Leonardo имеет 20+ цифровых/аналоговых пинов.
- Внутренние pull-up:
pinMode(pin, INPUT_PULLUP)— внешние резисторы не нужны. - LED кнопок: аноды через 1кОм к 5В, катоды к GND (или общий анод — по даташиту кнопок).
- Ручной генератор: фазы A/B → 2 прерывания (не в скетче, обрабатывает софт ЧПУ), кнопки на корпусе ручки → доп. входы.
- Питание: от блока ЧПУ (5В/12В) через USB-кабель Leonardo. Потребление ~150 мА с LED.
Программирование
- Подключить Leonardo к ПК (тот же USB, что и к ЧПУ).
- Загрузить скетч через Arduino IDE (библиотека ClickButton должна быть в libraries).
- При необходимости перепрограммировать — оставить подключенным к питанию ЧПУ, переключить USB на ноутбук.
Библиотека ClickButton
Критически важна: без неё придётся писать дебаунс и мультиклик самому. Файл clickbutton_hq5qeT4toX.zip в разделе CAD. Установить через Sketch → Include Library → Add .ZIP Library.
Схема (упрощённо)
См. раздел Schematics (фото ручного чертежа). Все кнопки к GND и пинам 0-13, A0-A5. LED — к 5V через 1кОм. Handwheel — отдельный разъём.
Итог
Мощный, дешёвый (<$30), полностью настраиваемый пульт. Код открыт, легко адаптировать под любое ПО ЧПУ, поддерживающее клавиатурные макросы.
Производственный процесс
- Пуговица: от древней застежки к современной инновации
- Управление яркостью LED с ШИМ через кнопку на Arduino Mega
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Создание настраиваемой «бьющейся» клавиши на Arduino: пошаговое руководство
- Osai USA OPENwiTP: беспроводной пульт обучения для эффективного управления ЧПУ
- Кнопка Reset на пульте оператора ЧПУ: Функция и применение