目录
简介
有没有发现生活中很多的设备都有遥控器,遥控器使用的是红外线进行无线传输的,但是每个设备各用一个遥控器是不是很麻烦呢,那么这个项目就是教你把所有遥控器集于一身,用arduino完美打造万能遥控器.
你能用这个项目做什么?
- 用Arduino替换所有遥控器。
- 使用Arduino +蓝牙模块创建您自己的通用红外遥控器。
- 使用任何协议发送和接收红外信号。
- 将IR数据存储在手机中。
- 自动连接到Arduino。
- 对每个红外按钮进行排序和重命名。
- 更改每个IR按钮的图标。
步骤一 材料准备
硬件准备:
- Arduino UNO和Genuino UNO× 1
- 红外LED× 1
- 红外接收器(通用)× 1
- 蓝牙模块(HM-10或Bluefruit,也可以使用HC-05或HC-06)× 1
- 通用晶体管NPN
软件准备:
- Arduino Uno
步骤三 电路搭建
HM-10接线图:
Bluefruit UART接线图:
HC-06或HC-05接线图:
- arduino_rx_pin ——-> Bluetooth_tx_pin
- arduino_tx_pin ——-> Bluetooth_rx_pin – 如果您使用的是Bluefruit模块,请确保将CTS引脚接地。
- IR接收器——->引脚11
- 红外发射器——->引脚3 仅限UNO
- 红外发射器——->引脚13 仅限LEONARDO
- 红外发射器——->引脚9 仅限MEGA
步骤四 编写程序
程序如下:
/*
连接:
arduino_rx_pin -------> Bluetooth_tx_pin
arduino_tx_pin -------> Bluetooth_rx_pin - 如果您使用的是Bluefruit模块,请确保将CTS引脚接地。
IR接收器------->引脚11
红外发射器------->引脚3 仅限UNO
红外发射器------->引脚13 仅限LEONARDO
红外发射器------->引脚9 仅限MEGA
*/
#include
#include
#define arduino_rx_pin 10 // arduino_rx_pin 10 -------> Bluetooth_tx_pin
#define arduino_tx_pin 8 // arduino_tx_pin 8 -------> Bluetooth_rx_pin
String ir[3];
int recvPin = 11;
unsigned int irBuf[100];
unsigned int irBufLen;
unsigned int irBufType;
boolean repeat = false;
SoftwareSerial mySerial(arduino_rx_pin, arduino_tx_pin); // RX, TX
IRrecv irrecv(recvPin);//pin 11
IRsend irsend;//引脚3是UNO,引脚13是Leo,引脚9是Mega
void process() {
String command = mySerial.readStringUntil('/');
if (command == "ir") {
irCommand();
}
if (command == "irR") {//R代表重复代码
irCommandR();
}
if (command == "allstatus") {
allstatus();
}
}
void irCommand() {
repeat = false;
String codeType, codeValue, codeLen;
codeType = mySerial.readStringUntil('/');
codeValue = mySerial.readStringUntil('/');
codeLen = mySerial.readStringUntil('\r');
irBufLen = codeLen.toInt();
irBufType = codeType.toInt();
stringToIntArry(codeValue);
sendCode();
Serial.println(F("Sent Raw "));
}
void irCommandR() {
String codeType, codeValue, codeLen;
codeType = mySerial.readStringUntil('/');
if (codeType == "off") {
repeat = false;
} else {
codeValue = mySerial.readStringUntil('/');
codeLen = mySerial.readStringUntil('\r');
stringToIntArry(codeValue);
irBufLen = codeLen.toInt();
irBufType = codeType.toInt();
repeat = true;
}
Serial.println(F("Sent Repeat Raw "));
}
void allstatus() {
String data_status = "{\"T\":\"\",\"D\":[]}";
mySerial.println(data_status);
Serial.println(F("Connected"));
}
void dumpCode (decode_results *results)
{
int codeType = results->decode_type;
int codeLen = results->bits;
unsigned long codeValue = results->value;
String data_status;
data_status += F("{\"T\":\"");
data_status += codeType;
data_status += F("\",\"D\":[\"");
data_status += codeValue;
data_status += F("\",\"");
for (int i = 1; i < results->rawlen ; i++)
{
data_status += results->rawbuf[i] * USECPERTICK;
if (i != results->rawlen - 1)data_status += ",";
}
data_status += F(",\",\"");
data_status += results->rawlen;
data_status += F("\"]}");
mySerial.println(data_status);
Serial.println(F("Got IR Code"));
}
余下程序,直接放到上面的程序最下面即可:
步骤五 验证结果
网站所有视频该插件不支持,要下载对应播放器?
用主流的浏览器就可以 播放需要flash插件 一般浏览器都自带 我用的google浏览器直接就可以看