Bluetooth-модуль HC-06 – простой способ беспроводного дистанционного управления вашим устройством с помощью Bluetooth. Со стороны управляемого устройства, такого как Arduino, этот модуль выглядит как обычный последовательный интерфейс. Поэтому вы можете отладить всё общение с устройством на компьютере, а потом просто подключить этот Bluetooth-модуль, и всё заработает как надо.
С HC-06 вы можете, например, управлять устройством прямо со своего смартфона. Поставив на телефон или планшет одну из многочисленных программ (терминалов) для управления через Bluetooth, вы можете превратить его в настоящий продвинутый джойстик, и ваше устройство сможет принимать и выполнять все отправленные команды. Например, послушно поворачивать вслед за поворотом смартфона. Точно так же можно связаться со своим устройством с ноутбука, или с любого другого прибора, который может подключаться к другим Bluetooth-устройствам. Сфера применения этого модуля не исчерпывается управлением. Его можно использовать и для пересылки показаний разнообразных сенсоров.
Для передачи данных можно использовать любой терминал, наиболее простой и бесплатный – Termite (Baud rate: 9600, Append nothing).
HC-06 отличается от HC-05 тем, что ему недоступны оба режима работы: ведомый (slave) и ведущий (master). HC-06 работает только ведомым, то есть он не способен находить другие устройства и самостоятельно устанавливать с ними связь.
Распиновка
- STATE – проверка состояние модуля. На этом контакте дублируется сигнал, который отображает встроенный на плате светодиод. Если он очень быстро мигает, значит модуль находится в активном состоянии. В режиме установления связи ток составляет ~30-40 мА. Когда модуль устанавливает связь с другим устройством, светодиод просто горит. В режиме передачи данных ток составляет ~10 мА.
- RX – получение данных
- TX – передача данных
- GND – подключается к земле
- +5V – питание 5 В
- EN – включение / выключение модуля. Если на этот контакт подать логическую 1 (5 В) – модуль выключится, если подать логический 0 или не подключаться к этому контакту – модуль будет работать.
Пример: RX/TX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
int val; int led = 13; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); digitalWrite(led, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // При символе "1" включаем светодиод if (val == '1') { digitalWrite(led, HIGH); } // При символе "0" выключаем светодиод if ( val == '0') { digitalWrite(led, LOW); } } } |
Пример: Двунаправленная передача данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // указываем пины RX и TX int led = 13; void setup() { pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(38400); mySerial.begin(9600); pinMode(led, OUTPUT); digitalWrite(led, LOW); } void loop() { if (mySerial.available()) { int val = mySerial.read(); // читаем из software-порта // При символе "1" включаем светодиод if (val == '1') { digitalWrite(led, HIGH); Serial.write(val); // пишем в hardware-порт } // При символе "0" выключаем светодиод if (val == '0') { digitalWrite(led, LOW); Serial.write(val); // пишем в hardware-порт } } if (Serial.available()) { int c = Serial.read(); // читаем из hardware-порта mySerial.write(c); // пишем в software-порт } } |