Съдържание:

Възстановяване на неправилно конфигуриран HC-06 Bluetooth модул: 4 стъпки
Възстановяване на неправилно конфигуриран HC-06 Bluetooth модул: 4 стъпки

Видео: Възстановяване на неправилно конфигуриран HC-06 Bluetooth модул: 4 стъпки

Видео: Възстановяване на неправилно конфигуриран HC-06 Bluetooth модул: 4 стъпки
Видео: PsPing Power: The Ultimate Guide to Testing Bandwidth 2024, Ноември
Anonim
Възстановяване на неправилно конфигуриран Bluetooth модул HC-06
Възстановяване на неправилно конфигуриран Bluetooth модул HC-06

От чист максимализъм, аз конфигурирах моя HC-06 Bluetooth (подчинен) модул към скорост на предаване 1, 382, 400 бода с командата AT+BAUDC. Откакто свързаният с него Arduino не можеше да използва модула с библиотеката SoftwareSerial. Опитах се да възстановя скоростта на предаване с хардуерен сериал на Arduino (пинове 0 и 1) без късмет.

Аз също се опитах да разгледам темата, без да намеря проходимо решение. Може би използването на вграден в компютъра сериен порт би могло да бъде решение (с промяна на логическото ниво от 12V до 3V3), но компютърът ми няма този остарял порт, така че трябваше да измисля друго решение.

Стъпка 1: Какво ще ви трябва

Какво ще ви трябва
Какво ще ви трябва
  • Arudino/Genuino платка с по подразбиране Atmel ATMEGA328P-PU MCU (@16MHz).
  • Bluetooth модул HC-06, който слуша на 1, 382, 400 бода
  • Основна arduino IDE от

Стъпка 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 работи на 16MHz, теоретичната некомпресирана максимална битрейт е 16 000 000 бита/сек. Засега сме добре!

Въз основа на разбирането ми за SoftwareSerial.cpp, последователната комуникация се осъществява чрез задаване на изходен щифт High (= 1) или Low (= 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 ns) за всеки бит. Arduino работи на 16 000 000 Mhz, така че всеки цикъл продължава 1/16 000 000 секунди - това е 62,5 ns на цикъл.

Използвайки кода за сглобяване на AVR, можем да използваме командата OUT, за да зададем висок или нисък изходен извод и NOP да изчака точно един цикъл на процесора. И двете команди изяждат точно 1 цикъл на процесор. По този начин 723,38 ns битовото време може да бъде покрито от 11 до 12 arduino инструкции на предаден бит. Едно нещо, което трябва да имате предвид: командата OUT задава цял байт наведнъж, така че трябва да изберем PORTx, където това не е проблем. Използването на ATMEGA328P-PU например PORTD (щифтове arduino 0-7) е идеално за това състояние. След задаване на бита трябва да измине само подходящото време, което се прави от 10 до 11 NOP и това е всичко.

Можете да намерите подробности за изчисленията във файла Excel по -долу. Този файл генерира необходимите сборни инструкции за програмата. Само няколко замени трябваше да бъдат направени след поставяне на генерирания код.

Стъпка 4: Допълнителни възможности за четене/ подобряване

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

Препоръчано: