惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Heimdal Security Blog
P
Privacy International News Feed
S
Schneier on Security
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
Help Net Security
Help Net Security
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Archives - TechRepublic
Security Archives - TechRepublic
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
雷峰网
雷峰网
博客园 - 司徒正美
V
V2EX
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
N
News | PayPal Newsroom
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
P
Palo Alto Networks Blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
I
InfoQ
D
DataBreaches.Net
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
FreakStudio · 2026-06-22 · via 博客园_首页

引言

做嵌入式物联网项目的开发者,大多都踩过软件 TCP/IP 协议栈的坑:移植繁琐、调试排错困难,网络通信还会持续占用主控算力,稍微叠加复杂业务逻辑就容易出现卡顿、丢包甚至协议栈崩溃。WIZnet 凭借全硬件 TCP/IP 协议栈技术在工业联网领域深耕多年,从经典的外置 W5500 以太网芯片,到如今推出集成主控的单芯片方案 W55MH32,直接把 Cortex-M3 内核、硬件 TOE 卸载引擎、MAC 与 PHY 全部整合进一颗芯片,从根源上降低了单片机联网的开发门槛与运行风险。

3cb3c4c93b4440b7588627845e37dd6e.png

最近我们拿到了基于 W55MH32L 打造的官方评估板 W55MH32L-EVB。它不仅完整引出了芯片全部外设资源,还板载了 AHT20 温湿度传感器、有源蜂鸣器、EEPROM、SD 卡插槽与 Arduino 兼容排针,甚至集成了 WIZ-Link 调试器,一根 USB 线就能完成烧录、调试、串口输出,开箱即可上手开发。更值得关注的是,官方已经推出了完整适配的 MicroPython 固件,不用啃寄存器、不用手写底层驱动,用 Python 脚本就能快速实现外设控制与以太网通信。

本文就从硬件规格拆解入手,基于 MicroPython 开发环境,依次实测 GPIO 输入输出、I2C 传感器读取、SPI 屏幕驱动、基础网络通信等核心功能,完整呈现这块开发板的上手门槛、实际表现和适用场景,给打算入门硬件物联网项目的读者做一份全面参考。

一、W55MH32 芯片介绍

1.1 简介

W55MH32 是 WIZnet 新推出的高性能以太网单片机。它采用高性能 Arm® Cortex-M3 内核,主频最高达 216MHz,内置 1024KB FLASH、96KB SRAM 。尤为突出的是,其搭载 WIZnet TCP/IP offload 引擎(TOE),集成全硬件 TCP/IP 协议栈、MAC 及 PHY ,还配备 32KB 独立以太网收发缓存,供 8 个硬件 socket 使用,是真正的 All-in-One 解决方案。

image.png

W55MH32 有两种封装,一种为 100QFN(12x12mm)即上图(左)W55MH32L,另外一种为 68QFN(8x8mm)即上图(右)W55MH32Q,本教程所使用的 W55MH32L-EVB 使用的是 W55MH32L,关于另外一种封装,我们将不会详细讲解

1.2 系统框架

W55MH32 芯片支持丰富的外部接口,包括 GPIO、ADC、UART、SPI、I2S、I2C 和 SDIO 等,便于与传感器、执行器和其他外围设备进行连接和交互。这些特性使得 W55MH32 芯片适用于各种需要高效网络通信和数据处理的应用场景,如智能家居、工业自动化、智能电网等。

image.png

1.3 资源

  • 封装
    • W55MH32L:100QFN(12x12mm)
    • W55MH32Q:68QFN(8x8mm)
  • 32 位 Arm Cortex-M3 核心,主频最高可达 216MHz
  • 1024KB FLASH, 96KB SRAM
  • 3 个 12 位 ADC,2 个 12 位 DAC
  • 12 通道 DMA 控制器
  • 10/100 兆以太网 MAC 和 PHY
    • 全硬件 TCP/IP 协议栈,支持:TCP,UDP,ICMP,IPv4,ARP,IGMP,PPPoE
    • 8 个独立的硬件 socket
    • 独立 32KB 以太网收发缓存
    • 支持自动协商
    • LED 状态显示
  • 最多 66 个多功能双向 IO 口,全部可映射到 16 个外部中断上。
  • 17 个定时器
    • 10 个通用定时器
    • 2 个带死区控制的高级定时器
    • 2 个基本定时器
    • 2 个看门狗定时器
    • 1 个系统滴答定时器
  • 最多 12 个通信接口
    • 2 个 I2C 接口
    • 5 个 USART 接口
    • 2 个 SPI 接口,1 个带 I2S 接口复用
    • 1 个 CAN 接口
    • 1 个 USB2.0 全速接口(可选内部 1.5K 上拉电阻)
    • 1 个 SDIO 接口
  • 支持硬件加密算法单元(DES、AES、SHA 等)

