红外控制Windows音量by python

        在宿舍刷剧时经常会贪在凳子上懒得调音量,看着实验室吃灰的8266,故有了想法做一个遥控控制音量的东东。

 

esp8266部分

arduino比较简单,直接给出代码。

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
int RECV_PIN = 2;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
  Serial.begin(115200);
  // 假如启动过程出现问题,提示用户启动失败
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}
 
void loop() {
  if (irrecv.decode(&results)) { //检查是否接收到红外遥控信号
    serialPrintUint64(results.value, HEX);
    irrecv.resume();                    //接收下一指令
  }
  delay(100);
}

 其中需要安装一个红外库:

红外控制Windows音量by python

接线图如下:

红外控制Windows音量by python

其中红外左引脚为信号输出,接到8266的D4引脚

红外控制Windows音量by python

采用买套件送的红外遥控

红外控制Windows音量by python

 如图所示,当收到信号后,led会闪烁。

python代码解析部分

import pyautogui
#pyautogui.press('volumeup')    #调大音量
import serial #导入模块
try:
  portx="COM6"
  bps=115200
  #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
  timex=None
  ser=serial.Serial(portx,bps,timeout=timex)
  #print("串口详情参数:", ser)

  #十六进制的发送
  #result=ser.write(chr(0x06).encode("utf-8"))#写数据
  #print("写总字节数:",result)

  #十六进制的读取
  while 1:


    #print(ser.read().hex())#读一个字节
    sign = ser.read(6)
    print(sign)  # 读一个字节
    if sign == b'FFA857':
      print("音量加")
      pyautogui.press('volumeup')
    if sign == b'FFE01F':
      print("音量减")
      pyautogui.press('volumedown')
    ser.flushInput()
  ser.close()#关闭串口

except Exception as e:
    print("---异常---:",e)

 控制部分采用pyautogui,模仿真实按键按下,当收到指定信号后,调高或调低音量。

 就这样。

 

上一篇:1-5.视图组件


下一篇:Day81--drf02--序列化组件serializers