В этой статье мы рассмотрим установление прямого соединения между математической системой Matlab и платой Arduino Uno, что позволит программировать плату Arduino непосредственно из Matlab'а. Это бывает очень полезно когда речь идет о таких сложных проектах как роботизированная рука, человекоподобные роботы и т.д. То есть в этом случае мы можем разработать какую-нибудь сложную программу в математической системе Matlab и потом загрузить ее в Arduino.
Для начала необходимо загрузить пакет поддержки Arduino для Matlab. Сделать это можно по следующей ссылке:
https://www.mathworks.com/hardware-support/arduino-matlab.html
По ссылке вы скачаете архив, его надо разархивировать и сохранить в папке под названием ArduinoIO. Затем запустите Arduino IDE, выберите в ней меню "file" и откройте папку ArduinoIO и в ней выберите нужный вам файл с расширением .pde из подпапки Pde. Поскольку в этой статье мы будем управлять сервомотором, то в данном случае необходимо выбрать файл adioes.pde. Для управления другими устройствами могут потребоваться другие .pde файлы. Когда вы откроете .pde файл в Arduino IDE вы там сможете посмотреть всю информацию о том, для чего предназначен этот файл.
Затем необходимо загрузить программу adioes.pde в ваш Arduino, после этого можно переключиться на Matlab.
Все необходимые после этого операции представлены на приведенных рисунках, я думаю они не вызовут у вас существенных сложностей.
Одна из существенных вещей, которую необходимо сделать, это выбрать (установить) папку ArduinoIO вашей текущей папкой в Matlab. Сделать это можно выбрав пункт меню ‘browse the folder’.
Теперь, после того как выбрана текущая папка, вы можете кликнуть на arduino.m чтобы получить доступ ко всем функциям и командам, которые вы собираетесь использовать. Как вы можете видеть из представленного рисунка первой командой в этом списке идет arduino(comport).
Теперь давайте запишем первую необходимую нам команду в виде a=arduino(“COM3”);, которая создаст переменную ‘a’ и которая будет использоваться для связи между Arduino и Matlab. После этого необходимо подождать несколько секунд пока установится соединение между Arduino и Matlab. Это можно увидеть на представленной ниже картинке. В использованной команде arduino() в скобках необходимо указать номер COM порта, к которому подключена Arduino.
После того как соединение будет установлено вы сможете увидеть какими аппаратными средствами вы теперь сможете управлять.
После этого необходимо прикрепить сервомотор к одному из контактов Arduino, на котором можно использовать ШИМ (широтно-импульсную модуляцию). Более подробно об управлении сервомотором с помощью Arduino можно прочитать в этой статье. В данном проекте мы использовали PIN 3 (но вы можете использовать любой другой аналогичный контакт), поэтому для прикрепления сервомотора к этому контакту необходимо использовать команду servoAttach(a,3);.
После того как сервомотор прикреплен к контакту (точнее сказать, закреплен в программе за выбранным контактом) вы можете использовать команду servoWrite для вращения сервомотора на любой угол. К примеру, мы хотим повернуть его на 45 градусов, для этого необходимо использовать команду servoWrite(a,3,45).
Схема подключения сервомотора показана на следующем рисунке.
В данной схеме был использован сервомотор требующий питающего напряжения 7.4 В. Это было сделано с помощью батарейки. При этом необходимо замкнуть землю этой батарейки на землю Arduino иначе сервомотор не будет работать правильно. Это одна из наиболее частых ошибок, которую делают новички. Также нельзя в этом случае подавать питание с сервомотора на Arduino поскольку это может сжечь вашу плату Arduino.
Видео, демонстрирующее работу схемы: