İçindekiler:

Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2: 4 Adım (Resimlerle)
Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2: 4 Adım (Resimlerle)

Video: Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2: 4 Adım (Resimlerle)

Video: Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2: 4 Adım (Resimlerle)
Video: Kablosuz RF 433MHz Alıcı-Verici Modül ile Uzaktan Kumandalı Priz Oda Lambası (Arduino UNO) 2024, Aralık
Anonim
Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2
Ucuz 433MHz RF Modülleri ve Pic Mikrodenetleyiciler Kullanan Kablosuz İletişim. Bölüm 2

Bu talimatın ilk bölümünde, ucuz TX/RX 433MHz modüllerini kullanarak kablosuz olarak basit bir dize göndermek için MPLAB IDE ve XC8 derleyici kullanarak bir PIC12F1822'nin nasıl programlanacağını gösterdim.

Alıcı modülü bir USB'den UART TTL kablo adaptörüne bir PC'ye bağlandı ve alınan veriler RealTerm'de görüntülendi. İletişim 1200 baud'da gerçekleştirildi ve ulaşılan maksimum menzil duvarlardan yaklaşık 20 metre idi. Testlerim, yüksek veri hızına ve uzun menzile ihtiyaç duyulmayan uygulamalarda ve sürekli iletim için bu modüllerin son derece iyi performans gösterdiğini gösterdi.

Bu projenin ikinci kısmı, alıcıya bir PIC16F887 mikrodenetleyici ve 16×2 karakter LCD modülünün nasıl ekleneceğini gösterir. Ayrıca, vericide, birkaç ön örnek baytının eklenmesiyle basit bir protokol izlenir. Bu baytlar, gerçek yükü almadan önce RX modülünün kazancını ayarlaması için gereklidir. Alıcı tarafında, PIC, LCD ekranda görüntülenen verilerin alınmasından ve doğrulanmasından sorumludur.

Adım 1: Verici Değişiklikleri

Verici Değişiklikleri
Verici Değişiklikleri
Verici Değişiklikleri
Verici Değişiklikleri
Verici Değişiklikleri
Verici Değişiklikleri

İlk kısımda, verici saniyede 1200 bit hızında sekiz veri biti, bir başlatma ve bir durdurma biti kullanarak birkaç ms'de bir basit bir dizi gönderiyordu. İletim neredeyse sürekli olduğu için alıcı, kazancını alınan verilere göre ayarlamakta sorun yaşamadı. İkinci kısımda, bellenim, iletimin her 2.3 saniyede bir gerçekleştirileceği şekilde değiştirilir. Bu, her iletim arasında uyku moduna alınan mikro denetleyiciyi uyandırmak için watchdog zamanlayıcı kesmesi (2.3s'ye ayarlanmış) kullanılarak elde edilir.

Alıcının kazancına ince ayar yapması için zamana sahip olması için, gerçek verilerden önce kısa LO süreleri "(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)" olan birkaç başlangıç baytı gönderilir. Yük daha sonra bir başlangıç '&' ve bir durdurma '*' baytı ile gösterilir.

Bu nedenle, basit protokol aşağıdaki gibi tanımlanır:

(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)&Merhaba InstWorld!*

Ayrıca, dc-dc yükseltme modülünün neden olduğu dalgalanmadan kurtulmak için RF modülünün V+ ve GND arasına 10 uF dekuplaj tantal kondansatör eklenir.

Baud hızı aynı kaldı, ancak testlerim 2400 baud'da da iletimin verimli olduğunu gösterdi.

Adım 2: Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme

Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme
Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme
Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme
Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme
Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme
Alıcı Değişiklikleri: PIC16F887 ve HD44780 LCD Ekleme

Alıcı tasarımı PIC16F887'ye dayanıyordu, ancak küçük değişikliklerle farklı bir PIC kullanabilirsiniz. Projemde bu 40 pin μC'yi kullandım, çünkü bu tasarıma dayalı gelecekteki projeler için ekstra pinlere ihtiyacım olacak. RF modülünün çıkışı UART rx pinine bağlanırken, alınan verileri görüntülemek için 16x2 karakterlik bir lcd (HD44780) PORTB pinleri b2-b7 üzerinden bağlanır.

Bölüm 1'de olduğu gibi, alınan veriler de RealTerm'de görüntülenir. Bu, bir USB'den UART TTL kablo adaptörüne bir PC'ye bağlanan UART tx pini kullanılarak elde edilir.

Bellenime bakıldığında, bir UART kesintisi gerçekleştiğinde, program alınan baytın bir başlangıç baytı ('&') olup olmadığını kontrol eder. Evetse, bir durdurma baytı ('*') yakalanana kadar sonraki baytları kaydetmeye başlar. Cümlenin tamamı elde edilir edilmez ve daha önce açıklanan basit protokole uygunsa, hem lcd ekrana hem de UART tx portuna gönderilir.

Başlangıç baytını almadan önce alıcı, önceki başlangıç baytlarını kullanarak kazancını zaten ayarlamıştır. Bunlar, alıcının sorunsuz çalışması için kritik öneme sahiptir. Basit bir taşma ve çerçeveleme hatası denetimi gerçekleştirilir, ancak bu yalnızca temel bir UART hata işleme uygulamasıdır.

Donanım açısından, alıcı için birkaç parça gereklidir:

1 adet PIC16F887

1 x HD44780

1 x RF Rx modülü 433Mhz

1 x 10 μF tantal kapasitör (dekuplaj)

1 x 10 K düzeltici (LCD yazı tipi parlaklığı)

1 x 220 Ω 1/4 W direnç (LCD arka ışığı)

1 x 1 KΩ 1/4 W

1 x Anten 433Mhz, 3dbi

Uygulamada, alınanlar duvarlara rağmen 20 metreye kadar olan mesafelerde son derece iyi çalıştı.

Adım 3: Birkaç Referans…

Resmi Microschip web sitesinin yanı sıra, web üzerinde PIC programlama ve sorun giderme hakkında ipuçları veren birçok blog bulunmaktadır. Aşağıdakileri çok yararlı buldum:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Adım 4: Sonuçlar ve Gelecekteki Çalışmalar

Umarım bu talimat, RF modüllerinin ve Pic mikrodenetleyicilerinin nasıl kullanılacağını anlamanıza yardımcı olmuştur. Ürün yazılımınızı kendi ihtiyaçlarınıza göre ayarlayabilir ve CRC ve şifrelemeyi dahil edebilirsiniz. Tasarımınızı daha da karmaşık hale getirmek istiyorsanız, Microschip'in Keeloq teknolojisini kullanabilirsiniz. Uygulamanızın çift yönlü veriye ihtiyaç duyması durumunda, her iki mikrodenetleyicide bir çift TX/RX olması gerekir veya daha karmaşık alıcı-verici kullanabilirsiniz. modüller. Ancak, bu tür ucuz 433MHz modülleri kullanarak, sadece yarı çift yönlü iletişim gerçekleştirilebilir. Buna ek olarak, iletişimi daha güvenilir hale getirmek için TX ve RX arasında bir çeşit el sıkışmanız gerekir.

Bir sonraki talimatta, vericiye sıcaklık, barometrik basınç ve nem içeren bir ortam sensörünün eklendiği pratik bir uygulama göstereceğim. Burada iletilen veriler crc içerecek ve temel bir şifrelemeye sahip olacaktır.

Sensör, PIC12F1822'nin i2c portunu kullanacakken, hem verici hem de alıcının uygulanması şemalar ve pcb dosyaları aracılığıyla gösterilecektir. Beni okuduğunuz için teşekkürler!

Önerilen: