Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Интеграция Bluetooth с Arduino и Android: создание беспроводных проектов

Компоненты и материалы

Arduino UNO ×1
Модуль Bluetooth HC-06 ×1
Светодиод (любой) ×1

Приложения и онлайн-сервисы

Arduino IDE
MIT App Inventor 2

О проекте

Bluetooth (BT) — отличная беспроводная локальная (и персональная) сеть. В повседневной жизни мы постоянно сталкиваемся с телефонами, аудиосистемами, камерами и другими устройствами, объединёнными с помощью известного «синего огонька».

В мире Интернета вещей и автоматизации удалённое управление через мобильные телефоны с использованием BT-технологий очень распространено. Это обусловлено двумя важными компонентами:

В этом руководстве мы рассмотрим управление выходами Arduino через мобильное устройство для управления роботом, включения ламп в доме и т.д.

Шаг 1: Модуль Bluetooth и Arduino

На рынке распространены модули BT 3.0 типа «Master-Slave» (HC-05) и «Slave» (HC-06). Недавно появились HC-08 и HC-10 на базе BT 4.0 (BLE — Bluetooth Low Energy). Модули BLE — единственные, которые можно подключить к iPhone, так как Apple не поддерживает BT 3.0.

Для проектов здесь используется HC-06 — популярный и дешёвый модуль (прощай, iPhone! Здесь королём является Android!). Модуль питается от 5 В, что позволяет легко подключить его к Arduino UNO. Выводы Tx и Rx можно соединить напрямую с UNO без делителей напряжения, как в случае с ESP8266. Обычно HC-06 подключают к выводам 0 и 1 Arduino («Serial 0»):

При использовании «Serial 0» (единственного аппаратного последовательного порта UNO) важно помнить: HC-06 не должен быть физически подключён к выводам 0 и 1 во время загрузки программы, так как USB-порт также использует этот последовательный порт. Простое решение (если проект не использует много GPIO UNO) — использовать «программный последовательный порт» через библиотеку SoftwareSerial. Здесь мы используем выводы 10 и 11 UNO (Tx, Rx соответственно).

Шаг 2: Тестирование и настройка HC-06

Напишем простой код для тестирования, программирования и инициализации HC-06. Сначала подключим библиотеку SoftwareSerial, задав переменную «BT» для нового последовательного порта.

#include <SoftwareSerial.h>
SoftwareSerial BT (10, 11); // RX, TX
String command = ""; // Хранит ответ Bluetooth-устройства
void setup () {
  Serial.begin (9600);
  Serial.println ("Type AT commands");
  BT.begin (9600); // Обычная скорость HC-06 по умолчанию
}

Основной цикл просто ждёт данные от BT. При их поступлении данные выводятся в Serial Monitor. Также AT-команды можно отправлять из Serial Monitor в модуль HC-06.

void loop () {
  if (BT.available ()) { // принять данные, если доступны
    while (BT.available ()) { // «продолжать приём»
      delay (10); // задержка для стабильности
      char c = BT.read (); // чтение последовательного порта
      command += c; // формирование строки
    }
    Serial.println (command);
    command = ""; // без повторов
  }
  if (Serial.available ()) {
    delay (10);
    BT.write (Serial.read ());
  }
}

После загрузки программы, используя Serial Monitor, выполним базовые тесты:

По умолчанию у HC-06 пароль (PIN): 1234. Можно установить новый командой AT:

F08H931IL8LGG7U.ino

Шаг 3: Android-устройство

Хорошо! Модуль подключён к UNO и работает. Пришло время для Android-устройства.

В Google Play много приложений. Я использую своё приложение, разработанное с помощью MIT App Inventor 2 и доступное бесплатно: MJRoBot BT Digital Analog Voice Control.

Приложение отправляет цифровые команды (кнопками или голосом) и аналоговые команды для управления PWM-устройствами вроде сервоприводов (данные в диапазоне 0–255).

Приложение покажет «CONNECTED», сообщая, что оно «спарено» с HC-06. Теперь протестируйте кнопки и посмотрите в Serial Monitor на ПК, какие данные отправляет приложение. Например, последовательное нажатие кнопок «ON» и «OFF» для 4 устройств даст:

dev1on dev1off dev2on dev2off dev3on dev3off dev4on dev4off

Теперь, когда Android-приложение общается с BT-модулем, создадим что-то полезное!

Шаг 4: Управление выходами Arduino

Соберём схему, как показано выше. Идея — использовать приложение для включения/выключения светодиодов и управления их яркостью.

Подключения:

То есть, при нажатии кнопки «ON» для «Устройства 1» отправляется сообщение «dev1on», и красный светодиод загорается.

Обратите внимание: 4 вывода поддерживают PWM (не все цифровые выводы UNO могут это. Ищите отмеченные «~». Это важно для использования «слайдеров» в приложении, отправляющих числовые данные для управления яркостью через PWM):

При использовании слайдеров перед значением PWM (0–255) отправляется символ, информирующий Arduino о команде слайдера.

Ниже полный код Arduino:

FA44NBUIL8LGGAY.ino

Шаг 5: Управление IoT-устройствами голосовыми командами

Для управления IoT-устройствами голос становится трендом. Реализовать это с Arduino / HC-06 / Android очень просто. Android-устройства уже имеют эту функцию «из коробки». В моём приложении добавлена кнопка, заставляющая Android «слушать» команду и отправлять её в текстовом формате на Arduino. Код отвечает за «чтение» приходящей строки.

Я добавил примеры в код. Когда Arduino получает команду «Connect TV», например, загорается зелёный светодиод (устройство 3) (вместо светодиода может быть реле, включающее телевизор).

Вы должны заменить строки в части Loop кода на команды на вашем языке. Я использовал португальский (мой родной), так было легче управлять в Google из-за разного акцента с моим английским. Используйте короткие фразы или отдельные слова. Важно точное совпадение между тем, что вы написали, и тем, что возвращает приложение Google для распознавания голоса.

Здесь можно найти файл .aia для прямого запуска в MIT App Inventor 2. В видео ниже небольшая демонстрация голосового управления:

Шаг 6: Заключение

Надеюсь, это руководство покажет огромный потенциал управления «вещами» с помощью BT / Android / Arduino. Как всегда, желаю, чтобы этот проект помог другим найти свой путь в увлекательном мире электроники, робототехники и IoT! Больше проектов на моём блоге: MJRoBot.org

Привет с юга мира!

Увидимся в следующем руководстве!

Спасибо

Marcelo

Код

Фрагмент кода #1
#include <SoftwareSerial.h> 
SoftwareSerial BT (10, 11); // RX, TX 
String command = ""; // Stores response of bluetooth device 
void setup () { 
  Serial.begin (9600); 
  Serial.println ("Type AT commands"); 
  BT.begin (9600); // HC-06 Usually default baud-rate 
}
Фрагмент кода #2
void loop () { 
  if (BT.available ()) { 
    while (BT.available ()) { 
      delay (10); 
      char c = BT.read (); 
      command += c; 
    } 
    Serial.println (command); 
    command = ""; 
  } 
  if (Serial.available ()) { 
    delay (10); 
    BT.write (Serial.read ()); 
  } 
}
Фрагмент кода #3
dev1on dev1off dev2on dev2off dev3on dev3off dev4on dev4off

Производственный процесс

  1. Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
  2. Легкая прошивка микроконтроллеров Atmel AT89 с помощью Arduino Uno — пошаговое руководство
  3. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  4. Android-управляемая робот-платформа на Raspberry Pi и Motor Shield
  5. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  6. Голосовое управление бытовыми приборами: Bluetooth-управление через Google Assistant
  7. Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
  8. Система управления светом на Intel Curie (Arduino 101) с детекцией движений
  9. Управление Arduino с iOS/Android по Wi-Fi/Ethernet через Evothings Studio
  10. Удалённое управление лампой через Arduino Uno, реле и Android-приложение Blynk