- Modul Pemancar dan Penerima RF 433MHz:
- Kebutuhan Encoder dan Decoder:
- Komponen yang Dibutuhkan:
- Diagram Sirkuit:
- Penjelasan Kode:
Halo semuanya, Hari ini dalam proyek ini, kami akan menghubungkan modul Penerima RF dan Pemancar dengan Mikrokontroler PIC dan berkomunikasi antara dua mikrokontroler gambar yang berbeda secara nirkabel.
Dalam proyek ini kami akan melakukan hal-hal berikut: -
- Kami akan menggunakan PIC16F877A untuk Transmitter dan PIC18F4520 untuk bagian Receiver.
- Kami akan menghubungkan Keypad dan LCD dengan mikrokontroler PIC.
- Di sisi pemancar, kita akan menghubungkan keypad dengan PIC dan mengirimkan data. Di sisi penerima, kita akan menerima data secara nirkabel dan menunjukkan tombol mana yang ditekan pada LCD.
- Kami akan menggunakan IC encoder dan decoder untuk mengirimkan data 4 bit.
- Frekuensi Penerimaan akan menjadi 433Mhz menggunakan modul RF TX-RX murah yang tersedia di pasaran.
Sebelum masuk ke skema dan kodenya, mari kita pahami cara kerja modul RF dengan IC Encoder-Decoder. Baca juga dua artikel di bawah ini untuk mempelajari cara menghubungkan LCD dan Keypad dengan Mikrokontroler PIC:
- Interfacing LCD dengan Mikrokontroler PIC menggunakan MPLABX dan XC8
- Antarmuka Keypad Matriks 4x4 dengan Mikrokontroler PIC
Modul Pemancar dan Penerima RF 433MHz:
Itu adalah modul pemancar dan penerima yang kami gunakan dalam proyek ini. Ini adalah modul termurah yang tersedia untuk 433 MHz. Modul ini menerima data serial dalam satu saluran.
Jika kita melihat spesifikasi modul, pemancar diberi nilai untuk operasi 3,5-12V sebagai tegangan input dan jarak pancar 20-200 meter. Itu mengirimkan dalam protokol AM (Audio Modulation) pada frekuensi 433 MHz. Kami dapat mentransfer data dengan kecepatan 4KB / S dengan daya 10mW.
Pada gambar atas kita bisa melihat pin-out dari modul Transmitter. Dari kiri ke kanan pinnya adalah VCC, DATA, dan GND. Kami juga dapat menambahkan antena dan menyoldernya pada titik yang ditunjukkan pada gambar di atas.
Untuk spesifikasi Receiver, Receiver tersebut memiliki rating 5V dc dan arus diam 4MA sebagai input. Frekuensi penerimaan adalah 433,92 MHz dengan sensitivitas -105DB.
Pada gambar di atas kita bisa melihat pin-out dari modul receiver. Keempat pin tersebut adalah dari Kiri ke kanan, VCC, DATA, DATA dan GND. Dua pin tengah tersebut terhubung secara internal. Kita bisa menggunakan salah satu atau keduanya. Tetapi merupakan praktik yang baik untuk menggunakan keduanya untuk menurunkan kopling noise.
Juga, satu hal yang tidak disebutkan dalam lembar data, induktor variabel atau POT di tengah modul digunakan untuk kalibrasi frekuensi. Jika kami tidak dapat menerima data yang ditransmisikan, ada kemungkinan frekuensi pemancar dan penerima tidak cocok. Ini adalah rangkaian RF dan kita perlu menyetel pemancar pada titik frekuensi transmisi yang sempurna. Selain itu, sama seperti transmitter, modul ini juga memiliki port Antena; kita bisa menyolder kawat dalam bentuk melingkar untuk penerimaan lebih lama.
Jangkauan transmisi bergantung pada tegangan yang disuplai ke Pemancar dan panjang antena di kedua sisi. Untuk proyek khusus ini kami tidak menggunakan antena eksternal dan menggunakan 5V di sisi pemancar. Kami memeriksa dengan jarak 5 meter dan itu bekerja dengan sempurna.
Modul RF sangat berguna untuk komunikasi nirkabel jarak jauh. Sirkuit pemancar dan penerima RF dasar ditampilkan di sini. Kami telah membuat banyak proyek menggunakan Modul RF:
- Peralatan Rumah Tangga yang Dikendalikan RF
- Mobil Mainan yang Dikendalikan Bluetooth menggunakan Arduino
- LED RF Remote Controlled Menggunakan Raspberry Pi
Kebutuhan Encoder dan Decoder:
Sensor RF ini memiliki beberapa kekurangan: -
- Komunikasi satu arah.
- Hanya Satu saluran
- Gangguan sangat bising.
Karena kelemahan ini kami telah menggunakan IC encoder dan decoder, HT12D dan HT12E. D adalah singkatan dari decoder yang akan digunakan di sisi Receiver dan E adalah singkatan dari Encoder yang akan digunakan di sisi Transmitter. IC ini menyediakan 4 saluran. Juga karena encoding dan decoding tingkat kebisingan sangat rendah.
Pada gambar di atas, kiri adalah HT12D decoder dan kanan HT12E, encoder. Kedua IC itu identik. A0 sampai A7 digunakan untuk pengkodean khusus. Kita dapat menggunakan pin mikrokontroler untuk mengontrol pin tersebut dan mengatur konfigurasi. Konfigurasi yang sama perlu dicocokkan di sisi lain. Jika kedua konfigurasi tersebut akurat dan cocok, kami dapat menerima data. 8 pin ini dapat dihubungkan ke Gnd atau VCC atau dibiarkan terbuka. Konfigurasi apa pun yang kita lakukan di pembuat enkode, kita perlu mencocokkan koneksi pada dekoder. Dalam proyek ini kita akan membiarkan 8 pin tersebut terbuka untuk encoder dan decoder. 9 dan 18 pin masing-masing adalah VSS dan VDD. Kita bisa menggunakan pin VTHT12D sebagai tujuan notifikasi. Untuk proyek ini kami tidak menggunakannya. The TE pin untuk transmisi mengaktifkan atau menonaktifkan pin.
Bagian yang penting adalah pin OSC dimana kita perlu menghubungkan resistor-resistor ini untuk memberikan osilasi pada encoder dan decoder. Dekoder membutuhkan osilasi yang lebih tinggi daripada dekoder. Biasanya nilai resistor Encoder adalah 1Meg dan nilai Decoder adalah 33k. Kami akan menggunakan resistor tersebut untuk proyek kami.
Pin DOUT adalah pin data Pemancar RF pada HT12E dan pin DIN di HT12D digunakan untuk menghubungkan pin data modul RF.
Di HT12E, AD8 ke AD11 adalah input empat saluran yang diubah dan ditransmisikan secara serial melalui modul RF dan hal yang sebaliknya terjadi di HT12D, data serial diterima dan didekodekan, dan kami mendapatkan output paralel 4 bit di 4 pin D8 ke D11.
Komponen yang Dibutuhkan:
- 2 - Papan roti
- 1 - LCD 16x2
- 1 - Papan tombol
- Pasangan HT12D dan HT12E
- Modul RF RX-TX
- 1- 10K preset
- 2 - resistor 4.7k
- 1- Resistor 1M
- 1- resistor 33k
- 2- kapasitor keramik 33pF
- 1 - kristal 20Mhz
- Bergsticks
- Beberapa kabel untai tunggal.
- PIC16F877A MCU
- PIC18F4520 MCU
- Sebuah obeng untuk mengendalikan pot frekuensi, perlu diisolasi dari tubuh manusia.
Diagram Sirkuit:
Diagram Sirkuit untuk sisi Transmitter (PIC16F877A):
Kami telah menggunakan PIC16F877A untuk tujuan Transmisi. The Hex keypad terhubung di PORTB dan 4 saluran terhubung di 4 bit terakhir dari PORTD. Pelajari lebih lanjut tentang menghubungkan keypad Matriks 4x4 di sini.
Pin out sebagai berikut-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Diagram Sirkuit untuk Sisi Penerima (PIC18F4520):
Pada gambar di atas, rangkaian Penerima ditampilkan. The LCD terhubung di seluruh PORTB. Kami menggunakan osilator internal dari PIC18F4520 untuk proyek ini. The 4 saluran yang terhubung dengan cara yang sama seperti yang kita lakukan sebelumnya di sirkuit pemancar. Pelajari lebih lanjut tentang menghubungkan LCD 16x2 dengan Mikrokontroler PIC di sini.
Ini adalah sisi Transmitter -
Dan sisi penerima di papan tempat memotong roti terpisah -
Penjelasan Kode:
Ada dua bagian kode, satu untuk Transmitter dan satu lagi untuk Receiver. Anda dapat mengunduh kode lengkap dari sini.
Kode PIC16F877A untuk Pemancar RF:
Seperti biasa pertama, kita perlu mengatur bit konfigurasi di mikrokontroler pic, menentukan beberapa makro, termasuk perpustakaan dan frekuensi kristal. The AD8-AD11 port dari Encoder ic didefinisikan sebagai RF_TX di PORTD. Anda dapat memeriksa kode untuk semua yang ada di kode lengkap yang diberikan di bagian akhir.
Kami menggunakan dua fungsi, void system_init (void) dan void encode_rf_sender (char data).
The system_init digunakan untuk pin inisialisasi dan keyboard inisialisasi. Inisialisasi keyboard dipanggil dari perpustakaan keypad.
Port keypad juga ditentukan di keypad. H. Kami menjadikan PORTD sebagai output menggunakan TRISD = 0x00, dan menjadikan port RF_TX sebagai 0x00 sebagai status default.
batal system_init (batal) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Di encode_rf_sender kami telah mengubah status 4 pin tergantung pada Tombol yang ditekan. Kami telah menciptakan 16 yang berbeda nilai-nilai hex atau PORTD menyatakan tergantung pada ( 4x4) 16 tombol yang berbeda ditekan.void encode_rf_sender (data karakter) { if (data == '1') RF_TX = 0x10; jika (data == '2') RF_TX = 0x20; jika (data == '3') …………... …. ….
Pada fungsi utama pertama-tama kita menerima data yang ditekan tombol keyboard menggunakan fungsi switch_press_scan () dan menyimpan data dalam variabel kunci. Setelah itu kita telah mengkodekan data menggunakan fungsi encode_rf_sender () dan mengubah status PORTD.
Kode PIC18F4520 untuk Penerima RF:
Seperti biasa, pertama-tama kita mengatur bit konfigurasi di PIC18f4520. Ini sedikit berbeda dari PIC16F877A, Anda dapat memeriksa kode di file zip terlampir.
Kami menyertakan file header LCD. Menentukan koneksi port D8-D11 IC Dekoder di PORTD menggunakan #define RF_RX PORTD line, koneksi sama seperti yang digunakan di bagian Encoder. Deklarasi port LCD juga dilakukan di file lcd.c.
#include
Seperti yang dinyatakan sebelum kami menggunakan osilator internal untuk 18F4520, kami telah menggunakan fungsi system _ init di mana kami mengonfigurasi register OSCON dari 18F4520 untuk mengatur osilator internal untuk 8 MHz. Kami juga mengatur bit TRIS untuk pin LCD dan pin Decoder. Karena HT - 12D menyediakan keluaran pada port D8-D11, kita perlu mengkonfigurasi PORTD sebagai masukan untuk menerima keluaran.
batal system_init (batal) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // Aktifkan PLL, Prescaler maks 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // 4 bit terakhir sebagai bit masukan. }
Kami mengkonfigurasi register OSCON pada 8 MHz, juga menjadikan port B sebagai output dan port D sebagai input.
Fungsi di bawah ini dibuat dengan menggunakan logika terbalik yang digunakan pada bagian pemancar sebelumnya. Di sini kami mendapatkan nilai hex yang sama dari port D dan dengan nilai hex itu kami mengidentifikasi sakelar mana yang ditekan di bagian pemancar. Kami dapat mengidentifikasi setiap penekanan tombol dan mengirimkan karakter koresponden ke LCD.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); jika (recived_byte == 0x20) lcd_data ('2'); jika (recived_byte == 0x30) ……. ….. …… ………..
The lcd_data disebut dari lcd.c berkas.
Pada fungsi utama pertama kita menginisialisasi sistem dan LCD. Kami mengambil variabel byte, dan disimpan nilai hex yang diterima dari port D. Kemudian dengan fungsi rf_analysis kita dapat mencetak karakter tersebut pada LCD.
void main (void) { unsigned char byte = 0; system_init (); lcd_init (); sementara (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (byte); lcd_com (0xC0); } kembali; }
Sebelum menjalankannya, kami telah menyetel sirkuitnya. Pertama kami menekan tombol ' D ' di keypad. Jadi, 0xF0 terus dipancarkan oleh pemancar RF. Kami kemudian menyetel sirkuit penerima sampai LCD menunjukkan karakter ' D '. Terkadang modul disetel dengan benar dari pabrikan, terkadang tidak. Jika semuanya terhubung dengan benar dan tidak mendapatkan nilai tombol yang ditekan di LCD maka ada kemungkinan Penerima RF tidak disetel. Kami telah menggunakan obeng berisolasi untuk mengurangi kemungkinan penyetelan yang salah karena induktansi tubuh kami.
Ini adalah bagaimana Anda dapat menghubungkan Modul RF ke Mikrokontroler PIC dan berkomunikasi antara dua mikrokontroler PIC secara nirkabel menggunakan Sensor RF.
Anda dapat mengunduh kode lengkap untuk Pemancar dan Penerima dari sini, juga periksa Video demonstrasi di bawah ini.