İçindekiler:
- Adım 1: Neye İhtiyacınız Olacak?
- 2. Adım: Çözüm
- Adım 3: Perde Arkası…
- Adım 4: Daha Fazla Okuma/İyileştirme Olanakları
Video: Yanlış Yapılandırılmış HC-06 Bluetooth Modülünü Kurtarın: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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?
- 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
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.
- HC-06'nın VCC pinini Arduino'nun 5V pinine bağlayın.
- HC-06'nın GND pinini Arduino'nun GND pinine bağlayın.
- HC-06'nın RXD pinini Arduino'nun pin 2'sine bağlayın.
- HC-06'nın TXD pinini bağlantısız bırakın (veya pin 8'e bağlayın).
- hc06reset.ino taslağını yükleyin.
- Program HC-06'yı 115,200 baud moduna (AT+BAUD8) ayarlayacaktır.
- Kurtarılan HC-06 modülünüzü daha önce olduğu gibi kullanın.
Adım 3: Perde Arkası…
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:
Bluetooth Kulaklığınızı Kurtarın: 6 Adım
Bluetooth Kulaklığınızı Kurtarın: Muhtemelen birkaç dakika süren sorunlar nedeniyle Bluetooth ve kablolu kulaklıkları terk ettiniz. Bu sorunlar, diğerlerinin yanı sıra kırık kulaklık muhafazası, kablolardaki dahili kırılmalar, hasarlı fişler olabilir. Genellikle, bu hasarlı cihazlar birikir
SSS Yapılandırılmış Gitar Pickguard'ı Lehimleme: 3 Adım
SSS Yapılandırılmış Gitar Pickguard'ı Lehimleme: Talimatta, kendi SSS gitar pickguard'ınızı kablolama sürecinden geçeceğim. Öncelikle, bu projeyi yapıyorsanız, sürece giren kısımları iyi bir şekilde anlamaya çalışmalısınız. SSS formatı temelde üç
Ring Solar Sign Teardown: Yanlış Yaptım, Yapmanız Gerekmesin: 11 Adım
Ring Solar Sign Teardown: Yanlış Yaptım, Yapmanız Gerekmiyor: Oldukça harika olan bir Ring Doorbell'im var. Yay için Ring.Sonra Şükran Günü'ndeki tüm çevrimiçi satışlar devam ederken bir Ring Stick-up kameram var. 50 $ indirim ve bana bu şık Yüzük güneş işaretini ÜCRETSİZ olarak gönderdiler (sadece 49 $ değerinde!). eminim
Bir Güneş Paneli Denetleyicisini 'yanlış kullanarak' 12v/5v UPS: 5 Adım
Bir Güneş Paneli Denetleyicisini 'kötüye kullanarak' 12v/5v UPS: Hiç bir proje için bir UPS istediniz mi? Şebeke UPS'lerinin çılgın fiyatlarına baktım ve sadece düşük voltajlı bir şeye güç vermek istediğimi düşündüm. Bu talimat sizin için o zaman! Bir sma oluşturmak için bir güneş paneli denetleyicisini 'kötüye kullanmanız' gerektiğini göstereceğim
Python Dilinde Yapılandırılmış Işık ve Stereo Görüşe Dayalı DIY 3D Tarayıcı: 6 Adım (Resimlerle)
Python Dilinde Yapılandırılmış Işık ve Stereo Görüşe Dayalı DIY 3D Tarayıcı: Bu 3D tarayıcı, video projektörü ve web kameraları gibi düşük maliyetli geleneksel öğeler kullanılarak yapılmıştır. Yapılandırılmış hafif bir 3D tarayıcı, yansıtılan ışık desenleri ve bir kamera sistemi kullanarak bir nesnenin üç boyutlu şeklini ölçmek için bir 3D tarama cihazıdır