Arduino:Примеры/Управление RGB-светодиодом при помощи Arduino и Android-приложения

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Управление RGB-светодиодом при помощи Arduino и Android-приложения[1]

В этой статье рассказывается, как создать Android-приложение, которое через Bluetooth подключается к Arduino и позволяет управлять цветом RGB-светодиода. Создание приложения будет выполняться при помощи бесплатного веб-сервиса MIT App Inventor 2.

Вот так проект выглядит в действии:

Если вы не знакомы с RGB-светодиодами, то о них можно почитать тут.

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

Кроме того, вам понадобится смартфон с функцией Bluetooth.

Создание Android-приложения

Android-приложение для этого проекта создано при помощи веб-сервиса MIT App Inventor. Это отличная платформа для новичков в разработке приложений для Android, т.к. в ее основе лежит простой и понятный принцип «drag-n-drop», а создаваемые приложения получаются простыми, но в то же время полностью рабочими.

Чтобы зарегистрироваться в MIT App Inventor, понадобится аккаунт в Google. Страница для залогинивания находится тут.

Теперь загрузите файл, с которым мы будем работать. Он называется «Control_RGB_LED.aia», и его можно скачать отсюда. Затем залогиньтесь в MIT App Inventor и кликните на Projects > Import project (.aia) from my computer.

Теперь выберите файл «Control_RGB_LED.aia», который скачали ранее, и нажмите ОК. В результате файл откроется в MIT App Inventor, после чего вы сможете приступить к его редактированию.

Секция Designer

MIT App Inventor состоит из 2 главных секций – Designer и Blocks.

В секции Designer вы добавляете новые кнопки, текст, меню и т.д. В общем, меняете внешний вид приложения. Приложение «Control_RGB_LED.aia» выглядит в секции Designer следующим образом:

На смартфоне оно выглядит немного по-другому:

Секция Blocks

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

Вот так секция Blocks выглядит для приложения «Control_RGB_LED.aia»:

Установка приложения

Чтобы сгенерировать установочный файл, кликните по кнопке  Tab ⇆ :

Здесь у вас два варианта:

  • App (provide QR code for .apk). Генерирует QR-код для APK-файла. Чтобы загрузить этот APK-файл, просканируйте QR-код смартфоном.
  • App (save .apk to my computer). Генерирует APK-файл и сохраняет его на компьютере. Чтобы загрузить этот APK-файл, просто скопируйте его с компьютера на смартфон.

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

Код

Скопируйте в IDE Arduino код, показанный ниже, а затем загрузите его на плату Arduino. Убедитесь, что выбрали правильные пункты в меню Инструменты > Плата (Tools > Board) и Инструменты > Порт (Tools > Port).

Примечание: Перед тем, как загружать код, отключите от Bluetooth-модуля контакты RX и TX.

/* 
 * Руи Сантос (Rui Santos)
 * Более подробно о проекте на: http://randomnerdtutorials.com
 */

#define max_char 12
char message[max_char];    // хранит сообщение
char r_char;               // считывает каждый символ
byte index = 0;            // определяет позицию в массиве
int i;

int redPin = 11;     // красный светодиод RGB-светодиода -> D11
int greenPin = 10;   // зеленый контакт RGB-светодиода -> D10
int bluePin = 9;     // синий контакт RGB-светодиода -> D9

int redValue = 255;     
int greenValue = 255;   
int blueValue = 255;     

String redTempValue;     // строка для красного 
                         // светодиода RGB-светодиода 
String greenTempValue;   // строка для зеленого 
                         // светодиода RGB-светодиода
String blueTempValue;    // строка для синего 
                         // светодиода RGB-светодиода

int flag = 0;
char currentColor;  

void setup() {
  pinMode(redPin,OUTPUT);
  pinMode(bluePin,OUTPUT);
  pinMode(greenPin, OUTPUT);
  // запускаем последовательную коммуникацию на скорости 9600 бод:
  Serial.begin(9600);
}

void loop() {
  // цикл while() считывает сообщение: 
  while(Serial.available() > 0){
    flag = 0;
    // в сообщении может быть не более 12 символов: 
    if(index < (max_char-1)){         
      r_char = Serial.read();      // считываем символ
      message[index] = r_char;     // сохраняем символ в массиве 
      if(r_char=='R'){
         currentColor = 'R';
         redTempValue = "";
      }
      else if(r_char=='G'){
         currentColor = 'G';
         greenTempValue = "";
      }
      else if(r_char=='B'){
         currentColor = 'B';
         blueTempValue = "";
      }
      if(currentColor == 'R' && r_char!='R'){
         redTempValue += r_char;
      }
      else if(currentColor == 'G' && r_char!='G'){
         greenTempValue += r_char;
      }
      else if(currentColor == 'B' && r_char!='B'){
         blueTempValue += r_char;
      }
      index++;                     // переходим на следующую позицию
      message[index] = '\0';       // удаляем последнюю позицию
   }
   
 }
 
 if(flag == 0){
   analogWrite(redPin, 255-redTempValue.toInt());
   analogWrite(greenPin, 255-greenTempValue.toInt());
   analogWrite(bluePin, 255-blueTempValue.toInt());
   /*Serial.print('R');
   Serial.println(redTempValue);
   Serial.print('G');
   Serial.println(greenTempValue);
   Serial.print('B');
   Serial.println(blueTempValue);
   Serial.print("MESSAGE ");*/  //  "СООБЩЕНИЕ "
   Serial.println(message);
   flag=1;
       for(i=0; i<12; i++){
      message[i] = '\0';
    } 
    // сбрасываем индекс
    index=0;  
 }

}

Схема

Подключите друг к другу компоненты, как показано на схеме ниже:

Примечание: Если используете RGB-светодиод с общим катодом, его длинную ножку нужно подключить к GND.

Важно: Bluetooth-модуль подключается к Arduino следующим образом:

  • Контакт TX на Bluetooth-модуле – к контакту RX на Arduino
  • Контакт RX на Bluetooth-модуле – к контакту TX на Arduino

Собранная цепь должна выглядеть примерно так:

Запуск приложения

Если вы не сгенерировали APK-файл (это файл для установки Android-приложения на смартфон), то можете загрузить его отсюда. Затем переместите этот файл на смартфон, откройте и следуйте инструкциям мастера установки.

Теперь включите у смартфона Bluetooth:

Убедитесь, что смартфон спарен с Bluetooth-модулем. Спаренные устройства ищите в настройках Bluetooth на смартфоне.

Теперь откройте установленное приложение. Кликните на кнопку «Connect Bluetooth», чтобы через Bluetooth подключить смартфон к Arduino.

Выберите Bluetooth-модуль (он должен называться «linvor»).

Вот и все! Приложение готово к использованию.

Демонстрация

Вот так проект выглядит в действии. Чтобы поменять цвет RGB-светодиода, просто двигайте ползунки, а затем кликните на кнопку CHANGE COLOR.

[Видео]

Возможные проблемы и их решение

  • Не могу загрузить код на плату Arduino.
    • Проверьте, соединены ли контакты RX и TX между Bluetooth-модулем и Arduino. Во время загрузки кода на плату Arduino они должны быть отключены. Эти контакты нужны для последовательной коммуникации между Arduino и компьютером.
  • Не могу найти Bluetooth-модуль.
    • Убедитесь, что спарили смартфон и Bluetooth-модуль. Зайдите в настройки Bluetooth на смартфоне и поищите доступные устройства – одним из них должен быть как раз Bluetooth-модуль (он может называться «linvor», «HC-06», «HC-05», «HC-04» и т.д.). Спарьте смартфон и Bluetooth-модуль друг с другом. Если система запросит пароль, впишите «1234».
  • Приложение не взаимодействует с Arduino.
    • Если Android-приложение подключено к Bluetooth-модулю, в нижней части экрана должно появиться сообщение «Connected» (см. картинку ниже). Если такого сообщения нет, нажмите на кнопку «Connect Bluetooth», чтобы установить соединение с Bluetooth-модулем.

Также проверьте правильность подключения между Bluetooth-модулем и Arduino. Контакт TX на Bluetooth-модуле должен быть подключен к контакту RX на Arduino, а контакт RX на Bluetooth-модуле – к контакту TX на Arduino.

  • Bluetooth-модуль запрашивает пароль
    • Впишите «1234».

См.также

Внешние ссылки