Оглавление:

Восстановление неправильно настроенного модуля Bluetooth HC-06: 4 шага
Восстановление неправильно настроенного модуля Bluetooth HC-06: 4 шага

Видео: Восстановление неправильно настроенного модуля Bluetooth HC-06: 4 шага

Видео: Восстановление неправильно настроенного модуля Bluetooth HC-06: 4 шага
Видео: Ноутбук не видит Bluetooth устройства. Что делать? 2024, Июль
Anonim
Восстановить неправильно настроенный модуль Bluetooth HC-06
Восстановить неправильно настроенный модуль Bluetooth HC-06

Из чистого максимализма я настроил свой модуль Bluetooth HC-06 (подчиненный) на скорость передачи 1, 382, 400 бод с помощью команды AT + BAUDC. С тех пор, как подключенный к нему Arduino не смог использовать модуль с библиотекой SoftwareSerial. Я безуспешно пытался восстановить скорость передачи данных с помощью аппаратного последовательного порта Arduino (контакты 0 и 1).

Я тоже пробовал погуглить тему, но сносного решения не нашел. Возможно, использование встроенного последовательного порта компьютера могло бы стать решением (с изменением логического уровня с 12 В на 3 В 3), но у моего компьютера нет этого устаревшего порта, поэтому мне пришлось придумать другое решение.

Шаг 1. Что вам понадобится

Что тебе понадобится
Что тебе понадобится
  • Плата Arudino / Genuino с микроконтроллером Atmel ATMEGA328P-PU по умолчанию (@ 16 МГц).
  • Bluetooth-модуль HC-06, прослушивающий 1, 382, 400 бод
  • Базовая IDE для arduino с

Шаг 2: решение

Решение
Решение
Решение
Решение

Обратите внимание, что это руководство и решение предназначено для сценария 1, 382, 400 бод (AT + BAUDC). Решение не будет работать для других скоростей передачи. Чтобы справиться с другими случаями, обратитесь к шагам, начиная с шага 3.

Решение действительно простое.

  1. Подключите вывод VCC HC-06 к выводу 5V Arduino.
  2. Подключите вывод GND HC-06 к выводу GND Arduino.
  3. Подключите вывод RXD HC-06 к выводу 2 Arduino.
  4. Оставьте контакт TXD HC-06 неподключенным (или подключите к контакту 8).
  5. Загрузите скетч hc06reset.ino.
  6. Программа установит HC-06 в режим 115, 200 бод (AT + BAUD8).
  7. Используйте восстановленный модуль HC-06, как раньше.

Шаг 3. За кулисами…

За кулисами…
За кулисами…
За кулисами…
За кулисами…

Библиотека SoftwareSerial, поставляемая с Arduino IDE, способна передавать не более 115 200 бит в секунду, поэтому ее недостаточно для связи на желаемой скорости 1, 382, 400 бод. Учитывая, что плата Arduino по умолчанию работает на частоте 16 МГц, теоретический максимальный битрейт без сжатия составляет 16 000 000 бит / сек. Пока у нас все хорошо!

Основываясь на моем понимании SoftwareSerial.cpp, обмен данными осуществляется путем установки высокого (= 1) или низкого (= 0) вывода вывода в зависимости от задержки (которая зависит от скорости передачи данных) между изменениями.

  • Выходной контакт по умолчанию высокий (означает отсутствие данных), затем
  • передается стартовый бит (который переводит контакт в низкий уровень), затем
  • 8 бит данных, передаваемых от LSB к MSB (+ 5V, когда бит 1 и 0 в противном случае), тогда
  • Передается стоповый бит (который подтягивает контакт высоко)

Таким образом, 1 байт передается с использованием 10 бит.

Мы должны отправить сообщение AT + BAUD8 (без / n, / r в конце). Эта команда устанавливает для HC-06 скорость 115 200 бод, которая может обрабатываться обычными библиотеками.

Чтобы отправлять биты со скоростью 1, 382, 400 бит / сек, для каждого бита у нас есть время 1/1, 382, 400 секунд (это примерно 723,38 нс) для каждого бита. Arduino работает на частоте 16 000 000 МГц, поэтому каждый цикл длится 1/16 000 000 секунд, то есть 62,5 нс на цикл.

Используя ассемблерный код AVR, мы можем использовать команду OUT для установки высокого или низкого уровня выходного контакта и NOP, чтобы ждать ровно один цикл процессора. Обе команды съедают ровно 1 цикл процессора. Таким образом, битовое время 723,38 нс может быть покрыто 11–12 инструкциями Arduino на передаваемый бит. Одна вещь, которую следует учитывать: команда OUT устанавливает сразу весь байт, поэтому мы должны выбрать PORTx, где это не проблема. Использование ATMEGA328P-PU, например, PORTD (контакты 0-7 Arduino) идеально подходит для этого условия. После установки бита должно пройти только надлежащее время, которое составляет от 10 до 11 NOP, и все.

Вы можете найти подробные сведения о расчетах в файле Excel ниже. Этот файл сгенерировал необходимые инструкции по сборке для программы. После вставки сгенерированного кода потребовалось выполнить лишь несколько замен.

Шаг 4: Дальнейшее чтение / Возможности улучшения

  • Возможно, можно создать более быструю библиотеку SoftwareSerial, используя технику, описанную в предыдущем шаге.
  • FedericoK2 создал отличный инструмент, который генерирует код восстановления HC-06 для всех возможных битрейтов. Войдите на сайт здесь: https://tools.krum.com.ar/save_your_hc-06/ Спасибо, FedericoK2

Рекомендуемые: