Часто возникает задача дистанционного управления устройством. Классически: берется пульт (RF, IR и т.п.), в устройстве устанавливается приемник команд и… далее дело техники. Однако сейчас у каждого есть пульт в кармане — смартфон. И вполне будет логично — не плодить отдельные пультики ДУ, а использовать его в качестве универсального устройства управления.
Из беспроводных технологий, доступных в смартфонах в общем-то наиболее просто доступны — две: Bluetooth и Wi-Fi. Оба варианта уже рассматривались здесь ранее: Wi-Fi; Bluetooth.
Однако есть простое универсальное решение, не требующее большого ума и понимания принципов работы беспроводных технологий — проект RemoteXY.
В проекте много есть чего, но основной принцип такой: есть мобильное приложение, которое загружается на смартфон. Для него надо разработать интерфейс (это довольно громко сказано — на самом деле надо «накидать» на «рабочий стол» создаваемого проекта «кнопки», «движки», «выключатели» и прочее. В свойствах каждого элемента указать — каким выводом, например, Arduino, он управляет. Выбрать канал управления: Bluetooth, Wi-Fi… Указать каким именно модулем организуется беспроводное соединение и на каких выводах «оно сидит». Затем автоматом генерируется код для Arduino. «Заливаем» скетч. По-сути, все! Далее наше устройство само подскажет приложению — что надо нарисовать на смартфоне — пульт ДУ готов!
Рассмотрим пример с вышеуказанного сайта — самый первый, типа «Helo, world!» — т.е. помигаем светодиодом. Однако мигать им мы будем дистанционно, нажимая кнопку на экране нашего смартфона.
У нас имеется стандартная плата Arduino и модуль Bluetooth HC-04. Так же подойдет практически любая плата Arduino и любой модуль Bluetooth серии HC-04 (05/06/07). Данные модули уже по умолчанию работают в режиме UART — прямой передачи данных, и не требуют настроек.
Входим в редактор интерфейсов на сайте и рисуем наш интерфейс. Интерфейс будет состоять всего из одной кнопки. Кликаем мышкой в элемент управления «Кнопка» и перетягиваем ее в рабочее поле. Так как кнопка всего одна, ее можно растянуть на весь экран. Для этого выделяем кнопку, и за синие квадратики окантовки выделения изменяем ее размер, мышкой передвигаем ее на необходимое место.
Наш проект интерфейса готов. Перед тем как получить исходный код для нашего микроконтроллера, необходимо указать, для какой платформы мы хотим его получить. Наша платформа — Arduino. Для связи с модулем Bluetooth будем использовать SoftwareSerial. Это даст нам возможность подключить Bluetooth модуль практически к любым пинам микроконтроллера. Данную настройку производим в панели настройки проекта.
Теперь нажимаем кнопку «Получить код».
На странице загрузки исходного кода находится код скетча программы для микроконтроллера Arduino, реализующий графический интерфейс управления, который был создан в редакторе. Для компиляции данного скетча так же необходимо установить библиотеку RemoteXY.
Нажмите на ссылку «Загрузить» и скачайте код скетча одним zip архивом. Распакуйте его и откройте файл project.ino в среде разработки Arduino.
Обратите внимание, что в проекте (функция main) уже в качестве примера наша кнопка автоматом завязалась на пин 13. На этом пине на стандартных платах Arduino расположен светодиод.
Теперь нам необходимо физически подключить Bluetooth модуль к плате Arduino. Модуль HC-04 имеет 4-е контакта (они подписаны прямо на плате). Два из них — питание модуля. Их подключаем стандартно к питанию +5V на плате Arduino.
Остальные два — это шина UART интерфейса: RX и TX, отвечающие за прием и передачу данных. Контакт RX необходимо подключить к пину на Arduino, который у нас имеет функцию TX, а контакт TX к пину на Arduino, имеющему функцию RX.
Вот теперь можно залить исходный код в микроконтроллер. ЗАГРУЖАЕМ!
Качаем приложение и подключаемся к нашему Arduino
Заходим в раздел сайта «Скачать мобильное приложение» и загружаем на смартфон или планшет приложение. Конечно же ваш смартфон/планшет должен иметь встроенный Bluetooth.
Запускаем приложение. Включаем Bluetooth, если он не включен. Автоматически начинается поиск устройств. Все найденные устройства будут показаны в списке.
По умолчанию модули HC-04 (05/06/07) имеют запрограммированное имя «INVOR» или «HC-04» («HC-05″,»HC-06»). Если в списке устройств появилось такое — то это ваше. Щелкаем в него.
После некоторого времени, необходимого на соединение с модулем, вам будет предложено ввести пароль для сопряжения. Опять же модули серии HC-04 (05/06/07) имеют запрограммированный пароль «1234». Вводим его. И … нам открылся наш интерфейс с большущей кнопкой на весь экран!
Нажимаем на эту огромную кнопку и наблюдаем, как загорается светодиод на плате Arduino! Все просто, все работает!

В этом примере наглядно видно, к чему приводят функции типа delay в коде, где используется сервис RemoteXY. Команда, отданная со смартфона, доходит до контроллера только через 5-10 секунд.