Подключение bluetooth модуля HC-05 к микроконтроллеру.

Подключение bluetooth модуля HC-05 к микроконтроллеру.

Где-то около года назад заказал на ali bluetooth module HC-05. На тот момент ещё не знал для чего он мне может понадобиться, но беспроводные технологии манили меня своим таинством.
На момент заказа на рынке была представлена целая линейка bluetooth модулей от HC-03 до HC-09, но некоторые из них могут работать либо в режиме master(HC-04-M), либо в режиме slave (HC-06-S), а HC-05 может работать в обоих режимах, поэтому выбор пал на него.
Подключение bluetooth модуля HC-05 к микроконтроллеру.

Давайте кратко рассмотрим его характеристики:

  • чип Bluetooth – BC417143 производства CSR company;
  • протокол связи – Bluetooth Specification v2.0+EDR;
  • радиус действия – до 10 метров, у меня в квартире ловит через 2 бетонные стены;
  • совместимость со всеми Bluetooth-адаптерами, которые поддерживают SPP;
  • объем flash-памяти (для хранения прошивки и настроек) – 8 Мбит;
  • частота радиосигнала – 2.40 .. 2.48 ГГц;
  • хост-интерфейс – USB 1.1/2.0 или UART;
  • энергопотребление – ток в течение связи составляет 30–40 мА. Среднее значение тока около 25 мА. После установки связи потребляемый ток 8 мА. Режим сна отсутствует.

Обычно модули для DIY продаются в виде двух спаянных плат, меньшая из них — сам bluetooth модуль, большая — переходник, на котором расположен стабилизатор и прочая обвязка, позволяющая использовать модуль для DIY.

Распиновка DIY модуля:

  • VCC – питание +5В
  • GND – земля
  • TXD, RXD – выводы UART интерфейса для общения с МК.
  • KEY – вывод для входа в режим AT-команд
  • LED – можно подключить светодиод с токоограничивающим резистором, в случае установки соединения между модулями, светодиод загорится.

Сразу после того как модуль пришёл, попробовал его запустить, но попытка не увенчалась успехом. Поэтому было принято решение, снять термоусадку и пропаять его. После пропайки модуль заработал, но после того, как была одета термоусадка снова перестал работать. Думаю читатели уже догадались, что виной тому была термоусадка, одетая на антенну. Проблема была решена удалением термоусадки с антенны.
Подключение bluetooth модуля HC-05 к микроконтроллеру.


Для проверки модуля необходимо:

  • подать на него питание
  • соединить вывод tx с выводом rx переходника usb-uart
  • cкачать программку Terminal v1.9b by Bray
  • установить соединение с переходником usb-uart на скорости 9600. Эта скорость установлена по умолчанию в bluetooth модуле.


Если программа не видит переходник, то скорее всего ему присвоен номер com порта выше 10, изменить его можно в диспетчере устройств. После этих манипуляций, мы можем принимать и отправлять данные по bluetooth c компа.
Подключение bluetooth модуля HC-05 к микроконтроллеру.


Теперь надо сконфигурировать второе устройство для обмена данными, в качестве такого устройства может выступать телефон, ноутбук или планшет. Выбор пал на планшет, с ОС Android, далее опишу как конфигурировать его для обмена данными по bluetooth.
Для нашей задачи качаем с play market приложение bluetooth terminal от Qwerty и устанавливаем его. Включаем bluetooth и ищем среди устройств наш модуль.
Подключение bluetooth модуля HC-05 к микроконтроллеру.

Подключение bluetooth модуля HC-05 к микроконтроллеру.

Подключение bluetooth модуля HC-05 к микроконтроллеру.

Пробуем к нему подключиться, при запросе пароля вводим 1234. После того как мы установили соединение с модулем, символы которые мы будем слать из терминала на планшете будут появляются в терминале на компьютере.

Убедившись, что модуль работает подключил его к Atmega16 и написал программу, которая по приёму определённых символов будет выполнять какие-то действия, например включать светодиод.

#define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/interrupt.h>
	
ISR(USART_RXC_vect)
{
	switch(UDR)
	{
		case 'f':
			//тут можно зажечь светодиод
		break;
		
		case 'r':
                        //а тут погасить 
		break;
	}	
}

int main(void)
{
	DDRD &= ~(1<<0);  //rx на вход
	DDRD |= (1<<1);    //tx на выход
        //разрешаем прием, передачу, прерывание по приёму 
	UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(0<<UDRIE);
        //8 бит данных, 1 стоп бит, без контроля четности
	UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
        //Baud Rate: 9600
	UBRRL = 0x33;
	sei();

         while(1)
        {
       
        }
}

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