İçindekiler:

Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın: 4 Adım
Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın: 4 Adım

Video: Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın: 4 Adım

Video: Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın: 4 Adım
Video: Bildiri Oturumu-7 2024, Temmuz
Anonim
Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın
Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın

Saf maksimalizm dışında, AT+BAUDC komutuyla HC-06 Bluetooth (bağımlı) modülümü 1, 382, 400 baud baud hızına yapılandırdım. Arduino ona bağlandığından beri SoftwareSerial kütüphanesi ile modülü kullanamadı. Baud hızını Arduino'nun donanım serisiyle (0 ve 1 numaralı pinler) şanssız bir şekilde geri yüklemeye çalıştım.

Ben de fena bir çözüm bulamadan konuyu Google'a denedim. Belki bir bilgisayarın yerleşik seri portunu kullanmak bir çözüm olabilirdi (12V - 3V3 mantık seviyesi kayması ile), ancak bilgisayarımda bu eski port yok, bu yüzden başka bir çözüm bulmam gerekti.

Adım 1: Neye İhtiyacınız Olacak?

Neye ihtiyacınız olacak
Neye ihtiyacınız olacak
  • Varsayılan Atmel ATMEGA328P-PU MCU (@16MHz) ile Arudino/Genuino kartı.
  • 1, 382, 400 baud dinleyen bir HC-06 Bluetooth modülü
  • https://www.arduino.cc adresinden temel arduino IDE

2. Adım: Çözüm

Çözüm
Çözüm
Çözüm
Çözüm

Lütfen bu Eğitilebilir Tablonun ve çözümün 1, 382, 400 baud (AT+BAUDC) senaryosu için yapıldığını unutmayın. Çözüm, diğer baud hızları için çalışmayacaktır. Diğer durumları ele almak için lütfen Adım 3'ten başlayan adımlara bakın.

Çözüm gerçekten çok basit.

  1. HC-06'nın VCC pinini Arduino'nun 5V pinine bağlayın.
  2. HC-06'nın GND pinini Arduino'nun GND pinine bağlayın.
  3. HC-06'nın RXD pinini Arduino'nun pin 2'sine bağlayın.
  4. HC-06'nın TXD pinini bağlantısız bırakın (veya pin 8'e bağlayın).
  5. hc06reset.ino taslağını yükleyin.
  6. Program HC-06'yı 115,200 baud moduna (AT+BAUD8) ayarlayacaktır.
  7. Kurtarılan HC-06 modülünüzü daha önce olduğu gibi kullanın.

Adım 3: Perde Arkası…

Kamera ARKASI…
Kamera ARKASI…
Kamera ARKASI…
Kamera ARKASI…

Arduino IDE ile gelen SoftwareSerial kütüphanesi en fazla 115,200 bit/saniye aktarım kapasitesine sahip olduğundan istenilen 1,382,400 baud hızında haberleşebilecek kadar hızlı değildir. Varsayılan bir Arduino kartının 16 MHz'de çalıştığı göz önüne alındığında, teorik sıkıştırılmamış maksimum bit hızı 16.000.000 bit/sn'dir. Buraya kadar iyiyiz!

SoftwareSerial.cpp'den anladığım kadarıyla, seial iletişim, değişiklikler arasındaki gecikmeye (baud hızından gelen) göre bir çıkış pini Yüksek (=1) veya Düşük (=0) ayarlanarak yapılır.

  • Çıkış pini varsayılan olarak yüksektir (veri olmadığı anlamına gelir), ardından
  • bir Başlat biti iletilir (pim aşağı çeker), ardından
  • LSB'den MSB'ye iletilen 8 bit veri, (bit 1 ve 0 olduğunda +5V aksi halde)
  • bir Durdurma biti iletilir (pim yüksekte çekilir)

Bu şekilde 1 bayt 10 bit kullanılarak iletilir.

Göndermemiz gereken mesaj AT+BAUD8'dir (sonunda \n,\r olmadan). Bu komut, HC-06'yı normal kütüphaneler tarafından idare edilebilen 115,200 baud hızına geri ayarlar.

1, 382, 400 bit/sn hızında bit göndermek için, her bit için 1/1, 382, 400 saniye (yaklaşık 723,38 ns) zamanımız var. Arduino 16, 000, 000 Mhz'de çalışır, bu nedenle her döngü 1/16, 000, 000 saniye sürer - bu, döngü başına 62,5 ns'dir.

AVR montaj kodunu kullanarak, çıkış pinini yüksek veya düşük olarak ayarlamak için OUT komutunu ve tam olarak bir CPU döngüsü beklemek için NOP komutunu kullanabiliriz. Her iki komut da tam olarak 1 cpu döngüsü tüketir. Bu şekilde 723.38 ns bit süresi, iletilen bit başına 11 ila 12 arduino talimatı ile kapsanabilir. Dikkate alınması gereken bir şey: OUT komutu bir kerede bütün bir baytı ayarlar, bu yüzden bunun sorun olmadığı bir PORTx seçmeliyiz. ATMEGA328P-PU'yu kullanmak, örneğin PORTD (arduino pinleri 0-7), bu durum için mükemmeldir. Biti ayarladıktan sonra, yalnızca 10 ila 11 NOP tarafından yapılan uygun sürenin geçmesi gerekir ve bu kadar.

Hesaplama detaylarını aşağıdaki Excel dosyasında bulabilirsiniz. Bu dosya, program için gerekli montaj talimatlarını oluşturdu. Oluşturulan kodu yapıştırdıktan sonra yalnızca birkaç değişiklik yapılması gerekiyordu.

Adım 4: Daha Fazla Okuma/İyileştirme Olanakları

  • Belki önceki Adımda açıklanan teknik kullanılarak daha hızlı bir SoftwareSerial kitaplığı yapılabilir.
  • FedericoK2, olası her bit hızı için HC-06 kurtarma kodunu üreten harika bir araç yaptı. Siteye buradan erişin: https://tools.krum.com.ar/save_your_hc-06/ Teşekkürler FedericoK2

Önerilen: