Përmbajtje:

Rikuperoni modulin Bluetooth të konfiguruar gabimisht: 4 hapa
Rikuperoni modulin Bluetooth të konfiguruar gabimisht: 4 hapa

Video: Rikuperoni modulin Bluetooth të konfiguruar gabimisht: 4 hapa

Video: Rikuperoni modulin Bluetooth të konfiguruar gabimisht: 4 hapa
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Korrik
Anonim
Rikuperoni modulin Bluetooth të konfiguruar gabimisht
Rikuperoni modulin Bluetooth të konfiguruar gabimisht

Nga maksimalizmi i pastër, konfigurova modulin tim HC-06 Bluetooth (skllav) në një normë baud prej 1, 382, 400 baud me komandën AT+BAUDC. Që kur Arduino u lidh me të nuk ishte në gjendje të përdorte modulin me bibliotekën SoftwareSerial. Unë u përpoqa të rivendosja normën e baudit me serinë harduerike të Arduino (kunjat 0 & 1) pa fat.

Unë gjithashtu u përpoqa të kërkoj në Google temën pa gjetur një zgjidhje të pranueshme. Ndoshta përdorimi i një porti serik të integruar të një kompjuteri mund të ketë qenë një zgjidhje (me ndryshimin e nivelit logjik 12V në 3V3), por kompjuteri im nuk e ka këtë portë të vjetëruar, kështu që më është dashur të dal me një zgjidhje tjetër.

Hapi 1: Çfarë ju nevojitet

Ajo që do t'ju duhet
Ajo që do t'ju duhet
  • Bordi Arudino/Genuino me MCU të paracaktuar Atmel ATMEGA328P-PU (@16MHz).
  • Një modul Bluetooth HC-06 që dëgjon në 1, 382, 400 baud
  • Arduino IDE bazë nga

Hapi 2: Zgjidhja

Zgjidhja
Zgjidhja
Zgjidhja
Zgjidhja

Ju lutemi vini re se ky udhëzues dhe zgjidhja është bërë për skenarin 1, 382, 400 baud (AT+BAUDC). Zgjidhja nuk do të funksionojë për asnjë tarifë tjetër baud. Për të trajtuar raste të tjera, ju lutemi referojuni hapave duke filluar nga Hapi 3.

Zgjidhja është vërtet e thjeshtë.

  1. Lidhni kunjin VCC të HC-06 me pinin 5V të Arduino.
  2. Lidhni kunjin GND të HC-06 me pinin GND të Arduino.
  3. Lidhni kunjin RXD të HC-06 me kunjin 2 të Arduino.
  4. Lëreni pinin TXD të HC-06 të palidhur (ose lidheni me kunjin 8).
  5. Ngarko skicën hc06reset.ino.
  6. Programi do të vendosë HC-06 në modalitetin 115, 200 baud (AT+BAUD8).
  7. Përdorni modulin tuaj të rikuperuar HC-06 si më parë.

Hapi 3: Prapa Skenave…

Mbrapa skenave…
Mbrapa skenave…
Mbrapa skenave…
Mbrapa skenave…

Biblioteka SoftwareSerial që vjen me Arduino IDE është e aftë të transmetojë më së shumti 115, 200 bit/sekondë, kështu që nuk është aq e shpejtë sa të komunikojë me shpejtësinë e dëshiruar 1, 382, 400 baud. Duke pasur parasysh që një tabelë e paracaktuar Arduino funksionon në 16 MHz, bitrati maksimal teorik i pakompresuar është 16, 000, 000 bit/sek. Ne jemi mirë deri tani!

Bazuar në kuptimin tim të SoftwareSerial.cpp, komunikimi seial bëhet duke vendosur një pin dalës High (= 1) ose Low (= 0) në lidhje me një vonesë (që vjen nga norma e baudit) midis ndryshimeve.

  • Kodi i daljes është i lartë si parazgjedhje (do të thotë nuk ka të dhëna), atëherë
  • një bit Fillimi transmetohet (i cili tërheq pinin poshtë), atëherë
  • 8 bit të të dhënave të transmetuara nga LSB në MSB, (+5V kur bit 1 dhe 0 ndryshe) atëherë
  • transmetohet një bit Stop (i cili tërheq pinin lart)

Në këtë mënyrë 1 bajt transmetohet duke përdorur 10 bit.

Mesazhi që duhet të dërgojmë është AT+BAUD8 (pa / n, / r në fund). Kjo komandë e kthen HC-06 në normën 115, 200 baud e cila mund të trajtohet nga bibliotekat e rregullta.

Për të dërguar bit me shpejtësi 1, 382, 400 bit/sek, për secilin bit kemi 1/1, 382, 400 sekonda kohë (që është afërsisht 723.38 ns) për secilin bit. Arduino funksionon në 16, 000, 000 Mhz, kështu që çdo cikël zgjat 1/16, 000, 000 sekonda - që është 62.5 ns për cikël.

Duke përdorur kodin e montimit AVR ne mund të përdorim komandën OUT për të vendosur pinin dalës të lartë ose të ulët dhe NOP për të pritur saktësisht një cikël CPU. Të dy komandat hanë saktësisht 1 cikël CPU. Në këtë mënyrë koha e bitit 723.38 ns mund të mbulohet nga 11 deri në 12 udhëzime arduino për bit të transmetuar. Një gjë për t'u marrë parasysh: komanda OUT vendos një bajt të tërë menjëherë, kështu që ne duhet të zgjedhim një PORTx ku ky nuk është problem. Përdorimi i ATMEGA328P-PU për shembull PORTD (kunjat arduino 0-7) është i përsosur për këtë gjendje. Pas vendosjes së bitit, duhet të kalojë vetëm koha e duhur e cila bëhet nga 10 deri në 11 NOP dhe kaq.

Ju mund të gjeni detajet e llogaritjes në skedarin Excel më poshtë. Ky skedar krijoi udhëzimet e nevojshme të grumbulluara për programin. Vetëm disa zëvendësime duhej të bëheshin pas ngjitjes së kodit të gjeneruar.

Hapi 4: Lexim i mëtejshëm/ Përmirësimi i mundësive

  • Ndoshta një bibliotekë më e shpejtë SoftwareSerial mund të bëhet duke përdorur teknikën e përshkruar në Hapin e mëparshëm.
  • FedericoK2 krijoi një mjet të shkëlqyeshëm që gjeneron kodin e rimëkëmbjes HC-06 për çdo bitrate të mundshme. Hyni në sit këtu: https://tools.krum.com.ar/save_your_hc-06/ Faleminderit FedericoK2

Recommended: