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

项目介绍

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

红外遥控器硬件设计

1 硬件的选择

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

2 红外接收装置

NB0038
本设计是需要将把接收到的红外信号,将其解码为单片机可以识别的信号模式,在我通过对红外接收头的了解以及研究后,以及对信号影响,成本的方面的考虑后,最后决定使用NB0038一体化红外接收头。
基于单片机的红外远程遥控器_第1张图片

基于单片机的红外远程遥控器_第2张图片

3.3 红外发射装置

本设计的红外发射部分比较简单,所以对红外发射装置的要求也就没有接收装置那么高,所以本设计使用的是红外发射二极管。 下面简单的介绍一下红外发射二极管的原理 。
基于单片机的红外远程遥控器_第3张图片

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

3.4 单片机

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

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

基于单片机的红外远程遥控器_第4张图片

基于单片机的红外远程遥控器_第5张图片

a、b、c、d、e这5个端口的i/o引脚都必须具有外部控制中断的能力,每个中断端口都必须具有独立的中断向量以及独立的中断标志,多达4个端口的软件具有可编程的嵌套接口等级。
管脚设置
基于单片机的红外远程遥控器_第6张图片

3.4 WiFi模块

3.4.1 ESP8266

特点

基于单片机的红外远程遥控器_第7张图片
基于单片机的红外远程遥控器_第8张图片

效果图

基于单片机的红外远程遥控器_第9张图片
基于单片机的红外远程遥控器_第10张图片

基于单片机的红外远程遥控器_第11张图片

主要代码:

#define BLINKER_WIFI
#include 

#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

你可能感兴趣的:(单片机,单片机,mongodb,嵌入式硬件)