[i=s] 本帖最后由 无垠的广袤 于 2025-11-20 22:04 编辑 [/i]
【英飞凌 CY8CKIT-062S2-AI评测】Home Assistant 物联网ADC 电压表
本文介绍了英飞凌 CY8CKIT-062S-AI 开发板结合板载 ADC 和无线 WiFi 功能,通过 MQTT 协议发送 ADC 电压数据至 Home Assistant 平台,实现物联网 ADC 电压表项目设计。
项目介绍
结合板载 ADC 和无线 WiFi 功能,将ADC电压转换数据通过 MQTT 协议发送至 Home Assistant 平台,实现电压的远程实时监测和记录的物联网项目设计。

- 环境搭建:部署、烧录和测试 MicroPython 固件,用以执行相关程序代码;
- 工程创建:使用 Thonny IDE 软件编辑和调试代码;
- 工程代码:给出项目方案落地实现的关键代码,包括流程图等;
- 效果演示:通过 MQTT 接入 Home Assistant 平台,实现物联网 ADC 电压计。
管脚定义

详见:https://ifx-micropython.readthedocs.io/en/latest/psoc6/general.html#supported-boards .
环境搭建
使用 MicroPython 固件进行开发。
- 下载 CY8CKIT-062S2-AI 开发板对应的 MicroPython 固件;
- 使用官方烧录工具
ModusToolbox Programmer 上传固件至板端;
固件上传
- 打开
ModusToolbox Programmer 软件;
- 加载固件,配置烧录器、开发板型号;
- 点击
Connect 连接设备;
- 点击
Program ,待烧录完成,短按 RESET 键即可

测试
终端执行 help('modules') 指令,可获得板载库函数

详见:Quick reference for the PSoC6™ — MicroPython latest documentation .
工程测试
基于 MicroPython 固件,结合板载 ADC 和 WiFi 功能,实现了电压转换和数据的 MQTT 上传至 Home Assistant 智能家居平台。包括工程创建、流程图、代码、效果演示等。
工程创建
在 MicroPython 固件已上传且正确识别的基础上,添加代码上传 MQTT 消息至 Home Assistant 。
流程图

代码
打开 Thonny IDE 软件,新建文件并添加如下代码
# ========== User Configurations ==========
WIFI_SSID = "xxx" # wifi configuration
WIFI_PWD = "xxx"
MQTT_BROK = "192.168.1.104" # MQTT broker
MQTT_PORT = 1883
MQTT_USER = "xxx" # MQTT account
MQTT_PASS = "xxx"
PUB_TOPIC = "homeassistant/sensor/psoc6/adc/state" # topic
PUB_INTERVAL = 2 # second
# ==============================
import network
import time
import json
from machine import ADCBlock
from umqtt.simple import MQTTClient
# --------------- WiFi ---------------
def wifi_connect():
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("Connecting WiFi...")
sta.connect(WIFI_SSID, WIFI_PWD)
for _ in range(20):
if sta.isconnected():
break
time.sleep(1)
print("WiFi connected:", sta.ifconfig())
# --------------- temperature ---------------
def read_temperature():
adc = ADCBlock(0).connect(0, "P10_0")
raw = adc.read_u16()
volt = raw * 3.3 / 65535
temp = 218.0 - (1.0 - volt) / 0.0033
return round(temp, 2), round(volt, 3), raw
# --------------- MQTT ---------------
def mqtt_connect():
c = MQTTClient("psoc6_%d" % time.time(),
MQTT_BROK, MQTT_PORT,
MQTT_USER, MQTT_PASS,
keepalive=60)
c.connect()
print("[MQTT] Connected to", MQTT_BROK)
return c
# --------------- loop ---------------
wifi_connect()
client = mqtt_connect()
last_ping = time.time()
while True:
try:
temp, volt, raw = read_temperature()
payload = json.dumps({"temp": temp, "volt": volt, "raw": raw})
client.publish(PUB_TOPIC, payload)
print("[MQTT] Sent ->", payload)
if time.time() - last_ping >= 30:
client.ping()
last_ping = time.time()
time.sleep(PUB_INTERVAL)
except OSError as e:
print("[MQTT] lost (%s), reconnect..." % e)
time.sleep(2)
client = mqtt_connect()
last_ping = time.time()
保存代码。
效果

- 运行代码, Shell 终端输出 WiFi 连接信息、设备 IP 地址、MQTT 消息内容等

- 打开 MQTTX 软件,根据会话主题
homeassistant/sensor/psoc6/adc/state 添加连接,接收实时广播的 JSON 消息;

-
编辑 Home Assistant 配置文件 ./config/configuration.yaml ,添加如下代码
mqtt:
sensor:
- name: "PSoC6 ADC Temp"
state_topic: "homeassistant/sensor/psoc6/adc/state"
unit_of_measurement: "°C"
value_template: "{{ value_json.temp }}"
- name: "PSoC6 ADC Raw"
state_topic: "homeassistant/sensor/psoc6/adc/state"
unit_of_measurement: ""
value_template: "{{ value_json.adc }}"
- name: "PSoC6 ADC Volt"
state_topic: "homeassistant/sensor/psoc6/adc/state"
unit_of_measurement: "V"
value_template: "{{ value_json.volt }}"
-
打开 Home Assistant 主页,添加传感器卡片,即可获得实时 ADC 电压信息

总结
本文介绍了英飞凌 CY8CKIT-062S-AI 开发板结合板载 ADC 和无线 WiFi 功能,通过 MQTT 协议发送 ADC 电压数据至 Home Assistant 平台,实现物联网 ADC 电压表项目设计,为相关产品在物联网领域的快速开发和设计应用提供了参考。