Съдържание:
- Стъпка 1: Какво ще ви трябва
- Стъпка 2: Решението
- Стъпка 3: Зад кулисите …
- Стъпка 4: Допълнителни възможности за четене/ подобряване
Видео: Възстановяване на неправилно конфигуриран HC-06 Bluetooth модул: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
От чист максимализъм, аз конфигурирах моя 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.
Решението е наистина просто.
- Свържете VCC щифта на HC-06 към 5V пина на Arduino.
- Свържете GND щифта на HC-06 към GND щифта на Arduino.
- Свържете RXD щифта на HC-06 към пин 2 на Arduino.
- Оставете TXD щифта на HC-06 несвързан (или свържете към пин 8).
- Качете скица на hc06reset.ino.
- Програмата ще настрои HC-06 в режим 115, 200 бода (AT+BAUD8).
- Използвайте възстановения си модул 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
Препоръчано:
Easy IOT - Конфигуриран с приложение RF сензорен концентратор за IOT устройства със среден обхват: 4 стъпки
Easy IOT - Конфигуриран с приложения RF сензорен концентратор за IOT устройства със среден обхват: В тази поредица от уроци ще изградим мрежа от устройства, които могат да се управляват чрез радиовръзка от централно устройство -хъб. Предимството от използването на 433MHz серийна радиовръзка вместо WIFI или Bluetooth е много по -големият обхват (с добър
Възстановяване или надграждане на фърмуера на модул ESP8266 (ESP-01) с помощта на Arduino UNO: 7 стъпки
Възстановяване или надграждане на фърмуера на модул ESP8266 (ESP-01) Използване на Arduino UNO: Модулът ESP-01, който използвах първоначално, идва с по-стар фърмуер на AI Thinker, което ограничава неговите възможности, тъй като много полезни AT команди не се поддържат. Като цяло е добра идея да надстроите фърмуера си за корекции на грешки, а също и в зависимост от
RF модул 433MHZ - Направете приемник и предавател от 433MHZ RF модул без микроконтролер: 5 стъпки
RF модул 433MHZ | Направете приемник и предавател от 433MHZ RF модул без никакъв микроконтролер: Искате ли да изпращате безжични данни? лесно и без нужда от микроконтролер? Ето, в тази инструкция ще ви покажа ми основен радиочестотен предавател и приемник, готов за употреба! В тази инструкция ще можете да изпращате и получавате данни, използвайки много вер
E32-433T Урок за модул LoRa - DIY Breakout Board за модул E32: 6 стъпки
E32-433T Урок за модул LoRa | DIY Breakout Board за модул E32: Хей, какво става, момчета! Akarsh тук от CETech, Този мой проект е по-скоро крива на обучение, за да се разбере работата на модула E32 LoRa от eByte, който е 1-ватов трансивър модул с висока мощност. След като разберем работата, имам дизайн
Мигащ светодиод чрез използване на ESP32 NodeMCU модул за WiFi и Bluetooth модул Урок: 5 стъпки
Мигащ светодиод чрез използване на ESP32 NodeMCU модул за WiFi и Bluetooth модул Урок: Описание NodeMCU е IoT платформа с отворен код. Програмира се с помощта на скриптовия език Lua. Платформата се основава на проекти с отворен код на eLua. Платформата използва много проекти с отворен код, като lua-cjson, spiffs. Този ESP32 NodeMc