Использование Интернета вещей для удаленного управления манипулятором
Компоненты и расходные материалы
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
Введение
Я действительно хотел попробовать разработать роботизированную руку полностью с нуля. Доступно множество проектов с открытым исходным кодом, но я подумал, что было бы приятно, если бы я мог спроектировать, построить и запрограммировать один из ничего (и это было так).
Я расскажу как о фазах проектирования, так и о программировании. Но я сосредоточусь больше на стороне программирования, поскольку это не просто управление углами сервопривода.
Вот ссылка на видео финального проекта в действии - https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095. html.
Я использовал Simulink для программирования Arduino MKR1000, который является микроконтроллером, управляющим роботизированной рукой. Затем я добавил возможность управлять манипулятором робота практически из любого места с помощью ThingSpeak, открытой платформы Интернета вещей с аналитикой MATLAB.
Требуется оборудование
- Фанера размером 1/8 дюйма размером 15 x 20 дюймов.
- Arduino MKR1000
- 5 сервоприводов GS9025MG
- Разъем постоянного тока диаметром 2,1 мм, совместимый с макетной платой.
- Блок питания с цилиндрическим разъемом 6 В постоянного тока.
- Перемычки
- 3 транзистора 2n2222a
- 10 гаек M2
- 10 винтов M2 x 10
- Гайки 40x M3
- 40 винтов M3 x 25
Используемое программное обеспечение
- MATLAB
- Simulink
- Пакет поддержки MATLAB для оборудования Arduino
- Пакет поддержки Simulink для оборудования Arduino
- Пакет поддержки MATLAB для ThingSpeak
Дизайн
Я хотел, чтобы стоимость деталей была низкой, поэтому я разработал их для любительских сервоприводов, особенно для модели GS-9025MG. Это означало, что окончательный вес и размер были ограничены. Это было связано с тем, что микросервоприводы не могли передавать большой крутящий момент и, как следствие, не могли поднимать тяжелые рычаги.
Я попробовал создать прототип из фанеры толщиной 1/4 дюйма, которая оказалась слишком тяжелой для сервоприводов. Я уменьшил длину рычагов и использовал фанеру толщиной 1/8 дюйма, что устранило проблему сервоуправления. Я создал дизайн с помощью Fusion 360 и загрузил его в виде файла .dxf, который затем вырезал лазером.
Кроме того, оказалось необходимым подавать постоянное напряжение от сетевой розетки, потому что ток, потребляемый от аккумуляторных блоков, был очень высоким и очень быстро разряжал их.
Что касается управления двигателями, Arduino MKR1000 имеет 4 контакта PWM, но мне нужно было 5 для управления 5 сервоприводами. Я проявил изобретательность и использовал один вывод ШИМ для управления двумя сервоприводами и цифровой вывод для переключения между двумя сервоприводами и управления по одному.
Вот схема, описывающая это:
Вот схема подключения сервоприводов к Arduino:
Программирование
Программирование состояло из двух частей:этапа прототипирования, на котором я его собрал и заставил сервоприводы управлять определенным местоположением, и этап точного управления, на котором я мог указать местоположение резервуара с помощью ThingSpeak.
Создание прототипа
Используя ползунки и постоянные блоки, я мог управлять сервоприводами на Arduino, чтобы они двигались под определенными углами. Я использовал эту модель, чтобы узнать смещения между заданным углом и фактическими углами рычага, а также диапазон допустимых углов для каждого сервопривода.
Блоки с шестеренкой на них - это блоки записи ШИМ для управления подачей на определенный угол от 0 до 180.
Я использовал обратную кинематику для руки в двухмерном плоском движении, чтобы найти углы, необходимые для перемещения руки в координату XY. Я обнаружил, что эта ссылка довольно хорошо объясняет кинематику:https://appliedgo.net/roboticarm/
Точный контроль
Хотя это выглядит сложнее, чем предыдущее, логика все та же. Выходные блоки по-прежнему представляют собой блоки записи сервоприводов с шестернями. Входные блоки теперь не являются входами ползунка / константного блока, а считываются из канала ThingSpeak. Я более подробно остановлюсь на ThingSpeak позже. Входными данными являются позиции X и Y руки, которые с помощью функционального блока loc2angles MATLAB преобразуются в заданные углы для руки. Блок angles2loc в верхней части модели - это просто способ мониторинга системы, чтобы убедиться, что сервопривод углы переведены в правильное положение ввода с помощью прямой кинематики. Один из классных инструментов от Simulink, который я использовал в этом проекте, - Внешний режим . . Это позволило мне контролировать систему, пока она работала на самой Arduino.
Блоки с серым облаком на них - это блок чтения ThingSpeak, встроенный в пакет поддержки Simulink для Arduino. Я ввожу идентификатор канала, номер поля данных, который я хочу получить, и ключ чтения API, и он выводит данные из этого канала и поля. Не волнуйтесь, если вы не знакомы с какими-либо из этих терминов, я скоро уточню.
Использование ThingSpeak:создание и использование канала
1. Перейдите на https://thingspeak.com/
.2. Нажмите «Войти» в правом верхнем углу и войдите, используя бесплатную учетную запись MathWorks.
3. На странице панели управления нажмите «Новый канал»
.4. Введите данные, как показано ниже. Показанные данные - это все, что вам нужно заполнить.
5. Нажмите "Сохранить канал" внизу
.6. Вы создали канал ThingSpeak
7. В командном окне MATLAB или с помощью мобильного приложения MATLAB вы можете вводить команды, которые выглядят следующим образом:thingSpeakWrite (chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);
Это записывает новые данные в указанные поля в канале ThingSpeak. Вы можете изменить значения во втором аргументе вызова функции, чтобы изменить значение соответствующего поля. После изменения значений данные канала должны выглядеть следующим образом:
Запуск модели
Когда вы закончите настройку канала ThingSpeak, вы можете либо запустить модель на Arduino во внешнем режиме, либо путем развертывания на оборудовании. В модели Simulink перейдите в «Параметры конфигурации модели», щелкнув маленькую шестеренку на верхней панели меню, выберите «Аппаратная реализация» и убедитесь, что «Аппаратная плата» - это Arduino MKR 1000. на той же вкладке нажмите "Свойства Wi-Fi" и введите учетные данные Wi-Fi для доступа к сети.
Нажмите зеленую кнопку запуска, чтобы запустить модель во внешнем режиме, или синюю кнопку развертывания, чтобы развернуть ее на оборудовании.
После запуска модели вы можете записывать новые данные в поля канала ThingSpeak из MATLAB или MATLAB mobile на своем телефоне и смотреть, как он перемещает вашу руку робота!
Код
https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot
Производственный процесс
- Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
- Управление монетоприемником с помощью Arduino
- Центр управления Arduino
- Монитор сердечного ритма с использованием Интернета вещей
- IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
- Роботизированная рука, напечатанная на 3D-принтере Arduino
- Управление Arduino Rover с помощью Firmata и контроллера Xbox One
- Управление увлажнителем Arduino
- Роботизированная рука, управляемая нунчук (с Arduino)
- Простая и умная роботизированная рука с использованием Arduino