Sadržaj:

Oporavak pogrešno konfiguriranog Bluetooth modula HC-06: 4 koraka
Oporavak pogrešno konfiguriranog Bluetooth modula HC-06: 4 koraka

Video: Oporavak pogrešno konfiguriranog Bluetooth modula HC-06: 4 koraka

Video: Oporavak pogrešno konfiguriranog Bluetooth modula HC-06: 4 koraka
Video: Nexx WT3020 как из принтера с USB сделать сетевой с WiFi, обзор + прошивка Padavan 2024, Studeni
Anonim
Oporavak pogrešno konfiguriranog Bluetooth modula HC-06
Oporavak pogrešno konfiguriranog Bluetooth modula HC-06

Iz čistog maksimalizma, ja sam svoj HC-06 Bluetooth (slave) modul konfigurirao na brzinu prijenosa od 1, 382, 400 baud pomoću naredbe AT+BAUDC. Otkad je Arduino povezan s njim, nije mogao koristiti modul s bibliotekom SoftwareSerial. Pokušao sam vratiti brzinu prijenosa s Arduinovom hardverskom serijom (pinovi 0 i 1) bez sreće.

Također sam pokušao proguglati temu, ali nisam našao prolazno rješenje. Možda bi korištenje računala ugrađenog serijskog porta moglo biti rješenje (s pomakom logičke razine od 12V do 3V3), ali moje računalo nema ovaj zastarjeli port, pa sam morao smisliti drugo rješenje.

Korak 1: Ono što će vam trebati

Ono što će vam trebati
Ono što će vam trebati
  • Arudino/Genuino ploča sa zadanim Atmel ATMEGA328P-PU MCU (@16MHz).
  • Bluetooth-modul HC-06 koji sluša na 1, 382, 400 bauda
  • Osnovni arduino IDE sa

Korak 2: Rješenje

Rješenje
Rješenje
Rješenje
Rješenje

Imajte na umu da je ovaj Instructable i rješenje napravljeno za scenarij od 1, 382, 400 bauda (AT+BAUDC). Rješenje neće raditi za bilo koju drugu brzinu prijenosa. Za rješavanje drugih slučajeva, pogledajte korake počevši od koraka 3.

Rješenje je doista jednostavno.

  1. Spojite VCC pin HC-06 na pin 5V Arduina.
  2. Spojite GND pin HC-06 na GND pin Arduina.
  3. Spojite RXD pin HC-06 na pin 2 Arduina.
  4. Ostavite HC-06 TXD pin nepovezan (ili ga spojite na pin 8).
  5. Prenesite skicu hc06reset.ino.
  6. Program će postaviti HC-06 u 115, 200 baud način (AT+BAUD8).
  7. Koristite obnovljeni HC-06 modul kao i prije.

Korak 3: Iza kulisa …

Iza scene…
Iza scene…
Iza scene…
Iza scene…

Knjižnica SoftwareSerial koja dolazi s Arduino IDE -om može prenositi najviše 115, 200 bita/sekundi, pa nije dovoljno brza za komunikaciju na željenoj brzini prijenosa podataka 1, 382, 400. S obzirom na to da zadana Arduino ploča radi na 16MHz, teoretski nekomprimirani maksimalni bitrejt je 16 000 000 bita/sek. Do sada smo dobri!

Na temelju mog razumijevanja SoftwareSerial.cpp, serijska komunikacija se vrši postavljanjem izlaznog pina High (= 1) ili Low (= 0) s obzirom na kašnjenje (koje dolazi iz brzine prijenosa) između promjena.

  • Izlazni pin je prema zadanim postavkama visok (znači da nema podataka)
  • a zatim se prenosi početni bit (koji povlači pin nisko)
  • 8 bita podataka prenesenih iz LSB -a u MSB, (+5V kada su bitovi 1 i 0 u suprotnom) tada
  • prenosi se stop bit (koji povlači pin visoko)

Na ovaj način 1 bajt se prenosi pomoću 10 bita.

Poruka koju moramo poslati je AT+BAUD8 (bez / n, / r na kraju). Ova naredba vraća HC-06 na brzinu od 115, 200 bauda kojom se mogu baviti obične knjižnice.

Za slanje bitova brzinom 1, 382, 400 bita/sek, za svaki bit imamo 1/1, 382, 400 sekundi vremena (to je otprilike 723,38 ns) za svaki bit. Arduino radi na 16 000 000 000 Mhz, pa svaki ciklus traje 1/16 000 000 sekundi - to je 62,5 ns po ciklusu.

Pomoću koda sklopa AVR -a možemo koristiti naredbu OUT za postavljanje visokog ili niskog izlaznog pina, a NOP za čekanje točno jednog ciklusa CPU -a. Obje naredbe troše točno 1 ciklus procesora. Na ovaj način vrijeme bita od 723,38 ns može biti pokriveno s 11 do 12 arduino instrukcija po prenesenom bitu. Treba uzeti u obzir jednu stvar: naredba OUT postavlja cijeli bajt odjednom, pa moramo odabrati PORTx gdje to nije problem. Korištenje ATMEGA328P-PU na primjer PORTD (arduino pinovi 0-7) savršeno je za ovo stanje. Nakon postavljanja bita, mora proći samo odgovarajuće vrijeme koje se obavi s 10 do 11 NOP -ova i to je to.

Pojedinosti o proračunu možete pronaći u Excel datoteci u nastavku. Ova je datoteka generirala potrebne skupne upute za program. Nakon lijepljenja generiranog koda moralo se izvršiti samo nekoliko zamjena.

Korak 4: Dodatne mogućnosti čitanja/ poboljšanja

  • Možda se brža biblioteka SoftwareSerial može napraviti pomoću tehnike opisane u prethodnom koraku.
  • FedericoK2 napravio je sjajan alat koji generira HC-06 kôd za oporavak za svaku moguću bitrate. Pristupite web mjestu ovdje: https://tools.krum.com.ar/save_your_hc-06/ Hvala FedericoK2

Preporučeni: