Indholdsfortegnelse:

Gendan forkert konfigureret HC-06 Bluetooth-modul: 4 trin
Gendan forkert konfigureret HC-06 Bluetooth-modul: 4 trin

Video: Gendan forkert konfigureret HC-06 Bluetooth-modul: 4 trin

Video: Gendan forkert konfigureret HC-06 Bluetooth-modul: 4 trin
Video: Смарт-Часы Maimo Watch - Детальный ОБЗОР + ТЕСТЫ 2024, Juli
Anonim
Gendan forkert konfigureret HC-06 Bluetooth-modul
Gendan forkert konfigureret HC-06 Bluetooth-modul

Af ren maksimalisme konfigurerede jeg mit HC-06 Bluetooth (slave) -modul til en baudhastighed på 1, 382, 400 baud med AT+BAUDC-kommandoen. Lige siden Arduino tilsluttet det ikke var i stand til at bruge modulet med SoftwareSerial bibliotek. Jeg forsøgte at gendanne baudhastigheden med Arduinos hardware -serie (pins 0 & 1) uden held.

Jeg forsøgte også at Google emnet uden at finde en acceptabel løsning. Måske kunne brug af en computers indbyggede serielle port have været en løsning (med 12V til 3V3 logisk niveauforskydning), men min computer har ikke denne forældede port, så jeg måtte finde på en anden løsning.

Trin 1: Hvad du får brug for

Hvad du får brug for
Hvad du får brug for
  • Arudino/Genuino-kort med standard Atmel ATMEGA328P-PU MCU (@16MHz).
  • Et HC-06 Bluetooth-modul, der lytter til 1, 382, 400 baud
  • Grundlæggende arduino IDE fra

Trin 2: Løsningen

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

Bemærk, at denne instruks og løsningen er lavet til 1, 382, 400 baud (AT+BAUDC) scenario. Løsningen fungerer ikke for andre baudhastigheder. For at behandle andre sager henvises til trin, der starter fra trin 3.

Løsningen er virkelig enkel.

  1. Tilslut HC-06's VCC pin til 5V pin af Arduino.
  2. Tilslut HC-06's GND-pin til GND-pin på Arduino.
  3. Tilslut HC-06's RXD-pin til pin 2 på Arduino.
  4. Lad HC-06's TXD-pin være tilsluttet (eller tilslut til pin 8).
  5. Upload skitse hc06reset.ino.
  6. Programmet indstiller HC-06 til 115, 200 baud-tilstand (AT+BAUD8).
  7. Brug dit genoprettede HC-06-modul som før.

Trin 3: Bag kulisserne …

Bag scenen…
Bag scenen…
Bag scenen…
Bag scenen…

SoftwareSerial -biblioteket, der leveres med Arduino IDE, kan højst transmittere 115, 200 bits/sekund, så det er ikke hurtigt nok til at kommunikere på den ønskede 1, 382, 400 baudhastighed. I betragtning af at et standard Arduino -kort kører på 16MHz, er den teoretiske ukomprimerede maksimale bithastighed 16.000.000 bit/sek. Vi har det godt indtil videre!

Baseret på min forståelse af SoftwareSerial.cpp udføres seialkommunikationen ved at indstille en output -pin High (= 1) eller Low (= 0) med hensyn til en forsinkelse (der stammer fra baud -hastigheden) mellem ændringerne.

  • Outputpinnen er som standard høj (betyder ingen data)
  • en Start bit sendes (hvilket trækker tappen lavt), derefter
  • 8 bit data overført fra LSB til MSB, (+5V når bit 1 og 0 ellers) derefter
  • en stopbit sendes (som trækker tappen højt)

På denne måde transmitteres 1 byte ved hjælp af 10 bits.

Beskeden vi skal sende er AT+BAUD8 (uden / n, / r i slutningen). Denne kommando sætter HC-06 tilbage til 115, 200 baud rate, som kan håndteres af almindelige biblioteker.

For at sende bits med 1, 382, 400 bits/sek hastighed har vi for hver bit 1/1, 382, 400 sekunders tid (det er cirka 723,38 ns) for hver bit. Arduino kører på 16, 000, 000 Mhz, så hver cyklus varer 1/16, 000, 000 sekunder - det er 62,5 ns pr. Cyklus.

Ved hjælp af AVR -forsamlingskode kan vi bruge kommandoen OUT til at indstille output -pin høj eller lav og NOP til at vente nøjagtigt en CPU -cyklus. Begge kommandoer spiser nøjagtigt 1 cpu -cyklus. På denne måde kan 723,38 ns bittiden dækkes af 11 til 12 arduino -instruktioner pr. Transmitteret bit. Én ting at overveje: OUT -kommandoen indstiller en hel byte på én gang, så vi er nødt til at vælge en PORTx, hvor dette ikke er et problem. Brug af ATMEGA328P-PU for eksempel PORTD (arduino pins 0-7) er perfekt til denne tilstand. Efter indstilling af boret skal der kun gå den korrekte tid, som udføres med 10 til 11 NOP'er, og det er det.

Du kan finde beregningsoplysninger i Excel -filen herunder. Denne fil genererede de nødvendige samlevejledninger til programmet. Kun få udskiftninger skulle foretages efter indsætning af den genererede kode.

Trin 4: Yderligere læsning/ forbedringsmuligheder

  • Måske kan der laves et hurtigere SoftwareSerial -bibliotek ved hjælp af teknikken beskrevet i det foregående trin.
  • FedericoK2 lavede et fantastisk værktøj, der genererer HC-06-gendannelseskoden for hver mulig bitrate. Få adgang til webstedet her: https://tools.krum.com.ar/save_your_hc-06/ Tak FedericoK2

Anbefalede: