基于单片机的红外远程遥控器

项目介绍

  无线电动遥控器就是一种远程遥控使用无线设备控制电动机器的一种遥控装置,在1898年最早的无线遥控器由一个美国人尼古拉特斯拉开发设计了并且生产出来的。在现在的市场上常见的无线遥控器模式有2种,一种是红外无线灯光遥控设备模式(irremotecontrol),常使用在家电,而另一种遥控模式就是专门用于遥控防盗门及报警无线遥控移动设备、门窗远光灯无线遥控、汽车车窗远光灯无线遥控等等常用的红外线及无线电光灯遥控设备模式(rfremotecontrol)。本产品的设计中主要是采用的红外遥控学习模式,红外遥控的主要特点有两大方面,一是不直接干扰其它家用电器设备,二是不直接影响电器周边环境。由于红外线波长的原因无法直接穿透房间墙壁,所以不同类型的家用电器可同时使用,红外遥控器不会对其他遥控器产生干扰,调试红外遥控电路也很简单,只要根据给定的电路的要求校正,一般情况下,IR编解码器也比较容易,遥控器可以在同一时间复用。出于这个原因,在遥控器的近红外遥控技术室内遥控和家电已被广泛使用。
  关键词:无线遥控器,红外遥控模式,近红外线,家用电器

红外遥控器硬件设计

1 硬件的选择

在本设计中的主要模块有,红外发射接收模块,学习模块,WiFi模块,其中所需要的装置就有,红外发射接收装置,WiFi连接装置,单片机等等。

2 红外接收装置

NB0038
本设计是需要将把接收到的红外信号,将其解码为单片机可以识别的信号模式,在我通过对红外接收头的了解以及研究后,以及对信号影响,成本的方面的考虑后,最后决定使用NB0038一体化红外接收头。
在这里插入图片描述

在这里插入图片描述

3.3 红外发射装置

本设计的红外发射部分比较简单,所以对红外发射装置的要求也就没有接收装置那么高,所以本设计使用的是红外发射二极管。 下面简单的介绍一下红外发射二极管的原理 。
在这里插入图片描述

红外发射二级管内有PN结,外加正向偏压向PN结内注入电流激发红外光。其最大的优点是可以完全无红暴或仅有微弱红暴和寿命长。

3.4 单片机

单片机是一种集合了总多功能的集成电路芯片,拥有数据处理能力、随机存储、只读存储的功能,并且单片机上有多种I/O口,通过 这些I/O口与其他设备连接。基于本次设计是设计一个家用的万能遥控器。本设计使用stm8系列的单片机来完成远程遥控器的设计。

STM8系列是意法半导体公司生产的8位的单片机,STM8S系列单片机的基本结构如图所示,

在这里插入图片描述

在这里插入图片描述

a、b、c、d、e这5个端口的i/o引脚都必须具有外部控制中断的能力,每个中断端口都必须具有独立的中断向量以及独立的中断标志,多达4个端口的软件具有可编程的嵌套接口等级。
管脚设置
在这里插入图片描述

3.4 WiFi模块

3.4.1 ESP8266

特点

在这里插入图片描述
在这里插入图片描述

效果图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

主要代码:

#define BLINKER_WIFI
#include <Blinker.h>

#define xx 4      //D2
#define fs_1 14   //D5
#define fs_2 12   //D6
#define fs_3 13   //D7
#define fs_4 15   //D8

char auth[] = "a7fc17eaded9";
char ssid[] = "xyzWiFi";
char pswd[] = "123456";

// 新建组件对象
BlinkerButton Button0("btn-xy");
BlinkerButton Button1("btn-fs1");
BlinkerButton Button2("btn-fs2");
BlinkerButton Button3("btn-fs3");
BlinkerButton Button4("btn-fs4");

int counter = 0;

// 按下按键即会执行该函数
void button0_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    
    if (state=="tap") {
      digitalWrite(xx,LOW);
      Blinker.delay(500);
      digitalWrite(xx,HIGH);
    }
}
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    
    if (state=="tap") {
      digitalWrite(fs_1,LOW);
      Blinker.delay(500);
      digitalWrite(fs_1,HIGH);
    }
}
void button2_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    
    if (state=="tap") {
      digitalWrite(fs_2,LOW);
      Blinker.delay(500);
      digitalWrite(fs_2,HIGH);
    }
}
void button3_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    
    if (state=="tap") {
      digitalWrite(fs_3,LOW);
      Blinker.delay(500);
      digitalWrite(fs_3,HIGH);
    }
}
void button4_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    
    if (state=="tap") {
      digitalWrite(fs_4,LOW);
      Blinker.delay(500);
      digitalWrite(fs_4,HIGH);
    }
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    pinMode(xx,OUTPUT);
    pinMode(fs_1,OUTPUT);
    pinMode(fs_2,OUTPUT);
    pinMode(fs_3,OUTPUT);
    pinMode(fs_4,OUTPUT);   
    digitalWrite(xx, HIGH);
    digitalWrite(fs_1, HIGH);
    digitalWrite(fs_2, HIGH);
    digitalWrite(fs_3, HIGH); 
    digitalWrite(fs_4, HIGH); 
    Button0.attach(button0_callback);   
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Button4.attach(button4_callback);
}

void loop() {
    Blinker.run();
}

目录:

目录
第1章 前言 5
1.1 选题的目的与意义 5
1.2 红外学习研究现状 5
1.3 毕业设计的要求以及目的 6
第2章 设计方案论述 7
2.1设计原理 7
2.2红外发射接收原理 7
2.2.1红外发射原理 10
2.2.3 ESP8266红外发射与接收 10
2.3 学习模式原理 11
第3 章 红外遥控器硬件设计 11
3.1硬件的选择 11
3.1红外接收装置 12
3.2红外发射装置 12
3.3单片机的选择 13
3.4 WiFi模块 17
3.4.1 ESP8266 17
3.4.2 AMS1117 21
3.4.3 CH340 22
第4 章 红外遥控器程序设计 23
4.1 WiFi模块程序设计 23
4.2 手机APP设计 25
结束语 3
参考文献 4
致谢 4
附录 6

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AVR单片机红外遥控器解码,是指利用AVR单片机来解析红外遥控器信号,从中提取出红外遥控器发送的指令。 首先,红外遥控器是通过红外线发送遥控信号的。红外遥控器解码的关键在于解析红外遥控器发射的红外信号。在解析过程中,我们需要一个红外接收头来接收红外信号。红外接收头一般会将红外信号转换成电信号,然后通过电路将其转换为数字信号,进而进行解码。 使用AVR单片机进行解码的过程如下: 1. 选择一个合适的引脚连接红外接收头,并通过电阻分压电路将信号转接到单片机的引脚上。 2. 初始化AVR单片机的外部中断,使得单片机可以通过中断接收红外接收头的信号变化。 3. 在中断服务子程序中,计算红外信号的时间间隔,根据时间间隔判断信号是"0"还是"1"。 4. 解码红外信号,将红外信号转换为相应的指令码。不同品牌的红外遥控器可能采用不同的编码方式,因此需要根据具体情况进行解码。 在解码过程中,可以根据不同的应用需求,选择合适的解码算法。例如,可以通过建立红外码表,将红外信号与相应的指令码进行映射,从而实现对红外遥控器的解码。 AVR单片机红外遥控器解码的过程相对简单,通过设置合适的引脚连接和编写相应的代码,可以实现对红外遥控器信号的解析和对应指令的获取。这样,我们就可以利用AVR单片机来控制各种设备,实现远程遥控的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值