Arduino - Giao tiếp không dây

Mô-đun bộ thu và phát không dây hoạt động ở tần số 315 Mhz. Chúng có thể dễ dàng phù hợp với một breadboard và hoạt động tốt với các bộ vi điều khiển để tạo ra một liên kết dữ liệu không dây rất đơn giản. Với một cặp máy phát và máy thu, các mô-đun sẽ chỉ hoạt động truyền dữ liệu một chiều, tuy nhiên, bạn sẽ cần hai cặp (có tần số khác nhau) để hoạt động như một cặp máy phát / máy thu.

Note- Các mô-đun này là bừa bãi và nhận được một lượng lớn tiếng ồn. Cả máy phát và máy thu đều hoạt động ở tần số chung và không có ID.

Thông số kỹ thuật mô-đun máy thu

  • Mẫu sản phẩm - MX-05V
  • Điện áp hoạt động - DC5V
  • Dòng tĩnh lặng - 4mA
  • Tần số nhận - 315Mhz
  • Độ nhạy máy thu - -105DB
  • Kích thước - 30 * 14 * 7mm

Thông số kỹ thuật mô-đun máy phát

  • Mẫu sản phẩm - MX-FS-03V
  • Khoảng cách khởi động - 20-200 mét (điện áp khác nhau, kết quả khác nhau)
  • Điện áp hoạt động - 3,5-12V
  • Kích thước - 19 * 19mm
  • Chế độ hoạt động - AM
  • Tốc độ truyền - 4KB / S
  • Công suất truyền - 10mW
  • Tần số truyền - 315Mhz
  • Ăng-ten bên ngoài - dòng đa lõi hoặc lõi đơn 25cm thông thường
  • Sơ đồ chân từ trái → phải - (DATA; V CC ; GND)

Thành phần bắt buộc

Bạn sẽ cần các thành phần sau:

  • 2 × bảng Arduino UNO
  • Máy phát liên kết 1 × Rf
  • Bộ thu liên kết 1 × Rf

Thủ tục

Thực hiện theo sơ đồ mạch và thực hiện các kết nối như trong hình dưới đây.

Phác thảo

Mở phần mềm Arduino IDE trên máy tính của bạn. Mã hóa bằng ngôn ngữ Arduino sẽ điều khiển mạch của bạn. Mở một tệp phác thảo mới bằng cách nhấp vào Mới.

Note- Bạn phải bao gồm thư viện bàn phím trong tệp thư viện Arduino của mình. Sao chép và dán tệp VirtualWire.lib vào thư mục thư viện như được đánh dấu trong ảnh chụp màn hình bên dưới.

Mã Arduino cho máy phát

//simple Tx on pin D12
#include <VirtualWire.h>
char *controller;

void setup() {
   pinMode(13,OUTPUT);
   vw_set_ptt_inverted(true);
   vw_set_tx_pin(12);
   vw_setup(4000);// speed of data transfer Kbps
}

void loop() {
   controller="1" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,1);
   delay(2000);
   controller="0" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,0);
   delay(2000);
}

Mã cần lưu ý

Đây là một mã đơn giản. Đầu tiên, nó sẽ gửi ký tự "1" và sau hai giây, nó sẽ gửi ký tự "0", v.v.

Mã Arduino cho bộ thu

//simple Rx on pin D12
#include <VirtualWire.h>

void setup() {
   vw_set_ptt_inverted(true); // Required for DR3100
   vw_set_rx_pin(12);
   vw_setup(4000); // Bits per sec
   pinMode(5, OUTPUT);
   vw_rx_start(); // Start the receiver PLL running
}

void loop() {
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;
   if (vw_get_message(buf, &buflen)) // Non-blocking {
      if(buf[0]=='1') {
         digitalWrite(5,1);
      }
      if(buf[0]=='0') {
         digitalWrite(5,0);
      }
   }
}

Mã cần lưu ý

Đèn LED kết nối với chân số 5 trên bảng Arduino được BẬT khi nhận ký tự '1' và TẮT khi nhận ký tự '0'.