Բովանդակություն:

Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը ՝ 4 քայլ
Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը ՝ 4 քայլ

Video: Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը ՝ 4 քայլ

Video: Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը ՝ 4 քայլ
Video: Զազի համակարգչային ախտորոշման մեքենաները դա անում են ինքներդ 2024, Նոյեմբեր
Anonim
Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը
Վերականգնել սխալ կազմաձևված HC-06 Bluetooth մոդուլը

Pureուտ մաքսիմալիզմից ելնելով ՝ ես կարգաբերեցի իմ HC-06 Bluetooth (ստրուկ) մոդուլը baud փոխարժեքով 1, 382, 400 baud արագությամբ ՝ AT+BAUDC հրամանով: Այն ժամանակից ի վեր, ինչ Arduino- ն միացված էր դրան, չէր կարող օգտագործել մոդուլը SoftwareSerial գրադարանով: Ես փորձեցի վերականգնել բաուդ արագությունը Arduino- ի ապարատային սերիալով (կապում 0 և 1), առանց բախտի:

Ես նաև փորձեցի Google- ում թեման գտնել ՝ առանց գտնելու ընդունելի լուծում: Միգուցե համակարգչի ներկառուցված սերիական նավահանգստի օգտագործումը կարող էր լուծում լինել (տրամաբանական մակարդակի 12V- ից 3V3 տեղաշարժի դեպքում), բայց իմ համակարգիչը չունի այս հնացած նավահանգիստը, ուստի ես ստիպված եղա մեկ այլ լուծում տալ:

Քայլ 1: Այն, ինչ ձեզ հարկավոր կլինի

Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
  • Arudino/Genuino տախտակ ՝ լռելյայն Atmel ATMEGA328P-PU MCU- ով (@16MHz):
  • HC-06 Bluetooth մոդուլ, որը լսում է 1, 382, 400 բաուդ ձայնով
  • Հիմնական arduino IDE ՝ https://www.arduino.cc կայքից

Քայլ 2: Լուծում

Լուծումը
Լուծումը
Լուծումը
Լուծումը

Խնդրում ենք նկատի ունենալ, որ այս հրահանգը և լուծումը պատրաստված են 1, 382, 400 baud (AT+BAUDC) սցենարի համար: Լուծումը չի աշխատի այլ բաուդ դրույքաչափերի դեպքում: Այլ դեպքերի լուծման համար դիմեք քայլ 3 -ից սկսած քայլերին:

Լուծումն իսկապես պարզ է:

  1. Միացրեք HC-06- ի VCC կապը Arduino- ի 5V կապին:
  2. Միացրեք HC-06- ի GND կապը Arduino- ի GND կապին:
  3. Միացրեք HC-06- ի RXD կապը Arduino- ի 2-րդ կապին:
  4. HC-06- ի TXD քորոցը միացված թողեք (կամ միացեք 8-րդ կապին):
  5. Վերբեռնեք hc06reset.ino ուրվագիծը:
  6. Hրագիրը HC-06- ը կդնի 115, 200 baud ռեժիմի (AT+BAUD8):
  7. Օգտագործեք ձեր վերականգնված HC-06 մոդուլը, ինչպես նախկինում:

Քայլ 3: Կուլիսների հետևում…

Կուլիսների ետեւում…
Կուլիսների ետեւում…
Կուլիսների ետեւում…
Կուլիսների ետեւում…

Arduino IDE- ի հետ տրամադրվող SoftwareSerial գրադարանը ունակ է փոխանցել առավելագույնը 115, 200 բիթ/վայրկյան, այնպես որ բավականաչափ արագ չէ հաղորդակցվելու ցանկալի 1, 382, 400 բաուդ արագությամբ: Հաշվի առնելով, որ լռելյայն Arduino տախտակն աշխատում է 16 ՄՀց հաճախականությամբ, տեսականորեն չսեղմված առավելագույն բիթ -բիթը 16 000 000 000 բիթ/վրկ է: Մինչ այժմ մենք լավ ենք:

Հիմնվելով SoftwareSerial.cpp- ի իմ ընկալման վրա ՝ սերիալ հաղորդակցությունն իրականացվում է փոփոխությունների միջև ընկած ուշացման (որը գալիս է բաուդ արագությունից) ելքային բարձր (= 1) կամ ցածր (= 0) սահմանման միջոցով:

  • Ելքային քորոցը լռելյայն բարձր է (նշանակում է ՝ տվյալներ չկան), ապա
  • a Start bit- ը փոխանցվում է (որը ցածր է քաշում քորոցը), այնուհետև
  • LSB- ից MSB- ին փոխանցվող տվյալների 8 բիթ, (+5V, երբ բիթ 1 -ը և 0 -ն այլ կերպ) այն ժամանակ
  • փոխանցվում է Stop բիթ (որը բարձր է քաշում քորոցը)

Այս կերպ 1 բայթ է փոխանցվում ՝ օգտագործելով 10 բիթ:

Հաղորդագրությունը, որը մենք պետք է ուղարկենք, AT+BAUD8 է (առանց / n, / r վերջում): Այս հրամանը HC-06- ը վերադարձնում է 115, 200 baud փոխարժեքի, որը կարող է մշակվել սովորական գրադարանների կողմից:

Որպեսզի բիթեր ուղարկենք 1, 382, 400 բիթ/վրկ արագությամբ, յուրաքանչյուր բիտի համար մենք ունենք 1/1, 382, 400 վայրկյան ժամանակ (դա մոտավորապես 723.38 նս է) յուրաքանչյուր բիտի համար: Arduino- ն աշխատում է 16, 000, 000 ՄՀց արագությամբ, այնպես որ յուրաքանչյուր ցիկլ տևում է 1/16, 000, 000 վայրկյան, այսինքն 62,5 նս մեկ ցիկլի համար:

Օգտագործելով AVR հավաքման ծածկագիրը `մենք կարող ենք օգտագործել OUT հրամանը` ելքային քորոցը բարձր կամ ցածր սահմանելու համար, իսկ NOP- ը `սպասելու հենց մեկ պրոցեսորի ցիկլ: Երկու հրամաններն էլ ուտում են ճիշտ 1 պրոցեսորի ցիկլ: Այս կերպ 723.38 ns բիթ ժամանակը կարող է ծածկվել 11 -ից 12 arduino հրահանգներով ՝ յուրաքանչյուր փոխանցված բիտի համար: Մի բան պետք է հաշվի առնել. OUT հրամանը միանգամից սահմանում է մի ամբողջ բայթ, ուստի մենք պետք է ընտրենք PORTx, որտեղ դա խնդիր չէ: Օգտագործելով ATMEGA328P-PU, օրինակ ՝ PORTD (arduino կապում 0-7) կատարյալ է այս վիճակի համար: Բիթը դնելուց հետո պետք է լրանա միայն համապատասխան ժամանակը, որը կատարվում է 10 -ից 11 NOP- ով և վերջ:

Հաշվարկման մանրամասները կարող եք գտնել ստորև բերված Excel ֆայլում: Այս ֆայլը ստեղծեց ծրագրի համար անհրաժեշտ հավաքական հրահանգներ: Ստեղծված ծածկագիրը կպցնելուց հետո միայն մի քանի փոխարինում պետք է կատարվեր:

Քայլ 4. Հնարավորությունների հետագա ընթերցում/ կատարելագործում

  • Գուցե ավելի արագ SoftwareSerial գրադարան կարող է ստեղծվել ՝ օգտագործելով նախորդ Քայլում նկարագրված տեխնիկան:
  • FedericoK2- ը հիանալի գործիք է պատրաստել, որը ստեղծում է HC-06 վերականգնման ծածկագիրը ՝ հնարավոր յուրաքանչյուր բիթային արագության համար: Մուտք գործեք կայք այստեղ ՝ https://tools.krum.com.ar/save_your_hc-06/ Շնորհակալություն FedericoK2

Խորհուրդ ենք տալիս: