02-ESP32连接WIFI、PC控制LED
ESP32连接WIFI、PC控制LED一、连接WIFI二、PC控制LED一、连接WIFI查阅MicroPython官方文档可以找到连接wifi最基础的实例代码设置工作模式AP(AccessPoint)无线接入点即家里的路由器类似的功能。STA(Station)无线终端即连接到AP的装置手机、电脑等。这个模式不允许其他设备接入。通过以下代码可以扫描到附近的设备importnetwork wlannetwork.WLAN()#默认即为STA模式wlan.active(True)# 扫描附近的wifi 2.4G按照list形式返回wifiListwlan.scan()# 解包扫描的元组数据格式化打印(ssid, bssid, channel, RSSI, security, hidden)forssid,bssid,channel,rssi,security,hiddeninwifiList:print(fSSID:{ssid}, bssid:{bssid}, channel:{channel}, rssi:{rssi}dBm, security:{security}, hidden:{hidden})PC端通过python建立udp通道后可以直接等待ESP32发送数据这里需要一些python网络通信相关的知识PC配置python环境直接执行脚本等待单片机发送数据即可importsocketimporttime# 创建一个UDP套接字udp_socketsocket.socket(socket.AF_INET,socket.SOCK_DGRAM)# 绑定本地的相关信息local_addr(192.168.17.237,8081)#本机ipv4信息端口udp_socket.bind(local_addr)# 等待接收对方发送的数据recv_data,addrudp_socket.recvfrom(1024)# 打印接收到的数据print(f[From{addr[0]}:{addr[1]}]:{recv_data.decode(utf-8)})time.sleep(1)#收到单片机数据之后会送一次数据des_addr(192.168.17.122,8081)send_dataIm here, my esp32.#发送的数据udp_socket.sendto(send_data.encode(utf-8),des_addr)#通过socket发送# 关闭套接字udp_socket.close()基于之前已经连接的wifi向PC发送数据importnetworkimporttimefromsocketimport*wlannetwork.WLAN()wlan.active(True)# 扫描附近的wifi 2.4G按照list形式返回wifiListwlan.scan()importnetworkimporttimefromsocketimport*wlannetwork.WLAN()wlan.active(True)# 扫描附近的wifi 2.4G按照list形式返回wifiListwlan.scan()# 解包扫描的元组数据格式化打印(ssid, bssid, channel, RSSI, security, hidden)forssid,bssid,channel,rssi,security,hiddeninwifiList:# 解码SSIDbytes转stringssid_strssid.decode(utf-8)ifssidelse隐藏网络# 格式化BSSIDMAC地址bssid_str:.join([%02x%bforbinbssid])print(fSSID:{ssid_str},bssid:{bssid_str},channel:{channel},rssi:{rssi}dBm,\ security:{security},hidden:{hidden})print(MAC:str(wlan.config(mac)))print(IP:str(wlan.ipconfig(addr4)))# 未连接时地址为空print(wlan.isconnected())wlan.connect(find,0000000000)time.sleep(5)print(wlan.isconnected())#连接成功之后向指定IP发送数据udp_socketsocket(AF_INET,SOCK_DGRAM)des_addr(192.168.17.237,8081)send_datahello my pc#发送的数据udp_socket.sendto(send_data.encode(utf-8),des_addr)#通过socket发送#发送信息之后等待PC回信# 绑定本地的相关信息local_addr(192.168.17.122,8081)#本机ipv4信息端口udp_socket.bind(local_addr)# 等待接收对方发送的数据recv_data,addrudp_socket.recvfrom(1024)# 打印接收到的数据print(f[From{addr[0]}:{addr[1]}]:{recv_data.decode(utf-8)})udp_socket.close()#关闭资源运行效果二、PC控制LED结合一的知识可以实现一个简单的PC发送数据、ESP32接受数据的小Demo# PC端importsocket# 创建一个UDP套接字udp_socketsocket.socket(socket.AF_INET,socket.SOCK_DGRAM)des_addr(192.168.17.122,8081)print(Test Demo)print(imput - 0 to exit)whileTrue:send_datainput(input send data:)udp_socket.sendto(send_data.encode(utf-8),des_addr)#通过socket发送print(fsend:{send_data})ifsend_data0:break# 关闭套接字udp_socket.close()# ESP32端importnetworkimporttimefromsocketimport*wlannetwork.WLAN()wlan.active(True)print(wlan.isconnected())wlan.connect(find,0000000000)time.sleep(5)print(wlan.isconnected())print(MAC:str(wlan.config(mac)))ip,maskwlan.ipconfig(addr4)print(IP:str(ip))udp_socketsocket(AF_INET,SOCK_DGRAM)local_addr(ip,8081)#本机ipv4信息端口udp_socket.bind(local_addr)whileTrue:#持续接收PC的数据# 等待接收对方发送的数据recv_data,addrudp_socket.recvfrom(1024)r_strrecv_data.decode(utf-8)# 打印接收到的数据print(f[From{addr[0]}:{addr[1]}]:{r_str})ifr_str0:breakudp_socket.close()#关闭资源先后运行PC与ESP32实现PC与ESP32的多次通信只需要在此基础上对ESP32端进行稍加改造便可实现PC控制LED的能力importnetworkimporttimefromsocketimport*frommachineimportPin,PWM pwm2PWM(Pin(2),freq10000) 命令格式LT [is_on] [duty] is_on为LED状态 1-打开 0-关闭 duty为亮度 0-100% 可选 defsplit_input(re_str)-List[int]:commre_str.split( )ifcomm[0].startswith(LT)andlen(comm)3:return[int(comm[1]),int(comm[2])]return[];defcontrol_light(is_on,duty100):ifduty100orduty0:returnifis_on1:pwm2.duty(int(1023*(duty/100)))elifis_on0:pwm2.duty(0)wlannetwork.WLAN()wlan.active(True)wlan.connect(find,0000000000)# 自己的wifi名称和密码ifnotwlan.isconnected():time.sleep(5)print(wlan.isconnected())ip,maskwlan.ipconfig(addr4)print(IP:str(ip))udp_socketsocket(AF_INET,SOCK_DGRAM)local_addr(ip,8081)#本机ipv4信息端口udp_socket.bind(local_addr)whileTrue:#持续接收PC的数据# 等待接收对方发送的数据recv_data,addrudp_socket.recvfrom(1024)r_strrecv_data.decode(utf-8)# 打印接收到的数据print(f[From{addr[0]}:{addr[1]}]:{r_str})commssplit_input(r_str)iflen(comms)!0:control_light(comms[0],comms[1])ifr_str0:breakudp_socket.close()#关闭资源PC端运行脚本输入对应指令即可控制LED亮灭相关资料、代码

相关新闻

如何写好一个 AI Skill —— 从设计到发布的完整指南

如何写好一个 AI Skill —— 从设计到发布的完整指南

如何写好一个 AI Skill —— 从设计到发布的完整指南 一、引言 随着 Claude Code Skills、GPT Actions、Cursor Rules 等 AI Agent 工具的普及,**Skill(技能)** 正在成为 AI 时代最核心的「可复用能力单元」。一个 Skill 本质上是一组精心设计…

2026/11/3 0:56:51 阅读更多 →
核心功能模块 用户管理模块

核心功能模块 用户管理模块

支持用户的注册、登录、权限分配与角色管理。多种登录方式:账号密码、邮箱 / 短信验证码、OAuth2(GitHub / Google / QQ)、2FA(TOTP / 邮箱 / 短信)。 image image image image image RBAC权限控制模块 角色层级继承&a…

2026/10/28 18:28:13 阅读更多 →
网站建设四段合一:告别割裂式开发,一次搞定设计与落地

网站建设四段合一:告别割裂式开发,一次搞定设计与落地

网站建设四段合一:告别割裂式开发,一次搞定设计与落地

2026/11/2 7:07:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