最近在做一个智能家居的项目,其核心部分是使用红外遥控各种家电,包括电视,风扇,空调等等。在制作学习型红外遥控的过程中,遇到了许多问题,也颇有感悟,特此记录下来与大家分享。
首先先介绍一下红外线的基本收发。
发射端
红外线发送不同于一般的数据传输协议,在此与串口比较说明。
串口是最简单的数据传输协议,学过单片机的人都知道,单片机通过串口发送协议时,其发送的波形是一系列高低变化的电平(这不是废话吗?)。
一般串口一次发送只能发送1个字节,即8个位的数据。若排除校验位、其实为或是其他xx位,若是从最高位开始发,0101 0001B 这个数据的波形就是先低电平,后高电平,再低电平…. 一直到最低位发送完毕(或者是校验位)。以下是串口发送的波形图。
而红外线的发射有两种状态,一种是载波信号,另一种是空闲信号。什么是载波信号?按照我最直观的理解,载波信号就是一组连续的,高频率的方波。一般世面上的家电红外线发射都是使用38kHz频率的载波,这个还牵扯到红外线接收头的问题,在后面接收端会提到。与载波信号相对,空闲信号就是一段连续的高电平或低电平。注意,是空闲信号期间是不会发生波形变化的。