Obsah:

Obnovte špatně nakonfigurovaný modul Bluetooth HC-06: 4 kroky
Obnovte špatně nakonfigurovaný modul Bluetooth HC-06: 4 kroky

Video: Obnovte špatně nakonfigurovaný modul Bluetooth HC-06: 4 kroky

Video: Obnovte špatně nakonfigurovaný modul Bluetooth HC-06: 4 kroky
Video: Jak resetovat adaptéry automatické převodovky 722.6 na vozidle Mercedes 2024, Listopad
Anonim
Obnovte špatně nakonfigurovaný modul Bluetooth HC-06
Obnovte špatně nakonfigurovaný modul Bluetooth HC-06

Z čistého maximalismu jsem nakonfiguroval svůj modul HC-06 Bluetooth (slave) na přenosovou rychlost 1, 382, 400 baudů pomocí příkazu AT+BAUDC. Od té doby, co bylo k němu připojeno Arduino, nebylo možné modul používat s knihovnou SoftwareSerial. Pokusil jsem se obnovit přenosovou rychlost pomocí hardwarového seriálu Arduino (piny 0 a 1) bez úspěchu.

Také jsem se pokusil téma Google vygooglit, aniž bych našel schůdné řešení. Možná by mohlo být řešením použití vestavěného sériového portu počítače (s logickým posunem úrovně 12 až 3 V3), ale můj počítač nemá tento zastaralý port, takže jsem musel vymyslet jiné řešení.

Krok 1: Co budete potřebovat

Co budete potřebovat
Co budete potřebovat
  • Deska Arudino/Genuino s výchozím MCU Atmel ATMEGA328P-PU (@16MHz).
  • Modul Bluetooth HC-06 poslouchá na 1, 382, 400 baudů
  • Základní arduino IDE z

Krok 2: Řešení

Řešení
Řešení
Řešení
Řešení

Vezměte prosím na vědomí, že tento Instructable a řešení jsou vytvořeny pro scénář 1, 382, 400 baudů (AT+BAUDC). Řešení nebude fungovat pro žádné jiné přenosové rychlosti. Chcete -li vyřešit další případy, postupujte podle kroků počínaje krokem 3.

Řešení je opravdu jednoduché.

  1. Připojte pin VCC HC-06 k 5V pinu Arduina.
  2. Připojte pin GND HC-06 ke kolíku GND Arduina.
  3. Připojte pin RXD HC-06 ke kolíku 2 Arduina.
  4. Ponechte pin TXD HC-06 nezapojený (nebo připojte na pin 8).
  5. Nahrajte skicu hc06reset.ino.
  6. Program nastaví HC-06 do režimu 115 200 baudů (AT+BAUD8).
  7. Obnovený modul HC-06 použijte jako dříve.

Krok 3: Ze zákulisí…

V zákulisí…
V zákulisí…
V zákulisí…
V zákulisí…

Knihovna SoftwareSerial, která je dodávána s Arduino IDE, je schopná přenášet maximálně 115 200 bitů za sekundu, takže není dostatečně rychlá na komunikaci s požadovanou přenosovou rychlostí 1, 382, 400 baudů. Vzhledem k tomu, že výchozí deska Arduino běží na 16 MHz, teoretická nekomprimovaná maximální bitová rychlost je 16 000 000 bitů/s. Zatím jsme dobří!

Na základě mého chápání SoftwareSerial.cpp se seiální komunikace provádí nastavením výstupního pinu High (= 1) nebo Low (= 0) s ohledem na zpoždění (které pochází z přenosové rychlosti) mezi změnami.

  • Výstupní pin je ve výchozím nastavení vysoký (znamená to žádná data), pak
  • a je přenesen počáteční bit (který táhne kolík nízko), poté
  • 8 bitů dat přenesených z LSB do MSB, (+5V, když bit 1 a 0 jinak) pak
  • je vyslán stop bit (který táhne kolík vysoko)

Tímto způsobem se 1 bajt přenáší pomocí 10 bitů.

Zpráva, kterou musíme poslat, je AT+BAUD8 (bez / n, / r na konci). Tento příkaz nastaví HC-06 zpět na přenosovou rychlost 115 200, kterou mohou zpracovávat běžné knihovny.

Abychom mohli odesílat bity rychlostí 1, 382, 400 bitů/s, pro každý bit máme čas 1/1, 382, 400 sekund (což je zhruba 723,38 ns) pro každý bit. Arduino běží na 16 000 000 000 MHz, takže každý cyklus trvá 1/16 000 000 sekund - to je 62,5 ns na cyklus.

Pomocí montážního kódu AVR můžeme pomocí příkazu OUT nastavit výstupní nebo nízký výstupní pin a NOP čekat přesně jeden cyklus CPU. Oba příkazy spotřebují přesně 1 cpu cyklus. Bitový čas 723,38 ns tak lze pokrýt 11 až 12 arduino instrukcemi na přenesený bit. Je třeba zvážit jednu věc: příkaz OUT nastaví celý bajt najednou, takže musíme vybrat PORTx, kde to není problém. Použití ATMEGA328P-PU například PORTD (arduino piny 0-7) je pro tento stav ideální. Po nastavení bitu musí uplynout pouze správný čas, což je provedeno o 10 až 11 NOP a je to.

Podrobnosti o výpočtu najdete v níže uvedeném souboru aplikace Excel. Tento soubor vygeneroval požadované montážní pokyny pro program. Po vložení vygenerovaného kódu bylo nutné provést pouze několik náhrad.

Krok 4: Další možnosti čtení/ vylepšení

  • Možná lze rychlejší knihovnu SoftwareSerial vytvořit pomocí techniky popsané v předchozím kroku.
  • FedericoK2 vytvořil skvělý nástroj, který generuje obnovovací kód HC-06 pro všechny možné přenosové rychlosti. Vstupte na web zde: https://tools.krum.com.ar/save_your_hc-06/ Děkuji FedericoK2

Doporučuje: