Spisu treści:
- Krok 1: Czego będziesz potrzebować
- Krok 2: Rozwiązanie
- Krok 3: Za kulisami…
- Krok 4: Dalsze czytanie/Możliwości doskonalenia
Wideo: Odzyskaj źle skonfigurowany moduł Bluetooth HC-06: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Z czystego maksymalizmu skonfigurowałem mój moduł Bluetooth HC-06 (slave) na szybkość transmisji 1,382,400 bodów za pomocą polecenia AT + BAUDC. Odkąd Arduino do niego podłączone nie było w stanie korzystać z modułu z biblioteką SoftwareSerial. Próbowałem przywrócić szybkość transmisji za pomocą szeregowego sprzętu Arduino (piny 0 i 1) bez powodzenia.
Próbowałem też wygooglować temat bez znalezienia zadowalającego rozwiązania. Być może rozwiązaniem byłoby użycie wbudowanego portu szeregowego komputera (z przełączaniem poziomów logicznych 12V na 3V3), ale mój komputer nie ma tego przestarzałego portu, więc musiałem wymyślić inne rozwiązanie.
Krok 1: Czego będziesz potrzebować
- Płyta Arudino/Genuino z domyślnym mikrokontrolerem Atmel ATMEGA328P-PU (@16MHz).
- Moduł Bluetooth HC-06 nasłuchujący na 1,382,400 bodach
- Podstawowe IDE arduino z
Krok 2: Rozwiązanie
Należy pamiętać, że ta instrukcja i rozwiązanie jest przeznaczone dla scenariusza 1,382,400 bodów (AT + BAUDC). Rozwiązanie nie będzie działać dla innych szybkości transmisji. Aby poradzić sobie z innymi przypadkami, zapoznaj się z krokami zaczynając od kroku 3.
Rozwiązanie jest naprawdę proste.
- Podłącz pin VCC HC-06 do pinu 5V Arduino.
- Połącz pin GND HC-06 z pinem GND Arduino.
- Podłącz pin RXD HC-06 do pinu 2 Arduino.
- Pozostaw pin TXD HC-06 niepodłączony (lub podłącz do pinu 8).
- Prześlij szkic hc06reset.ino.
- Program ustawi HC-06 w tryb 115, 200 bodów (AT+BAUD8).
- Użyj odzyskanego modułu HC-06 jak poprzednio.
Krok 3: Za kulisami…
Biblioteka SoftwareSerial dostarczana z Arduino IDE jest w stanie przesyłać maksymalnie 115, 200 bitów na sekundę, więc nie jest wystarczająco szybka, aby komunikować się z pożądaną szybkością 1,382, 400 bodów. Biorąc pod uwagę, że domyślna płyta Arduino działa na 16 MHz, teoretyczna maksymalna nieskompresowana przepływność wynosi 16 000 000 bitów na sekundę. Jak dotąd jesteśmy dobrzy!
Opierając się na moim zrozumieniu SoftwareSerial.cpp, komunikacja seial odbywa się poprzez ustawienie pinu wyjściowego High (=1) lub Low (=0) w odniesieniu do opóźnienia (wynikającego z szybkości transmisji) między zmianami.
- Pin wyjściowy jest domyślnie wysoki (oznacza brak danych), a następnie
- bit startowy jest przesyłany (co obniża pin), a następnie
- 8 bitów danych przesyłanych z LSB do MSB (+5V gdy bit 1 i 0 inaczej) wtedy
- przesyłany jest bit stopu (który podnosi pin w górę)
W ten sposób 1 bajt jest przesyłany za pomocą 10 bitów.
Wiadomość, którą musimy wysłać, to AT+BAUD8 (bez \n, \r na końcu). To polecenie ustawia HC-06 z powrotem na 115, 200 bodów, które mogą być obsługiwane przez zwykłe biblioteki.
Aby wysłać bity z prędkością 1,382,400 bitów/s, na każdy bit mamy czas 1/1,382,400 sekund (czyli w przybliżeniu 723,38 ns) na każdy bit. Arduino działa na 16 000 000 MHz, więc każdy cykl trwa 1/16 000 000 sekund - czyli 62,5 ns na cykl.
Używając kodu asemblera AVR, możemy użyć polecenia OUT, aby ustawić pin wyjściowy na wysoki lub niski, a NOP, aby odczekać dokładnie jeden cykl procesora. Obie komendy pochłaniają dokładnie 1 cykl procesora. W ten sposób czas bitowy 723,38 ns może być pokryty przez 11 do 12 instrukcji arduino na transmitowany bit. Jedna rzecz do rozważenia: polecenie OUT ustawia cały bajt na raz, więc musimy wybrać PORTx, gdzie nie stanowi to problemu. Zastosowanie ATMEGA328P-PU na przykład PORTD (piny arduino 0-7) jest idealne do tego stanu. Po ustawieniu bitu musi upłynąć tylko odpowiedni czas, który jest wykonywany od 10 do 11 NOP-ów i tyle.
Szczegóły obliczeń znajdziesz w pliku Excel poniżej. Ten plik wygenerował wymagane instrukcje montażu dla programu. Wystarczyło tylko kilka podmian po wklejeniu wygenerowanego kodu.
Krok 4: Dalsze czytanie/Możliwości doskonalenia
- Być może można stworzyć szybszą bibliotekę SoftwareSerial przy użyciu techniki opisanej w poprzednim kroku.
- FedericoK2 stworzył świetne narzędzie, które generuje kod odzyskiwania HC-06 dla każdego możliwego bitrate. Wejdź na stronę tutaj: https://tools.krum.com.ar/save_your_hc-06/ Dziękuję FedericoK2
Zalecana:
Odzyskaj słuchawki Bluetooth: 6 kroków
Odzyskaj słuchawki Bluetooth: Prawdopodobnie porzuciłeś słuchawki Bluetooth i przewodowe leżące w pobliżu z powodu drobnych problemów. Problemy te mogą obejmować między innymi pękniętą obudowę wkładki dousznej, wewnętrzne przerwy w kablach, uszkodzone wtyczki. Zwykle te uszkodzone urządzenia gromadzą
Odzyskaj zaciski baterii 9 V z rozładowanych baterii: 10 kroków
Odzyskaj zaciski baterii 9 V z wyczerpanych baterii: Możesz użyć górnej części starej baterii 9 V jako zacisku baterii 9 V do różnych projektów elektronicznych. „Klips 9V” jest również używany w niektórych uchwytach na baterie o różnych napięciach (np. Zestaw baterii 4AA). Oto jak zrobić ładną wersję z przewodami
Odzyskaj klucz CD XP: 4 kroki
Recover XP CD KEY: Nie nienawidzisz, gdy musisz ponownie sformatować dysk twardy lub gdy się psuje? Cóż, prawdopodobnie myślisz sobie „po prostu zainstaluję ponownie” i zdajesz sobie sprawę, że !@#$ zgubiłem naklejkę z moim kluczem do płyty CD, albo dzieci ją oderwały, albo naklejkę na biurku
Odzyskaj usunięte pliki, bardzo łatwe i przyjazne dla użytkownika.: 7 kroków
Odzyskaj usunięte pliki, bardzo łatwe i przyjazne dla użytkownika: Czy kiedykolwiek usunąłeś plik z zapasowego dysku twardego, aparatu, mp3, a nawet opróżniłeś kosz, a potem zdałeś sobie sprawę, że nadal chcesz ten plik? To prosty sposób na odzyskanie tych plików. Dodałem ten instruktażowy, ponieważ usunąłem każdy odcinek rodziny g
Odzyskaj dane z martwego komputera: 4 kroki
Odzyskaj dane z martwego komputera: Obejmuje to usunięcie dysku twardego z martwego komputera i sprawienie, by wyglądał jak zewnętrzny dysk twardy na innym komputerze. Będziesz potrzebować:Drugiego komputeraZewnętrznego dysku twardegoUwaga: Zewnętrzny dysk twardy musi być tego samego typu co docelowy dysk twardy