37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验七十一: HX1838红外无线遥控套件红外扩展模块(遥控器+接收板) 红外线 又称红外光波,在电磁波谱中,光波的波长范围为0.01um~1000um。根据波长的不同可分为可见光和不可见光,波长为0.38um~0.76um的光波可为可见光,依次为红、橙、黄、绿、青、蓝、紫七种颜色。光波为0.01um~0.38um的光波为紫外光(线),波长为0.76um~1000um的光波为红外光(线)。红外光按波长范围分为近红外、中红外、远红外、极红外4类。红外线遥控是利用近红外光传送遥控指令的,波长为0.76um~1.5um。用近红外作为遥控光源,是因为目前红外发射器件(红外发光管)与红外接收器件(光敏二极管、三极管及光电池)的发光与受光峰值波长一般为0.8um~0.94um,在近红外光波段内,二者的光谱正好重合,能够很好地匹配,可以获得较高的传输效率及较高的可靠性。 红外遥控 红外线遥控是目前使用最广泛的一种通信和遥控手段。 由于红外线遥控装置具有体积小、 功耗低、 功能强、 成本低等特点, 因而, 继彩电、 录像机之后, 在录音机、 音响设备、 空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。 工业设备中, 在高压、 辐射、 有毒气体、 粉尘等环境下, 采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。 VS/HX1838 VS1838和HX1838均为红外接收头,两者的区别主要表现在接收距离上,vs1838的最大接收距离为18--20米,HX1838的最大接收距离为15米。 vs1838参数如下——工作电压:2.7-5.5V,接收距离:18-20M,vs1838具有高灵敏度,抗光、电磁干扰能力强等特性。广泛应该于机顶盒、DVD、AV、TV、空调等,是高档电器的理想选择。 HX1838参数如下——工作电压:2.7~5.5V,工作电流:1.4mA,距离:15M,频率:38K,角度:±45°,HX1838具有宽电压适应、低功耗、高灵敏度、优良的抗干扰特性;广泛应用于家用电器、空调、玩具等红外遥控接收。 特性 ●小型设计 ●内置专用IC ●宽角度及长距离接收 ●抗干挠能力强 ●能抵挡环境干挠光线 ●低电压工作 应用 ■视听器材(音箱,电视,录影机,碟机) ■家庭电器(冷气机,电风扇,电灯) ■其它红外线遥控产品 红外的简单发射接收原理 在发射端,输入信号经放大后送入红外发射管发射,在接收端,接收管收到红外信号后,由放大器放大处理后还原成信号,这就是红外的简单发射接收原理。 红外遥控系统结构 红外遥控系统的主要部分为调制、发射和接收。红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源功耗。调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9kHz≈38kHz。38KH载波发射(完整的发射)如下图。 Arduino红外无线遥控扩展套件由Mini超薄红外遥控器和38KHz红外接收模块组成,Mini超薄红外遥控器具有17个功能键,发射距离最远可达8米,非常适合在室内操控各种设备。红外接收模块可接收标准38KHz调制的遥控器信号,通过对Arduino进行编程,即可实现对遥控器信号的解码操作,从而可制作各种遥控机器人以及互动作品。 超薄红外遥控参数 1.CR2025环保纽扣电池,容量160mah 2.发射距离:8m以上(具体和周围环境、接收端的灵敏度等因素有关) 3.有效角度:60度 4.面贴材料:0.125mmPET,有效寿命2万次。 5.品质稳定,性价比高 6.静态电流3-5uA,动态电流3-5mA。 /* 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验七十一:HX1838红外无线遥控套件红外扩展模块(遥控器+接收板) */ #include int PIN_RECV = 7; IRrecv irrecv(PIN_RECV); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); irrecv.resume(); } } /* 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验七十一:HX1838红外无线遥控套件红外扩展模块(遥控器+接收板) 程序之二,1和2键控制板载13脚LED灯的亮暗 */ #include int RECV_PIN = 7; int LED_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (results.value == 0xFFA25D) //开灯的值 { digitalWrite(LED_PIN, LOW); } else if (results.value == 0xFF629D) //关灯的值 { digitalWrite(LED_PIN, HIGH); } irrecv.resume(); // Receive the next value } delay(100); } /* 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验七十一:HX1838红外无线遥控套件红外扩展模块(遥控器+接收板) 程序之三,查询红外数字与HEX编码值 */ #include int PIN_RECV = 7; IRrecv irrecv(PIN_RECV); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.print("数字编码= "); Serial.println(results.value); irrecv.resume(); Serial.print("HEX编码= "); Serial.println(results.value, HEX); Serial.print("编码位数= "); Serial.println(results.bits); } delay(600); } 实验场景图 实验开源图形编程(Mind+、编玩边学) 实验开源仿真编程(linkboy3.7)