Talaan ng mga Nilalaman:

I-recover ang Maling naka-configure na HC-06 Bluetooth Module: 4 na Hakbang
I-recover ang Maling naka-configure na HC-06 Bluetooth Module: 4 na Hakbang

Video: I-recover ang Maling naka-configure na HC-06 Bluetooth Module: 4 na Hakbang

Video: I-recover ang Maling naka-configure na HC-06 Bluetooth Module: 4 na Hakbang
Video: LDmicro 20: I2C Liquid Crystal Display Resolved(Microcontroller PLC Ladder Programming with LDmicro) 2024, Nobyembre
Anonim
Ibalik muli ang maling pagsasaayos ng HC-06 Bluetooth Module
Ibalik muli ang maling pagsasaayos ng HC-06 Bluetooth Module

Out of pure maximalism, na-configure ko ang aking HC-06 Bluetooth (alipin) module sa isang baud rate na 1, 382, 400 baud gamit ang utos na AT + BAUDC. Mula nang kumonekta ang Arduino dito ay hindi nagawang gamitin ang module sa library ng SoftwareSerial. Sinubukan kong ibalik ang rate ng baud gamit ang serial serial ng hardware ng Arduino (pin 0 & 1) nang walang swerte.

Sinubukan ko rin sa Google ang paksa nang hindi makahanap ng isang nadaanan na solusyon. Marahil ang paggamit ng built ng isang computer sa serial port ay maaaring maging isang solusyon (na may 12V hanggang 3V3 antas ng lohika na nagbabago), ngunit ang aking computer ay walang ganitong lipas na port, kaya't nagkaroon ako ng ibang solusyon.

Hakbang 1: Ano ang Kakailanganin Mo

Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo
  • Arudino / Genuino board na may default na Atmel ATMEGA328P-PU MCU (@ 16MHz).
  • Isang HC-06 Bluetooth module na nakikinig sa 1, 382, 400 baud
  • Pangunahing arduino IDE mula sa

Hakbang 2: Ang Solusyon

Ang solusyon
Ang solusyon
Ang solusyon
Ang solusyon

Mangyaring tandaan na ang Instructable na ito at ang solusyon ay ginawa para sa senaryo ng 1, 382, 400 baud (AT + BAUDC). Hindi gagana ang solusyon para sa anumang iba pang mga rate ng baud. Upang hawakan ang iba pang mga kaso mangyaring sumangguni sa mga hakbang na nagsisimula sa Hakbang 3.

Ang solusyon ay talagang simple.

  1. Ikonekta ang VCC pin ng HC-06 sa 5V pin ng Arduino.
  2. Ikonekta ang GND pin ng HC-06 sa GND pin ng Arduino.
  3. Ikonekta ang RXD pin ng HC-06 upang i-pin ang 2 ng Arduino.
  4. Iwanan ang HCD 06's TXD pin na hindi konektado (o kumonekta sa pin 8).
  5. Mag-upload ng hc06reset.ino sketch.
  6. Itatakda ng programa ang HC-06 sa 115, 200 baud mode (AT + BAUD8).
  7. Gamitin ang iyong nakuhang muli na module ng HC-06 tulad ng dati.

Hakbang 3: Sa Likod ng Mga Eksena …

Sa likod ng kamera…
Sa likod ng kamera…
Sa likod ng kamera…
Sa likod ng kamera…

Ang library ng SoftwareSerial na kasama ng Arduino IDE ay may kakayahang magpadala ng higit sa 115, 200 bits / segundo, kaya't hindi ito sapat na mabilis upang makipag-usap sa nais na 1, 382, 400 baud rate. Dahil sa isang default na Arduino board ay tumatakbo sa 16MHz, ang teoretikal na hindi na-compress na maximum na bitrate ay 16, 000, 000 bits / sec. Magaling kami sa ngayon!

Batay sa aking pag-unawa sa SoftwareSerial.cpp, ang seial na komunikasyon ay ginagawa sa pamamagitan ng pagtatakda ng isang output pin Mataas (= 1) o Mababa (= 0) na patungkol sa isang pagkaantala (na nagmumula sa baud rate) sa pagitan ng mga pagbabago.

  • Ang output pin ay mataas sa pamamagitan ng default (nangangahulugang walang data), pagkatapos
  • isang Start bit ay naililipat (na kung saan hinila ang mababang pin), pagkatapos
  • 8 piraso ng data na ipinadala mula sa LSB patungong MSB, (+ 5V kapag ang bit 1 at 0 kung hindi man) pagkatapos
  • ang isang Stop bit ay naililipat (na kumukuha ng mataas na pin)

Sa ganitong paraan 1 byte ay ipinapadala gamit ang10 bits.

Ang mensahe na kailangan naming ipadala ay AT + BAUD8 (nang walang / n, / r sa dulo). Itinatakda ng utos na ito ang HC-06 pabalik sa 115, 200 baud rate na maaaring hawakan ng mga regular na aklatan.

Upang maipadala ang mga bit na may 1, 382, 400 bits / sec speed, para sa bawat bit mayroon kaming 1/1, 382, 400 segundo na oras (iyon ay halos 723.38 ns) para sa bawat bit. Ang Arduino ay tumatakbo sa 16, 000, 000 Mhz, kaya't ang bawat cycle ay tumatagal ng 1/16, 000, 000 segundo - iyon ay 62.5 ns bawat cycle.

Gamit ang AVR assemble code maaari naming gamitin ang OUT command upang maitakda ang output pin mataas o mababa at NOP upang maghintay nang eksaktong isang siklo ng CPU. Ang parehong mga utos ay kumain ng eksaktong 1 cpu cycle. Sa ganitong paraan ang oras ng 723.38 ns bit ay maaaring saklaw ng 11 hanggang 12 mga tagubilin sa arduino bawat naihatid na kaunti. Isang bagay na dapat isaalang-alang: ang utos ng OUT ay nagtatakda ng isang buong byte nang sabay-sabay, kaya kailangan naming pumili ng isang PORTx kung saan hindi ito isang problema. Ang paggamit ng ATMEGA328P-PU halimbawa PORTD (arduino pin 0-7) ay perpekto para sa kondisyong ito. Matapos itakda ang kaunti, ang tamang oras lamang ang kailangang lumipas na ginagawa ng 10 hanggang 11 na mga NOP at iyon na.

Maaari mong makita ang mga detalye ng pagkalkula sa file ng Excel sa ibaba. Bumuo ang file na ito ng kinakailangang mga tagubilin para sa programa. Ilang mga pamalit lamang ang kailangang gawin pagkatapos na mai-paste ang nabuong code.

Hakbang 4: Karagdagang Mga Pagbasa / Pagpapaganda Mga Posibilidad

  • Siguro ang isang mas mabilis na library ng SoftwareSerial ay maaaring magawa sa pamamagitan ng paggamit ng diskarteng inilarawan sa nakaraang Hakbang.
  • Ang FedericoK2 ay gumawa ng isang mahusay na tool na bumubuo ng HC-06 recovery code para sa bawat posibleng bitrate. I-access ang site dito: https://tools.krum.com.ar/save_your_hc-06/ Salamat FedericoK2

Inirerekumendang: