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

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

В этом уроке Arduino Bluetooth мы научимся использовать модуль HC-05 для управления Arduino через Bluetooth-связь. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже для получения более подробной информации.

Обзор

Для этого урока я подготовил два примера: управление Arduino с помощью смартфона и управление Arduino с помощью ноутбука или ПЧ. Чтобы не перегружать этот урок, в моем следующем уроке мы научимся настраивать модуль Bluetooth HC-05 и делать Bluetooth-связь между двумя отдельными платами Arduino как Master и Slave устройства.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Прежде чем начать с первого примера — управление Arduino с помощью смартфона, давайте подробнее рассмотрим Bluetooth-модуль HC-05. В сравнении с модулем HC-06, который может быть только Slave, HC-05 можно настроить как Master, что позволяет делать связь между двумя отдельными платами Arduino. Существует несколько разных версий этого модуля, но я рекомендую тот, который поставляется на плате расширения, потому что так его намного проще подключать. Модуль HC-05 — это Bluetooth SPP (Serial Port Protocol) модуль, что означает, что он общается с Arduino через последовательную связь.

Компоненты, необходимые для этого урока Arduino, можно найти на любом из сайтов ниже:

  • Bluetooth-модуль HC-05 …………….
  • Плата Arduino ……………………………
  • Безпаечная макетная плата и перемычки ………

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


Вот как нужно подключить модуль к плате Arduino.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Конкретный модуль, который у меня есть, может запитываться от 3,6 до 6 вольт, потому что он поставляется на плате расширения, которая содержит стабилизатор напряжения. Однако логический уровень напряжения на данных выводах составляет 3,3 В. Поэтому линия между Arduino TX (передающий вывод, имеющий 5 В выход) и Bluetooth-модулем RX (принимающий вывод, поддерживающий только 3,3 В) должна быть подключена через делитель напряжения, чтобы не сжечь модуль. С другой стороны, линия между выводом TX Bluetooth-модуля и выводом RX Arduino может быть подключена напрямую, потому что сигнал 3,3 В от Bluetooth-модуля достаточно, чтобы быть принятым как высокий логический уровень на плате Arduino.

Исходный код примера Bluetooth-связи Arduino

Теперь мы готовы сделать код Arduino для включения связи между платой Arduino и смартфоном. Сделаем простой пример — просто включение и выключение светодиода, но этого будет достаточно для понимания связи.

#define ledPin 7
int state = 0;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400);
}
void loop() {
  if (Serial.available() > 0) {
    state = Serial.read();
  }
  if (state == '0') {
    digitalWrite(ledPin, LOW);
    Serial.println("LED: OFF");
    state = 0;
  } else if (state == '1') {
    digitalWrite(ledPin, HIGH);
    Serial.println("LED: ON");
    state = 0;
  }
}Язык кода: Arduino (arduino)

Описание: Сначала определяем вывод, к которому будет подключен наш светодиод, и переменную, в которой будем хранить данные, приходящие со смартфона. В разделе setup определяем вывод светодиода как выход и сразу устанавливаем его в низкий уровень. Как упоминалось ранее, мы будем использовать последовательную связь, поэтому нужно запустить последовательную связь на скорости 38400 бод, которая является скоростью по умолчанию для Bluetooth-модуля. В разделе loop с помощью функции Serial.available() проверяем, есть ли доступные данные в последовательном порту для чтения. Это означает, что когда мы отправим данные в Bluetooth-модуль, это утверждение станет истинным, и тогда с помощью функции Serial.read() прочитаем эти данные и поместим в переменную «state». Если Arduino получает символ '0', он выключит светодиод и, используя функцию Serial.println(), отправит обратно на смартфон через последовательный порт строку «LED: OFF». Дополнительно сбрасываем переменную «state» в 0, чтобы две вышеуказанные строки выполнялись только один раз. Обратите внимание, что переменная «state» имеет тип integer, поэтому, когда мы получаем символ '0' от смартфона, фактическое значение целочисленной переменной «state» равно 48, что соответствует символу '0' согласно таблице ASCII. Именно поэтому в операторе «if» мы сравниваем переменную «state» с символом '0'. С другой стороны, если полученный символ '1', светодиод загорится, и строка «LED: ON» будет отправлена обратно.

Теперь код готов к загрузке, но для этого нужно отключить линии TX и RX, потому что при загрузке Arduino использует последовательную связь, поэтому выводы RX (цифровой вывод 0) и TX (цифровой вывод 1) заняты. Мы можем избежать этого шага, если используем другие выводы TX и RX платы Arduino, но в этом случае нам придется использовать библиотеку SoftwareSerial.h для последовательной связи.

Связано: Как настроить и связать два модуля HC-05 Bluetooth как Master и Slave | AT-команды

Подключение смартфона к Bluetooth-модулю HC-05 и Arduino

Теперь мы готовы подключить смартфон к Bluetooth-модулю и Arduino. Нужно активировать Bluetooth, и смартфон найдет Bluetooth-модуль HC-05.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Затем нужно сопрячь устройства, пароль по умолчанию модуля HC-05 — 1234. После сопряжения устройств нам нужно приложение для управления Arduino. Во Play Store есть много приложений для этой цели, которые будут работать с написанным нами кодом Arduino. Однако я сделал свое собственное кастомное приложение для этого урока с помощью онлайн-приложения MIT App Inventor. Это отличное и простое в использовании приложение для создания Android-приложений, и в моем следующем уроке вы найдете подробное пошаговое руководство, как создать свое собственное кастомное Android-приложение для вашего проекта Arduino.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Вы можете скачать приложение, которое я сделал для этого примера, здесь:

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Arduino Bluetooth Tutorial Example Android App

1 file(s) 1.38 MB Download

С помощью кнопки Connect мы подключаем смартфон к Bluetooth-модулю, а статусный текст под кнопкой скажет, успешно ли мы подключились. С помощью кнопок «Turn ON» и «Turn OFF» мы можем включать и выключать светодиод. Текст над кнопками — это тот, который Arduino отправляет обратно на смартфон при нажатии определенной кнопки.

Управление Arduino с помощью ноутбука или ПК через Bluetooth-связь

Посмотрим, как управлять Arduino через Bluetooth с помощью ноутбука или ПК. Сначала нужно сопрячь наш ноутбук с Bluetooth-модулем HC-05, и это можно сделать из настроек Bluetooth ноутбука. Ноутбук обнаружит модуль HC-05, и с паролем '1234' мы сопряжем устройства.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

После сопряжения устройств в диспетчере устройств ноутбука, в разделе Ports (COM & LPT), появятся две новые сущности с именем «Standard Serial over Bluetooth link». Отсюда мы можем увидеть номер COM-порта последовательного порта, через который устройства будут общаться.

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Мы будем использовать тот же пример, что и ранее — включение и выключение светодиода и отправку строки обратно на ноутбук, поэтому будем использовать тот же код Arduino, что и ранее описан.

Исходный код Processing IDE

Теперь с помощью Processing IDE сделаем программу для управления Arduino. Вот исходный код.

import processing.serial.*;
Serial myPort;
String ledStatus = "LED: OFF";
void setup() {
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400);
  myPort.bufferUntil('\n');
}
void serialEvent(Serial myPort) {
  ledStatus = myPort.readStringUntil('\n');
}
void draw() {
  background(237, 240, 241);
  fill(20, 160, 133);
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10);
  rect(250, 100, 150, 50, 10);
  fill(255);
  textSize(32);
  text("Turn ON", 60, 135);
  text("Turn OFF", 255, 135);
  textSize(24);
  fill(33);
  text("Status:", 180, 200);
  textSize(30);
  textSize(16);
  text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
  text(ledStatus, 155, 240);
  if (mousePressed && mouseX > 50 && mouseX < 200 && mouseY > 100 && mouseY < 150) {
    myPort.write('1');
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  if (mousePressed && mouseX > 250 && mouseX < 400 && mouseY > 100 && mouseY < 150) {
    myPort.write('0');
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}Язык кода: Arduino (arduino)

Описание: Нужно подключить библиотеку Serial и создать объект serial для включения последовательной связи, а также определить строковую переменную для статуса светодиода. В разделе setup задаем размер окна программы и запускаем последовательную связь. Что касается номера COM-порта, здесь нужно попробовать один из двух номеров COM-портов, которые мы ранее заметили в диспетчере устройств. Следующая строка определяет буферизацию последовательного порта, и в нашем случае это до появления новой строки, и на самом деле новая строка появляется каждый раз, когда Arduino отправляет строку «LED: OFF» или «LED ON» из-за функции println(). Затем, с помощью функции serialEvent(), проверяем, есть ли доступные данные в последовательном порту для чтения. Если да, с помощью функции readStringUntil() считываем эти данные из последовательного порта, которые были отправлены из Arduino, и в нашем случае это строка «LED: OFF» или «LED: ON».

В основной функции draw(), которая постоянно повторяется, мы делаем всю графику и функции программы. Сначала устанавливаем цвет фона, цвет заливки, размер и цвет обводки, и с помощью функции rect() рисуем две кнопки. С помощью функции text() печатаем весь текст, включая строку ledStatus, приходящую от Arduino. Что осталось — сделать кнопки функциональными. С помощью первого оператора «if» ограничиваем область кнопки «Turn ON», так что при нажатии кнопки символ '1' будет отправлен через последовательный порт в Arduino, и это включит светодиод. Следующие четыре строки используются для подсветки кнопки при нажатии. Та же процедура для кнопки «Turn OFF».

Мастерство Bluetooth на Arduino: руководство по модулю HC-05 для управления со смартфона и ПК

Теперь программа готова, поэтому при нажатии кнопки запуска программа автоматически активирует Bluetooth-связь между ноутбуком и Arduino. Модуль Bluetooth HC-05 начнет мигать каждые две секунды, что указывает на то, что модуль подключен, и мы сможем управлять светодиодом с помощью нашего ноутбука.

Это всё для этого урока, но не забывайте проверить мой следующий урок, где мы научимся настраивать модуль Bluetooth HC-05 и делать Bluetooth-связь между двумя отдельными платами Arduino как Master и Slave устройства.

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


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

  1. Создание надежного RFID-замка на Arduino — пошаговое руководство
  2. JX Wave Generator — Генератор сигналов на Arduino с DDS AD9833 и OLED-дисплеем
  3. Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
  4. Продвинутая система обнаружения падений: Arduino + Windows IoT + Azure Cloud
  5. Удалённое управление автомобилем на Arduino Uno и Bluetooth: пошаговое руководство
  6. Проект датчика отпечатков пальцев на Arduino Nano – Пошаговое руководство
  7. ArduRadio: DIY-будильник с FM-радио на Arduino
  8. Умная кофемашина на Arduino с Bluetooth-управлением и мониторингом температуры
  9. Сборка ноутбука на Raspberry Pi 3 и Arduino: пошаговое руководство
  10. Набор проекта Arduino Due: TFT, GPS, RTC, датчики, Bluetooth и джойстик — полный список компонентов