image.png

1.4 引脚分布

image.png

W55MH32L 引脚分布

image.png

W55MH32Q 引脚分布

二、W55MH32L-EVB 开发板介绍

2.1 简介

W55MH32L-EVB 是基于 W55MH32L 芯片开发的一款功能丰富的开发板,已将芯片上的所有外设和 IO 引出,方便评估芯片和学习。

image.png

W55MH32L-EVB 正面
image.png

W55MH32L-EVB 背面

2.2 板载资源

开发板集成了 TF 卡座,温湿度传感器,EEPROM,用户按钮,用户 LED 等外设,资源丰富。还有一套 ARDUINO 插排,可以外接 ARDUINO 接口的扩展板,无论是开发板自身的功能性和兼容性,还是拓展性都非常强大。

此外,开发板上还集成了一个 WIZ-Link 仿真器,支持调试,程序下载以及虚拟串口功能,再也无须外接仿真器和串口调试工具,只需一根 TYPE C 数据线和一块开发板即可轻松搞定单片机 + 以太网部分的学习内容。
image.png

W55MH32L-EVB 硬件资源配置图
image.png

W55MH32L-EVB 硬件资源配置表

image.png

三、实验前的准备-MicroPython 开发环境的搭建

3.1 烧录 MicroPython 固件和 Thonny IDE 的下载安装

这里,我们主要参考文档:https://docs.w5500.com/ 中内容搭建 MicroPython 开发环境:

image.png

关于 Thonny IDE 的基本介绍和使用可以看教程:https://freakstudio.cn/node/019bd0bd-07e2-7599-9909-f359d81230a9

image.png

首先需要准备一个 Type-C 数据线,连接到开发板上的 DAPLINK-USB 接口:

6e1a2e2c2ba0cd9f2d45638995c45982.png

建议在已有 python 环境下 pip 下载 thonny

pip install thonny

接着,下载固件:

image.png

W55MH32 烧录方式基本和树莓派 PicoUF2 固件烧录方式一模一样,操作简单无需额外操作:

  1. 使用 Type-C 数据线连接开发板与电脑
  2. 待电脑识别出名为 WIZLINK 的 U 盘
  3. 将下载好的 w55mh32_1_27_mpy_260326.hex(实际固件名可能改变) 固件文件拖拽到 U 盘中
  4. 开发板会自动重启,固件烧录完成

注意:如果电脑没有识别出 WIZLINK U 盘,请尝试更换 USB 数据线、重新插拔开发板,或更换电脑 USB 接口。

image.png

接着,打开 Thonny IDE,我们可以在 Thonny 的右下角解释器选择中看到您的开发板了:

image.png

然后选择开发板:
image.png

3.2 uPyPI-Thonny 插件的安装

thonny-upypi-managerFreakStudio 专为 Thonny IDE 打造的第三方插件,核心作用是对接 FreakStudio 团队维护的 uPyPi(MicroPython 风格包仓库),实现 MicroPython 包的全流程可视化管理,适配 Thonny 4.1.7 及以上版本。
image.png

image.png

简单来说,它就是 uPyPi 仓库的 “Thonny 客户端”,让你不用再切换网页、复制终端命令,在 IDE 里就能搞定所有包管理操作。

详细介绍和使用可看教程:https://freakstudio.cn/node/019dd332-61c0-72b4-864e-93f1ef37ca73

image.png

四、GPIO 快速实验:按键、LED 和蜂鸣器

在下列代码中,我们首先导入 Pin 类和 time 类,在初始化配置中设置 PG6 为按键输入引脚,设置 PD14 为 LED 输出引脚,下拉电阻使能。

在主循环中,不断检测按键是否按下:

  • ​如果按键没有按下:​不进行任何操作,
  • ​如果按键已经按下:​在硬件电路中,按键按下时,GPIO 引脚读取的电平为低(0),在按键按下检测到后,延时 50 毫秒(time.sleep_ms(50))进行按键消抖
    • 如果 LED 当前状态为熄灭,则切换为点亮,终端输出 "The LED is ON"
    • 如果 LED 当前状态为点亮,则切换为熄灭,终端输出 "The LED is OFF"

这里的延时 50ms 主要是因为按键在闭合和断开时,触点会存在抖动现象,如图所示:

image.png

实际波形在按键按下的那一刻前后有 50ms 的抖动,因此这里通过延时 50ms 跳过抖动的区域获取中间稳定区域的电平。

# Python env   : MicroPython v1.27.0
# -*- coding: utf-8 -*-
# @Time    : 2026/5/7 下午1:34
# @Author  : 李清水
# @File    : main.py
# @Description : GPIO读写实验,完成驱动板载LED灯和按键读取的任务

# ======================================== 导入相关模块 ========================================

# 硬件相关的模块
from machine import Pin
# 时间相关的模块
import time

# ======================================== 全局变量 ============================================

# 初始化LED的状态为关闭(False)
led_state = False

# ======================================== 功能函数 ============================================

# ======================================== 自定义类 ============================================

# ======================================== 初始化配置 ==========================================

# 上电延时3s
time.sleep(3)
# 打印调试消息
print("FreakStudio: Using GPIO to control LED and read KEY")

# 需要注意的是 MicroPython 中Pin类的构造函数不支持关键字参数,仅支持位置参数
# 因此下列定义KEY,将会产生一个报错
# TypeError: function missing 1 required positional arguments
# key = Pin(id = 2, mode = Pin.IN, pull = Pin.PULL_DOWN)

# 设置PG6 为按键输入引脚,开启内部上拉电阻,让按键检测更稳定
KEY = Pin("PG6", Pin.IN, Pin.PULL_UP)
# 设置PD14为LED输出引脚,下拉电阻使能
LED = Pin("PD14", Pin.OUT, Pin.PULL_DOWN)

# ========================================  主程序  ============================================

# 循环检测按键是否按下
while True:
    # 检测到KEY引脚按下
    if KEY.value() == 0:
        # 按键消抖:延时50ms跳过抖动的区域
        time.sleep_ms(50)
        # 确保按键仍然处于按下状态
        if KEY.value() == 0:
            # 切换LED的状态
            led_state = not led_state
            # 根据状态变量设置LED亮或灭
            if led_state:
                LED.value(0)
                print("The LED is ON")
            else:
                LED.value(1)
                print("The LED is OFF")
            # 等待按键松开(避免连续检测到按键按下)
            while KEY.value() == 0:
                pass

这里需要注意的是,MicroPython中 Pin 类的构造函数在传入参数时不支持关键字参数,仅支持位置参数,因此下列定义 KEY 将会产生报错 TypeError: function missing 1 required positional arguments:

KEY = Pin(id = 2, mode = Pin.IN, pull = Pin.PULL_DOWN)

将上述代码烧录到 MicroPython 中,可以看到实验现象:image.png

当第一次按下按键时,切换 led_stateTrue,LED 灯点亮并且终端输出如下:

image.png

当第二次按下按键时,切换 led_stateFalse,LED 灯熄灭并且终端输出如下:
image.png

image.png

此后,每按下一次按键,LED 的状态在点亮和熄灭之间交替切换。

同时我们可以看到在 PD15 上有一个蜂鸣器,我们可控制在 LED 亮起时控制蜂鸣器响起

# Python env   : MicroPython v1.27.0
# -*- coding: utf-8 -*-
# @Time    : 2026/5/7 下午1:34
# @Author  : 李清水
# @File    : main.py
# @Description : GPIO读写实验,完成驱动板载LED灯蜂鸣器和按键读取的任务

# ======================================== 导入相关模块 ========================================

# 硬件相关的模块
from machine import Pin
# 时间相关的模块
import time

# ======================================== 全局变量 ============================================

# 初始化LED的状态为关闭(False)
led_state = False

# ======================================== 功能函数 ============================================

# ======================================== 自定义类 ============================================

# ======================================== 初始化配置 ==========================================

# 上电延时3s
time.sleep(3)
# 打印调试消息
print("FreakStudio: Using GPIO to control LED and read KEY")

