【英飞凌 CY8CKIT-062S2-AI评测】Home Assistant 物联网ADC 电压表
本帖最后由 无垠的广袤 于 2025-11-20 22:04 编辑<h1>【英飞凌 CY8CKIT-062S2-AI评测】Home Assistant 物联网ADC 电压表</h1>
<p>本文介绍了英飞凌 CY8CKIT-062S-AI 开发板结合板载 ADC 和无线 WiFi 功能,通过 MQTT 协议发送 ADC 电压数据至 Home Assistant 平台,实现物联网 ADC 电压表项目设计。</p>
<h2>项目介绍</h2>
<p>结合板载 ADC 和无线 WiFi 功能,将ADC电压转换数据通过 MQTT 协议发送至 Home Assistant 平台,实现电压的远程实时监测和记录的物联网项目设计。<br />
<img src="data/attachment/forum/202511/20/220013jy7p272lovwbbjjs.jpg" alt="homeassistant_cover.jpg" title="homeassistant_cover.jpg" /></p>
<ul>
<li>环境搭建:部署、烧录和测试 MicroPython 固件,用以执行相关程序代码;</li>
<li>工程创建:使用 Thonny IDE 软件编辑和调试代码;</li>
<li>工程代码:给出项目方案落地实现的关键代码,包括流程图等;</li>
<li>效果演示:通过 MQTT 接入 Home Assistant 平台,实现物联网 ADC 电压计。</li>
</ul>
<h3>管脚定义</h3>
<p><img src="data/attachment/forum/202511/20/220051hgygtx14ck4ckzlo.png" alt="CY8CKIT-062S2-AI-pinout.png" title="CY8CKIT-062S2-AI-pinout.png" /></p>
<p>详见:https://ifx-micropython.readthedocs.io/en/latest/psoc6/general.html#supported-boards .</p>
<h2>环境搭建</h2>
<p>使用 MicroPython 固件进行开发。</p>
<ul>
<li>下载 CY8CKIT-062S2-AI 开发板对应的 MicroPython 固件;</li>
<li>使用官方烧录工具 <code>ModusToolbox Programmer</code> 上传固件至板端;</li>
</ul>
<h3>固件上传</h3>
<ul>
<li>打开 <code>ModusToolbox Programmer</code> 软件;</li>
<li>加载固件,配置烧录器、开发板型号;</li>
<li>点击 <code>Connect</code> 连接设备;</li>
<li>点击 <code>Program</code> ,待烧录完成,短按 RESET 键即可</li>
</ul>
<p><img src="data/attachment/forum/202511/20/220103wam3hhananddetzw.jpg" alt="firmware_hex_micropython_update.jpg" title="firmware_hex_micropython_update.jpg" /></p>
<h4>测试</h4>
<p>终端执行 <code>help('modules')</code> 指令,可获得板载库函数</p>
<p><img src="data/attachment/forum/202511/20/220121f287jqwvyyd8ylbd.jpg" alt="mpy_help_modules.jpg" title="mpy_help_modules.jpg" /></p>
<p>详见:Quick reference for the PSoC6™ — MicroPython latest documentation .</p>
<h2>工程测试</h2>
<p>基于 MicroPython 固件,结合板载 ADC 和 WiFi 功能,实现了电压转换和数据的 MQTT 上传至 Home Assistant 智能家居平台。包括工程创建、流程图、代码、效果演示等。</p>
<h3>工程创建</h3>
<p>在 MicroPython 固件已上传且正确识别的基础上,添加代码上传 MQTT 消息至 Home Assistant 。</p>
<h3>流程图</h3>
<p><img src="data/attachment/forum/202511/20/220140w7dcadhzcvhh2iag.png" alt="flowchart_adc_mqtt_ha.png" title="flowchart_adc_mqtt_ha.png" /></p>
<h3>代码</h3>
<p>打开 Thonny IDE 软件,新建文件并添加如下代码</p>
<pre><code class="language-python"># ========== 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(" 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(" Sent ->", payload)
if time.time() - last_ping >= 30:
client.ping()
last_ping = time.time()
time.sleep(PUB_INTERVAL)
except OSError as e:
print(" lost (%s), reconnect..." % e)
time.sleep(2)
client = mqtt_connect()
last_ping = time.time()
</code></pre>
<p>保存代码。</p>
<h3>效果</h3>
<p><img src="data/attachment/forum/202511/20/220428y57mchhm2nmm470k.gif" alt="audio_test.gif" title="audio_test.gif" /></p>
<ul>
<li>运行代码, Shell 终端输出 WiFi 连接信息、设备 IP 地址、MQTT 消息内容等</li>
</ul>
<p><img src="data/attachment/forum/202511/20/220200vzkik2vi2jzplnst.jpg" alt="print_mqtt_adc.jpg" title="print_mqtt_adc.jpg" /></p>
<ul>
<li>打开 MQTTX 软件,根据会话主题 <code>homeassistant/sensor/psoc6/adc/state</code> 添加连接,接收实时广播的 JSON 消息;</li>
</ul>
<p><img src="data/attachment/forum/202511/20/220213jfgdpuygurrgedmd.jpg" alt="mqttx_print.jpg" title="mqttx_print.jpg" /></p>
<ul>
<li>
<p>编辑 Home Assistant 配置文件 <code>./config/configuration.yaml</code> ,添加如下代码</p>
<pre><code class="language-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 }}"
</code></pre>
</li>
<li>
<p>打开 Home Assistant 主页,添加传感器卡片,即可获得实时 ADC 电压信息</p>
</li>
</ul>
<p><img src="data/attachment/forum/202511/20/220227zq95y3yq1ly6yz1b.jpg" alt="ha_mqtt_adc.jpg" title="ha_mqtt_adc.jpg" /></p>
<h2>总结</h2>
<p>本文介绍了英飞凌 CY8CKIT-062S-AI 开发板结合板载 ADC 和无线 WiFi 功能,通过 MQTT 协议发送 ADC 电压数据至 Home Assistant 平台,实现物联网 ADC 电压表项目设计,为相关产品在物联网领域的快速开发和设计应用提供了参考。</p>
页:
[1]