Android-приложение для управления RGB-светодиодом с Arduino и Bluetooth

В этом проекте вы создадите Android-приложение для управления цветом RGB-светодиода со смартфона через Bluetooth.

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

Android-приложение для управления RGB-светодиодом с Arduino и Bluetooth - демонстрация

Если вы не знакомы с RGB-светодиодами, прочитайте следующий пост: Как работают RGB-светодиоды?

Скачать Android Apps for Arduino with MIT App Inventor 2

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

Вот полный список компонентов, необходимых для этого проекта:

Компоненты для проекта RGB LED с Arduino и Bluetooth

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

Вы можете использовать ссылки выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

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

Android-приложение будет создано с помощью бесплатного веб-приложения MIT App Inventor. MIT App Inventor – отличное место для начала разработки под Android, поскольку он позволяет создавать простые приложения методом перетаскивания (drag-n-drop).

Для регистрации в MIT App Inventor вам нужна учетная запись Google, а вот страница входа: http://ai2.appinventor.mit.edu.

После входа перейдите в Projects > Import project (.aia) from my computer и загрузите файл .aia. Нажмите здесь, чтобы скачать файл .aia.

Импорт проекта в MIT App Inventor

После загрузки файла .aia вы увидите приложение в программе MIT App Inventor.

Designer (Дизайнер)

В MIT App Inventor есть 2 основных раздела: designer (дизайнер) и blocks (блоки).

Дизайнер – это то, что позволяет добавлять кнопки, текст, экраны и редактировать общий внешний вид приложения. В программе App Inventor приложение выглядит так:

Дизайнер MIT App Inventor - интерфейс приложения RGB LED

Приложение выглядит по-разному в программе и на вашем смартфоне. Вот как приложение выглядит на нашем смартфоне:

Скриншот приложения управления RGB LED на смартфоне

Blocks (Блоки)

Затем есть раздел блоков. Раздел блоков позволяет создавать пользовательскую функциональность для вашего приложения, чтобы при нажатии кнопок приложение действительно что-то делало с этой информацией. Вот блоки для этого приложения (нажмите на изображение для увеличения):

Блоки MIT App Inventor для приложения управления RGB LED

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

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

Вкладка Build в MIT App Inventor
  • Вы можете сгенерировать QR-код, который можно отсканировать смартфоном, и приложение автоматически установится на ваш смартфон.

  • Или вы можете скачать файл .apk, подключить смартфон к компьютеру и перенести файл .apk на телефон.

Просто следуйте мастеру установки, чтобы установить приложение, и готово!

Код

Скачайте или скопируйте следующий код в Arduino IDE и загрузите его на плату Arduino. Убедитесь, что вы выбрали правильную плату и COM-порт.

Примечание: перед загрузкой кода убедитесь, что контакты TX и RX отключены от Bluetooth-модуля!

/*
 * Rui Santos
 * Complete Project Details https://randomnerdtutorials.com
 */

#define max_char 12
char message[max_char];    // stores you message
char r_char;               // reads each character
byte index = 0;            // defines the position into your array
int i;

int redPin = 11;     // Red RGB pin -> D11
int greenPin = 10;   // Green RGB pin -> D10
int bluePin = 9;     // Blue RGB pin -> D9

int redValue = 255;     // Red RGB pin -> D11
int greenValue = 255;   // Green RGB pin -> D10
int blueValue = 255;     // Blue RGB pin -> D9

String redTempValue;     // Red RGB pin -> D11
String greenTempValue;   // Green RGB pin -> D10
String blueTempValue;     // Blue RGB pin -> D9

int flag = 0;
char currentColor;

void setup() {
  pinMode(redPin,OUTPUT);
  pinMode(bluePin,OUTPUT);
  pinMode(greenPin, OUTPUT);
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

void loop() {
  //while is reading the message
  while(Serial.available() > 0){
    flag = 0;
    //the message can have up to 12 characters
    if(index < (max_char-1)){
      r_char = Serial.read();      // Reads a character
      message[index] = r_char;     // Stores the character in message array
      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++;                     // Increment position
      message[index] = '\0';       // Delete the last position
   }

 }

 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';
    }
    //resests the index
    index=0;
 }

}

Посмотреть исходный код

Схема подключения

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

Схема подключения RGB-светодиода с Arduino и Bluetooth-модулем

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

Важно: Вот подключения Bluetooth-модуля к Arduino:

  1. TX Bluetooth-модуля подключается к RX Arduino

  2. RX Bluetooth-модуля подключается к TX Arduino

Вот как должна выглядеть ваша цепь:

Собранная цепь RGB LED с Arduino и Bluetooth-модулем на макетной плате

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

Если вы не сгенерировали файл .apk на предыдущем шаге, вы можете нажать здесь, чтобы скачать файл .apk (это установочный файл Android-приложения). Перенесите этот файл на свой смартфон и откройте его. Следуйте мастеру установки, чтобы установить приложение.

Включите Bluetooth на вашем смартфоне.

Включение Bluetooth на смартфоне

Убедитесь, что вы сопрягли смартфон с Bluetooth-модулем – найдите сопряженные устройства в настройках Bluetooth вашего смартфона.

Затем откройте только что установленное приложение. Нажмите на кнопку Connect bluetooth, чтобы подключиться через Bluetooth к Bluetooth-модулю Arduino.

Экран приложения с кнопкой Connect bluetooth

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

Выбор Bluetooth-модуля linvor

Теперь все готово к использованию!

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

Вот ваше приложение в действии. Перемещайте ползунки и нажимайте CHANGE COLOR, чтобы установить выбранный цвет на RGB-светодиоде.

Устранение неполадок

1. Я не могу загрузить код на плату Arduino.

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

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

2. Я не могу найти устройство Bluetooth-модуля.

Убедитесь, что вы сопрягли смартфон с Bluetooth-модулем. Перейдите в настройки Bluetooth и найдите доступные устройства. Ваш Bluetooth-модуль должен появиться (обычно он называется: linvor, HC-06, HC-04, HC-05…). Сопрягите его. Если он запрашивает пароль, введите 1234.

3. Приложение не взаимодействует с Arduino.

Если ваше Android-приложение подключено к Bluetooth-модулю, оно должно отображать сообщение «Connected» (как показано ниже). В противном случае нажмите «Connect Bluetooth», чтобы установить Bluetooth-соединение.

Сообщение Connected в приложении

Дважды проверьте подключения Bluetooth-модуля:

  1. TX Bluetooth-модуля подключается к RX Arduino

  2. RX Bluetooth-модуля подключается к TX Arduino

4. Мой Bluetooth-модуль запрашивает пароль.

Если ваш Bluetooth-модуль запрашивает пароль, введите 1234.

Заключение

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

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

Если вам понравился этот проект, обязательно ознакомьтесь с нашим последним курсом: Android Apps for Arduino with MIT App Inventor 2.

Спасибо за чтение.