Использование Bluetooth для беспроводной связи между MATLAB и Arduino


В настоящее время Bluetooth является самым простым и наиболее популярным протоколом для беспроводной связи во встраиваемых системах небольшого радиуса действия. При этом его можно использовать не только для передачи данных, но и для беспроводного управления каким-либо устройством.

Внешний вид проекта по использованию Bluetooth для беспроводной связи между MATLAB и Arduino

В этой статье мы рассмотрим как использовать протокол Bluetooth в математической системе MATLAB. Для беспроводной связи мы будем использовать компьютер со встроенным модулем Bluetooth и установленной системой MATLAB с одной стороны и плату Arduino с подключенным к ней модулем HC-05 с другой стороны. Существует два способа осуществления беспроводной связи между MATLAB и Arduino с помощью протокола Bluetooth: первый – с использованием окна команд, а второй – с использованием MATLAB GUI (графического интерфейса пользователя). Код программы для Arduino для обоих случаев будет одинаковый. Если вы начинающий в MATLAB, то вначале рекомендуем вам изучить статью про мигание светодиодом с помощью MATLAB и Arduino.

Вы также посмотреть следующие проекты на нашем сайте, в которых используется математическая система MATLAB:
- последовательная связь между MATLAB и Arduino;
- управление двигателем постоянного тока с помощью MATLAB и Arduino;
- управление серводвигателем с помощью MATLAB и Arduino;
- управление шаговым двигателем с помощью MATLAB и Arduino.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Установленная на компьютер математическая система MATLAB (предпочтительно версии R2016a или выше).
  3. Bluetooth модуль (HC-05) (купить на AliExpress).
  4. Светодиод (любого цвета) (купить на AliExpress).
  5. Резистор 330 Ом (купить на AliExpress).
  6. Соединительные провода.

Схема проекта

Схема проекта для беспроводной связи между MATLAB и Arduino с помощью Bluetooth представлена на следующем рисунке.

Схема проекта для беспроводной связи между MATLAB и Arduino с помощью Bluetooth

Связь по протоколу Bluetooth в MATLAB с помощью окна команд

В этом режиме MATLAB использует модуль Bluetooth компьютера для связи с модулем HC-05 подключенным к Arduino. Сначала рассмотрим код программы для Arduino чтобы принимать последовательные данные от MATLAB. Загрузите этот представленный код программы в плату Arduino и только после этого приступайте к программированию в окне команд MATLAB.

Затем скопируйте и вставьте в окно команд (Command window) следующий код для взаимодействия по протоколу Bluetooth между MATLAB и Arduino.

Код для взаимодействия по протоколу Bluetooth между MATLAB и Arduino

Далее мы будем использовать команду вида fprintf(bt,‘0’) чтобы включать и выключать светодиод подключенный к плате Arduino. Если вы хотите включить светодиод, то вам необходимо передать ‘1’, если вы хотите выключить светодиод, то вам необходимо передать ‘0’.

Передача 0 и 1 с помощью Bluetooth

Если вы хотите получить информацию о доступном аппаратном обеспечении в компьютере, используйте следующую команду:

Чтобы открыть bluetooth порт используется команда:

Более подробно все эти процессы показаны в следующем видео.

Связь по протоколу Bluetooth в MATLAB с помощью GUI

Для демонстрации возможностей MATLAB по связи с помощью протоколу Bluetooth мы в графическом интерфейсе пользователя MATLAB (MATLAB GUI) создадим три графические кнопки для включения, выключения и мигания светодиода подключенного к плате Arduino. При нажатии одной из этих кнопок данные будут передаваться с помощью Bluetooth от MATLAB к модулю HC-05. Код программы для Arduino содержит команды для приема этих передаваемых по Bluetooth данных и управления светодиодом на основе этих данных. Код для платы Arduino в этом случае будет такой же как и в предыдущем рассмотренном случае (управление из окна команд), но отличие будет заключаться в том, что в предыдущем случае мы передавали ‘1’ и ‘0’ из окна команд MATLAB, теперь же эти данные будут передаваться при нажатии на графические кнопки.

Чтобы в MATLAB запустить графический интерфейс пользователя (GUI - Graphical User Interface) напечатайте в окне команд:

Откроется новое всплывающее окно, в нем выберите новый blank GUI как показано на следующем рисунке.

Запуск редактора графического интерфейса в MATLAB

После этого поместите на рабочее поле редактора три кнопки для включения, выключения и мигания светодиода как показано на рисунке ниже.

Размещение в графическом редакторе Matlab кнопок для включения, выключения и мигания светодиода

Чтобы изменить размер или форму кнопки нажмите на нее один раз. После двойного нажатия на кнопку вы сможете изменить ее цвет, подпись и метку.

Окно для изменения основных параметров кнопок

Мы кастомизировали (придали им облик) эти три кнопки следующим образом:

Внешний вид кнопок в нашем проекте

Вы можете оформить (кастомизировать) их по своему выбору. Когда вы сохраните этот созданный в графическом интерфейсе пользователя проект в окне редактирования MATLAB автоматически сгенерируется соответствующий код. В дальнейшем мы будем вносить изменения в этот код чтобы управлять включением/выключением светодиода из системы MATLAB по Bluetooth.

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Вы можете скачать готовые файл GUI (.fig) и файл с кодом программы (.m) и изменить их по своему усмотрению.

Скопируйте следующие строки и вставьте их в программу начиная со строки №74 чтобы задействовать из MATLAB Bluetooth связь компьютера.

Код программы для задействования возможностей Bluetooth в MATLAB

В представленном фрагменте кода функция fopen(bt) используется для открытия Bluetooth порта для передачи данных.

Далее в коде программы, созданном с помощью графического интерфейса, вы видите три функции, созданные для обработки нажатий на три созданные кнопки. Теперь вам в эти функции необходимо дописать необходимый код.

В функцию для включения светодиода (LED-ON button’s function) скопируйте следующий приведенный фрагмент кода. В этом фрагменте кода функция fprintf(bt,‘1’) используется для передачи ‘1’ из MATLAB в модуль HC-05 с помощью возможностей Bluetooth связи компьютера. Плата Arduino будет принимать эту ‘1’ при помощи модуля HC-05 и зажигать светодиод при помощи подачи на 11-й контакт напряжения высокого уровня (HIGH).

Код программы для передачи "1" с помощью Bluetooth

В функцию для выключения светодиода (LED OFF button’s function) скопируйте следующий приведенный фрагмент кода. В этом фрагменте кода функция fprintf(bt,‘0’) используется для передачи ‘0’ из MATLAB в модуль HC-05 с помощью возможностей Bluetooth связи компьютера. Плата Arduino будет принимать этот ‘0’ при помощи модуля HC-05 и выключать светодиод при помощи подачи на 11-й контакт напряжения низкого уровня (LOW).

Код программы для передачи "0" с помощью Bluetooth

В функцию для мигания светодиода (BLINK button’s function) скопируйте следующий приведенный фрагмент кода. В нем цикл типа for используется для мигания светодиодом 10 раз.

Код программы Matlab для мигания светодиодом с помошью Bluetooth связи

После завершения внесения изменений в программу (в .m файл) нажмите кнопку для ее запуска.

Запуск на выполнение .m файла в Matlab

Системе MATLAB может потребоваться несколько секунд на запуск этого файла, не нажимайте никакую кнопку на графическом интерфейсе до тех пор пока горит индикация BUSY (система занята) в левом нижнем углу экрана.

Ждем пока Matlab выполняет код файла

После успешного запуска программы вы можете нажимать на кнопки LED-ON, LED OFF и BLINK чтобы включать, выключать и мигать светодиодом соответственно. Все файлы программ для этого проекта мы можете скачать по этой ссылке или вы можете взять их непосредственно из этой статьи.

Более подробно все описанные процессы показаны на видео, приведенном в конце статьи.

Исходные коды программ

Код программы для Arduino

Код программы для связи по протоколу Bluetooth в MATLAB с помощью окна команд

Код программы для связи по протоколу Bluetooth в MATLAB с помощью GUI

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
645 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *