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

Полное руководство по Bluetooth-модулю Arduino и HC-05

<основной класс="главный сайт" id="главный">

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

Обзор

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

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

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

Схемы схем


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

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

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

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

#define ledPin 7
int state = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}

void loop() {
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
 }

 if (state == '0') {
  digitalWrite(ledPin, LOW); // Turn LED OFF
  Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
  state = 0;
 }
 else if (state == '1') {
  digitalWrite(ledPin, HIGH);
  Serial.println("LED: ON");;
  state = 0;
 } 
}Code language: Arduino (arduino)

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

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

Связанный: Как настроить и соединить два модуля Bluetooth HC-05 в качестве ведущего и ведомого | AT-команды

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

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

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

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

Пример Android-приложения Arduino Tutorial

1 файл(ы) 1,38 МБ Скачать

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

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

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

Как только мы соединим устройства в диспетчере устройств ноутбука в разделе «Порты (COM и LPT)», появятся два новых объекта с названием «Стандартная последовательная связь через Bluetooth». Отсюда мы можем увидеть номер COM-порта последовательного порта, через который устройства будут обмениваться данными.

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

Обработка исходного кода IDE

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

import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";

void setup(){
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400); // Starts the serial communication
  myPort.bufferUntil('\n'); // Defines up to which character the data from the serial port will be read. The character '\n' or 'New Line'
}
void serialEvent (Serial myPort){ // Checks for available data in the Serial Port
  ledStatus = myPort.readStringUntil('\n'); //Reads the data sent from the Arduino (the String "LED: OFF/ON) and it puts into the "ledStatus" variable
}

void draw(){
  background(237, 240, 241);
  fill(20, 160, 133); // Green Color
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10);  // Turn ON Button
  rect(250, 100, 150, 50, 10); // Turn OFF Button
  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); // Prints the string comming from the Arduino
  
  // If the button "Turn ON" is pressed
  if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
    myPort.write('1'); // Sends the character '1' and that will turn on the LED
    // Highlighs the buttons in red color when pressed
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  // If the button "Turn OFF" is pressed
  if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
    myPort.write('0'); // Sends the character '0' and that will turn on the LED
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}Code language: Arduino (arduino)

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

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

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

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

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


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

  1. Учебное пособие по блокировке RFID для Arduino
  2. Генератор волн JX
  3. u-blox LEA-6H 02 GPS-модуль с Arduino и Python
  4. Система обнаружения падений на базе Arduino, Windows и Azure
  5. Управление автомобилем с помощью Arduino Uno и Bluetooth
  6. Учебное пособие по датчику отпечатков пальцев Arduino
  7. Будильник ArduRadio
  8. Умная кофемашина с Arduino и Bluetooth
  9. Ноутбук Raspberry Pi и Arduino
  10. rDUINOScope