Плеко / Робототехніка

Макропад

Додаткова клавіатура для ПК: три механічні клавіші й екран, що показує навантаження й температуру процесора та відеокарти і зайняту пам’ять у гігабайтах. Працює з Windows 11 і macOS.

Arduino Nano · 3 × Cherry MX · OLED 128×64 · 4 друковані деталі

До складання · Ігри · Схема у Wokwi · Файли
CAD макропада: основа v8, кришка v6, рамка й три свічі
Перед складанням

Як це працює

Arduino Nano не вміє бути USB-клавіатурою, тому натиск клавіші вона передає по USB рядком K1, K2 чи K3. Невелика програма на ПК слухає Nano і виконує дію з файлу налаштувань: комбінацію клавіш, запуск програми, відкриття сайту чи друк тексту. Кожні 2 секунди вона шле на екран показники комп’ютера. Без запущеної програми клавіші нічого не роблять, а на екрані no PC.

Що потрібно

Arduino Nano USB-C
Arduino Nano USB-C1 шт. · Гребінки й ICSP припаяні. Стоїть у корпусі на ребрі, USB-C у вікні лівої стінки.
Свіч Cherry MX
Свіч Cherry MX3 шт. · Будь-які свічі з хрестоподібним штоком MX; впресовуються згори.
OLED SSD1306 0,96″ · 128×64
OLED SSD1306 0,96″ · 128×641 шт. · I²C, 4 контакти. Плата 25,4 × 26,9 мм, кріпиться 4 гвинтами M2.

Кріплення й витратні матеріали

ЩоКількістьНавіщо
Гвинт M2 × 6 + гайка M24OLED у кришку; M2 × 5 теж тримає
Дроти з Dupont «мама» на одному кінці84 від свічів (3 сигнальні + спільний GND), 4 від OLED
Суперклей або B-7000трохирамка екрана
Кабель USB-C з даними1до ПК

Друковані деталі

ПозначенняДетальФайлОрієнтація на століГабарит
1aОснова1a_base_v8.stlдном на стіл, як є62 × 63 × 39 мм
1bПохила кришка з рамкою1b_lid_v6.stlверхом на стіл, як є; підтримка лише в кишені екрана62 × 52 × 12 мм
1cКейкап1c_keycap_x3.stlяк є, 3 штуки18 × 18 мм
1dРамка екрана1d_frame_v1.stlпласко, як є; гарно іншим кольором31,7 × 33,2 × 1,2 мм

Усе без підтримок, PLA, шар 0,2 мм. Кейкап той самий, що в клікері: посадка на свічі перевірена друком. Під кришкою по периметру рамка, що заходить усередину стінок із вільним зазором. Тримають її 4 горбики, які клацають у неглибокі пази на стінках; пружинять тонкі стінки корпусу. Ззовні нічого не видно.

Кришка знизу: рамка по периметру, проріз OLED, кишені гайок M2
Кришка знизу: рамка по периметру заходить у корпус.
Розріз: рамка кришки всередині задньої стінки, горбик у пазу
Розріз біля задньої стінки: горбик рамки клацає в паз стінки.
Основа з Nano на ребрі
Основа: Nano стоїть на ребрі, штирі вперед, USB-C у вікні лівої стінки.

Складання

01 / Друк

Надрукувати 4 файли, орієнтацію вже записано в STL. Профіль PLA, шар 0,2 мм. Кришка лежить верхом на столі: увімкнути підтримку «лише від столу», вона з’явиться тільки в кишені екрана. Решта без підтримок.

Перевірка: Підтримка з кишені екрана знята, дно кишені рівне; горбики на рамці кришки цілі.

02 / Свічі

До кожного свіча припаяти сигнальний дріт ~12 см з Dupont «мама» на кінці. Другі ніжки трьох свічів з’єднати одним дротом GND, теж із Dupont на кінці.

Дроти просунути зверху в квадратний отвір і тунелем у задню частину корпусу. Спільний GND іде через проходи між гніздами. Потім впресувати свіч.

Перевірка: Свіч сидить щільно, дроти не затиснуті під ним: під ніжками 2,45 мм на пайку.

03 / Nano

Опустити плату згори деталями назад, штирями вперед: правий кінець у напрямну, лівий у низький паз, USB-C навпроти вікна в лівій стінці.

Свічі на нижній ряд штирів: K1 (ліва) на D4, K2 на D3, K3 (права) на D2, спільний дріт на GND.

Перевірка: USB-C видно у вікні, плата стоїть рівно, гребінка ICSP не торкається задньої стінки.

04 / Екран

До гребінки OLED надягнути 4 дроти з Dupont. Плату вставити згори в кишеню кришки гребінкою до переднього краю, дроти просунути в заокруглений проріз.

4 гайки M2 вкласти в шестигранні кишені знизу кришки, закрутити 4 гвинти M2 × 6 зверху.

Перевірка: Скло на 0,4 мм нижче поверхні кришки, гвинти не виступають.

05 / Підключення екрана

Дроти OLED на верхній ряд штирів Nano: SDA на A4, SCL на A5, VCC на 5V, GND на GND.

Перевірка: Зверху над корпусами Dupont лишається місце під кришку.

06 / Кришка

Поставити кришку згори так, щоб рамка знизу зайшла всередину стінок, і натиснути до клацання. Знімати: підчепити край пальцями у вирізах з боків і потягти вгору.

Перевірка: Кришка лежить на стінках урівень, не хитається.

07 / Рамка й кейкапи

Приклеїти рамку навколо екрана, вікном над світною частиною. Натиснути кейкапи на штоки свічів.

Перевірка: Рамка закриває гвинти й край плати OLED.

Кришка знизу: заокруглений проріз під дроти OLED між кишенями гайок M2
Кришка знизу: проріз під дроти OLED між кишенями гайок M2.

Схема

Інтерактивна схема з прошивкою: відкрити у Wokwi. Там можна натискати кнопки й надіслати на екран рядок з показниками.

Схема у Wokwi: три кнопки згори, Nano по центру, OLED знизу
ЩоПін NanoКолір дроту на схемі
K1, ліва клавішаD4зелений
K2D3помаранчевий
K3, права клавішаD2рожевий
Другі контакти трьох клавішGNDчорний
OLED SDAA4синій
OLED SCLA5фіолетовий
OLED VCC5Vчервоний
OLED GNDGNDчорний

Резистори не потрібні: прошивка вмикає внутрішню підтяжку. K1 на D4, а не на D2, бо D4, D3, D2 на платі стоять зліва направо, тож дроти не перехрещуються. Порядок пінів OLED дзеркальний до Nano, тому на схемі дві пари дротів один раз перетинаються.

Екрани

Екрани OLED: таблиця, процесор, відеокарта й пам’ять великими цифрами, стан без ПК

Утримай будь-яку клавішу 3 с, щоб перейти на наступний екран (він зміниться ще до відпускання): таблиця з усім разом, потім процесор, відеокарта й пам’ять, кожен окремо великими цифрами. Чого ПК не надіслав, те просто не показується. Вибраний екран плата запам’ятовує. Дія клавіші спрацьовує при відпусканні, щоб відрізнити короткий натиск від утримання.

ПоказникWindows 11macOS
Навантаження CPU, GPUтактак
Пам’ять, зайнято / усього в ГБтактак
Температура CPU, GPUтактак, Apple Silicon

Прошивка Nano

Найпростіше: нічого не встановлювати. Програма для ПК (нижче) сама прошиває плату. Підключи Nano й запусти програму: якщо на платі немає прошивки макропада або вона стара, програма спитає «Записати прошивку макропада?», а після згоди (у macropad.exe кнопка «Так», у Терміналі літера «т») сама запише вбудований файл і перевірить його, приблизно за 5 секунд. Без питання вона нічого не прошиває, бо до компʼютера може бути підключена інша Arduino.

Способи нижче потрібні, лише якщо хочеш змінювати код прошивки.

Через Arduino IDE

  1. Arduino IDE: Tools → Manage Libraries, встановити U8g2.
  2. Завантажити macropad_nano.ino і macropad_core.h в одну папку macropad_nano, відкрити .ino.
  3. Tools → Board → Arduino Nano, Processor → ATmega328P; якщо заливка зависає з stk500_getsync, вибрати ATmega328P (Old Bootloader).
  4. Вибрати порт і натиснути Upload.

Без Arduino IDE: готовий .hex

Файл macropad_nano_v7.hex зібраний з тих самих двох файлів коду, хеші в manifest.json. Заливається програмою avrdude (на Маку brew install avrdude, на Windows архів із github.com/avrdudes/avrdude). Замість PORT свій порт:

avrdude -c arduino -p m328p -P PORT -b 115200 -U flash:w:macropad_nano_v7.hex:i

Якщо зависає з stk500_getsync, у плати старий завантажувач: те саме з -b 57600.

Перевірка без ПК-програми: Serial Monitor на 115200, внизу Newline. Натисни й відпусти клавішу, з’явиться K1. Надішли S:45,12,63,52,40,38,134,180, і на екрані будуть ці числа. Потім монітор закрити.

Ігри без комп’ютера

Друга прошивка робить із макропада маленьку ігрову приставку: той самий корпус, клавіші й екран, нічого не перепаюється. Комп’ютер потрібен лише один раз, щоб записати ігри; далі макропад працює від будь-якої USB-зарядки телефона або павербанка. Найкращі результати кожної гри зберігаються в платі й не зникають після вимкнення.

Екрани ігор: меню, Dino, Flappy, Snake, Breakout, Racer, Simon, Tetris
Знімки екранів з імітації плати на комп’ютері.
ГраЛіва (L)Середня (M)Права (R)
Dino: стрибай через кактусистрибокстрибокстрибок
Flappy: пролети між трубамизмахзмахзмах
Snake: їж і ростиповорот ліворуч—поворот праворуч
Breakout: розбий цеглинки, 3 м’ячіракетка ліворучзапуск м’ячаракетка праворуч
Racer: об’їжджай машинисмуга ліворуч—смуга праворуч
Simon: повтори послідовністьліва панельсередня панельправа панель
Tetrisліворуч (утримання — швидко)поворот; утримання — швидше внизправоруч

Меню: L і R гортають ігри, M запускає. Після програшу: M — ще раз, L — у меню. Вийти з гри посеред партії: затисни L і R разом на 1 секунду.

Як записати ігри

Пам’ять Nano: програма 83.7%, оперативна 80.0%. Щоб ігри вмістилися у 2 КБ оперативної пам’яті, екран малюється чотирма смугами, а змійка зберігає тіло бітами.

Програма на ПК

Програма слухає клавіші макропада, виконує їхні дії й раз на секунду надсилає на екран навантаження, температури й пам’ять.

Windows 11

  1. Завантажити macropad.exe (21 МБ) і запустити подвійним клацанням. Python і інші програми не потрібні.
  2. Якщо з’явиться «Windows захистив ваш ПК»: Докладніше → Однаково запустити. Так буває з усіма програмами без платного підпису.
  3. На питання про права адміністратора відповісти Так: без них Windows не віддає температуру процесора.
  4. «Запускати макропад разом з Windows?» — Так.
  5. Якщо програма запропонує драйвер PawnIO — Так. Він потрібен лише для температури процесора.
  6. Підключити макропад. Біля годинника з’явиться значок (може ховатися під стрілкою ^). Наведи на нього: «Макропад: підключено, COM…». Якщо на платі ще немає прошивки, програма запропонує записати її сама.

Меню значка (правою кнопкою): Налаштування кнопок відкриває config.toml (він у папці %APPDATA%\Macropad), Журнал, Запускати разом з Windows, Вийти.

Якщо антивірус видалить exe, додай його у винятки: програми, зібрані з Python, іноді помилково потрапляють під підозру. Або скористайся іншим способом нижче.

Інший спосіб: через Python (uv) і LibreHardwareMonitor

Завантаж файли з розділу «Програма на ПК» (крім exe) в одну папку.

  1. Встановити uv у PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. Для температур: LibreHardwareMonitor, запускати від імені адміністратора, у меню Options → Remote Web Server → Run. Без нього програма покаже навантаження процесора й пам’ять.
  2. Перевірка показників:
uv run macropad_helper.py --stats
  1. Запуск: двічі клацнути start_macropad.cmd. Для автозапуску ярлик на нього покласти в папку shell:startup.

Свій macropad.exe можна зібрати на Windows: двічі клацнути build_exe.cmd, він покладе його в dist.

macOS

brew install uv macmon

macmon читає датчики на Маках з Apple Silicon без sudo. Запуск: двічі клацнути start_macropad.command. Щоб працювали комбінації клавіш, у System Settings → Privacy & Security → Accessibility увімкнути Terminal. Автозапуск: General → Login Items.

Налаштування клавіш

Файл config.toml: для macropad.exe відкривається з меню значка, в інших способах лежить у папці програми. Після збереження програма перечитує його сама.

[K1]
combo = "play"              # пауза / відтворення

[K2]
run = ["calc.exe"]          # Windows: калькулятор

[K2.macos]
open = "/System/Applications/Calculator.app"

[K3]
open = "https://youtube.com"
ДіяЩо робитьПриклад
comboкомбінація клавіш"ctrl+shift+esc", "cmd+space", "win+d", "mute"
openсайт, файл, папка або програма Mac"~/Downloads"
runзапуск програми з параметрами["notepad.exe"]
typeнадрукувати текст"Привіт!"

Таблиці [K1.windows] і [K1.macos] замінюють [K1] на відповідній системі, тож один файл працює на обох комп’ютерах.

Файли

Кожен файл окремо, без архівів.

Друковані деталі — STL
Прошивка Nano
Ігри без комп’ютера
Програма на ПК

SHA256 усіх файлів