Innholdsfortegnelse:

Gjenopprett feilkonfigurert HC-06 Bluetooth-modul: 4 trinn
Gjenopprett feilkonfigurert HC-06 Bluetooth-modul: 4 trinn

Video: Gjenopprett feilkonfigurert HC-06 Bluetooth-modul: 4 trinn

Video: Gjenopprett feilkonfigurert HC-06 Bluetooth-modul: 4 trinn
Video: LDmicro 13: HC-05 Управление через приложение Bluetooth для телефона (программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Juli
Anonim
Gjenopprett feilkonfigurert HC-06 Bluetooth-modul
Gjenopprett feilkonfigurert HC-06 Bluetooth-modul

Av ren maksimalisme konfigurerte jeg HC-06 Bluetooth (slave) -modulen til en baudhastighet på 1, 382, 400 baud med AT+BAUDC-kommandoen. Helt siden Arduino koblet til den, var den ikke i stand til å bruke modulen med SoftwareSerial -biblioteket. Jeg prøvde å gjenopprette overføringshastigheten med Arduinos maskinvareserie (pinner 0 og 1) uten hell.

Jeg prøvde også å google emnet uten å finne en akseptabel løsning. Kanskje bruk av en datamaskin innebygd seriell port kunne ha vært en løsning (med 12V til 3V3 logisk nivåskifte), men datamaskinen min har ikke denne foreldede porten, så jeg måtte finne på en annen løsning.

Trinn 1: Hva du trenger

Hva du trenger
Hva du trenger
  • Arudino/Genuino-kort med standard Atmel ATMEGA328P-PU MCU (@16MHz).
  • En HC-06 Bluetooth-modul som lytter på 1, 382, 400 baud
  • Grunnleggende arduino IDE fra

Trinn 2: Løsningen

Løsningen
Løsningen
Løsningen
Løsningen

Vær oppmerksom på at denne Instructable og løsningen er laget for 1, 382, 400 baud (AT+BAUDC) scenario. Løsningen vil ikke fungere for andre overføringshastigheter. For å håndtere andre saker, se trinnene som starter fra trinn 3.

Løsningen er virkelig enkel.

  1. Koble HC-06s VCC-pin til 5V pin av Arduino.
  2. Koble HC-06s GND-pinne til GND-pinnen på Arduino.
  3. Koble HC-06s RXD-pinne til pinne 2 på Arduino.
  4. La TXD-pinnen til HC-06 være tilkoblet (eller koble til pinne 8).
  5. Last opp hc06reset.ino skisse.
  6. Programmet vil sette HC-06 til 115, 200 baud-modus (AT+BAUD8).
  7. Bruk den gjenopprettede HC-06-modulen som før.

Trinn 3: Bak kulissene …

Bak scenen…
Bak scenen…
Bak scenen…
Bak scenen…

SoftwareSerial -biblioteket som følger med Arduino IDE kan maksimalt overføre 115, 200 bits/sekund, så det er ikke raskt nok til å kommunisere på ønsket 1, 382, 400 baudhastighet. Gitt at et standard Arduino -kort kjører på 16MHz, er den teoretiske ukomprimerte maksimale bithastigheten 16.000.000 bit/sek. Vi har det bra så langt!

Basert på min forståelse av SoftwareSerial.cpp, utføres seialkommunikasjonen ved å sette en utgangspinne Høy (= 1) eller Lav (= 0) med hensyn til en forsinkelse (som kommer fra overføringshastigheten) mellom endringene.

  • Utgangspinnen er høy som standard (betyr ingen data)
  • en startbit overføres (som trekker tappen lavt), deretter
  • 8 biter med data overført fra LSB til MSB, (+5V når bit 1 og 0 ellers) da
  • en stoppbit overføres (som trekker tappen høyt)

På denne måten overføres 1 byte med 10 bits.

Meldingen vi må sende er AT+BAUD8 (uten / n, / r på slutten). Denne kommandoen setter HC-06 tilbake til 115, 200 baud rate som kan håndteres av vanlige biblioteker.

For å sende bits med 1, 382, 400 bits/sek hastighet, har vi for hver bit 1/1, 382, 400 sekunder tid (det er omtrent 723,38 ns) for hver bit. Arduino kjører på 16 000 000 Mhz, så hver syklus varer 1/16 000 000 sekunder - det vil si 62,5 ns per syklus.

Ved å bruke AVR -monteringskode kan vi bruke OUT -kommandoen til å sette utgangspinnen høy eller lav og NOP for å vente nøyaktig en CPU -syklus. Begge kommandoene spiser opp nøyaktig 1 cpu -syklus. På denne måten kan 723,38 ns bittiden dekkes av 11 til 12 arduino -instruksjoner per overført bit. En ting å vurdere: OUT -kommandoen angir en hel byte samtidig, så vi må velge en PORTx der dette ikke er et problem. Å bruke ATMEGA328P-PU for eksempel PORTD (arduino pins 0-7) er perfekt for denne tilstanden. Etter at du har satt inn biten, må bare den riktige tiden gå som utføres med 10 til 11 NOPer og det er det.

Du finner beregningsdetaljer i Excel -filen nedenfor. Denne filen genererte nødvendige monteringsinstruksjoner for programmet. Bare noen få erstatninger måtte gjøres etter at den genererte koden ble limt inn.

Trinn 4: Ytterligere lese-/ forbedringsmuligheter

  • Kanskje det kan lages et raskere SoftwareSerial -bibliotek ved å bruke teknikken beskrevet i forrige trinn.
  • FedericoK2 har laget et flott verktøy som genererer HC-06-gjenopprettingskoden for hver mulig bithastighet. Gå til nettstedet her: https://tools.krum.com.ar/save_your_hc-06/ Takk FedericoK2

Anbefalt: