В этой статье мы научимся устанавливать аппаратную поддержку для работы с Arduino в математической системе MATLAB и управлять платой Arduino из программы на MATLAB.
Обычно мы используем среду Arduino IDE для написания и загрузки программного кода в плату Arduino. Так зачем тогда нам может потребоваться MATLAB? Преимущество системы MATLAB состоит в том, что она использует язык программирования более высокого уровня, который является более простым чем C / C++. Другим преимуществом системы MATLAB является то, что в ней мы можем быстро и без труда посмотреть результаты операций ввода/вывода (I/O), без компиляции. Кроме того, MATLAB обладает очень хорошими функциями для построения разнообразных графиков, благодаря чему мы можем быстро проанализировать и визуализировать данные, собранные Arduino.
В заключительной части статьи мы рассмотрим управление из математической системы MATLAB миганием светодиода, подключенным к плате Arduino.
Установка пакета аппаратной поддержки в MATLAB
Шаг 1. Запустите MATLAB (предпочтительнее одну из последних версий).
Шаг 2. В пункте Environment section выберите Add-Ons > Get Hardware Support Packages.
Шаг 3. После этого запустится окно выбора и установки дополнений (Add-On).
Шаг 4. В открывшемся окне выберите MATLAB Support Package for Arduino Hardware.
Шаг 5. Затем кликните на кнопку Install (установить). Установщик попросит вас залогиниться в вашем аккаунте на MathWorks. Если у вас нет там аккаунта, то его можно создать в процессе установки пакета.
Шаг 6. После того как залогинитесь в аккаунте на MathWorks примите условия лицензионного соглашения и продолжите процесс установки.
Шаг 7. Теперь подождите когда пакет скачается и установится.
Шаг 8. Установка Arduino Support Package for MATLAB успешно завершена.
Тестирование MATLAB
После установки пакета для работы с Arduino необходимо удостовериться в том, что он корректно работает.
1. Откройте MATLAB.
2. Соедините Arduino с компьютером.
3. Напечатайте следующую команду в командном окне MATLAB.
1 |
a = arduino() |
4. Если у вас к компьютеру подключено несколько плат Arduino, причем разных типов, мы можем выбрать COM порт, к которому подключена нужная нам плата Arduino и ее тип.
1 |
a = arduino( ‘COM5’ , ‘uno’ ) |
5. После ввода этой команды MATLAB будет пытаться установить соединение с указанной платой Arduino. Если соединение будет успешно установлено, MATLAB отобразит свойства платы Arduino, подключенной к компьютеру.
6. После этого мы можем увидеть переменную ‘a’ в рабочем поле MATLAB, которая будет являться объектом arduino в системе MATLAB. Чтобы очистить этот объект мы можем использовать следующую команду:
1 |
clear a |
Эта команда удалит объект arduino с рабочего поля.
Управление светодиодом с помощью MATLAB и Arduino
В этом примере мы с помощью математической системы MATLAB будем управлять миганием светодиода, подключенным к плате Arduino.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Резистор 1 кОм (купить на AliExpress).
- Светодиод (купить на AliExpress).
- USB кабель для Arduino.
Схема проекта
Схема нашего тестового стенда для управления светодиодом с помощью MATLAB и Arduino представлена на следующем рисунке.
Шаги
- Запустите MATLAB.
- Соедините плату Arduino с компьютером.
- Соберите представленную схему.
- Откройте в MATLAB файл с расширением .m (код этого файла представлен ниже).
- Сохраните его и запустите на выполнение.
- Светодиод начнет мигать.
- После того как светодиод мигнет 5 раз, он погаснет.
Если вы хотите узнать больше о графических возможностях MATLAB и как их можно применить вместе с Arduino, рекомендуем прочитать статью на нашем сайте об автоматизации дома с помощью MATLAB и Arduino. Также можно посмотреть проект управления сервомотором с помощью MATLAB и Arduino.
Исходный код программы
Далее приведен код программы для MATLAB – он очень простой. Скопируйте его и сохраните в файле с расширением .m. Вы можете изменить его по своему желанию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
% создаем объект arduino a = arduino(); % цикл в котором мы мигнем светодиодом 5 раз for i=1:5 writeDigitalPin(a, 'D10', 1); pause(0.5); writeDigitalPin(a, 'D10', 0); pause(0.5); end % конец связи с arduino clear a |