Sistemi kurdunuz, kodları yüklediniz ama terminalde sadece anlamsız karakterler akıyor... Ya da daha kötüsü, hiçbir şey yok. Endişelenmeyin, UART sorunlarının %90'ı aşağıdaki 3 sebepten kaynaklanır.
Bu bölümde, görünmez sinyalleri nasıl görünür kılacağımızı öğreneceğiz.
Terminalde `` veya RW¥å gibi anlamsız semboller görüyorsanız, iletişim var ama anlaşma yok demektir.
- Baud Rate Uyuşmazlığı (En Sık):
- Verici 9600, Alıcı 115200 ile dinliyorsa veri çöp olur.
- Çözüm: Cihazın datasheet'ini kontrol edin veya Logic Analyzer ile hızı ölçün (Bkz: 4.3).
- GND (Toprak) Eksikliği:
- İki cihazın toprağı birleşmezse, voltaj seviyeleri "yüzer" (floating). 0 mı 1 mi olduğu belli olmaz.
- Çözüm: Hemen bir jumper kablo ile iki cihazın GND pinlerini birleştirin.
- Hatalı Kristal:
- Ucuz Arduino klonlarında kristal kalitesiz olabilir ve %2'den fazla frekans kayması yaşatabilir.
Ekranda hiçbir şey akmıyorsa durum daha ciddidir. Donanımsal bir kopukluk olabilir.
- TX-RX Çapraz Bağlanmadı:
- TX -> TX ve RX -> RX bağlamak en klasik hatadır. İki kişi aynı anda konuşursa kimse duymaz.
- Çözüm: Kabloları ters çevirip deneyin.
- Voltaj Seviyesi Hatası (RS232 vs TTL):
- Sensör RS232 (±12V) ise ve siz bunu ESP32'ye (3.3V) direk bağladıysanız, ESP32'nin pini yanmış olabilir.
- Kötü Lehim / Temassızlık:
- Breadboard üzerindeki jumper kabloların içi bazen kopuk olabilir. Multimetre ile "Kısa Devre Testi" (Buzzer) yapın.
Elinizde dokümanı olmayan, siyah kutu bir cihaz var. Sadece 3 kablosu (TX, RX, GND) çıkıyor. Hızı nedir? Protokolü nedir? Bunu bulmak için 5$'lık bir Logic Analyzer (Saleae Klonu) hayat kurtarır.
- Bağlantı: Cihazın TX pinini Logic Analyzer'ın CH1 pinine, GND'yi GND'ye bağlayın.
- Örnekleme: Logic yazılımını (PulseView) açın ve yüksek bir hızda (örneğin 24 MHz) kayıt başlatın.
- Ölçüm: Cihazı açıp kapatarak veri göndermesini sağlayın. Ekranda dijital dalgalar göreceksiniz.
-
Analiz:
- En DAR (kısa) darbe genişliğini bulun. Bu, tek bir bitin süresidir (
$T_{bit}$ ). - Formül:
$\text{Baud Rate} = \frac{1}{T_{bit}}$
- En DAR (kısa) darbe genişliğini bulun. Bu, tek bir bitin süresidir (
Örnek: En kısa darbeyi 8.68 µs ölçtünüz.
$1 / 0.00000868 = 115,207$ Tebrikler! Cihazın hızı 115200 Baud.
graph TD
subgraph SIGNAL [Sinyal Analizi]
P1[Darbe Genişliği: 104 µs] --> R1[1 / 0.000104 = 9615] --> C1{Sonuç: 9600 Baud}
P2[Darbe Genişliği: 8.68 µs] --> R2[1 / 0.00000868 = 115207] --> C2{Sonuç: 115200 Baud}
end
style C1 fill:#c8e6c9,stroke:#2e7d32
style C2 fill:#c8e6c9,stroke:#2e7d32
Bilgisayardan ESP32'ye bağlanmak için kullandığımız o renkli USB çeviriciler (CP2102, CH340, FTDI) bazen sahte çıkabilir.
- Sahte FTDI Çipleri: Windows güncellemesiyle "brick" olabilir (çalışmaz hale gelebilir).
- 3.3V / 5V Jumper: Bazı dönüştürücülerde voltaj seçimi için minik bir jumper vardır. ESP32 için bunun 3.3V konumunda olduğundan emin olun. 5V verirseniz modülü yakabilirsiniz.
Artık bir UART ustasısınız. Sahaya çıkmadan önce son kontrol listeniz:
- GND Bağlı mı? (En kritik madde)
- TX -> RX'e gidiyor mu? (Çapraz bağlantı)
- Voltaj Seviyeleri Eşit mi? (3.3V <-> 3.3V)
- Baud Rate Aynı mı? (9600, 115200...)
- Kablo Mesafesi Uygun mu? (TTL için max 50cm, RS485 için 1km)