Подключение Bluetooth модуля HC-06 к микроконтроллеру PIC


В предыдущей статье на нашем сайте мы рассмотрели основы последовательной связи в микроконтроллерах PIC, а в данной статье мы рассмотрим подключение к микроконтроллеру PIC Bluetooth модуля HC-06, что позволяет сделать проекты на основе данных микроконтроллеров беспроводными. Если вы начинающий в освоении микроконтроллеров PIC, то также рекомендуем прочитать статью про начало работы с ними, установку в них битов конфигурации и мигание светодиодом с их помощью.

Внешний вид подключения Bluetooth модуля HC-06 к микроконтроллеру PIC

Bluetooth модуль HC-06, который мы будем использовать в данном проекте, является простым и популярным устройством, которое позволит передавать данные с нашего микроконтроллера PIC на мобильное приложение или компьютер по беспроводному каналу связи. Связь между микроконтроллером PIC и Bluetooth модулем HC-06 будет осуществляться с помощью модуля USART (модуль универсального синхронно-асинхронного приемопередатчика), присутствующего в микроконтроллере. Вместо модуля HC-06 в данном проекте можно также использовать модуль HC-05. Как и в предыдущем проекте здесь мы также будем использовать асинхронный 8-битный режим работы последовательного порта, но здесь мы модифицируем код программы таким образом, чтобы можно было осуществлять обмен данными с Bluetooth модулем.

В данном проекте мы будем управлять включением/выключением светодиода, подключенного к микроконтроллеру PIC, с помощью команд со смартфона. Для этого мы будем использовать Android приложение Bluetooth Terminal, которое может передавать и принимать данные по Bluetooth. Если с помощью приложения мы будем передавать символ ‘1’, то светодиод будет включаться, а если ‘0’ – выключаться.

Структурная схема работы проекта показана на следующем рисунке.

Структурная схема работы проекта

Ранее на нашем сайте мы рассматривали подключение Bluetooth модуля HC-05 (HC-06) к следующим микроконтроллерам (платам):

Также на нашем сайте вы можете посмотреть все проекты с использованием Bluetooth.

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

Аппаратное обеспечение

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Держатель микросхем на 40 контактов (купить на AliExpress).
  3. Программатор PICkit 3 (купить на AliExpress).
  4. Кварцевый генератор 20 МГц (купить на AliExpress).
  5. Конденсаторы 33 пФ – 2 шт. (купить на AliExpress).
  6. Bluetooth модуль HC-05 или HC-06 (купить на AliExpress).
  7. Светодиод (купить на AliExpress).
  8. Перфорированная плата.
  9. Соединительные провода.
  10. Смартфон на Android.

Программное обеспечение

  1. MPLABX.
  2. Bluetooth Terminal (мобильное приложение).

Bluetooth модуль HC-05

Данный модуль может функционировать в двух режимах: режим команд и режим данных. В режиме команд мы можем настраивать различные свойства Bluetooth соединения: имя, пароль, скорость передачи и т.д. Режим данных позволяет осуществлять обмен данными между модулем и микроконтроллером. Мы в данном проекте будем использовать только режим данных, свойства Bluetooth соединения будем использовать те, которые установлены в модуле по умолчанию. Имя устройства может быть HC-05 или HC-06 (в использованном нами модуле), пароль может быть 0000 или 1234, по умолчанию скорость передачи обычно выставлена 9600 бод/с.

Вешний вид обеих сторон Bluetooth модуля HC-05 показан на следующем рисунке.

Вешний вид обеих сторон Bluetooth модуля HC-05

HC-05 является Bluetooth модулем с последовательной связью. Его можно настроить с помощью AT команд. Он может работать в различных конфигурациях: Master (ведущий), Slave (ведомый), Loop back). В нашем проекте он будет использоваться в качестве ведомого устройства.

Технические характеристики Bluetooth модуля HC-05:

  • типовая чувствительность: -80dBm;
  • скорость передачи данных: 9600 бод, 8 бит данных, 1 стоповый бит, нет бита четности;
  • pin код для автоматического соединения: “1234” или “0000”;
  • 6 контактов;
  • контакты Vcc и Gnd используются для подачи питания на модуль;
  • контакты Tx и Rx используются для взаимодействия с микроконтроллером;
  • контакт Enable для активации модуля, когда на нем low – модуль деактивирован (отключен);
  • контакт State работает как индикатор состояния модуля. Когда модуль не соединен с другим Bluetooth устройством, светодиод мигает постоянно. Когда он соединен с другим Bluetooth модулем – светодиод мигает с постоянной задержкой 2 секунды.

Режимы индикации светодиода модуля:

  • светодиод красного цвета на модуле показывает состояние Bluetooth модуля HC-05;
  • когда модуль не подключен ни к какому устройству светодиод мигает непрерывно;
  • когда модуль подключен к какому либо устройству светодиод мигает с некоторой задержкой.

Bluetooth модуль HC-06 работает от напряжения 5V, а его сигнальные контакты работают от напряжения 3.3V (в составе модуля есть встроенный регулятор напряжения на 3.3V). 6 контактов модуля мы будем использовать в режиме данных (Operating mode). Схема соединений модуля с микроконтроллером PIC приведена в следующей таблице.

№ п/п Контакт модуля HC-06 Наименование контакта PIC Номер контакта PIC
1 Vcc Vdd 31
2 Vcc Gnd 32
3 Tx RC6/Tx/CK 25
4 Rx RC7/Rx/DT 26
5 State NC NC
6 EN (Enable) NC NC

Теперь перейдем к программированию работы модуля.

Программирование микроконтроллера PIC для связи по Bluetooth

Первым делом нам необходимо инициализировать наш Bluetooth модуль. Его инициализация очень похожа на инициализацию модуля UART, но есть и некоторые изменения.

Инициализация Bluetooth

Почти все Bluetooth модули, доступные на рынке, работают с бодовой скоростью 9600 бод, поэтому точно такую же скорость нам необходимо установить для последовательного порта нашего микроконтроллера. Поскольку мы будем использовать кварцевый генератор на 20 МГц, то для установки скорости 9600 бод нам необходимо записать в регистр SPBRG значение 129 (SPBRG=129). Также обязательно установить в «l» бит BRGH чтобы задействовать высокие скорости передачи данных.

Если ваш Bluetooth модуль работает на скорости, отличной от 9600, то значение регистра SPBRG вам необходимо установить исходя из следующей таблицы.

Таблица для задания бодовой скорости в микроконтроллере PIC

Загрузка данных в Bluetooth

В нашей программе для передачи и приема данных по Bluetooth мы запрограммируем три функции. Bluetooth модуль содержит в своем составе передающий и приемный буферы. Данные, которые принимает модуль, сохраняются в его буфере Tx. Данные не будут передаваться по беспроводному каналу связи (по воздуху) до тех пор пока на модуль не будет подан символ возврат каретки (carriage return). То есть, чтобы передать данные "по воздуху", нам необходимо записать их в буфер Rx модуля, а затем подать на модуль символ возврата каретки. Для этого мы используем разработанные для нашей программы функции.

Следующая функция позволяет записать один символ в буфер Rx модуля. Мы загружаем этот символ в регистр TXREG и ждем пока он не обработается проверяя в цикле флаги TXIF и TRMT.

Следующая функция используется для загрузки строки в буфер Rx Bluetooth модуля. Строка разделяется на символы и каждый символ по очереди записывается в буфер с помощью функции BT_load_char().

Передача данных по Bluetooth

Пока мы только передали данные в буфер Rx модуля HC-06. Теперь нам необходимо передать их по беспроводному каналу связи (по воздуху) с помощью следующей функции.

В этой функции мы записываем в регистр TXREG значение 13, а это и есть десятичное представление символа возврата каретки в ASCII кодах. Также используется небольшая задержка перед передачей.

Считывание данных из Bluetooth

По аналогии с модулем UART запрограммируем функцию для считывания данных из Bluetooth.

Если пользователь будет передавать нам данные, то эта функция будет их считывать. Результат, возвращаемый функцией, можно сохранить затем в отдельной переменной. Если пользователь ничего не передает, то функция будет возвращать 0.

Основная функция программы

В основной функции нашей программы мы вначале передадим пользователю приветственное сообщение и затем будем ждать команд от пользователя, в соответствии с которыми мы будем включать или выключать светодиод, подключенный к контакту RB3 микроконтроллера PIC.

Полный код программы приведен в конце данной статьи.

Схема проекта

Схема подключения Bluetooth модуля HC-06 к микроконтроллеру PIC представлена на следующем рисунке.

Схема подключения Bluetooth модуля HC-06 к микроконтроллеру PICКак видите, схема довольно проста. Необходимо всего лишь подать питание на Bluetooth модуль и соединить его контакт Tx с контактом 26 микроконтроллера, а контакт Rx – с контактом 25 микроконтроллера.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Тестирование работы проекта

Скачайте приложение Bluetooth Terminal из PlayMarket и установите его на свой смартфон. Подайте питание на собранную схему проекта – маленький светодиод на Bluetooth модуле при этом должен начать мигать, что свидетельствует о том, что на модуль подано питание и он находится в активном поиске соединения.

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

Включение Bluetooth в настройках смартфона Ввод пароля для соединения с модулем HC-06

После того как соединение будет установлено, откройте приложение Bluetooth Terminal. Зайдите в его настройки и выберите в них пункт “Connect a device – Secure” как показано на рисунке ниже. После откроется всплывающее окно со списком подключенных устройств. Выберите среди них модуль HC-05 (HC-06).

Подключение нового устройства в приложении Bluetooth Terminal Выбор устройства для подключения в приложении Bluetooth Terminal

После установления соединения светодиод на Bluetooth модуле, который до этого мигал, теперь должен гореть непрерывно. После этого мы в приложении Bluetooth Terminal должны получить приветственное сообщение от нашего микроконтроллера PIC.

После этого если вы введете в приложении ‘1’, то светодиод в схеме проекта загорится, а если ‘0’ – светодиод погаснет. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Окно ввода команд в приложении Bluetooth Terminal Включение/выключение светодиода с помощью приложения Bluetooth Terminal

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
181 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *