[PSOC™] 【英飞凌 CY8CKIT-062S2-AI评测】Home Assistant 物联网ADC 电压表

[复制链接]
42|0
无垠的广袤 发表于 2025-11-20 22:02 | 显示全部楼层 |阅读模式
[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 平台,实现电压的远程实时监测和记录的物联网项目设计。
homeassistant_cover.jpg

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

管脚定义

CY8CKIT-062S2-AI-pinout.png

详见:https://ifx-micropython.readthedocs.io/en/latest/psoc6/general.html#supported-boards .

环境搭建

使用 MicroPython 固件进行开发。

  • 下载 CY8CKIT-062S2-AI 开发板对应的 MicroPython 固件;
  • 使用官方烧录工具 ModusToolbox Programmer 上传固件至板端;

固件上传

  • 打开 ModusToolbox Programmer 软件;
  • 加载固件,配置烧录器、开发板型号;
  • 点击 Connect 连接设备;
  • 点击 Program ,待烧录完成,短按 RESET 键即可

firmware_hex_micropython_update.jpg

测试

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

mpy_help_modules.jpg

详见:Quick reference for the PSoC6™ — MicroPython latest documentation .

工程测试

基于 MicroPython 固件,结合板载 ADC 和 WiFi 功能,实现了电压转换和数据的 MQTT 上传至 Home Assistant 智能家居平台。包括工程创建、流程图、代码、效果演示等。

工程创建

在 MicroPython 固件已上传且正确识别的基础上,添加代码上传 MQTT 消息至 Home Assistant 。

流程图

flowchart_adc_mqtt_ha.png

代码

打开 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()

保存代码。

效果

audio_test.gif

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

print_mqtt_adc.jpg

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

mqttx_print.jpg

  • 编辑 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 电压信息

ha_mqtt_adc.jpg

总结

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

78

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部