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

ty77 | 3 đánh giá
07/30/2018

em muốn bộ phát thay bằng remote thì làm như thế nào ạ
fani625 | 3 đánh giá
08/30/2017

Compiling error 'Int' does not name a type
Nguyễn Đình Tám | 3 đánh giá
11/08/2016

chào Anh, em có 1 chổ không hiểu ạ, em tìm trong code mà ko thấy chổ đặc address cho module, em đã dùng mạch RF dử dụng bằng Remote, anh có thể hướng dẩn không à.

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ệ: