Удаленное IoT-управление самодельной манипулятором
Компоненты и материалы
| Arduino MKR1000 | 1 |
Необходимые инструменты и станки
- Лазерный резак (универсальный)
Приложения и онлайн-сервисы
- MATLAB
- Arduino IDE
О проекте
Введение
Я давно хотел спроектировать роботизированную руку с нуля. Существует много открытых конструкций, но мне хотелось пройти полный цикл: проектирование, сборка и программирование с чистого листа (и это того стоило).
Видео работы готового проекта: YouTube / MathWorks.
Для программирования Arduino MKR1000 (MCU манипулятора) использовал Simulink. Добавил возможность управления откуда угодно через ThingSpeak — открытую IoT-платформу с аналитикой MATLAB.
Необходимое железо
- Фанера 15"x20", толщина 1/8 дюйма
- Arduino MKR1000
- 5 сервоприводов GS9025MG
- DC-разъем 2.1 мм для макетной платы
- Блок питания 6 В DC с разъемом
- Перемычки
- 3 транзистора 2n2222a
- 10 гайок M2 и 10 винтов M2×10
- 40 гайок M3 и 40 винтов M3×25
Используемое ПО
- MATLAB
- Simulink
- MATLAB Support Package for Arduino Hardware
- Simulink Support Package for Arduino Hardware
- MATLAB Support Package for ThingSpeak
Проектирование
Чтобы снизить стоимость, выбрал хобби-сервоприводы GS-9025MG. Это ограничило вес и размер: микросервы не выдают большой крутящий момент и не могут поднимать тяжелые рычаги.
Прототип из фанеры 1/4 дюйма оказался слишком тяжелым. Уменьшил длину рычагов и перешел на фанеру 1/8 дюйма — проблема решилась. Чертил в Fusion 360, экспортировал в .dxf и вырезал лазером.
Питание от батарей быстро садилось из-за большого тока — понадобилось стационарное питание 6 В.
У Arduino MKR1000 всего 4 ШИМ-вывода, а серв 5. Решил нестандартно: один ШИМ-пин управляет двумя сервами, а цифровой пин переключает их по очереди.


Программирование
Два этапа: прототипирование (сборка и командные углы) и точное управление через ThingSpeak.
Прототипирование

Слайдеры и константы задавали углы серв. Определил смещения между заданным и реальным углом, а также допустимые диапазоны. Блоки с шестерёнками — PWM Write для углов 0–180°.
Для обратной кинематики в 2D использовал методику из этой статьи.
Точное управление

Логика та же, но входы теперь из ThingSpeak. Блок loc2angles (MATLAB Function) переводит координаты X,Y в углы серв. Блок angles2loc сверяет прямую кинематику для мониторинга.
Ключевой инструмент Simulink — External Mode: мониторинг сигналов в реальном времени на работающем Arduino.
Блоки с облачком — ThingSpeak Read из Simulink Support Package. Задаёте Channel ID, номер поля и Read API Key — блок выдаёт данные из канала.
Работа с ThingSpeak: создание и использование канала
- Перейдите на thingspeak.com.
- Войдите через бесплатный аккаунт MathWorks (Sign in → MathWorks Account).
- На дашборде нажмите New Channel.
- Заполните поля как на скриншоте (имя, поля Field 1–5 для X, Y и серв).
- Нажмите Save Channel.
- Канал создан.
- В MATLAB Command Window или MATLAB Mobile отправляйте команды:
Меняя значения во втором аргументе, меняете целевые позиции. Данные в канале обновятся:thingSpeakWrite(chID, [0.6963, 94, -12, 0, 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);

Запуск модели
В Simulink: Model Configuration Parameters (шестерёнка) → Hardware Implementation → Hardware Board: Arduino MKR1000. В Target Hardware Resources → WiFi Properties введите SSID и пароль сети.
Зелёная кнопка Run — External Mode, синяя Deploy to Hardware — прошивка в плату.

После запуска модели пишите новые данные в поля ThingSpeak из MATLAB или MATLAB Mobile на телефоне — и наблюдайте за движением руки!
Код
Полные файлы модели Simulink и скрипты MATLAB: File Exchange.
Производственный процесс
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умная копилка: управление монетоприёмником на Arduino Nano
- Arduino Power Control Center: N-FET, P-FET, реле и RTC
- IoT-монитор пульса в реальном времени на Arduino и MAX30100
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- Управление Arduino-роботом через Firmata и геймпад Xbox One
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Умная робо-рука на Arduino: простое DIY-руководство