- 433MHz RF Verici ve Alıcı Modülü:
- Kodlayıcı ve Kod Çözücü İhtiyacı:
- Gerekli Bileşenler:
- Devre şeması:
- Kod Açıklaması:
Herkese merhaba, Bugün bu projede RF Alıcı ve Verici modülünü PIC Mikrodenetleyici ile arayüzleyerek iki farklı pic mikrodenetleyici arasında kablosuz iletişim kuracağız.
Bu projede aşağıdakileri yapacağız: -
- Verici için PIC16F877A ve Alıcı bölümü için PIC18F4520 kullanacağız.
- Tuş takımı ve LCD'yi PIC mikro denetleyici ile arayüzleyeceğiz.
- Verici tarafında, PIC ile tuş takımını Arabirim ve verileri ileteceğiz. Alıcı tarafında, verileri kablosuz olarak alacağız ve LCD'de hangi tuşa basıldığını göstereceğiz.
- 4 bitlik verileri iletmek için kodlayıcı ve kod çözücü IC kullanacağız.
- Alım Frekansı, piyasada bulunan ucuz RF TX-RX modülü kullanılarak 433Mhz olacaktır.
Şemalara ve kodlara geçmeden önce Encoder-Decoder IC'leri ile RF modülünün işleyişini anlayalım. Ayrıca, LCD ve Keypad ile PIC Microcontroller arasında nasıl arayüz oluşturacağınızı öğrenmek için aşağıdaki iki makaleyi inceleyin:
- MPLABX ve XC8 kullanarak PIC Mikrodenetleyici ile LCD Arayüzü
- PIC Mikrodenetleyici ile 4x4 Matrix Tuş Takımı Arayüzü
433MHz RF Verici ve Alıcı Modülü:
Projede kullandığımız verici ve alıcı modüllerdir. 433 MHz için mevcut en ucuz modüldür. Bu modüller tek kanalda seri verileri kabul eder.
Modüllerin teknik özelliklerini görürsek, verici giriş voltajı olarak 3.5-12V çalışma için derecelendirilmiştir ve iletim mesafesi 20-200 metredir. 433 MHz frekansında AM (Audio Modulation) protokolünde iletim yapar. Verileri 10 mW güç ile 4KB / S hızında aktarabiliyoruz.
Üstteki resimde Verici modülünün pin çıkışını görebiliriz. Soldan sağa pinler VCC, DATA ve GND'dir. Ayrıca anteni ekleyip yukarıdaki resimde gösterilen noktaya lehimleyebiliriz.
İçin Alıcı şartname, Alıcı bir puana sahip akım 5V dc ve 4MA durgun girdi olarak. Alıcı frekans 433.92 MHz bir ile -105DB duyarlılık.
Yukarıdaki görüntüde alıcı modülün pin çıkışını görebiliriz. Dört pin Soldan sağa, VCC, DATA, DATA ve GND'dir. Bu ortadaki iki pim dahili olarak bağlıdır. Herhangi birini veya ikisini birden kullanabiliriz. Ancak her ikisinin de gürültü bağlantısını düşürmek için kullanılması iyi bir uygulamadır.
Ayrıca veri sayfasında belirtilmeyen bir şey, modülün ortasındaki değişken indüktör veya POT frekans kalibrasyonu için kullanılır. İletilen verileri alamazsak, gönderme ve alma frekanslarının eşleşmemesi olasılıkları vardır. Bu bir RF devresidir ve vericiyi mükemmel iletilen frekans noktasında ayarlamamız gerekir. Ayrıca, verici ile aynı, bu modülde ayrıca bir Anten portu vardır; Daha uzun alım için telleri sarmal biçimde lehimleyebiliriz.
İletim aralığı, Vericiye sağlanan gerilime ve her iki taraftaki antenlerin uzunluğuna bağlıdır. Bu özel proje için harici anten kullanmadık ve verici tarafında 5V kullandık. 5 metre mesafeyle kontrol ettik ve mükemmel çalıştı.
RF Modülleri, uzun menzilli kablosuz iletişim için çok kullanışlıdır. Burada temel bir RF Verici ve alıcı devresi gösterilmektedir. RF Modülünü kullanarak birçok proje yaptık:
- RF Kontrollü Ev Aletleri
- Arduino ile Bluetooth Kontrollü Oyuncak Araba
- Raspberry Pi Kullanan RF Uzaktan Kontrollü LED'ler
Kodlayıcı ve Kod Çözücü İhtiyacı:
Bu RF Sensörünün birkaç dezavantajı vardır: -
- Tek yönlü iletişim.
- Sadece bir kanal
- Çok Gürültülü girişim.
Bu dezavantaj nedeniyle, kodlayıcı ve kod çözücü IC'leri, HT12D ve HT12E kullandık. D açılımı kod çözücü alıcı tarafında kullanılacak ve E açılımı Encoder Verici tarafında kullanılacaktır. Bu IC'ler 4 kanal sağlar. Ayrıca kodlama ve kod çözme nedeniyle gürültü seviyesi çok düşüktür.
Yukarıdaki görüntüde soldaki kod çözücü HT12D ve sağdaki kodlayıcı olan HT12E'dir. Her iki IC de aynıdır. A0 - A7, özel kodlama için kullanılır. Bu pinleri kontrol etmek ve konfigürasyonları ayarlamak için mikrodenetleyici pinlerini kullanabiliriz. Aynı konfigürasyonların diğer tarafta da eşleştirilmesi gerekir. Her iki konfigürasyon da doğruysa ve eşleşirse veri alabiliriz. Bu 8 pin Gnd veya VCC'ye bağlanabilir veya açık bırakılabilir. Kodlayıcıda hangi konfigürasyonları yaparsak yapalım, kod çözücüdeki bağlantıyı eşleştirmemiz gerekir. Bu projede hem kodlayıcı hem de kod çözücü için bu 8 pini açık bırakacağız. 9 ve 18 pin sırasıyla VSS ve VDD'dir. VT pinini kullanabilirizBildirim amaçlı olarak HT12D. Bu proje için kullanmadık. TE pimi iletimi için veya devre dışı bırakmak pim edilir.
Önemli kısım, dirençleri bağlamamız gereken OSC pini, kodlayıcı ve kod çözücüye salınım sağlamaktır. Kod çözücünün, kod çözücüden daha yüksek salınıma ihtiyacı vardır. Tipik olarak Kodlayıcı direnç değeri 1Meg ve Kod Çözücü değeri 33k olacaktır. Bu dirençleri projemiz için kullanacağız.
DOUT pimi RF verici veri pimdir HT12E ve DİN pimin HT12D RF modül veri pimi bağlamak için kullanılır.
Gelen HT12E, AD8 için AD11 dönüştürülmüş ve seri olarak RF modülü üzerinden iletilen ve bunun tam tersi olan olur alır dört kanallı girişi HT12D alınan ve dekode seri veri, ve elde D11 4 pim D8 boyunca 4 bit paralel çıktı.
Gerekli Bileşenler:
- 2 - Ekmek tahtası
- 1 - LCD 16x2
- 1 - Tuş Takımı
- HT12D ve HT12E çifti
- RX-TX RF Modülü
- 1- 10K ön ayar
- 2 - 4.7k direnç
- 1- 1M Direnç
- 1- 33k direnç
- 2- 33pF seramik kapasitörler
- 1 - 20Mhz kristal
- Bergsticks
- Az sayıda tek telli tel.
- PIC16F877A MCU
- PIC18F4520 MCU
- Frekans potunu kontrol etmek için bir tornavidanın insan vücudundan yalıtılması gerekir.
Devre şeması:
Verici tarafı için Devre Şeması (PIC16F877A):
İletim amacıyla PIC16F877A kullandık. Hex tuş takımı karşısında bağlı PORTB ve 4 kanalların son 4 bit genelinde bağlı PORTD. Burada 4x4 Matrix tuş takımını bağlama hakkında daha fazla bilgi edinin.
Aşağıdaki gibi sabitleyin-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Alıcı Tarafı için Devre Şeması (PIC18F4520):
Yukarıdaki görüntüde Alıcı devresi gösterilmektedir. LCD karşısına bağlı olduğu PORTB. Biz kullanılan iç osilatör arasında çalısmasında PIC18F4520 bu proje için. 4 kanal biz, transmitter devresindeki daha önce olduğu gibi aynı şekilde bağlanmıştır. 16x2 LCD'yi PIC Mikrodenetleyiciye bağlama hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Bu Verici tarafı -
Ve alıcı tarafı ayrı devre tahtasında -
Kod Açıklaması:
Kodun iki bölümü vardır, biri Verici ve diğeri Alıcı içindir. Kodun tamamını buradan indirebilirsiniz.
RF Verici için PIC16F877A kodu:
Her zaman olduğu gibi, pic mikrodenetleyicide konfigürasyon bitlerini ayarlamamız, kütüphaneler ve kristal frekansı dahil bazı makroları tanımlamamız gerekir. AD8-AD11 Kodlayıcı ic bağlantı noktası olarak tanımlanmaktadır RF_TX de PORTD. Sonunda verilen kodun tamamı için kodu kontrol edebilirsiniz.
İki işlev kullandık, void system_init ( void) ve void encode_rf_sender (char data).
System_init pimi başlatma ve klavye başlatımlar için kullanılmaktadır. Klavye başlatma, tuş takımı kitaplığından çağrılır.
Tuş takımı portu da tanımlanır keypad.h. Biz yapılan PORTD kullanarak çıktı olarak TRISD = 0x00 ve yapılan RF_TX olarak port 0x00 varsayılan devlet olarak.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Gelen encode_rf_sender biz preslenmiş Düğmesi bağlı 4 pinli durumu değişti. Basılan (4x4) 16 farklı düğmeye bağlı olarak 16 farklı hex değeri veya PORTD durumu oluşturduk .void encode_rf_sender (karakter verisi) { if (data == '1') RF_TX = 0x10; eğer (veri == '2') RF_TX = 0x20; eğer (veri == '3') …………... …. ….
Gelen ana işlevi öncelikle klavye tuşu kullanarak veri basılı almak switch_press_scan () fonksiyonu ve veri depolamak anahtar değişken. Bundan sonra verileri encode_rf_sender () işlevini kullanarak ve PORTD durumunu değiştirerek kodladık.
RF Alıcı için PIC18F4520 kodu:
Her zaman olduğu gibi, ilk olarak konfigürasyon bitlerini PIC18f4520'de ayarladık . PIC16F877A'dan biraz farklıdır, ekli zip dosyasındaki kodu kontrol edebilirsiniz.
LCD başlık dosyasını ekledik. #Define RF_RX PORTD hattı kullanılarak Dekoder IC'sinin PORTD üzerinden D8-D11 port bağlantısı tanımlandı, bağlantı Kodlayıcı bölümünde kullanılanla aynıdır. LCD bağlantı noktası bildirimi ayrıca lcd.c dosyasında yapılır.
#Dahil etmek
Biz iç osilatör kullandığınız önce de belirtildiği gibi 18F4520, biz kullanılan var sistemini _ init biz yapılandırılmış işlev OSCON ayarlamak için 18F4520 ait kayıt iç osilatör için 8 MHz. Ayrıca hem LCD pimleri hem de Dekoder pimleri için TRIS bitini ayarladık. Gibi HT - 12D de çıkış sağlar D8-D11 limanları, biz yapılandırmanız gerekir PORTD çıkışını almak üzere girdi olarak.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz, intosc // OSCTUNE = 0b01001111; // PLL etkin, Maks ön ölçekleyici 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Giriş biti olarak son 4 bit. }
OSCON kaydını 8 MHz'de yapılandırdık, ayrıca B bağlantı noktasını çıkış ve D bağlantı noktasını da giriş olarak yaptık.
Aşağıdaki işlev, önceki verici bölümünde kullanılan tam ters mantık kullanılarak yapılır. Burada D portundan aynı onaltılık değeri alıyoruz ve bu onaltılık değer ile verici bölümünde hangi anahtara basıldığını tespit ediyoruz. Her tuşa basıldığını belirleyebilir ve ilgili karakteri LCD'ye gönderebiliriz.
void rf_analysis (işaretsiz karakter recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); eğer (recived_byte == 0x20) lcd_data ('2'); eğer (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data çağrılır lcd.c dosyası.
Gelen ana işlevi öncelikle sistem ve LCD'yi başlatmak. Değişken bir bayt aldık ve D portundan aldığımız onaltılık değeri sakladık. Daha sonra rf_analysis fonksiyonu ile karakteri LCD üzerine yazdırabiliriz.
void main (void) { işaretsiz karakter bayt = 0; system_init (); lcd_init (); while (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); bayt = RF_RX; rf_analysis (bayt); lcd_com (0xC0); } dönüş; }
Çalıştırmadan önce devreyi ayarladık. İlk önce tuş takımındaki ' D ' düğmesine bastık. Dolayısıyla, 0xF0, RF vericisi tarafından sürekli olarak iletilmektedir. Daha sonra alıcı devresini LCD ' D ' karakterini gösterene kadar ayarladık. Bazen modül üreticiden doğru bir şekilde ayarlanır, bazen ayarlanamaz. Her şey doğru bir şekilde bağlanmışsa ve LCD'de düğmeye basılmıyorsa, RF Alıcısının ayarlanmaması olasılığı vardır. Vücut endüktansımız nedeniyle yanlış ayar olasılıklarını azaltmak için İzoleli tornavida kullandık.
Bu, RF Modülünü PIC Mikrodenetleyiciye nasıl bağlayabileceğinizi ve RF Sensörü kullanarak iki PIC mikro denetleyici arasında kablosuz olarak iletişim kurabileceğinizi gösterir.
Verici ve Alıcı için eksiksiz kodu buradan indirebilir, ayrıca aşağıdaki tanıtım videosunu da kontrol edebilirsiniz.