Obsah:
- Krok 1: Co budete potřebovat
- Krok 2: Řešení
- Krok 3: Ze zákulisí…
- Krok 4: Další možnosti čtení/ vylepšení
Video: Obnovte špatně nakonfigurovaný modul Bluetooth HC-06: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
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
- 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í
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é.
- Připojte pin VCC HC-06 k 5V pinu Arduina.
- Připojte pin GND HC-06 ke kolíku GND Arduina.
- Připojte pin RXD HC-06 ke kolíku 2 Arduina.
- Ponechte pin TXD HC-06 nezapojený (nebo připojte na pin 8).
- Nahrajte skicu hc06reset.ino.
- Program nastaví HC-06 do režimu 115 200 baudů (AT+BAUD8).
- Obnovený modul HC-06 použijte jako dříve.
Krok 3: Ze 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:
Obnovte své Bluetooth sluchátko: 6 kroků
Obnovte své Bluetooth sluchátko: Pravděpodobně jste kvůli nějakým drobným problémům nechali ležet Bluetooth a kabelová sluchátka. Mezi tyto problémy může patřit mimo jiné rozbité pouzdro sluchátka, vnitřní přerušení kabelů, poškozené zástrčky. Obvykle se tato poškozená zařízení hromadí o
Obnovte Game Boy nebo podobnou elektroniku: 7 kroků (s obrázky)
Obnovte Game Boy nebo podobnou elektroniku: Nejprve vám děkuji, že jste si prohlédli můj návod! Jste skvělí. Za druhé, věnoval jsem videu YouTube spoustu času, takže se na něj také podívejte, tím se vše vysvětluje. Video:
Obnovte nebo upgradujte firmware na modulu ESP8266 (ESP-01) pomocí Arduino UNO: 7 kroků
Obnovte nebo upgradujte firmware na modulu ESP8266 (ESP-01) pomocí Arduino UNO: Modul ESP-01, který jsem použil, byl původně dodáván se starším firmwarem AI Thinker, který omezuje jeho možnosti, protože mnoho užitečných AT příkazů není podporováno. Obecně je dobré aktualizovat firmware kvůli opravám chyb a také v závislosti na
Ring Solar Sign Teardown: Udělal jsem to špatně, takže nemusíte: 11 kroků
Ring Solar Sign Teardown: Udělal jsem to špatně, takže nemusíte: Dostal jsem Ring Doorbell, což je docela úžasné. Hurá na prsten. Pak jsem dostal kameru Ring Stick, když probíhaly všechny online prodeje na Den díkůvzdání. Sleva 50 $ a poslali mi tento šikovný sluneční prsten ZDARMA (pouze hodnota 49 $!). Jsem si jistý, že
Obnovte klíč XP CD: 4 kroky
Obnovit klíč XP CD: Nenávidíte, když musíte přeformátovat pevný disk nebo když se rozbije? Pravděpodobně si říkáte „Jen přeinstaluji“a uvědomíte si to!@#$ Ztratil jsem nálepku pomocí svého klíče CD, nebo ji děti odtrhly nebo nálepku nahoře na deskt