# 需要注意的是 MicroPython 中Pin类的构造函数不支持关键字参数,仅支持位置参数
# 因此下列定义KEY,将会产生一个报错
# TypeError: function missing 1 required positional arguments
# key = Pin(id = 2, mode = Pin.IN, pull = Pin.PULL_DOWN)

# 设置PG6 为按键输入引脚,开启内部上拉电阻,让按键检测更稳定
KEY = Pin("PG6", Pin.IN, Pin.PULL_UP)
# 设置PD14为LED输出引脚,下拉电阻使能
LED = Pin("PD14", Pin.OUT, Pin.PULL_DOWN)
# 设置PD15为LED输出引脚
BUZZER = Pin("PD15", Pin.OUT)

# ========================================  主程序  ============================================

# 循环检测按键是否按下
while True:
    # 检测到KEY引脚按下
    if KEY.value() == 0:
        # 按键消抖:延时50ms跳过抖动的区域
        time.sleep_ms(50)
        # 确保按键仍然处于按下状态
        if KEY.value() == 0:
            # 切换LED的状态
            led_state = not led_state
            # 根据状态变量设置LED亮或灭
            if led_state:
                LED.value(0)
                BUZZER.value(1)
                print("The LED is ON")
            else:
                LED.value(1)
                BUZZER.value(0)
                print("The LED is OFF")
            # 等待按键松开(避免连续检测到按键按下)
            while KEY.value() == 0:
                pass

五、I2C 快速实验:读取板载 AHT20 温湿度传感器数据

823f3062d22d392d8d70a5a1f950c7c6.png

如图,在 I2C1 上(PB7=SDA, PB6=SCL)存在一个温湿度传感器 AHT20,这里,我们首先打开 Thonny 和对应 thonny-upypi-manager 插件,搜索 AHT20,将驱动安装到开发板上:

image.png

接下来,将下面的 main.py 烧录并运行:

# Python env   : MicroPython v1.23.0
# -*- coding: utf-8 -*-
# @Time    : 2026/05/11 07:39
# @Author  : Andreas Bühl, Kattni Rembor
# @File    : main.py
# @Description : AHT20 温湿度传感器测试程序
# @License : MIT

__version__ = "1.0.0"
__author__ = "Andreas Bühl, Kattni Rembor"
__license__ = "MIT"
__platform__ = "MicroPython v1.23"

# ======================================== 导入相关模块 =========================================

from machine import I2C
import utime
import ahtx0

# ======================================== 全局变量 ============================================

I2C_ID = 1
INTERVAL_MS = 2500

# ======================================== 功能函数 ============================================

# ======================================== 自定义类 ============================================

# ======================================== 初始化配置 ==========================================

# 初始化 I2C 总线,PB7=SDA,PB6=SCL
i2c = I2C(I2C_ID)
# 创建 AHT20 传感器对象
sensor = ahtx0.AHT20(i2c)

# ========================================  主程序  ===========================================

print("AHT20 sensor test started")

while True:
    try:
        # 读取温度
        temp = sensor.temperature
        # 读取相对湿度
        humi = sensor.relative_humidity
        print("Temperature : %5.1f C" % temp)
        print("  Humidity  : %5.1f %%rH" % humi)
        print("-" * 28)
    except RuntimeError as e:
        print("Sensor runtime error: %s" % e)
    except OSError as e:
        print("Sensor OS error: %s" % e)
    # 等待采样间隔
    utime.sleep_ms(INTERVAL_MS)

运行结果如下,可以看到正常输出温湿度值:

image.png
除前文介绍的 GPIO 输入输出、I2C 传感器读取、实验外,W55MH32L-EVB 还具备 12 位 ADC/DAC、RTC 实时时钟、多通道定时器、多串口 UART、I2S 音频、CAN 总线、SDIO 存储等丰富外设资源,可延伸出模拟量采集、音频播放、工业总线通信、数据本地存储等更多进阶实验场景;完整的 MicroPython 外设 API 定义、参数说明与调用示例,可查阅文档:https://f1829ryac0m.feishu.cn/wiki/VPCqwNROKixmJsk3HrGcfVBmnSe?from=from_copylink

0525185a561adca38002b16bbc209976.pngd63887aa3eb75de4da2f89d30a2d8822.png

eb6b459ccb3f99726a2fd06d98170352.png

e56a916b375ed771aab3187baee81773.png