无垠的广袤 发表于 2025-11-20 22:02

【英飞凌 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 = &quot;xxx&quot;             # wifi configuration
WIFI_PWD = &quot;xxx&quot;
MQTT_BROK = &quot;192.168.1.104&quot;   # MQTT broker
MQTT_PORT = 1883
MQTT_USER = &quot;xxx&quot;             # MQTT account
MQTT_PASS   = &quot;xxx&quot;
PUB_TOPIC = &quot;homeassistant/sensor/psoc6/adc/state&quot;       # 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(&quot;Connecting WiFi...&quot;)
      sta.connect(WIFI_SSID, WIFI_PWD)
      for _ in range(20):
            if sta.isconnected():
                break
            time.sleep(1)
    print(&quot;WiFi connected:&quot;, sta.ifconfig())

# --------------- temperature ---------------
def read_temperature():
    adc = ADCBlock(0).connect(0, &quot;P10_0&quot;)
    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(&quot;psoc6_%d&quot; % time.time(),
                   MQTT_BROK, MQTT_PORT,
                   MQTT_USER, MQTT_PASS,
                   keepalive=60)
    c.connect()
    print(&quot; Connected to&quot;, 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({&quot;temp&quot;: temp, &quot;volt&quot;: volt, &quot;raw&quot;: raw})
      client.publish(PUB_TOPIC, payload)
      print(&quot; Sent -&gt;&quot;, payload)

      if time.time() - last_ping &gt;= 30:
            client.ping()
            last_ping = time.time()

      time.sleep(PUB_INTERVAL)

    except OSError as e:
      print(&quot; lost (%s), reconnect...&quot; % 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: &quot;PSoC6 ADC Temp&quot;
      state_topic: &quot;homeassistant/sensor/psoc6/adc/state&quot;
      unit_of_measurement: &quot;°C&quot;
      value_template: &quot;{{ value_json.temp }}&quot;
    - name: &quot;PSoC6 ADC Raw&quot;
      state_topic: &quot;homeassistant/sensor/psoc6/adc/state&quot;
      unit_of_measurement: &quot;&quot;
      value_template: &quot;{{ value_json.adc }}&quot;
    - name: &quot;PSoC6 ADC Volt&quot;
      state_topic: &quot;homeassistant/sensor/psoc6/adc/state&quot;
      unit_of_measurement: &quot;V&quot;
      value_template: &quot;{{ value_json.volt }}&quot;
</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]
查看完整版本: 【英飞凌 CY8CKIT-062S2-AI评测】Home Assistant 物联网ADC 电压表