Сравнение модулей Bluetooth HC 05 и HC 06
Модули HC 05 и HC 06 являются наиболее используемыми, их чаще остальных можно найти в продаже. Принцип действия этих модулей схож, оба модуля основаны на одинаковом чипе, но есть и важные отличия. В первую очередь, модуль HC 05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).
Оба модуля представляют собой две спаянные платы. Одна из них – заводская с микросхемой, другая нужна для самодельных устройств, она оснащена ножками GPIO со стандартным шагом 2,54 мм и стабилизатором напряжения.
Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций.
Распиновка модуля HC-05:
- EN – управление питанием;
- Питание VCC;
- GND;
- RX, TX;
- STATE – индикация;
- KEY – активирует режим управления при помощи АТ-команд. При KEY=0 – передача данных, при KEY=1 – АТ-команды.
Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.
Основные характеристики HC-05:
- Рабочие частоты 2,4 – 2,48 ГГц;
- Мощность передачи 0,25 – 2,5мВт;
- Дальность 10 м;
- Максимальная скорость обмена данными 115200 бод;
- Питание 3,3В;
- Ток 30-40 мА;
- Рабочие температуры от -25С до 75С.
Подключение обоих модулей к плате Ардуино одинаково.
Вариант подключение модуля с использованием делителя.Представлен вариант для Arduino Nano, но он подойдет и к плате Uno.
Схема подключения DHT12 к Arduino
Подключается датчик температуры и влажности DHT12 к Arduino достаточно просто. Схема подключения показана на рисунке.
Не нужно забывать про подтягивающие резисторы на 10кОм на линии SDA и SCL.
Arduino | DHT12 |
---|---|
VCC | VCC |
A4 | SDA |
GND | GND |
A5 | SCL |
Пример скетча
В приведенном ниже скетче мы будем измерять и отсылать данные о состоянии температуры и влажности на компьютер через последовательный порт.
/*
Добавляем необходимые библиотеки
*/
#include <DHT12.h>
/*
Создаём экземпляр класса DHT12
*/
DHT12 dht12;
void setup() {
/*
Инициализируем DHT12
*/
dht12.begin();
Serial.begin(9600);
delay(2000);
}
void loop() {
/*
Читаем данные с DHT12 и получаем статус
*/
int status = dht12.read();
switch (status) {
case DHT12_OK:
/*
Выводим данные в терминал
*/
Serial.println(F(«Status : OK»));
Serial.print(F(«T = «));
Serial.print(dht12.getTemperature());
Serial.println(F(«*C»));
Serial.print(F(«H = «));
Serial.print(dht12.getHumidity());
Serial.println(F(» %»));
break;
case DHT12_ERROR_CHECKSUM:
Serial.print(F(«Checksum error»));
break;
case DHT12_ERROR_CONNECT:
Serial.print(F(«Connect error»));
break;
case DHT12_MISSING_BYTES:
Serial.print(F(«Missing bytes»));
break;
default:
Serial.print(F(«Unknown error»));
break;
}
delay(2000);
}
1 |
/* DHT12dht12; voidsetup(){ /* Инициализируем DHT12 dht12.begin(); Serial.begin(9600); delay(2000); } voidloop(){ /* Читаем данные с DHT12 и получаем статус intstatus=dht12.read(); switch(status){ caseDHT12_OK /* Выводим данные в терминал Serial.println(F(«Status : OK»)); Serial.print(F(«T = «)); Serial.print(dht12.getTemperature()); Serial.println(F(«*C»)); Serial.print(F(«H = «)); Serial.print(dht12.getHumidity()); Serial.println(F(» %»)); break; caseDHT12_ERROR_CHECKSUM Serial.print(F(«Checksum error»)); break; caseDHT12_ERROR_CONNECT Serial.print(F(«Connect error»)); break; caseDHT12_MISSING_BYTES Serial.print(F(«Missing bytes»)); break; default Serial.print(F(«Unknown error»)); break; } delay(2000); } |
Датчик расстояния в проектах Arduino
Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.
Описание датчика HC SR04
Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.
Ультразвуковой дальномер HC SR04 имеет такие технические параметры:
- Питающее напряжение 5В;
- Рабочий параметр силы т ока – 15 мА;
- Сила тока в пассивном состоянии -6 с.
Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):
- Контакт питания положительного типа – +5В;
- Trig (Т) – выход сигнала входа;
- Echo (R) – вывод сигнала выхода;
- GND – вывод «Земля».
Схема взаимодействия с Arduino
Для получения данных, необходимо выполнить такую последовательность действий:
- Подать на выход Trig импульс длительностью 10 микросек;
- В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
- Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
- На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.
При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.
Подключение HC SR04 к Arduino
Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.
Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:
Библиотека для работы с HC SR04
Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.
К особенностям библиотеки можно отнести:
- Возможность работы с различными ультразвуковыми датчиками;
- Может работать с датчиком расстояния всего через один пин;
- Отсутствие отставания на 1 секунду при отсутствии пинга эха;
- Для простой коррекции ошибок есть встроенный цифровой фильтр;
- Максимально точный расчет расстояния.
Скачать бибилотеку NewPing можно здесь
Точность измерения расстояния датчиком HC SR04
Точность датчика зависит от нескольких факторов:
- температуры и влажности воздуха;
- расстояния до объекта;
- расположения относительно датчика (согласно диаграммы излучения);
- качества исполнения элементов модуля датчика.
В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.
Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.
Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.
Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:
- усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
- с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
- датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.
Примеры работы для Espruino
В качестве примера подключим дисплей к управляющей плате Iskra JS.
Подключение к Iskra JS
Для коммуникации понадобится Breadboard Half и соединительные провода «папа-папа».
Вывод | Обозначение | Пин Iskra JS |
---|---|---|
1 | GND | GND |
2 | VCC | 5V |
3 | VO | GND |
4 | RS | P11 |
5 | R/W | GND |
6 | E | P12 |
7 | DB0 | — |
8 | DB1 | — |
9 | DB2 | — |
10 | DB3 | — |
11 | DB4 | P5 |
12 | DB5 | P4 |
13 | DB6 | P3 |
14 | DB7 | P2 |
15 | VCC | 5V |
16 | GND | GND |
Вывод текста
Для вывода программы приветствия, воспользуйтесь скриптом:
- hello-amperka.js
-
// создаём переменную для работы с дисплеем // HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев var lcd = require("HD44780").connect(P11,P12,P5,P4,P3,P2); // печатем первую строку lcd.print("Hello world"); // устанавливаем курсор в колонку 0, строку 1 // на самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(, 1); // печатаем вторую строку lcd.print("Do It Yourself");
Кирилица
Вывод кирилицы на дисплей с помощью платформы Iskra JS доступен через встроенную в дисплей таблицу знакогенератора.
Таблица знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.
Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.
Так букве соответствует код в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности встроить в строку код символа:
lcd.print("\xB1ndex");
Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность , он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона и следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.
Сравните две строки кода для вывода надписи «Яeee»:
lcd.print("\xB1eee"); // ошибка lcd.print("\xB1"+"eee"); // правильно
Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:
- hello-amperka-rus.js
-
// создаём переменную для работы с дисплеем // HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев var lcd = require("HD44780").connect(P11,P12,P5,P4,P3,P2); // устанавливаем курсор в колонку 5, строку 0 // на самом деле это первая строка, т.к. нумерация начинается с нуля lcd.setCursor(5, ); // печатаем первую строку lcd.print("\xA8"+"p"+"\xB8\xB3"+"e\xBF"); // устанавливаем курсор в колонку 3, строку 1 // на самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(3, 1); // печатаем вторую строку lcd.print("o\xBF"+" A\xBC\xBE"+"ep\xBA\xB8");;
Переключение страниц знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения между страницами используйте методы:
// переключение с нулевой страницы на первую command(0x101010); // переключение с первой страницы на нулевую command(0x101000);
Дисплей не может одновременно отображать символы разных страниц.
Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.
- change-page.js
-
// создаём переменную для работы с дисплеем // HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев var lcd = require("HD44780").connect(P11,P12,P5,P4,P3,P2); // создаём переменную состояния var state = false; // устанавливаем курсор в колонку 5, строку 0 // на самом деле это первая строка, т.к. нумерация начинается с нуля lcd.setCursor(5, ); // печатаем первую строку lcd.print("\x9b\x9c\x9d\x9e\x9f"); setInterval(function() { // каждую секунду меняем переменую состояния state = !state; // вызываем функцию смены адреса страницы lcdChangePage(); }, 1000); function lcdChangePage () { if (state) { // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) lcd.write(0b101000, 1); } else { // устанавливаем 1 станицу знакогенератора lcd.write(0b101010, 1); } }
Полную таблицу символов с кодами можно найти в документации к экрану.
Важные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)
Bluetooth в Arduino проектах
Самыми популярными модулями являются устройства на основе чипа BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть и сервером соединения, и клиентом, они обладают широким набором АТ команд.
Для подключения к ПК потребуются модуль Bluetooth, плата Ардуино, соединительные провода и компьютер. Скетч для управления платой Ардуино через смартфон и компьютер будет одинаковым, так как в обоих случаях данные в микроконтроллер буду поступать по протоколу UART. Схема подключения Bluetooth-модуля к плате представлена на рисунке. Пин RX на ардуино подключается к TDX, TX – к RDX, GND – к GND, 5V – к VCC.
При загрузке скетча нужно отключить Bluetooth-модуль, иначе будет появляться ошибка доступа к Ардуино. Также нужно установить на смартфон или планшет, поддерживающий ОС Android, приложение для отправки данных на модуль. После установки приложения нужно загрузить скетч и подключить модуль к плате Ардуино. Пример кода мигания светодиода:
int val; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial.available()) // проверка поданных команд { val = Serial.read(); if (val == '1') {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == '0') {digitalWrite(13, LOW);} // при 0 выключается светодиод } }
Теперь нужно настроить соединение телефона и модуля. Для установки соединения нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, нужно ввести пароль – обычно это «1234» или «0000». После этого нужно зайти в приложение, нажать на кнопку «подключить Bluetooth» и выбрать нужное устройство. При успешном сопряжении на модуле светодиод начнет мигать медленнее, примерно 1 раз в 2 секунды.
В скетче светодиод включается и выключается при получении цифр «1» и «0». Кроме цифр также можно использовать буквы латинского алфавита с учетом регистра.
Аналогичным образом можно подключаться к модулю при помощи компьютера. Для этого существуют различные программы, которые подключатся к COM-порту. При запуске программы запрашивают номер порта, скорость и тип подключения. При успешном подключении на экране появится поле терминала, в которое нужно ввести с клавиатуры цифры/буквы, включающие светодиод.
Описание методов библиотеки DHT12.zip
begin(uint8_t, uint8_t)
Инициализация DHT12 на ESP8266
void begin(uint8_t sda, uint8_t scl);
1 | voidbegin(uint8_tsda,uint8_tscl); |
begin()
Инициализация DHT12
void begin();
1 | voidbegin(); |
read()
Читает, преобразовывает и сохраняет данные с DHT12. Возвращает статус , если всё прошло нормально или , , в случае ошибки.
int8_t read();
1 | int8_tread(); |
getHumidity()
Возвращает относительную влажность. Данные обновляются при вызове метода .
float getHumidity();
1 | floatgetHumidity(); |
getTemperature()
Возвращает температуру. Данные обновляются при вызове метода .
float getTemperature();
1 | floatgetTemperature(); |
AT команды
Примечание: все изменения будут применены только после выхода режима AT.
Команда | Параметры | Описание |
AT | — | Тестовая команда |
AT+A | 000—255 | Изменение адреса модуля, от 000 до 255. Значение по умолчанию 000. |
AT+B | 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 | Изменение скорости передачи данных последовательного порта. Скорость передачи данных может быть установлена 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200. Значение по умолчанию 9600. |
AT+C | 001—127 | Изменить канала связи, от 001 до 127, значение по умолчанию 001. 0 не может быть задействован. Если это значение слишком высоко, данные не могут быть потеряны, около 20 каналов фактически доступны, а именно, от 001 до 020. |
AT+FUx | 1—4 | Изменение режима передачи модуля, доступны 4 режимы, а именно, FU1, FU2, FU3 и FU4. Только тогда, когда оба модуля установлены в один и тот же режим, может быть нормальная связь между ними. Режим по умолчанию FU3 Эта команда доступна с V1.8. |
AT+Px | 1—8 | Настройка мощность сигнала модуля, х может получить значения с 1 по 8, соответственно, представляющий -30dBm, -20dBm, -15dBm, -10dBm, 0dBm, 5dBm, 7dBm и 10dBm; По умолчанию 8 (а именно, 10dBm). |
AT+Ry | B, A, C, P | Получение параметры модуля, у может получить значения B, A, C и P, соответственно, представляющий: скорость передачи данных, адрес, канал и мощности передачи. |
AT+RX | — | Получение всех параметров модуля: режим порта, скорость передачи данных, канал, адрес, и мощность передачи в порядке. |
AT+Uxy | x — N, E, O y — 1, 2, 3 |
Настройка бита четности и стоп-бита : N: (No parity) — без бита четности; E: (Even parity) — с битом проверки на четность, O: (Odd parity) — с битом проверки на нечетность. 1: 1 стоп-бит; 2: два стоп-бита; 3: 1.5 стоп-бита |
AT+V | — | Возвращает информацию о версии. |
AT+SLEEP | — | Переходит в режим сна после выхода из AT, не позволяет передачу данных. После входа в режиме AT снова, модуль выходит из спящего режима автоматически. Ток потребления в спящем режиме 20мкА. Эта команда доступна с V1.8. |
AT+RESET | — | Установка значение порта, канала и адреса по умолчанию. |
AT+IV | — | Возвращает версию внутреннего кода обновления модуля. Эта команда доступна из версии 1.9. |
AT+UPDATE | — | Модуль переходит в режиме ожидания обновления программного обеспечения. После отправки команды, модуль не будет отвечать на команд больше, пока не будет снова подано напряжение. После отправки команды, пожалуйста, закройте последовательный порт помощника, и включите HC-1X чтобы обновить программное обеспечение. |
PIR датчик движения Ардуино: характеристики
Сегодня уже никто не удивляется при автоматическом включении освещения в подъездах многоквартирных домов, которые срабатывают при прохождении человека. В большинстве приборов установлены пассивные датчики движения (PIR). Рассмотрим в этой статье устройство датчика движения, схему его подключения к Arduino UNO и соберем на его основе автоматический включатель освещения.
Линза Френеля концентрирует инфракрасное излучение
Модуль с ПИР датчиком состоит из пироэлектрического элемента под пластиковой линзой Френеля — цилиндрическая деталь с прямоугольным кристаллом в центре, который улавливает уровень инфракрасного излучения и пропускает его через себя. При подключении IR к Arduino мы уже выяснили, что все предметы имеют инфракрасное излучение и чем выше температура, тем интенсивнее излучение.
Устройство и распиновка пироэлектрического датчика движения
PIR датчики движения практически одинаковы по устройству. Диапазон чувствительности PIR сенсоров для Ардуино до 6 метров, угол обзора 110° x 70°. Питание — 5 Вольт, а выходной цифровой сигнал имеет значение 0, когда движения нет и значение 1 при наличии движения. Чувствительные элементы устанавливается в герметический корпус, который защищает от влажности и перепадов температур.
Как подключить датчик движения к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- PIR датчик движения HC-SR501;
- беспаечная макетная плата;
- 1 светодиод и резистор 220 Ом;
- провода «папа-папа», «папа-мама».
Схема подключения PIR датчика к Ардуино Уно
Распиновка датчиков движения Ардуино у разных производителей может отличаться, но рядом с контактами есть надписи (см. фото выше). Поэтому, перед подключением внимательно изучите модуль. Один выход идет к GND, второй к питанию 5 Вольт (VCC), а третий выход (OUT) выдает цифровой сигнал с PIR сенсора. Соберите схему, как на фото выше, подключите светодиод к пину 12 на Ардуино и загрузите следующий скетч.
Скетч для датчика движения Ардуино
#define PIR 2 #define LED 12 void setup() { pinMode(PIR, INPUT); pinMode(LED,OUTPUT); } void loop() { int pirVal = digitalRead(PIR); if (pirVal == HIGH) { digitalWrite(LED, HIGH); delay(2000); } else { digitalWrite(LED,LOW); delay(2000); } }
Пояснения к коду:
- с помощью директивы для портов 2 и 12 мы назначили соответствующие имена PIR и LED. Это сделано лишь для нашего удобства;
- в условном операторе if использовано двойное равенство: . Согласно языку программирования Ардуино, двойное равенство является оператором сравнения.
Скетч для светильника с PIR датчиком движения
#define LED 3 // назначаем порт для светодиода #define PIR 2 // назначаем порт для PIR sensor unsigned long counttime; // выделение памяти для счетчика void setup() { pinMode(LED, OUTPUT); pinMode(PIR, INPUT); } void loop() { // если есть движение включаем светодиод if (digitalRead(PIR) == HIGH) { digitalWrite(LED, HIGH); } // включаем счетчик на 1 минуту counttime = millis(); // если нет движения и прошла 1 минута if (digitalRead(PIR) == LOW && millis() - counttime > 60000) { // если нет движения в течении 1 минуты выключаем светодиод digitalWrite(LED, LOW); } }
Пояснения к коду:
- с помощью функции мы начинаем отсчет времени. При этом, в отличие от функции , которая полностью прерывает программу, микроконтроллер может продолжать остальные вычисления в скетче.
- мы изменили время выключения светильника. Если в первом скетче светодиод выключался сразу после сигнала LOW с датчика. То сейчас мы даем 1 минуту до выключения светильника, на случай если человек не вышел из комнаты.
Как работает регистр сдвига?
Прежде чем мы начнем подключать чип, давайте рассмотрим, как этот процесс работает.
Первое, что нужно прояснить, — это понятие «биты» для тех из вас, кто не знаком с двоичным кодом. Когда мы говорим о «битах», мы имеем в виду одно из чисел, составляющих двоичное значение. В отличие от обычных чисел, мы обычно считаем, что первый бит является самым большим. Итак, если мы берем двоичное значение 10100010, первый бит на самом деле равен 0, а восьмой бит равен 1. Следует также отметить, если это не подразумевалось, каждый бит может быть только 0 или 1.
Чип содержит восемь контактов, которые мы можем использовать для вывода, каждый из которых связан с битом в регистре. В случае сдвигового регистра 74HC595 мы рассматриваем их от QA до QH.
Чтобы записать эти выходы через Arduino, мы должны отправить двоичное значение в регистр сдвига, и из этого числа сдвиговый регистр может определить, какие выходы использовать. Например, если мы отправили двоичное значение 10100010, контакты, выделенные зеленым цветом на изображении выше, будут активными, а выделенные красным цветом будут неактивными.
Это означает, что самый правый бит сопоставляется как QH, а левый бит сопоставляется с QA. Выход считается активным, когда бит, сопоставленный с ним, установлен на 1
Важно помнить об этом, так как иначе вам будет очень сложно узнать, какие контакты вы используете
Теперь, когда у нас есть основное понимание того, как мы используем смещение битов, чтобы указать, какие контакты использовать, мы можем начать подключать его к нашему Arduino.
Описание модуля Bluetooth HC 06
Все существующие типы модулей Bluetooth имеют свои особенности, но по функциям и действию они похожи. Одним из видов модулей является Bluetooth HC 06. Со стороны Ардуино модуль выглядит как обычный последовательный интерфейс, поэтому можно сразу наладить взаимодействие с устройством на компьютере. Основные характеристики модуля:
- питание 3,3В – 6 В
- максимальное входное напряжение 5 В
- максимальный ток 45 мА
- скорость передачи данных 1200–1382400 бод
- рабочие частоты 2,40 ГГц – 2,48ГГц
- поддержка спецификации bluetooth версии 2.1
- малое потребление энергии
- высокий уровень защиты данных
- дальность связи 30 м
- для подключения к смартфону используются следующие данные – пароль «1234», скорость передачи данных 9600, имя модуля HС-06.
Обозначение выводов модуля HC-06
Модуль имеет следующие контакты:
- VCC , GND – плюс и минус питания;
- RX и TX – приемник и передатчик;
- MCU-INT — выводит статус;
- Clear (Reset) – сбрасывание и перезагрузка модуля. Последние два вывода обычно не задействованы в работе, поэтому сейчас производятся модули без этих контактов.
Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи данных» можно изменить при помощи АТ-команд.
Элементы платы
Дисплей
Дисплей MT-16S2H-I умеет отображать все строчные и прописные буквы латиницы и кириллицы, а также типографские символы. Для любителей экзотики есть возможность создавать собственные иконки.
Экран выполнен на жидкокристаллической матрице, которая отображает 2 строки по 16 символов. Каждый символ состоит из отдельного знакоместа 5×8 пикселей.
Контроллер дисплея
Матрица индикатора подключена к встроенному чипу КБ1013ВГ6 с драйвером расширителя портов, которые выполняют роль посредника между экраном и микроконтроллером.
Контроллер КБ1013ВГ6 аналогичен популярным чипам зарубежных производителей HD44780 и KS0066, что означает совместимость со всеми программными библиотеками.
I²C-расширитель
Для экономии пинов микроконтроллера на плате дисплея также распаян дополнительный преобразователь интерфейсов INF8574A: микросхема позволит общаться экрану и управляющей плате по двум проводам через интерфейс I²C.
Контакты подключения
На плате дисплея выведено 18 контактов для подведения питания и взаимодействия с управляющей электроникой.
Вывод | Обозначение | Описание |
---|---|---|
1 | GND | Общий вывод (земля) |
2 | VCC | Напряжение питания (5 В) |
3 | VO | Управление контрастностью |
4 | RS | Выбор регистра |
5 | R/W | Выбор режима записи или чтения |
6 | E | Разрешение обращений к индикатору (а также строб данных) |
7 | DB0 | Шина данных (8-ми битный режим)(младший бит в 8-ми битном режиме) |
8 | DB1 | Шина данных (8-ми битный режим) |
9 | DB2 | Шина данных (8-ми битный режим) |
10 | DB3 | Шина данных (8-ми битный режим) |
11 | DB4 | Шина данных (8-ми и 4-х битные режимы)(младший бит в 4-х битном режиме) |
12 | DB5 | Шина данных (8-ми и 4-х битные режимы) |
13 | DB6 | Шина данных (8-ми и 4-х битные режимы) |
14 | DB7 | Шина данных (8-ми и 4-х битные режимы) |
15 | LED+ | Питания подсветки (+) |
16 | LED– | Питания подсветки (–) |
17 | SDA | Последовательная шина данных |
18 | SCL | Последовательная линия тактированния |
Обратите внимания, что физические контакты подсветки экрана и , также интерфейс шины I²C и расположены не в порядком соотношении с другими пинами экрана.
Питание
Экран совместим со всеми контроллерами с логическим напряжением от 3,3 до 5 вольт. Но для питания самого индикатора (пин VCC) необходимо строго 5 вольт
Если в вашем проекте нет линии 5 вольт, обратите внимание на дисплей текстовый экран 16×2 / I²C / 3,3 В.
Интерфейс передачи данных
Дисплей может работать в трёх режимах:
- 8-битный режим — в нём используются и младшие и старшие биты (-)
- 4-битный режим — в нём используются только младшие биты (-)
- I²C режим — данные передаются по протоколу I²C/TWI. Адрес дисплея .
Использовать восьмибитный и четырёхбитный режим в данном дисплее не целесообразно. Ведь главное достоинство этой модели именно возможность подключения через I²C.
Если всё-таки есть необходимость использовать 4-битный или 8-битный режим, читайте документацию на текстовый экран 16×2.
Объединение питания
Для подключения питания к дисплею необходимо пять контактов:
Вывод | Обозначение | Описание |
---|---|---|
1 | GND | Общий вывод (земля) |
2 | VCC | Напряжение питания (5 В) |
3 | VO | Управление контрастностью |
15 | LED+ | Питания подсветки (+) |
16 | LED– | Питания подсветки (–) |
Но если запаять перемычки и на обратной стороне дисплея, количество контактов питания можно сократить до трёх, объединив цепь питания и подсветки дисплея.
Мы взяли этот шаг на себя и спаяли перемычки самостоятельно.
Выбор адреса
Используя шину можно подключить несколько дисплеев одновременно, при этом количество занятых пинов останется прежним.
Для общения с каждым дисплеем отдельно, необходимо установить в них разные адреса. Для смены адреса на обратной стороне дисплея установлены контактные площадки , и .
Капнув припоем на контактные площадки, мы получим один из семи дополнительных адресов:
- нет припоя, соответственно нет электрического контакта.
- есть припой, соответственно есть электрический контакт.
J2 | J1 | J0 | Адрес |
---|---|---|---|
L | L | L | 0x38 |
L | L | H | 0x39 |
L | H | L | 0x3A |
L | H | H | 0x3B |
H | L | L | 0x3C |
H | L | H | 0x3D |
H | H | L | 0x3E |
H | H | H | 0x3F |
Описание модуля Bluetooth HC 06
Все существующие типы модулей Bluetooth имеют свои особенности, но по функциям и действию они похожи. Одним из видов модулей является Bluetooth HC 06. Со стороны Ардуино модуль выглядит как обычный последовательный интерфейс, поэтому можно сразу наладить взаимодействие с устройством на компьютере.
Основные характеристики модуля:
- Питание 3,3В – 6 В;
- Максимальное входное напряжение 5 В;
- Максимальный ток 45 мА;
- Скорость передачи данных 1200–1382400 бод;
- Рабочие частоты 2,40 ГГц – 2,48ГГц;
- Поддержка спецификации bluetooth версии 2.1;
- Малое потребление энергии;
- Высокий уровень защиты данных;
- Дальность связи 30 м;
- Для подключения к смартфону используются следующие данные – пароль «1234», скорость передачи данных 9600, имя модуля HС-06.
Модуль имеет следующие контакты:
- VCC , GND – плюс и минус питания;
- RX и TX – приемник и передатчик;
- MCU-INT – выводит статус;
- Clear (Reset) – сбрасывание и перезагрузка модуля. Последние два вывода обычно не задействованы в работе, поэтому сейчас производятся модули без этих контактов.
Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи данных» можно изменить при помощи АТ-команд.
В комплектацию модуля не входят соединительные провода.
Заключение
В этой статье мы рассмотрели варианты подключения и работы с одними из самых распространенных Ардуино модулей Bluetooth HC05, HC06. Никаких особенных сложностей с этими модулями у вас быть не должно – просто подключайте его к пинам с аппаратным или программным UART, после чего используйте традиционные библиотеки (Serial для модуля, подключенного к 0, 1 пинам, SoftwareSerial в случае присоединения к другим).
Подключение Bluetooth к вашему Arduino-проекту может существенно увеличить ваши возможности по взаимодействию с другими устройствами. Вы сможете контролировать состояния датчиков и изменять параметры системы без перезагрузки контроллера. И. конечно же, вы сможете без проблем создать роботы и машинки на ардуино, управляемые через bluetooth со смартфона. Будем надеяться, что вы сможете сделать свой первый проект после прочтения этой статьи.