Первый проект. Мигаем светодиодом Arduino при помощи кнопки на смартфоне

Изучение программирования микроконтроллеров всегда начинается с самого простого примера "Hello world" - помигать светодиодом. Освоение нашего сервиса так же предлагаем начать с самого простого примера — мы так же помигаем светодиодом. Однако мигать им мы будем дистанционно, нажимая кнопку на экране нашего смартфона.

Все что мы с Вами проделаем, вы можете посмотреть на видео в конце страницы.


У нас имеется стандартная плата Arduino и модуль Bluetooth HC-04. Так же подойдет практически любая плата Arduino и любой модуль Bluetooth серии HC-04 (05/06/07). Данные модули уже по умолчанию работают в режиме UART — прямой передачи данных, и не требуют настроек.

Конструируем интерфейс

Входим в редактор интерфейсов на сайте и рисуем наш интерфейс. Интерфейс будет состоять всего из одной кнопки. Кликаем мышкой в элемент управления "Кнопка" и перетягиваем ее в рабочее поле. Так как кнопка всего одна, ее можно растянуть на весь экран. Для этого выделяем кнопку, и за синие квадратики окантовки выделения изменяем ее размер, мышкой передвигаем ее на необходимое место. На рисунке представлено то, что должно получиться:

Генерируем исходный код

Наш проект интерфейса готов. Перед тем как получить исходный код для нашего микроконтроллера, необходимо указать, для какой платформы мы хотим его получить. Наша платформа - Arduino. Для связи с модулем Bluetooth будем использовать SoftwareSerial. Это даст нам возможность подключить Bluetooth модуль практически к любым пинам микроконтроллера. Данную настройку производим в панели настройки проекта.

Теперь нажимаем кнопку "Получить код". Если вы не зарегистрировались, вам необходимо зарегистрироваться, что бы получить исходный код проекта.

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


///////////////////////////////////////////// 
//        RemoteXY include library         // 
///////////////////////////////////////////// 

/* определение режима соединения и подключение библиотеки RemoteXY */ 
#define REMOTEXY_MODE__SOFTWARESERIAL 
#include <SoftwareSerial.h> 
#include <RemoteXY.h> 

/* настройки соединения */ 
#define REMOTEXY_SERIAL_RX 2 
#define REMOTEXY_SERIAL_TX 3 
#define REMOTEXY_SERIAL_SPEED 9600 

/* конфигурация интерфейса  */ 
unsigned char RemoteXY_CONF[] = 
  { 1,0,11,0,1,5,1,0,25,7
  ,49,49,2,88,0 }; 
   
/* структура определяет все переменные вашего интерфейса управления */ 
struct { 

    /* input variable */
  unsigned char button_1; /* =1 если кнопка нажата, иначе =0 */

    /* other variable */
  unsigned char connect_flag;  /* =1 if wire connected, else =0 */

} RemoteXY; 

///////////////////////////////////////////// 
//           END RemoteXY include          // 
///////////////////////////////////////////// 

#define PIN_BUTTON_1 13

void setup()  

  RemoteXY_Init ();  
   
  pinMode (PIN_BUTTON_1, OUTPUT);
   
  // TODO you setup code 
   


void loop()  
{  
  RemoteXY_Handler (); 
   
  digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
   
  // TODO you loop code 
  // используйте структуру RemoteXY для передачи данных 

}

Нажмите на ссылку "Загрузить" и скачайте код скетча одним zip архивом. Распакуйте его и откройте файл project.ino в среде разработки Arduino.

Обратите внимание, что в проекте (функция main) уже в качестве примера наша кнопка автоматом завязалась на пин 13. На этом пине на стандартных платах Arduino расположен светодиод, позволяющий тестировать программы. Им мы и будем мигать. Нам не надо ничего исправлять в этой части кода.

По большому счету нам вообще ничего не надо исправлять. Код вполне компилируется без ошибок. Но не будем торопиться, нам еще необходимо настроить соединение с Bluetooth модулем.

Подключаем модуль Bluetooth

Теперь нам необходимо физически подключить Bluetooth модуль к плате Arduino. Модуль HC-04 имеет 4-е контакта (они подписаны прямо на плате). Два из них - питание модуля. Их подключаем стандартно к питанию +5V на плате Arduino.

Остальные два - это шина UART интерфейса: RX и TX, отвечающие за прием и передачу данных. Контакт RX необходимо подключить к пину на Arduino, который у нас имеет функцию TX, а контакт TX к пину на Arduino, имеющему функцию RX. Как же узнать, какие пины на Arduino отвечают за RX и TX связи с модулем? Очень просто.

В коде скетча имеются два определения пинов, к которому подключен модуль Bluetooth. Найдите эти строки кода. Они как раз и определяют, какие пины будут использованы при настройке SerialSoftware:


/* настройки соединения */ 
#define REMOTEXY_SERIAL_RX 2 
#define REMOTEXY_SERIAL_TX 3 

Итак, контакт RX модуля Bluetooth подключаем к пину 3 платы Arduino, а контакт TX - к пину 2 платы. Конечно же вы можете изменить номера пинов по своему усмотрению (читайте документацию на SerialSoftware, так как не все пины могут быть использованы в программной эмуляции UART).

Вот теперь можно залить исходный код в микроконтроллер. ЗАГРУЖАЕМ!

Качаем приложение и подключаемся к нашему Arduino

Заходим в раздел сайта "Скачать мобильное приложение" и загружаем на смартфон или планшет приложение. Конечно же ваш смартфон/планшет должен иметь встроенный Bluetooth.

Запускаем приложение. Включаем Bluetooth, если он не включен. Автоматически начинается поиск устройств. Все найденные устройства будут показаны в списке.

По умолчанию модули HC-04 (05/06/07) имеют запрограммированное имя "INVOR" или "HC-04" ("HC-05","HC-06"). Если в списке устройств появилось такое - то это ваше. Щелкаем в него. После некоторого времени, необходимого на соединение с модулем, вам будет предложено ввести пароль для сопряжения. Опять же модули серии HC-04 (05/06/07) имеют запрограммированный пароль "1234". Вводим его. И ВУА-ЛЯ, нам открылся наш интерфейс с большущей кнопкой на весь экран!

Нажимаем на эту огромную кнопку и наблюдаем, как загорается светодиод на плате Arduino! Все просто, все работает!