用 Python 的 ESP8266+MicroPython 实现空调远程遥控
16 元买的 ESP8266 的开发板,安装上 MicroPython。加上一个红外线 LED,一个电阻,一个温度传感器 DTH22。然后设置成 WebSocket 服务器,就可以用手机查看家里的温度,控制空调的开关了。
遥控器的信号是使用 TSOP38238 解调,然后用 30 元的逻辑分析仪捕捉。
用 Python 的 ESP8266+MicroPython 实现空调远程遥控
赞
用 MicroPython 在 ESP8266 上实现空调遥控,核心是发射红外信号。你需要一个红外发射管(如 IR LED)和一个限流电阻(约 100-330Ω)。这里给你一个完整的示例,它使用 urequests 获取网络时间,并通过 ir_tx 模块发送 NEC 编码的红外信号(假设你的空调支持 NEC 协议)。
首先,确保你的 MicroPython 固件包含 ir_tx 模块。如果没有,你可能需要自己实现一个简单的红外发射函数。
import network
import urequests
import time
from machine import Pin
import ir_tx
# 配置 Wi-Fi
SSID = '你的WiFi名称'
PASSWORD = '你的WiFi密码'
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('正在连接WiFi...')
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('网络配置:', wlan.ifconfig())
# 初始化红外发射
ir_pin = Pin(14, Pin.OUT) # 假设红外发射管接在 GPIO14
ir = ir_tx.IR(ir_pin, freq=38000) # 38kHz 是红外载波频率
# 假设的空调遥控码(需要替换为你的空调实际码值)
# NEC 编码:地址码 + 地址反码 + 命令码 + 命令反码
AC_ON = 0x00FF00FF # 示例开机码
AC_OFF = 0x00FF807F # 示例关机码
AC_TEMP_24 = 0x00FF40BF # 示例24度码
def send_ir_code(code):
ir.transmit(code, 32) # 发送32位NEC编码
time.sleep(0.5)
# 主循环
connect_wifi()
print("准备发送红外信号...")
# 示例:发送开机并设置24度
send_ir_code(AC_ON)
time.sleep(2)
send_ir_code(AC_TEMP_24)
print("指令发送完成")
关键点:
- 你需要用真实的 Wi-Fi 名称和密码替换
SSID和PASSWORD。 - 红外编码
AC_ON,AC_OFF等需要替换成你空调的实际遥控码。获取这些码值通常需要用一个红外接收模块(如 VS1838B)先录制。 - 如果你的 MicroPython 没有
ir_tx模块,你需要用 PWM 手动生成 38kHz 载波来模拟红外信号,这会更复杂。 - GPIO 引脚号(这里是 14)需要根据你的实际接线调整。
总结:先录下你空调的红外码,然后替换代码里的编码值。
可以接上 mqtt
感谢分享
曾经我也迷恋过根据天气自动调节温度,直到有一天我发现窗户没关。。。
我自己是用 nodemcu 固件,上传代码用 nodemcu-uploader,编辑用 vscode
遥控编码怎么得来的呢,想过用红外接收管录制,但是没有红外接收管
我是用 https://github.com/micropython/webrepl 上传代码,遥控代码是直接用逻辑分析仪获取解调波形。
请问用的是哪个逻辑分析仪?
建议换 ESP32,贵不了几块钱,,性能更高、内存更大,,可玩儿性更高
https://github.com/adafruit/ampy 刚才看了视频()发现这个命令行工具更好用
这个工具使用串口通信,应该只能是在 main.py 程序结束,进入 REPL 时才能使用。而 webrepl 通过 websocket 通信上传文件,可以在主程序运行时上传下载文件。webrepl 也提供了命令行工具上传下载。 把自动开关窗也做上
问下,如果在路由器内网,如何访问 ESP8266 的 WebSocket 服务器?
小米有个空调伴侣很好用, 就是贵点儿
我的路由器可以设置端口映射,把 websocket 的端口,映射到内网的 esp8266 的 IP 上即可。
我想实现国内某个物联网平台 MQTT 客户端的授权过程,结果一堆加密的库不兼容😂
赞,学习了
关个窗帘可以搞,窗户的话成本就太大了
哈哈不错,最近正好有一个类似的项目,代码拿来学习了。
红外接收管可以用 VS838 https://github.com/but0n/IrDA-stm32
工科狗
了解,谢谢
大佬。求个联系方式。我卡在 8266 红外这好久了。
能留个联系方式吗?最近有个设计跟你差不多,大佬看到回复我一下

