- Mô-đun thu và phát RF 433MHz:
- Nhu cầu của Bộ mã hóa và Bộ giải mã:
- Các thành phần bắt buộc:
- Sơ đồ mạch:
- Giải thích mã:
Xin chào các bạn, Hôm nay trong dự án này, chúng ta sẽ giao diện module Bộ thu và Bộ phát RF với Vi điều khiển PIC và giao tiếp không dây giữa hai vi điều khiển pic khác nhau.
Trong dự án này, chúng tôi sẽ thực hiện những việc sau: -
- Chúng tôi sẽ sử dụng PIC16F877A cho phần Bộ phát và PIC18F4520 cho phần Bộ thu.
- Chúng tôi sẽ giao diện Bàn phím và màn hình LCD với vi điều khiển PIC.
- Về phía máy phát, chúng tôi sẽ Giao diện bàn phím với PIC và truyền dữ liệu. Ở phía đầu thu, chúng ta sẽ nhận dữ liệu không dây và hiển thị phím nào được nhấn trên màn hình LCD.
- Chúng tôi sẽ sử dụng bộ mã hóa và IC giải mã để truyền dữ liệu 4 bit.
- Tần số tiếp nhận sẽ là 433Mhz sử dụng mô-đun RF TX-RX giá rẻ có sẵn trên thị trường.
Trước khi đi vào sơ đồ và mã, chúng ta hãy hiểu hoạt động của mô-đun RF với IC mã hóa-giải mã. Cũng xem qua hai bài viết dưới đây để tìm hiểu cách giao diện LCD và Bàn phím với Vi điều khiển PIC:
- Giao diện LCD với Vi điều khiển PIC sử dụng MPLABX và XC8
- Giao diện bàn phím ma trận 4x4 với Vi điều khiển PIC
Mô-đun thu và phát RF 433MHz:
Đó là các mô-đun máy phát và máy thu chúng tôi đang sử dụng trong dự án. Đây là mô-đun rẻ nhất hiện có cho 433 MHz. Các mô-đun này chấp nhận dữ liệu nối tiếp trong một kênh.
Nếu chúng ta xem thông số kỹ thuật của các mô-đun, máy phát được đánh giá hoạt động 3,5-12V như điện áp đầu vào và khoảng cách truyền là 20-200 mét. Nó truyền trong giao thức AM (Điều chế âm thanh) ở tần số 433 MHz. Chúng ta có thể truyền dữ liệu với tốc độ 4KB / S với công suất 10mW.
Trong hình trên, chúng ta có thể thấy chân cắm của mô-đun Máy phát. Từ trái sang phải các chân là VCC, DATA và GND. Chúng tôi cũng có thể thêm ăng-ten và hàn nó vào điểm được biểu thị trong hình trên.
Đối với thông số kỹ thuật của Bộ thu, Bộ thu có định mức 5V dc và dòng điện Quiescent 4MA làm đầu vào. Tần số nhận là 433,92 MHz với độ nhạy -105DB.
Trong hình trên, chúng ta có thể thấy chân cắm của mô-đun bộ thu. Bốn chân từ Trái sang phải, VCC, DATA, DATA và GND. Hai chân giữa đó được kết nối bên trong. Chúng tôi có thể sử dụng bất kỳ một hoặc cả hai. Nhưng nó là một thực hành tốt để sử dụng cả hai để giảm tiếng ồn khớp nối.
Ngoài ra, một điều không được đề cập trong biểu dữ liệu, cuộn cảm biến đổi hoặc POT ở giữa mô-đun được sử dụng để hiệu chuẩn tần số. Nếu chúng tôi không thể nhận được dữ liệu đã truyền, có khả năng là tần số truyền và nhận không khớp. Đây là mạch RF và chúng ta cần điều chỉnh máy phát tại điểm tần số phát hoàn hảo. Ngoài ra, giống như bộ phát, mô-đun này cũng có một cổng Antenna; chúng ta có thể hàn dây ở dạng cuộn để tiếp nhận lâu hơn.
Phạm vi truyền dẫn phụ thuộc vào điện áp cung cấp cho Máy phát và chiều dài của ăng-ten ở cả hai phía. Đối với dự án cụ thể này, chúng tôi đã không sử dụng ăng-ten bên ngoài và sử dụng 5V ở phía máy phát. Chúng tôi đã kiểm tra với khoảng cách 5 mét và nó hoạt động hoàn hảo.
Mô-đun RF rất hữu ích cho giao tiếp không dây khoảng cách xa. Một mạch thu và phát RF cơ bản được hiển thị ở đây. Chúng tôi đã thực hiện nhiều dự án sử dụng Mô-đun RF:
- Thiết bị gia dụng được điều khiển bằng RF
- Ô tô đồ chơi điều khiển bằng Bluetooth sử dụng Arduino
- Đèn LED điều khiển từ xa RF sử dụng Raspberry Pi
Nhu cầu của Bộ mã hóa và Bộ giải mã:
Cảm biến RF này có một số nhược điểm: -
- Giao tiếp một chiều.
- Chỉ một kênh
- Rất nhiễu.
Do nhược điểm này, chúng tôi đã sử dụng các IC mã hóa và giải mã, HT12D và HT12E. D là viết tắt của bộ giải mã sẽ được sử dụng ở phía Máy thu và E là viết tắt của Bộ mã hóa sẽ được sử dụng ở phía Máy phát. IC này cung cấp 4 kênh. Ngoài ra do mã hóa và giải mã nên độ ồn rất thấp.
Trong hình trên, bên trái là bộ giải mã HT12D và bên phải là HT12E, bộ mã hóa. Cả hai IC đều giống hệt nhau. A0 đến A7 được sử dụng cho mã hóa đặc biệt. Chúng ta có thể sử dụng các chân vi điều khiển để điều khiển các chân đó và thiết lập cấu hình. Các cấu hình tương tự cần được khớp ở phía bên kia. Nếu cả hai cấu hình đều chính xác và phù hợp, chúng tôi có thể nhận được dữ liệu. 8 chân này có thể được kết nối với Gnd hoặc VCC hoặc để mở. Bất kỳ cấu hình nào chúng tôi thực hiện trong bộ mã hóa, chúng tôi cần phải phù hợp với kết nối trên bộ giải mã. Trong dự án này, chúng tôi sẽ để ngỏ 8 chân đó cho cả bộ mã hóa và bộ giải mã. Chân 9 và 18 lần lượt là VSS và VDD. Chúng ta có thể sử dụng chân VT trongHT12D như mục đích thông báo. Đối với dự án này, chúng tôi đã không sử dụng nó. Chân TE dành cho chân bật hoặc tắt truyền.
Phần quan trọng là chân OSC nơi chúng ta cần kết nối các điện trở để cung cấp dao động cho bộ mã hóa và giải mã. Bộ giải mã cần dao động cao hơn bộ giải mã. Thông thường, giá trị điện trở Bộ mã hóa sẽ là 1Meg và giá trị Bộ giải mã là 33k. Chúng tôi sẽ sử dụng những điện trở đó cho dự án của chúng tôi.
Chân DOUT là chân dữ liệu của Bộ phát RF trên HT12E và chân DIN trong HT12D được sử dụng để kết nối với chân dữ liệu của mô-đun RF.
Trong HT12E, AD8 đến AD11 là đầu vào bốn kênh được chuyển đổi và truyền nối tiếp qua mô-đun RF và điều ngược lại chính xác xảy ra trong HT12D, dữ liệu nối tiếp được nhận và giải mã, và chúng tôi nhận được đầu ra song song 4 bit qua 4 chân D8 đến D11.
Các thành phần bắt buộc:
- 2 - Bảng bánh mì
- 1 - LCD 16x2
- 1 - Bàn phím
- Cặp HT12D và HT12E
- Mô-đun RF RX-TX
- Cài đặt trước 1- 10K
- Điện trở 2 - 4,7k
- Điện trở 1- 1M
- Điện trở 1- 33k
- 2- tụ gốm 33pF
- Tinh thể 1-20Mhz
- Bergsticks
- Vài sợi dây đơn.
- MCU PIC16F877A
- PIC18F4520 MCU
- Cần cách điện với cơ thể người.
Sơ đồ mạch:
Sơ đồ mạch cho phía máy phát (PIC16F877A):
Chúng tôi đã sử dụng PIC16F877A cho mục đích Truyền. Các Hex bàn phím kết nối trên PORTB và 4 kênh kết nối qua 4 bit cuối cùng của PORTD. Tìm hiểu thêm về cách kết nối bàn phím Ma trận 4x4 tại đây.
Chốt ra như sau-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Sơ đồ mạch cho phía máy thu (PIC18F4520):
Trong hình trên, mạch thu được hiển thị. Các màn hình LCD được kết nối qua PORTB. Chúng tôi đã sử dụng bộ dao động nội bộ của PIC18F4520 cho dự án này. Các 4 kênh được kết nối với cùng một cách như chúng ta đã làm trước trong mạch máy phát. Tìm hiểu thêm về cách kết nối LCD 16x2 với Vi điều khiển PIC tại đây.
Đây là phía Máy phát -
Và bên nhận trong breadboard riêng biệt -
Giải thích mã:
Có hai phần của mã, một phần dành cho Máy phát và một phần dành cho Máy thu. Bạn có thể tải xuống mã hoàn chỉnh từ đây.
Mã PIC16F877A cho Máy phát RF:
Trước hết, chúng ta cần thiết lập các bit cấu hình trong vi điều khiển pic, xác định một số macro, bao gồm cả thư viện và tần số tinh thể. Cổng AD8-AD11 của ic mã hóa được định nghĩa là RF_TX tại PORTD. Bạn có thể kiểm tra mã cho tất cả những người trong mã hoàn chỉnh được cung cấp ở cuối.
Chúng tôi đã sử dụng hai hàm, void system_init (void) và void encode_rf_sender (char data).
Các system_init được sử dụng cho pin khởi và bàn phím khởi tạo. Khởi tạo bàn phím được gọi từ thư viện bàn phím.
Cổng bàn phím cũng được định nghĩa trong keypad.h. Chúng tôi đã tạo PORTD làm đầu ra bằng TRISD = 0x00 và đặt cổng RF_TX là 0x00 làm trạng thái mặc định.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Trong encode_rf_sender, chúng tôi đã thay đổi trạng thái 4 pin tùy thuộc vào Nút được nhấn. Chúng tôi đã tạo ra 16 khác nhau giá trị hex hoặc PORTD tiểu bang tùy thuộc vào ( 4x4) 16 nút khác nhau ép.void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (dữ liệu == '2') RF_TX = 0x20; nếu (dữ liệu == '3') …………... …. ….
Trong chức năng chính, đầu tiên chúng ta nhận dữ liệu được nhấn nút bàn phím bằng cách sử dụng hàm switch_press_scan () và lưu trữ dữ liệu trong biến key. Sau đó, chúng tôi đã mã hóa dữ liệu bằng cách sử dụng hàm encode_rf_sender () và thay đổi trạng thái PORTD.
Mã PIC18F4520 cho Bộ thu RF:
Như mọi khi, trước tiên chúng tôi đặt các bit cấu hình trong PIC18f4520. Nó khác một chút so với PIC16F877A, bạn có thể kiểm tra mã trong tệp zip đính kèm.
Chúng tôi đã bao gồm tệp tiêu đề LCD. Đã xác định kết nối cổng D8-D11 của IC giải mã qua PORTD bằng cách sử dụng #define RF_RX dòng PORTD, kết nối giống như được sử dụng trong phần Bộ mã hóa. Việc khai báo cổng LCD cũng được thực hiện trong tệp lcd.c.
#include
Như đã nêu trước khi chúng tôi sử dụng bộ dao động nội cho 18F4520, chúng tôi đã sử dụng hàm system _ init trong đó chúng tôi định cấu hình thanh ghi OSCON của 18F4520 để đặt bộ dao động nội cho 8 MHz. Chúng tôi cũng đặt bit TRIS cho cả chân LCD và chân Bộ giải mã. Vì HT - 12D cung cấp đầu ra tại các cổng D8-D11, chúng ta cần cấu hình PORTD làm đầu vào để nhận đầu ra.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // Kích hoạt PLL, Bộ định mức tối đa 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // 4 bit cuối cùng làm bit đầu vào. }
Chúng tôi đã cấu hình thanh ghi OSCON ở 8 MHz, cũng tạo cổng B làm đầu ra và cổng D làm đầu vào.
Chức năng dưới đây được thực hiện bằng cách sử dụng logic ngược chính xác được sử dụng trong phần bộ truyền trước. Ở đây chúng tôi nhận được cùng một giá trị hex từ cổng D và bằng giá trị hex đó, chúng tôi xác định công tắc nào đã được nhấn trong phần máy phát. Chúng tôi có thể xác định mỗi lần nhấn phím và gửi ký tự tương ứng lên màn hình LCD.
void rf_analysis (unsigned char Recogved_byte) { if (Recogved_byte == 0x10) lcd_data ('1'); if (Recogved_byte == 0x20) lcd_data ('2'); if (Recogved_byte == 0x30) ……. ….. …… ………..
Các lcd_data được gọi là từ lcd.c tập tin.
Trong chức năng chính, đầu tiên chúng ta khởi tạo hệ thống và màn hình LCD. Chúng tôi mất một biến byte, và lưu trữ các giá trị hex nhận được từ cổng D. Sau đó bằng hàm rf_analysis, chúng ta có thể in ký tự trên màn hình LCD.
void main (void) { unsigned char byte = 0; system_init (); lcd_init (); trong khi (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (byte); lcd_com (0xC0); } trở lại; }
Trước khi chạy nó, chúng tôi đã điều chỉnh mạch. Đầu tiên, chúng tôi đã nhấn nút ' D ' trên bàn phím. Vì vậy, 0xF0 đang được truyền liên tục bởi bộ phát RF. Sau đó chúng tôi điều chỉnh mạch thu cho đến khi màn hình LCD hiển thị ký tự ' D '. Đôi khi mô-đun được điều chỉnh đúng cách từ nhà sản xuất, đôi khi thì không. Nếu mọi thứ được kết nối đúng cách và không nhận được giá trị được nhấn nút trên màn hình LCD thì có khả năng Bộ thu RF không được điều chỉnh. Chúng tôi đã sử dụng tuốc nơ vít cách điện để giảm khả năng điều chỉnh sai do điện cảm cơ thể của chúng tôi.
Đây là cách bạn có thể giao tiếp Mô-đun RF với Bộ vi điều khiển PIC và giao tiếp không dây giữa hai bộ vi điều khiển PIC bằng Cảm biến RF.
Bạn có thể tải xuống mã hoàn chỉnh cho Máy phát và Máy thu từ đây, cũng kiểm tra Video trình diễn bên dưới.