- 433MHz RF Transmitter at Receiver Module:
- Kailangan ng Encoder at Decoder:
- Kinakailangan ang Mga Bahagi:
- Diagram ng Circuit:
- Paliwanag sa Code:
Kamusta sa lahat, Ngayon sa proyektong ito, makikipag-ugnay kami sa module ng RF Receiver at Transmitter sa PIC Microcontroller at makipag-usap sa pagitan ng dalawang magkakaibang pic microcontrollers nang walang wireless.
Sa proyektong ito gagawin namin ang mga sumusunod na bagay: -
- Gagamitin namin ang PIC16F877A para sa Transmitter at PIC18F4520 para sa seksyong Receiver.
- Kami ay i-interface ang Keypad at LCD sa PIC microcontroller.
- Sa panig ng transmiter, gagamitin namin ang Interface keypad na may PIC at ihatid ang data. Sa panig ng tatanggap, tatanggap namin ang data nang wireless at ipapakita kung aling mga key ang pinindot sa LCD.
- Gagamitin namin ang encoder at decoder IC upang magpadala ng 4 na data.
- Ang Frequency ng Receiver ay magiging 433Mhz gamit ang murang module ng RF TX-RX na magagamit sa merkado.
Bago pumunta sa mga eskematiko at code, unawain natin ang mga paggana ng module ng RF na may mga Encoder-Decoder ICs. Dumaan din sa ibaba ng dalawang mga artikulo upang malaman kung paano i-interface ang LCD at Keypad sa PIC Microcontroller:
- LCD Interfacing sa PIC Microcontroller gamit ang MPLABX at XC8
- 4x4 Matrix Keypad Interfacing sa PIC Microcontroller
433MHz RF Transmitter at Receiver Module:
Iyon ang mga module ng transmiter at tatanggap na ginagamit namin sa proyekto. Ito ang pinakamurang module na magagamit para sa 433 MHz Ang mga modyul na ito ay tumatanggap ng serial data sa isang channel.
Kung nakita namin ang mga pagtutukoy ng mga module, ang transmitter ay na-rate para sa 3.5-12V na operasyon bilang input boltahe at ang distansya ng paghahatid ay 20-200 metro. Nagpapadala ito sa AM (Audio Modulation) na protocol sa dalas ng 433 MHz. Maaari naming ilipat ang data sa isang bilis ng 4KB / S na may 10mW lakas.
Sa itaas na imahe maaari nating makita ang pin-out ng module ng Transmitter. Mula kaliwa hanggang kanan ang mga pin ay VCC, DATA at GND. Maaari din naming idagdag ang antena at solder ito sa puntong na-denote sa imahe sa itaas.
Para sa detalye ng Receiver, ang Receiver ay mayroong rating na 5V dc at 4MA Quiescent kasalukuyang bilang input. Ang dalas ng pagtanggap ay 433.92 MHz na may isang -105DB pagiging sensitibo.
Sa imahe sa itaas maaari nating makita ang pin-out ng module ng tatanggap. Ang apat na mga pin ay mula Kaliwa hanggang kanan, VCC, DATA, DATA at GND. Ang mga gitnang dalawang mga pin ay konektado sa loob. Maaari kaming gumamit ng anuman o pareho. Ngunit ito ay isang mahusay na kasanayan na gamitin ang pareho para sa pagbaba ng pagkabit ng ingay.
Gayundin, ang isang bagay ay hindi nabanggit sa datasheet, ang variable inductor o POT sa gitna ng module ay ginagamit para sa pagkakalibrate ng dalas. Kung hindi namin matanggap ang naihatid na data, may mga posibilidad na hindi maitugma ang paghahatid at pagtanggap ng mga frequency. Ito ay isang RF circuit at kailangan nating ibagay ang transmitter sa perpektong naihatid na punto ng dalas. Gayundin, kapareho ng transmiter, ang modyul na ito ay mayroon ding Antenna port; maaari kaming maghinang wire sa coiled form para sa mas mahabang pagtanggap.
Ang saklaw ng paghahatid ay maaasahan sa boltahe na ibinigay sa Transmitter at sa haba ng mga antena sa magkabilang panig. Para sa partikular na proyekto na ito hindi kami gumamit ng panlabas na antena at gumamit ng 5V sa panig ng transmiter. Nag-check kami na may 5 metro ang distansya at ito ay ganap na gumana.
Ang mga RF Module ay lubhang kapaki-pakinabang para sa komunikasyon ng wireless na pang-distansya. Ipinapakita rito ang isang pangunahing RF Transmitter at circuit ng tatanggap. Gumawa kami ng maraming mga proyekto gamit ang RF Module:
- Mga Kinokontrol na RF na Home Appliances
- Kinokontrol ng Laruang Kotse ng Bluetooth gamit ang Arduino
- RF Remote Controlled LEDs Gamit ang Raspberry Pi
Kailangan ng Encoder at Decoder:
Ang RF Sensor na ito ay may ilang mga drawbacks: -
- Isang paraan ng komunikasyon.
- Tanging Isang channel
- Tunay na pagkagambala ng Ingay.
Dahil sa sagabal na ito nagamit namin ang mga encoder at decoder ICs, HT12D at HT12E. Ang D ay nangangahulugang ang decoder na gagamitin sa panig ng Receiver at ang E ay nangangahulugang Encoder na gagamitin sa panig ng Transmitter. Ang mga IC na ito ay nagbibigay ng 4 na mga channel. Dahil din sa pag-encode at pag-decode ng antas ng ingay ay napakababa.
Sa imahe sa itaas, ang kaliwang isa ay HT12D ang decoder at ang kanang HT12E, ang encoder. Parehong magkatulad ang mga IC. Ang A0 hanggang A7 ay ginagamit para sa espesyal na pag-encode. Maaari naming gamitin ang mga pin ng microcontroller upang makontrol ang mga pin na iyon at magtakda ng mga pagsasaayos. Ang parehong mga pagsasaayos ay kailangang maitugma sa kabilang panig. Kung ang parehong mga pagsasaayos ay tumpak at naitugma, maaari kaming makatanggap ng data. Ang 8 mga pin na ito ay maaaring konektado sa Gnd o VCC o kaliwang bukas. Anuman ang mga pagsasaayos na ginagawa namin sa encoder, kailangan naming itugma ang koneksyon sa decoder. Sa proyektong ito ay maiiwan naming buksan ang 8 mga pin para sa parehong encoder at decoder. Ang 9 at 18 na pin ay VSS at VDD ayon sa pagkakabanggit. Maaari naming gamitin ang VT pin inHT12D bilang mga layunin ng abiso. Para sa proyektong ito hindi namin ito ginamit. Ang TE pin ay para sa pagpapagana ng paganahin o huwag paganahin ang pin.
Ang mahalagang bahagi ay ang pin ng OSC kung saan kailangan naming ikonekta ang mga resistors ay upang magbigay ng osilasyon sa encoder at decoder. Ang decoder ay nangangailangan ng mas mataas na oscillation kaysa sa decoder. Kadalasan ang halaga ng risistor ng Encoder ay magiging 1Meg at ang halaga ng Decoder ay 33k. Gagamitin namin ang mga resistors para sa aming proyekto.
Ang DOUT pin ay ang RF Transmitter data pin sa HT12E at ang DIN pin sa HT12D ay ginagamit upang ikonekta ang RF module data pin.
Sa HT12E, ang AD8 hanggang AD11 ay apat na input ng channel na na-convert at naihatid nang serial sa pamamagitan ng module ng RF at ang eksaktong bagay na baligtad ay nangyari sa HT12D, natanggap at na-decode ang serial data, at nakakakuha kami ng 4 bit na parallel output sa 4 na pin na D8 hanggang D11.
Kinakailangan ang Mga Bahagi:
- 2 - Bread board
- 1 - LCD 16x2
- 1 - Keypad
- Pares ng HT12D at HT12E
- RX-TX RF Module
- 1- 10K preset
- 2 - 4.7k risistor
- 1- 1M Resistor
- 1- 33k risistor
- 2- 33pF ceramic capacitors
- 1 - 20Mhz na kristal
- Mga Bergstick
- Ilang solong wires na strand.
- PIC16F877A MCU
- PIC18F4520 MCU
- Ang isang driver ng tornilyo para sa pagkontrol sa dalas ng palayok, kailangang insulated mula sa katawan ng tao.
Diagram ng Circuit:
Diagram ng Circuit para sa panig ng Transmitter (PIC16F877A):
Gumamit kami ng PIC16F877A para sa layunin ng Paghahatid. Ang Hex keypad ay konektado sa buong PORTB at sa 4 na mga channel na konektado sa huling 4 na piraso ng PORTD. Matuto nang higit pa tungkol sa pagkonekta dito ng 4x4 Matrix keypad.
I-pin ang mga sumusunod-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Diagram ng Circuit para sa Side ng Tagatanggap (PIC18F4520):
Sa imahe sa itaas, ipinapakita ang circuit ng Receiver. Ang LCD ay konektado sa kabuuan ng PORTB. Gumamit kami ng panloob na oscillator ng PIC18F4520 para sa proyektong ito. Ang 4 na mga channel ay konektado sa parehong paraan tulad ng ginawa namin dati sa transmiter circuit. Dagdagan ang nalalaman tungkol sa pagkonekta ng 16x2 LCD sa PIC Microcontroller dito.
Ito ang panig ng Transmitter -
At ang panig ng tatanggap sa magkakahiwalay na breadboard -
Paliwanag sa Code:
Mayroong dalawang bahagi ng code, ang isa ay para sa Transmitter at ang isa ay para sa Receiver. Maaari mong i-download ang kumpletong code mula dito.
PIC16F877A code para sa RF Transmitter:
Tulad ng lagi nang una, kailangan naming itakda ang mga config bit sa pic microcontroller, tukuyin ang ilang mga macros, kabilang ang mga aklatan at dalas ng kristal. Ang port ng AD8-AD11 ng Encoder ic ay tinukoy bilang RF_TX sa PORTD. Maaari mong suriin ang code para sa lahat ng mga nasa kumpletong code na ibinigay sa dulo.
Gumamit kami ng dalawang pag-andar, void system_init (void) at void encode_rf_sender (char data).
Ang system_init ay ginagamit para sa pin initialization at keyboard initializations. Ang pagpapasimula ng keyboard ay tinawag mula sa keypad library.
Ang keypad port ay tinukoy din sa keypad.h. Ginawa namin ang PORTD bilang output gamit ang TRISD = 0x00, at ginawa ang port ng RF_TX bilang 0x00 bilang default na estado.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Sa encode_rf_sender binago namin ang estado ng 4 pin depende sa pindutan na pinindot. Lumikha kami ng 16 magkakaibang mga halaga ng hex o estado ng PORTD depende sa ( 4x4) 16 na magkakaibang pindutan na pinindot.void encode_rf_sender (char data) { kung (data == '1') RF_TX = 0x10; kung (data == '2') RF_TX = 0x20; kung (data == '3') …………... ……..
Sa pangunahing pagpapaandar natanggap muna namin ang pindutan ng keyboard na pinindot ang data gamit ang function na switch_press_scan () at iimbak ang data sa key variable. Pagkatapos nito ay na-encode na namin ang data gamit ang function na encode_rf_sender () at binabago ang katayuan ng PORTD.
PIC18F4520 code para sa RF Receiver:
Tulad ng dati, itinakda muna namin ang mga config bit sa PIC18f4520. Konting kakaiba sa PIC16F877A, maaari mong suriin ang code sa nakalakip na zip file.
Isinama namin ang file ng header ng LCD. Natukoy ang koneksyon sa D8-D11 port ng Decoder IC sa kabuuan ng PORTD gamit ang #define RF_RX PORTD line, ang koneksyon ay katulad ng ginamit sa seksyon ng Encoder. Ang deklarasyon ng LCD port ay tapos na rin sa lcd.c file.
# isama
Tulad ng nakasaad bago kami gumagamit ng panloob na oscillator para sa 18F4520, ginamit namin ang system _ init function kung saan na-configure namin ang rehistro ng OSCON ng 18F4520 upang maitakda ang panloob na oscillator para sa 8 MHz. Itinakda din namin ang TRIS bit para sa parehong mga LCD pin at mga Decoder pin. Tulad ng HT - 12D na nagbibigay ng output sa mga port ng D8-D11, kailangan naming i-configure ang PORTD bilang input upang matanggap ang output.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL paganahin, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Huling 4 na bit bilang input bit. }
Na-configure namin ang rehistro ng OSCON sa 8 MHz, ginawa rin ang port B bilang output at port D bilang input.
Ang pagpapaandar sa ibaba ay ginawa gamit ang eksaktong reverse logika na ginamit sa nakaraang seksyon ng transmiter. Nakukuha namin dito ang parehong halaga ng hex mula sa port D at sa pamamagitan ng halaga ng hex na kinikilala namin kung aling switch ang pinindot sa seksyon ng transmitter. Maaari naming makilala ang bawat pangunahing pindutin at isumite ang karakter ng korespondent sa LCD.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); kung (reciver_byte == 0x20) lcd_data ('2'); kung (reciver_byte == 0x30) ……. ….. …… ………..
Ang lcd_data ay tinawag mula sa lcd.c file.
Sa pangunahing pag- andar muna naming pinasimulan ang system at LCD. Kinuha namin ang isang variable byte, at naka-imbak sa hex halaga na natanggap mula sa port D. Pagkatapos sa pamamagitan ng pag-andar ng rf_analysis maaari nating mai-print ang character sa LCD.
void main (void) { unsigned char byte = 0; system_init (); lcd_init (); habang (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (byte); lcd_com (0xC0); } bumalik; }
Bago ito patakbuhin, naayos na natin ang circuit. Una naming pinindot ang pindutan na ' D ' sa keypad. Kaya, ang 0xF0 ay patuloy na naihahatid ng RF transmitter. Pagkatapos ay naayos namin ang circuit ng receiver hanggang sa maipakita ng LCD ang character na ' D '. Minsan ang module ay naayos nang maayos mula sa tagagawa, kung minsan ay hindi. Kung ang lahat ay maayos na konektado at hindi nakakakuha ng pindutan na pinindot ang halaga sa LCD pagkatapos ay may mga posibilidad na ang RF Receiver ay hindi naayos. Ginamit namin ang Insulated screwdriver para sa pagbawas ng mga maling posibilidad ng pag-tune dahil sa inductance ng aming katawan.
Ito ay kung paano mo mai- interface ang RF Module sa PIC Microcontroller at makipag-usap sa pagitan ng dalawang PIC microcontroller nang walang wireless gamit ang RF Sensor.
Maaari mong i-download ang kumpletong code para sa Transmitter at Receiver mula dito, suriin din ang demonstration Video sa ibaba.