Cuprins:
- Pasul 1: De ce veți avea nevoie
- Pasul 2: Soluția
- Pasul 3: În culise …
- Pasul 4: Posibilități suplimentare de lectură / îmbunătățire
Video: Recuperați modulul HC-06 Bluetooth neconfigurat: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Din pur maximism, mi-am configurat modulul HC-06 Bluetooth (slave) la o rată de baud de 1, 382, 400 baud cu comanda AT + BAUDC. De când Arduino s-a conectat la acesta nu a mai putut utiliza modulul cu biblioteca SoftwareSerial. Am încercat să restabilesc rata de transmisie cu serialul hardware al lui Arduino (pinii 0 și 1) fără noroc.
De asemenea, am încercat să Google subiectul fără să găsesc o soluție acceptabilă. Poate că folosirea unui port serial încorporat al unui computer ar fi putut fi o soluție (cu schimbarea nivelului logic de 12V la 3V3), dar computerul meu nu are acest port învechit, așa că a trebuit să vin cu o altă soluție.
Pasul 1: De ce veți avea nevoie
- Placă Arudino / Genuino cu MCU Atmel ATMEGA328P-PU implicit (@ 16MHz).
- Un modul HC-06 Bluetooth care ascultă pe 1, 382, 400 baud
- IDE de bază arduino de la
Pasul 2: Soluția
Vă rugăm să rețineți că acest instructabil și soluția sunt făcute pentru scenariul de 1, 382, 400 baud (AT + BAUDC). Soluția nu va funcționa pentru alte rate de transmisie. Pentru a gestiona alte cazuri, vă rugăm să consultați pașii care încep de la Pasul 3.
Soluția este foarte simplă.
- Conectați pinul VCC al HC-06 la pinul 5V al Arduino.
- Conectați pinul GND al HC-06 la pinul GND al Arduino.
- Conectați pinul RXD al lui HC-06 la pinul 2 al Arduino.
- Lăsați pinul TXD HC-06 neconectat (sau conectați-l la pinul 8).
- Încărcați schița hc06reset.ino.
- Programul va seta HC-06 în modul 115, 200 baud (AT + BAUD8).
- Utilizați modulul HC-06 recuperat ca înainte.
Pasul 3: În culise …
Biblioteca SoftwareSerial care vine cu Arduino IDE este capabilă să transmită cel mult 115, 200 de biți / secundă, deci nu este suficient de rapidă pentru a comunica pe rata de 1, 382, 400 baud dorită. Având în vedere că o placă Arduino implicită rulează pe 16 MHz, rata de biți maximă teoretică necomprimată este de 16, 000, 000 biți / sec. Suntem buni până acum!
Pe baza înțelegerii mele despre SoftwareSerial.cpp, comunicarea seial se face prin setarea unui pin de ieșire High (= 1) sau Low (= 0) în ceea ce privește o întârziere (care provine din rata de transmisie) între modificări.
- Pinul de ieșire este ridicat în mod implicit (înseamnă că nu există date)
- se transmite un bit Start (care trage pinul jos), apoi
- 8 biți de date transmise de la LSB la MSB, (+ 5V când bitul 1 și 0 altfel) atunci
- se transmite un bit de oprire (care trage știftul în sus)
În acest fel, 1 octet este transmis folosind 10 biți.
Mesajul pe care trebuie să-l trimitem este AT + BAUD8 (fără / n, / r la final). Această comandă setează HC-06 înapoi la 115, 200 baud rate care pot fi gestionate de bibliotecile obișnuite.
Pentru a trimite biți cu viteză de 1, 382, 400 biți / sec, pentru fiecare bit avem timp de 1/1, 382, 400 secunde (adică aproximativ 723,38 ns) pentru fiecare bit. Arduino rulează pe 16 000 000 Mhz, deci fiecare ciclu durează 1/16 000 000 secunde - adică 62,5 ns pe ciclu.
Folosind codul de asamblare AVR putem folosi comanda OUT pentru a seta pinul de ieșire ridicat sau scăzut și NOP pentru a aștepta exact un ciclu CPU. Ambele comenzi consumă exact 1 ciclu de procesor. În acest fel, timpul de 723,38 ns bit poate fi acoperit de 11 până la 12 instrucțiuni arduino pe fiecare bit transmis. Un lucru de luat în considerare: comanda OUT setează un întreg octet simultan, deci trebuie să selectăm un PORTx în cazul în care aceasta nu este o problemă. Utilizarea ATMEGA328P-PU de exemplu PORTD (pinii arduino 0-7) este perfectă pentru această condiție. După setarea bitului, trebuie să treacă doar timpul adecvat, ceea ce se face de la 10 la 11 NOP-uri și atât.
Puteți găsi detalii de calcul în fișierul Excel de mai jos. Acest fișier a generat instrucțiunile necesare adunării pentru program. Doar câteva înlocuiri trebuiau făcute după lipirea codului generat.
Pasul 4: Posibilități suplimentare de lectură / îmbunătățire
- Poate că o bibliotecă SoftwareSerial mai rapidă poate fi realizată utilizând tehnica descrisă în pasul anterior.
- FedericoK2 a făcut un instrument excelent care generează codul de recuperare HC-06 pentru fiecare bitrate posibil. Accesați site-ul aici: https://tools.krum.com.ar/save_your_hc-06/ Mulțumesc FedericoK2
Recomandat:
Recuperați-vă căștile Bluetooth: 6 pași
Recuperați-vă căștile Bluetooth: probabil că ați abandonat căștile Bluetooth și cu fir, din cauza unor probleme minuscule. Aceste probleme pot include carcasa căștilor rupte, pauze interne în cabluri, prize deteriorate, printre altele. De obicei, aceste dispozitive deteriorate se acumulează pe
Cum să controlați becul folosind modulul Arduino UNO și modulul de releu de stat solid cu un singur canal 5V: 3 pași
Cum să controlați becul utilizând modulul de releu de stare solidă Arduino UNO și un canal 5V: Descriere: Comparativ cu releul mecanic tradițional, releul de stare solidă (SSR) are multe avantaje: are o durată de viață mai lungă, cu o pornire mult mai mare / viteza de oprire și fără zgomot. În plus, are și o rezistență mai bună la vibrații și mecanică
Cum să vă recuperați datele pierdute gratuit: 4 pași
Cum să vă recuperați datele pierdute gratuit: Știm cu toții că pierderea datelor este unul dintre cele mai grave lucruri din lume și aproape toți am trecut prin această problemă. Iată soluția pe care o așteptați, am găsit acest software care îmi permite să recuperez fișierele pierdute foarte ușor
Recuperați cheia CD-ului XP: 4 pași
Recuperați cheia CD-ului XP: Nu vă urăști când trebuie să vă reformatați hard diskul sau când se rupe? Ei bine, probabil că vă gândiți la voi înșivă „voi reinstala” și vă dați seama! @ # $ Am pierdut autocolantul cu cheia mea CD, sau copiii l-au rupt sau autocolantul din partea de sus a desktopului
LED intermitent utilizând modulul ESP32 NodeMCU WiFi și modulul Bluetooth Tutorial: 5 pași
LED intermitent utilizând modulul ESP32 NodeMCU WiFi și modulul Bluetooth Tutorial: Descriere NodeMCU este o platformă IoT open source. Este programat utilizând limbajul de scriptare Lua. Platforma se bazează pe proiecte open source eLua. Platforma utilizează o mulțime de proiecte open source, cum ar fi lua-cjson, spiffs. Acest ESP32 NodeMc