Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2703 статей для сайта.

Контакты:

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


Ambox content.png Черновик


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

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

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

Android App – RGB LED with Arduino and Bluetooth RGB-LED-App-GIF 1.gif

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

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

Android App – RGB LED with Arduino and Bluetooth parts 2.jpg

Кроме того, вам понадобится смартфон с функцией 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.

Android App – RGB LED with Arduino and Bluetooth import 3.png

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

Секция Designer

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

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

Android App – RGB LED with Arduino and Bluetooth designer 4.png

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

Android App – RGB LED with Arduino and Bluetooth smart screen 5.png

Секция Blocks

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

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

Android App – RGB LED with Arduino and Bluetooth blocks 6.png

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

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

Android App – RGB LED with Arduino and Bluetooth build 7.png

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

  • 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.

  1. /*
  2.  * Руи Сантос (Rui Santos)
  3.  * Более подробно о проекте на: http://randomnerdtutorials.com
  4.  */
  5.  
  6. #define max_char 12
  7. char message[max_char];    // хранит сообщение
  8. char r_char;               // считывает каждый символ
  9. byte index = 0;            // определяет позицию в массиве
  10. int i;
  11.  
  12. int redPin = 11;     // красный светодиод RGB-светодиода -> D11
  13. int greenPin = 10;   // зеленый контакт RGB-светодиода -> D10
  14. int bluePin = 9;     // синий контакт RGB-светодиода -> D9
  15.  
  16. int redValue = 255;    
  17. int greenValue = 255;  
  18. int blueValue = 255;    
  19.  
  20. String redTempValue;     // строка для красного
  21.                          // светодиода RGB-светодиода
  22. String greenTempValue;   // строка для зеленого
  23.                          // светодиода RGB-светодиода
  24. String blueTempValue;    // строка для синего
  25.                          // светодиода RGB-светодиода
  26.  
  27. int flag = 0;
  28. char currentColor;  
  29.  
  30. void setup() {
  31.   pinMode(redPin,OUTPUT);
  32.   pinMode(bluePin,OUTPUT);
  33.   pinMode(greenPin, OUTPUT);
  34.   // запускаем последовательную коммуникацию на скорости 9600 бод:
  35.   Serial.begin(9600);
  36. }
  37.  
  38. void loop() {
  39.   // цикл while() считывает сообщение:
  40.   while(Serial.available() > 0){
  41.     flag = 0;
  42.     // в сообщении может быть не более 12 символов:
  43.     if(index < (max_char-1)){        
  44.       r_char = Serial.read();      // считываем символ
  45.       message[index] = r_char;     // сохраняем символ в массиве
  46.       if(r_char=='R'){
  47.          currentColor = 'R';
  48.          redTempValue = "";
  49.       }
  50.       else if(r_char=='G'){
  51.          currentColor = 'G';
  52.          greenTempValue = "";
  53.       }
  54.       else if(r_char=='B'){
  55.          currentColor = 'B';
  56.          blueTempValue = "";
  57.       }
  58.       if(currentColor == 'R' && r_char!='R'){
  59.          redTempValue += r_char;
  60.       }
  61.       else if(currentColor == 'G' && r_char!='G'){
  62.          greenTempValue += r_char;
  63.       }
  64.       else if(currentColor == 'B' && r_char!='B'){
  65.          blueTempValue += r_char;
  66.       }
  67.       index++;                     // переходим на следующую позицию
  68.       message[index] = '\0';       // удаляем последнюю позицию
  69.    }
  70.    
  71.  }
  72.  
  73.  if(flag == 0){
  74.    analogWrite(redPin, 255-redTempValue.toInt());
  75.    analogWrite(greenPin, 255-greenTempValue.toInt());
  76.    analogWrite(bluePin, 255-blueTempValue.toInt());
  77.    /*Serial.print('R');
  78.    Serial.println(redTempValue);
  79.    Serial.print('G');
  80.    Serial.println(greenTempValue);
  81.    Serial.print('B');
  82.    Serial.println(blueTempValue);
  83.    Serial.print("MESSAGE ");*/  //  "СООБЩЕНИЕ "
  84.    Serial.println(message);
  85.    flag=1;
  86.        for(i=0; i<12; i++){
  87.       message[i] = '\0';
  88.     }
  89.     // сбрасываем индекс
  90.     index=0;  
  91.  }
  92.  
  93. }

Схема

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

Android App – RGB LED with Arduino and Bluetooth rgb led controller 8.png

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

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

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

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

Android App – RGB LED with Arduino and Bluetooth circuit 9.jpg

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

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

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

Android App – RGB LED with Arduino and Bluetooth screen app 10.png

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

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

Android App – RGB LED with Arduino and Bluetooth scen app 11.png

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

Android App – RGB LED with Arduino and Bluetooth linvor 12.png

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

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

Вот так проект выглядит в действии. Чтобы поменять цвет 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-модулем.
Android App – RGB LED with Arduino and Bluetooth connect-bluetooth 13.png

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

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

См.также

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

  1. randomnerdtutorials.com - Android App – RGB LED with Arduino and Bluetooth