Bật tắt đèn từ xa sử dụng 2 module RF CC1101 kết hợp với Arduino

Xin chào các bạn, hôm nay mình hướng dẫn các bạn bật tắt đèn từ xa sử dụng 2 module RF CC1101 kết nối với Arduino.

 Các hướng ứng dụng khác

Module RF CC1101 được sử dụng rất nhiều trong đời sống ví dụ như:

-         Thiết bị giám sát xe.

-         Thiết bị cảm biến từ xa.

-         Thiết bị điều khiển không dây từ xa.

-         Truyền dữ liệu không dây..v.v.

Thông số cơ bản CC1101

-         Điện áp hoạt động: 1.8V – 3.6V. Nên sử dụng 3.3V.

-         Tần số hoạt động: 387 – 464Mhz.

-         Sử dụng các băng tần: 315/433/868/915 Mhz.

-         Công suất tối đa: 10mW.

-         Tốc độ truyền có thể lên tới 500kbps.

-         Giao tiếp theo chuẩn truyền thông SPI.

Cấu hình chân

Pin

Tên Pin

Chức năng

1,2

VCC

Kết nối nguồn 1.8V- 3.6V.

3

SI

Chân nhận dữ liệu của CC1101

4

SCLK

Chân clock trong chuẩn SPI

5

SO(GDO1)

Chân truyền dữ liệu của CC1101

6

GDO2

Digital Output

7

CSn

Chân chọn chip trong giao tiếp SPI

8

GDO0

Digital I/O

9,10

GND

Ground

Linh kiện chuẩn bị

-         2 Arduino Uno R3.

-         Relay 5V

-         2 Module RF CC1101.

-        Bóng đèn, dây cắm, nguồn...

Sơ đồ nối chân

Ta lắp 2  mạch kết nối:

 Mạch bên phát tín hiệu

Mạch bên thu tín hiệu

Sau đó ta vào linhk http://www.electrodragon.com/w/CC1101 tải thư viện

Chú ý ta sửa dòng “WProgram.h” thành “Arduino.h” trong 2 file ELECHOUSE_CC1101.h và ELECHOUSE_CC1101.cpp như hình dưới đây và lưu lại rồi sau đó add thư viện vào thư viện của Arduino IDE :

Cuối cùng coppy code dưới vào Arduino IDE .

Code TX:

/*

 * set Pin        CC1101          Arduino

 *               SCK_PIN            13

                 MISO_PIN           12

                 MOSI_PIN           11

                 SS_PIN             10

                 GDO0                2

                 GDO2                9

*/

#include <ELECHOUSE_CC1101.h>

#define size 1

int buttonPin = 3;                             // button ket noi Pin 3

int value_button;                              // bien luu gia tri button

byte TX_buffer[size]={0};             // mang truyen di

void setup()

{

  Serial.begin(9600);

  ELECHOUSE_cc1101.Init();        // khai bao CC1101

  pinMode(buttonPin, INPUT);       // set input

}

void loop()

{

  value_button = digitalRead(buttonPin);            // doc gia tri button

  if(value_button == HIGH){                                  // ham loc

    while(value_button == HIGH){

      value_button = digitalRead(buttonPin);

      }

       ELECHOUSE_cc1101.SendData(TX_buffer,size);             // truyen tin hieu

    }

}

Code RX

/*

 * set Pin        CC1101          Arduino

 *               SCK_PIN            13

                 MISO_PIN           12

                 MOSI_PIN           11

                 SS_PIN             10

                 GDO0                2

                 GDO2                9

*/

#include <ELECHOUSE_CC1101.h>

int ledPin = 3;                                   //  chan dk cua relay ket noi vs pin 3

int count =0;                                     // bien dem

 void setup()

{

  Serial.begin(9600);

  pinMode(ledPin, OUTPUT);                    // set ouput

  ELECHOUSE_cc1101.Init();                    // khai bao cc1101

  ELECHOUSE_cc1101.SetReceive();      // set nhan tin hieu

}

byte RX_buffer[1]={0};                             // mang luu gia tri

byte size,flag;                                               // so gia tri mang truyen

void loop()

{

  if(ELECHOUSE_cc1101.CheckReceiveFlag())        // kiem tra co tin hieu nhan

  {

    size=ELECHOUSE_cc1101.ReceiveData(RX_buffer);   // nhan tin hieu

    count ++;                                                                           // tang bien dem

    if( count%2 == 1){                                                          // sang den

      digitalWrite(ledPin,HIGH );

    }else {                                                                                // tat den

      digitalWrite(ledPin,LOW );

    }

    ELECHOUSE_cc1101.SetReceive();

  }

  if(count == 2){                                                                   // reset gia tri

    count = 0;

    }

}

Kết Quả: https://youtu.be/2lG1F3VTpls

 

Bạn có thể xem chi tiết về Module RF CC1101 Tại đây

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: