Рубрики
Схемы на Arduino

Автоматизация дома с использованием Arduino и MATLAB

Автоматизация управления домашними устройствами в настоящее время является одним из популярных направлений развития современной электроники, которая находит свое воплощение при создании, например, концепции «умного дома». Ранее на нашем сайте мы уже рассматривали проекты автоматизации дома под управлением компьютера, с помощью инфракрасной связи и с помощью технологии GSM, а в этой статье мы рассмотрим пример создания аналогичной системы, но под управлением математической системы Matlab.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль драйвера двигателя ULN2003 (купить на AliExpress).
  3. USB кабель.
  4. Реле на 5В.
  5. Электрические лампочки с держателями.
  6. Источник питания.
  7. Соединительные провода.
  8. Лэптоп (персональный компьютер) с установленной системой Matlab.
  9. PVT

Принципы работы устройства

В этом проекте мы будем использовать математическую систему Matlab совместно с платой Arduino Uno для управления домашними электронными устройствами при помощи графического интерфейса пользователя (Graphical User Interface) на компьютере. Мы будем использовать проводную связь чтобы передавать данные от компьютера (Matlab) в Arduino. На стороне компьютера мы будем использовать графический интерфейс пользователя (GUI), созданный при помощи Matlab, чтобы создать несколько виртуальных кнопок для управления домашними устройствами. Для обеспечения связи между Arduino и MATLAB нам сначала необходимо установить “MATLAB and Simulink Support for Arduino” или “Arduino IO Package”. Для этого необходимо посмотреть видео в конце статьи или осуществить следующую последовательность действий:

  1. Скачать Arduino IO Package. Необходимо зарегистрироваться на сайте чтобы появилась возможность скачивания.
  2. Затем необходимо закачать (Burn/upload) файл adioe.pde в плату Arduino используя Arduino IDE. Этот файл adioe.pde можно найти в Arduino IO Package – ArduinoIO\pde\adioe\adioe.pde.
  3. Затем откройте систему Matlab, смените там директорий на Arduino IO, откройте там файл install_arduino.m file и запустите его в Matlab. После этого вы увидите сообщение “Arduino folders added to the path” (добавлена папка Arduino) в строке команд Matlab.

Подобный метод установления связи между Matlab и Arduino подходит для MATLAB R2013b и более ранних версий Matlab’а. Если у вас стоит более свежая версия Matlab’а, например R2015b или R2016a, там вы можете напрямую кликнуть на кнопку установку дополнений (Add-ons Tab), затем кликнуть “Get Hardware Support Packages”, после чего вы сможете установить подпрограммы для работы с Arduino (Arduino packages).

После установки этих файлов вы можете создать графический интерфейс пользователя (GUI) для нашего проекта автоматизации дома. В этом интерфейсе нам необходимо создать ряд кнопок для включения/выключения электронных домашних устройств. Кнопки можно создать в пункте “Graphical User Interface” в меню “New” в Matlab. Можно произвольно задать цвет и названия этих кнопок. В нашем проекте мы создали 8 таких кнопок, из которых 6 кнопок для включения и выключения отдельных устройств, а 2 кнопки – для включения и выключения всех устройств сразу.

После создания этих кнопок необходимо нажать на кнопку Run в этом окне с GUI, оно попросит вас путь куда сохранить этот GUI файл (с расширением .fig), также известный как ‘fig file’. После того как вы сохраните этот файл автоматически создастся файл с кодом программы (с расширением .m), также известный как ‘M file’ (см. приведенный ниже скриншот). Вы можете скачать файлы GUI и M file по следующим ссылкам: Home_Automation_system.fig и Home_Automation_system.m (правая кнопка мыши и выбрать «Сохранить как») или вы можете создать их сами с помощью описанных рекомендаций.

После этого вы можете запустить на выполнение созданный .m файл, после чего вы увидите сообщение “Attempting connection..” (попытка установления соединения) в командной строке. Убедитесь, что плата Arduino подсоединена к вашему компьютеру с помощью USB кабеля. Если все пойдет хорошо, то вскоре вы увидите сообщение “Arduino successfully connected” (соединение с Arduino успешно установлено). Также вы можете видеть ранее созданные кнопки в окне GUI (графического интерфейса пользователя), с помощью которых вы сможете управлять выбранными домашними электронными устройствами. В нашем проекте для демонстрации мы выбрали 3 электрические лампочки, которые условно будут обозначать вентилятор, свет и телевизор.

Структурная схема работы устройства представлена на следующем рисунке.

Все рассмотренные в статье процессы, включая установку пакета Arduino для Matlab, наглядно показаны в видео в конце статьи.

Работа схемы

Схема устройства представлена на следующем рисунке.

В схеме мы использовали плату Arduino UNO и драйвер реле ULN2003 для управления тремя реле. Эти реле на 5 Вольт SPDT типа подключены к контактам Arduino 3, 4 и 5 через микросхему ULN2003. Реле используются для управления (включения/выключения) электрических лампочек, обозначающих свет, вентилятор и телевизор соответственно.

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

После того как вы нажмете какую-нибудь кнопку в окне GUI произойдет передача соответствующей команды в Arduino и плата Arduino выполнит необходимую команду. После того как вы установите пакет Arduino MATLAB IO вы получите доступ к Arduino из Matlab’а с использованием стандартных функций Arduino, но с небольшими изменениями.

Например, чтобы подать на контакт логическую «1» мы в Arduino пишем digitalWrite(pin, HIGH), а в Matlab’е нам нужно будет написать для этого команду a.digitalWrite(pin, HIGH);. Другие функции также очень похожи.

Но перед тем как делать это мы должны инициализировать переменную
a = Arduino(‘COM1’); // необходимо изменить COM1 на используемый вами порт для подключения Arduino.

В этом проекте у нас не будет никакого кода для Arduino – все команды для платы Arduino будут поступать из математической системы Matlab. Как уже объяснялось ранее в данной статье, что файл с кодом программы Matlab’а (.m file) автоматически создается после того как сохраните файл GUI (.fig file). В .m файле будет уже заранее написана часть кода. В основном это будут функции обратного вызова (Callback functions) для кнопок, в которых надо будет определить (описать) что нужно делать при нажатии на эти кнопки.

В коде программы для Matlab мы сначала должны инициализировать последовательный порт и сделать его объектом с использованием соответствующей переменной. И затем с помощью этой переменной мы сможем программировать как будто пишем программу в Arduino IDE.

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

Аналогичным образом мы можем написать код и для всех остальных кнопок. Далее представлен полный текст программы.

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

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

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