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ị
- Relay 5V
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