“体感电视遥控器”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
原理
设备
 
(未显示1个用户的3个中间版本)
第20行: 第20行:
 
|[[Microduino-10DOF/zh]]||1||矢量传感器模块
 
|[[Microduino-10DOF/zh]]||1||矢量传感器模块
 
|-
 
|-
| [[Microduino-IR transmitter/zh]]||1||红外发送传感器  
+
| [[Sensor-IR Sensor/zh]]||1||红外发送传感器  
 +
|-
 +
| [[Microduino-Converter/zh]]||1||转接板
 
|-
 
|-
 
| [[Microduino-BM/zh]]||1||电源管理
 
| [[Microduino-BM/zh]]||1||电源管理
 
|}
 
|}
 
  [[File:ble_lamp_light.jpg|600px|center|thumb]]
 
  [[File:ble_lamp_light.jpg|600px|center|thumb]]
 
  
 
==搭建硬件==
 
==搭建硬件==
 
*Setup 1:将CoreUSB、10DOF与Sensorhub叠堆。
 
*Setup 1:将CoreUSB、10DOF与Sensorhub叠堆。
 
[[File:CoreUSB_10DOF_Sensorhub.jpg|600px|center|thumb]]
 
[[File:CoreUSB_10DOF_Sensorhub.jpg|600px|center|thumb]]
*Setup 2:将红外发射传感器接到Sensorhub的D3引脚上.
+
*Setup 2:将红外发射传感器通过转接板接到Sensorhub的D3引脚上.
 
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
 
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
 
[[File:light_ir_transmitter.jpg|600px|center|thumb]]
 
[[File:light_ir_transmitter.jpg|600px|center|thumb]]
第42行: 第43行:
 
#define VOL-  0x02FD7887  //音量-
 
#define VOL-  0x02FD7887  //音量-
  
MPU6050 accelgyro;      //三轴陀螺仪
+
MPU6050 accelgyro;      //三轴加速度传感器
 
IRsend irsend;          //红外发射
 
IRsend irsend;          //红外发射
 
</source>
 
</source>
*三轴陀螺仪初始化
+
*三轴加速度传感器初始化
 
<source lang="cpp">
 
<source lang="cpp">
 
Serial.println("Initializing I2C devices...");
 
Serial.println("Initializing I2C devices...");
第84行: 第85行:
 
</source>
 
</source>
 
*注意:如果感觉红外发射器遥控距离太短,可以通过减小红外发射器上的限流电阻来增加发射距离。
 
*注意:如果感觉红外发射器遥控距离太短,可以通过减小红外发射器上的限流电阻来增加发射距离。
 +
 +
==程序==
 +
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoMotionRemoteTV MicroduinoMotionRemoteTV]]
  
 
==结果==
 
==结果==

2017年5月31日 (三) 10:09的最新版本

Language English

目的

通过体感遥控电视机,遥控器处在不同的姿势或运动状态来控制电视机的换台和音量。

原理

利用三轴加速度传感器MPU6050检测遥控器的运动状态变化,然后红外发射传感器通过匹配编码控制电视机的功能。

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-10DOF/zh 1 矢量传感器模块
Sensor-IR Sensor/zh 1 红外发送传感器
Microduino-Converter/zh 1 转接板
Microduino-BM/zh 1 电源管理

搭建硬件

  • Setup 1:将CoreUSB、10DOF与Sensorhub叠堆。
  • Setup 2:将红外发射传感器通过转接板接到Sensorhub的D3引脚上.
Microduino-sensorhub rule.JPG

软件调试

  • 电视机红外遥控编码定义,此处控制的是长虹电视机,采用NEC编码格式
#define ITEM+  0x02FDD827  //节目+
#define ITEM-  0x02FDF807  //节目-
#define VOL+  0x02FD58A7   //音量+
#define VOL-  0x02FD7887   //音量-

MPU6050 accelgyro;       //三轴加速度传感器
IRsend irsend;           //红外发射
  • 三轴加速度传感器初始化
Serial.println("Initializing I2C devices...");
accelgyro.initialize();    //初始化I2C设备

Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ?"MPU6050 connection successful" : "MPU6050 connection failed");   //测试MPU6050已连接上
  • 判断遥控器的运动状态。遥控器向右摆,电视机换下一个台,向左摆,电视机换上一个台;遥控器向上摆,电视机音量增加,向下摆,电视机音量减小。
 accelgyro.getAcceleration(&ax, &ay, &az);   //获得三轴加速度值 
    Ax = ax/16384.00;      
    Ay = ay/16384.00;
    Az = az/16384.00;
    
    if(Ay >= 0.6 )      //检测到遥控器向右开始摆动
    {
      irsend.sendNEC(ITEM+,32);   //发射换台编码
      delay(1000);      //延时等待摆动停下来
    }
    else if(Ay <= -0.6) //检测到遥控器向左开始摆动
    {
      irsend.sendNEC(ITEM-,32);   
      delay(1000);     
    }
    else if(Az >= 1.5)   //检测到遥控器向上开始摆动
    {
      irsend.sendNEC(VOL+,32);   
      delay(1000);
    }
    else if(Az <= 0.5)   //检测到遥控器向下开始摆动
    {
       irsend.sendNEC(VOL-,32);  
       delay(1000);
    } 
    delay(100);
  • 注意:如果感觉红外发射器遥控距离太短,可以通过减小红外发射器上的限流电阻来增加发射距离。

程序

[MicroduinoMotionRemoteTV]

结果

遥控器左右摆动可以控制电视机换台,上下摆动可以控制电视机加减音量,可以增加其他姿态来控制电视机的其他功能。

视频