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, Juli
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 bauda pomoću naredbe AT+BAUDC. Od kada je Arduino povezan s njim, nije mogao koristiti modul s bibliotekom SoftwareSerial. Pokušao sam vratiti brzinu prijenosa s Arduino hardverskom serijom (pinovi 0 i 1) bez sreće.

Pokušao sam i proguglati temu, ali nisam našao prolazno rješenje. Možda bi korištenje računara sa ugrađenim serijskim portom moglo biti rješenje (s pomakom logičkog nivoa od 12V do 3V3), ali moj računar nema ovaj zastarjeli port, pa sam morao smisliti drugo rješenje.

Korak 1: Šta će vam trebati

Šta će vam trebati
Šta ć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

Rjesenje
Rjesenje
Rjesenje
Rjesenje

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 zaista 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. Otpremite hc06reset.ino skicu.
  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 osnovu 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 startni bit (koji povlači pin nisko)
  • 8 bita podataka prenesenih iz LSB -a u MSB, (+5V kada su bit 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 biblioteke.

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 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 izlaznog pina visoko ili nisko, a NOP za čekanje točno jednog ciklusa CPU -a. Obje naredbe troše tačno 1 procesorski ciklus. Na ovaj način vrijeme bita od 723,38 ns može biti pokriveno sa 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 obavi 10 do 11 NOP -ova i to je to.

Detalje izračuna možete pronaći u Excel datoteci ispod. Ova datoteka generirala je 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 može napraviti brža biblioteka SoftwareSerial pomoću tehnike opisane u prethodnom koraku.
  • FedericoK2 je napravio odličan alat koji generira kôd za oporavak HC-06 za svaki mogući bitrate. Pristupite web stranici ovdje: https://tools.krum.com.ar/save_your_hc-06/ Hvala FedericoK2

Preporučuje se: