- Modul Pemancar dan Penerima RF 433MHz:
- Keperluan Encoder dan Decoder:
- Komponen yang Diperlukan:
- Rajah Litar:
- Penjelasan Kod:
Halo semua, Hari ini dalam projek ini, kami akan menghubungkan modul Penerima RF dan Pemancar dengan Mikrokontroler PIC dan berkomunikasi antara dua mikrokontroler pic yang berbeza tanpa wayar.
Dalam projek ini kami akan melakukan perkara berikut: -
- Kami akan menggunakan PIC16F877A untuk Pemancar dan PIC18F4520 untuk bahagian Penerima.
- Kami akan mengaitkan Pad Kekunci dan LCD dengan mikrokontroler PIC.
- Di sisi pemancar, kami akan Memadankan papan kekunci dengan PIC dan menghantar data. Di sisi penerima, kami akan menerima data tanpa wayar dan menunjukkan kekunci mana yang ditekan pada LCD.
- Kami akan menggunakan IC pengekod dan penyahkod untuk menghantar data 4 bit.
- Kekerapan Penerimaan akan 433Mhz menggunakan modul RF TX-RX murah yang tersedia di pasaran.
Sebelum memasuki skema dan kod, mari kita fahami cara kerja modul RF dengan IC Encoder-Decoder. Baca juga dua artikel di bawah ini untuk mengetahui bagaimana menghubungkan LCD dan Pad Kekunci dengan PIC Microcontroller:
- Interface LCD dengan PIC Microcontroller menggunakan MPLABX dan XC8
- Pad kekunci Matriks 4x4 Berinteraksi dengan PIC Microcontroller
Modul Pemancar dan Penerima RF 433MHz:
Itu adalah modul pemancar dan penerima yang kami gunakan dalam projek. Ia adalah modul termurah yang tersedia untuk 433 MHz. Modul ini menerima data bersiri dalam satu saluran.
Sekiranya kita melihat spesifikasi modul, pemancar dinilai untuk operasi 3.5-12V sebagai voltan masukan dan jarak penghantaran adalah 20-200 meter. Ia menghantar dalam protokol AM (Modulasi Audio) pada frekuensi 433 MHz. Kami dapat memindahkan data pada kelajuan 4KB / S dengan kuasa 10mW.
Pada gambar atas kita dapat melihat pin keluar modul Pemancar. Dari kiri ke kanan pin adalah VCC, DATA dan GND. Kami juga dapat menambahkan antena dan menyoldernya pada titik yang ditunjukkan dalam gambar di atas.
Untuk spesifikasi Penerima, Penerima mempunyai penilaian arus 5V dc dan 4MA Quiescent sebagai input. Frekuensi penerimaan adalah 433.92 MHz dengan kepekaan -105DB.
Pada gambar di atas kita dapat melihat pin-out modul penerima. Empat pin adalah dari Kiri ke kanan, VCC, DATA, DATA dan GND. Dua pin tengah itu dihubungkan secara dalaman. Kita boleh menggunakan salah satu atau kedua-duanya. Tetapi adalah amalan yang baik untuk menggunakan kedua-duanya untuk menurunkan gandingan bunyi.
Juga, satu perkara tidak disebutkan dalam lembar data, induktor pemboleh ubah atau POT di tengah modul digunakan untuk penentukuran frekuensi. Sekiranya kita tidak dapat menerima data yang dikirimkan, ada kemungkinan frekuensi pengiriman dan penerimaan tidak sesuai. Ini adalah litar RF dan kita perlu menyetel pemancar pada titik frekuensi pemancaran yang sempurna. Juga, seperti pemancar, modul ini juga mempunyai port Antena; kita boleh menyolder wayar dalam bentuk melingkar untuk penerimaan yang lebih lama.
Julat transmisi bergantung pada voltan yang diberikan ke Pemancar dan panjang antena di kedua sisi. Untuk projek khusus ini, kami tidak menggunakan antena luaran dan menggunakan 5V di bahagian pemancar. Kami memeriksa dengan jarak 5 meter dan ia berfungsi dengan sempurna.
Modul RF sangat berguna untuk komunikasi tanpa wayar jarak jauh. Litar pemancar dan penerima RF asas ditunjukkan di sini. Kami telah membuat banyak projek menggunakan RF Module:
- Peralatan Rumah Terkawal RF
- Kereta Mainan Terkawal Bluetooth menggunakan Arduino
- LED Kawalan Jauh RF Menggunakan Raspberry Pi
Keperluan Encoder dan Decoder:
Sensor RF ini mempunyai beberapa kelemahan: -
- Komunikasi sehala.
- Hanya Satu saluran
- Gangguan yang sangat bising.
Oleh kerana kekurangan ini, kami telah menggunakan IC pengekod dan penyahkod, HT12D dan HT12E. D bermaksud decoder yang akan digunakan di sisi Penerima dan E bermaksud Encoder yang akan digunakan di sisi Pemancar. IC ini menyediakan 4 saluran. Juga kerana pengekodan dan penyahkodan tahap kebisingan sangat rendah.
Dalam gambar di atas, yang kiri adalah HT12D penyahkod dan yang kanan adalah HT12E, yang pengekod. Kedua-dua IC itu sama. A0 hingga A7 digunakan untuk pengekodan khas. Kita boleh menggunakan pin mikrokontroler untuk mengawal pin tersebut dan menetapkan konfigurasi. Konfigurasi yang sama perlu dipadankan di sisi lain. Sekiranya kedua-dua konfigurasi itu tepat dan sesuai, kita dapat menerima data. 8 pin ini boleh disambungkan ke Gnd atau VCC atau dibiarkan terbuka. Apa sahaja konfigurasi yang kita lakukan dalam pengekod, kita perlu memadankan sambungan pada penyahkod. Dalam projek ini, kita akan membuka 8 pin tersebut untuk pengekod dan penyahkod. Pin 9 dan 18 masing-masing adalah VSS dan VDD. Kita boleh menggunakan pin VT diHT12D sebagai tujuan pemberitahuan. Untuk projek ini, kami tidak menggunakannya. The TE pin untuk penghantaran mendayakan atau melumpuhkan pin.
Bahagian yang penting adalah pin OSC di mana kita perlu menyambungkan perintang adalah untuk memberikan ayunan kepada pengekod dan penyahkod. Penyahkod memerlukan ayunan yang lebih tinggi daripada penyahkod. Biasanya nilai perintang Encoder adalah 1Meg dan nilai Decoder adalah 33k. Kami akan menggunakan perintang tersebut untuk projek kami.
Pin DOUT adalah pin data Pemancar RF pada HT12E dan pin DIN di HT12D digunakan untuk menyambungkan pin data modul RF.
Dalam HT12E, AD8 hingga AD11 adalah empat saluran input yang ditukar dan dihantar secara bersiri melalui modul RF dan perkara terbalik yang tepat berlaku dalam HT12D, data bersiri diterima dan disahkod, dan kami mendapat output selari 4 bit merentasi 4 pin D8 hingga D11.
Komponen yang Diperlukan:
- 2 - Papan roti
- 1 - LCD 16x2
- 1 - Pad Kekunci
- Pasangan HT12D dan HT12E
- Modul RF RX-TX
- Pratetap 1- 10K
- Perintang 2 - 4.7k
- 1- Perintang 1M
- Perintang 1- 33k
- Kapasitor seramik 2- 33pF
- Kristal 1 - 20Mhz
- Bergumpal
- Beberapa wayar helai tunggal.
- PIC16F877A MCU
- PIC18F4520 MCU
- Pemacu skru untuk mengawal periuk frekuensi, perlu dilindungi dari badan manusia.
Rajah Litar:
Diagram Litar untuk sisi Pemancar (PIC16F877A):
Kami telah menggunakan PIC16F877A untuk tujuan Penghantaran. The pad kekunci Hex disambung merentas PORTB dan 4 saluran yang berkaitan di seluruh 4 bit terakhir PORTD. Ketahui lebih lanjut mengenai menyambungkan pad kekunci 4x4 Matrix di sini.
Lampirkan seperti berikut-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Rajah Litar untuk Bahagian Penerima (PIC18F4520):
Pada gambar di atas, litar Penerima ditunjukkan. The LCD disambungkan seluruh PORTB. Kami menggunakan pengayun dalaman daripada PIC18F4520 untuk projek ini. The 4 saluran disambungkan dengan cara yang sama seperti yang kita lakukan sebelum ini dalam litar pemancar. Ketahui lebih lanjut mengenai menyambungkan LCD 16x2 dengan PIC Microcontroller di sini.
Ini adalah bahagian Pemancar -
Dan bahagian penerima di papan roti berasingan -
Penjelasan Kod:
Terdapat dua bahagian kod, satu untuk Pemancar dan satu lagi untuk Penerima. Anda boleh memuat turun kod lengkap dari sini.
Kod PIC16F877A untuk Pemancar RF:
Seperti biasa, kita perlu menetapkan bit konfigurasi dalam mikrokontroler pic, menentukan beberapa makro, termasuk perpustakaan dan frekuensi kristal. The AD8-AD11 pelabuhan yang Encoder ic ditakrifkan sebagai RF_TX di PORTD. Anda boleh menyemak kod untuk semua kod lengkap yang diberikan di akhir.
Kami menggunakan dua fungsi, void system_init (void) dan void encode_rf_sender (data char).
The system_init digunakan untuk pin pengawalan dan papan kekunci initializations. Permulaan papan kekunci dipanggil dari perpustakaan papan kekunci.
Port keypad juga ditentukan dalam keypad.h. Kami membuat PORTD sebagai output menggunakan TRISD = 0x00, dan membuat RF_TX pelabuhan sebagai 0x00 sebagai keadaan lalai.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Dalam encode_rf_sender kita telah menukar keadaan 4 pin bergantung pada Butang yang ditekan. Kami telah membuat 16 nilai heksa yang berbeza atau keadaan PORTD bergantung pada ( 4x4) 16 butang yang berbeza ditekan.batal encode_rf_sender (data char) { if (data == '1') RF_TX = 0x10; jika (data == '2') RF_TX = 0x20; jika (data == '3') …………... …. ….
Dalam fungsi utama, pertama-tama kami menerima data ditekan butang papan kekunci menggunakan fungsi switch_press_scan () dan menyimpan data dalam pemboleh ubah kunci. Selepas itu kami telah mengekodkan data menggunakan fungsi encode_rf_sender () dan mengubah status PORTD.
Kod PIC18F4520 untuk Penerima RF:
Seperti biasa, kami mula-mula menetapkan bit konfigurasi di PIC18f4520. Sedikit berbeza dengan PIC16F877A, anda boleh menyemak kod dalam fail zip yang dilampirkan.
Kami menyertakan fail tajuk LCD. Mendefinisikan sambungan port D8-D11 dari Decoder IC merentasi PORTD menggunakan garis #define RF_RX PORTD, sambungannya sama seperti yang digunakan di bahagian Encoder. Deklarasi port LCD juga dilakukan dalam fail lcd.c.
#sertakan
Seperti yang dinyatakan sebelum kita menggunakan pengayun dalaman untuk 18F4520, kita telah menggunakan fungsi sistem _ init di mana kita mengkonfigurasi daftar OSCON dari 18F4520 untuk mengatur pengayun dalaman untuk 8 MHz. Kami juga menetapkan bit TRIS untuk kedua-dua pin LCD dan pin Decoder. Oleh kerana HT - 12D memberikan output pada port D8-D11, kita perlu mengkonfigurasi PORTD sebagai input untuk menerima output.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL aktifkan, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // 4 bit terakhir sebagai bit input. }
Kami mengkonfigurasi daftar OSCON pada 8 MHz, juga menjadikan port B sebagai output dan port D sebagai input.
Fungsi di bawah dibuat menggunakan logik terbalik tepat yang digunakan di bahagian pemancar sebelumnya. Di sini kita mendapat nilai hex yang sama dari port D dan dengan nilai hex itu kita mengenal pasti suis mana yang ditekan di bahagian pemancar. Kami dapat mengenal pasti setiap penekanan kekunci dan menyerahkan watak koresponden ke LCD.
batal rf_analysis (char yang tidak ditandatangani recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); jika (recived_byte == 0x20) lcd_data ('2'); jika (recived_byte == 0x30) ……. ….. …… ………..
The lcd_data dipanggil dari lcd.c fail.
Dalam fungsi utama kami mula-mula menginisialisasi sistem dan LCD. Kami mengambil pembolehubah bait, dan disimpan nilai hex yang diterima daripada pelabuhan D. Kemudian dengan fungsi rf_analysis kita dapat mencetak watak pada LCD.
kekosongan utama (kekosongan) { byte char yang tidak ditandatangani = 0; system_init (); lcd_init (); sementara (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); bait = RF_RX; rf_analisis (bait); lcd_com (0xC0); } kembali; }
Sebelum menjalankannya, kami telah menala litar. Mula-mula kita menekan butang ' D ' di papan kekunci. Jadi, 0xF0 sedang dihantar secara berterusan oleh pemancar RF. Kami kemudian menala litar penerima sehingga LCD menunjukkan watak ' D '. Kadang-kadang modul ditala dengan betul dari pengeluar, kadang-kadang tidak. Sekiranya semuanya disambungkan dengan betul dan tidak mendapat nilai tekan butang di LCD maka ada kemungkinan Penerima RF tidak disetel. Kami telah menggunakan pemutar skru Insulated untuk mengurangkan kemungkinan penyesuaian yang salah kerana induktansi badan kita.
Ini adalah bagaimana anda dapat menyambungkan Modul RF ke Mikrokontroler PIC dan berkomunikasi antara dua mikrokontroler PIC secara tanpa wayar menggunakan RF Sensor.
Anda boleh memuat turun kod lengkap untuk Pemancar dan Penerima dari sini, lihat juga video demonstrasi di bawah.