亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

用 Python 构建 IoT 温度计:Zerynth 完整指南

组件与物料

MikroE Flip & Click × 1
Arduino Due × 1
Particle Photon × 1
NodeMCU ESP8266 Breakout Board × 1
SparkFun Photon RedBoard × 1
MikroE Temp&Hum Click (HTS221) × 1
MikroE WiFi Plus Click (MRF24WB0MA) × 1
Espressif Wemos D1 Mini × 1
Arduino Zero × 1

应用与在线服务

Zerynth Studio (IDE)

项目详解

用 Python 构建 IoT 温度计:Zerynth 完整指南

Zerynth App 简介

Zerynth App 是面向 Android 与 iOS 的移动应用,支持为 IoT 项目 快速原型开发 图形界面。它能将手机变身为智能物联设备的控制器与显示终端,实现 Zerynth 编程设备与手机的双向通信。

本教程将演示如何用 Zerynth 驱动的单片机 + Zerynth App 开发一款简易而强大的 IoT 温度计。

所需材料

首先需要一块 Zerynth 支持的 32 位单片机板。我们选用 Mikroelektronika Flip&Click,它兼容 Arduino 生态,核心为 Microchip AT91SAM3X8E(即 Arduino Due 核心)。

硬件组装

Flip&Click 正面是 Arduino 兼容接口,背面有四个 mikroBUS 插槽(缩小版 Shield)。将 Temp&Hum Click 插入槽位 A,WiFi Plus Click 插入槽位 B 即可。

用 Python 编程 IoT 温度计

克隆示例工程

安装 Zerynth Studio 并创建账号后,克隆示例 “Zerynth App Oscilloscope”。查看 main.py 原始代码:

################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
# 原示例基于 Particle Photon,需更换 WiFi 驱动
from broadcom.bcm43362 import bcm43362 as wifi_driver
import streams
import adc
from zerynthapp import zerynthapp

streams.serial()
sleep(1000)
print("STARTING...")
try:
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True)
    wifi_driver.auto_init()
    for i in range(5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    zapp.run()
    while True:
        sleep(1000)
        x = (adc.read(A4)*100)//4096
        zapp.event({"data": x})
        if x > 95:
            zapp.notify("ALARM!", "The value is greater than 95!")
except Exception as e:
    print(e)

替换 WiFi 驱动与引入传感器库

将 WiFi 驱动改为 MCW1001A:

from microchip.mcw1001a import mcw1001a as wifi_driver
wifi_driver.init(SERIAL2, D24)  # 槽位 B

引入 HTS221 库并初始化:

from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # 槽位 A

读取温湿度:

tmp, hum = temp_hum.get_temp_humidity()

配置 WiFi SSID 与密码

wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")

创建并配置连接设备

在 Zerynth Studio ADM 面板创建“Connected Device”,获取 Device UID 与 Token。IP 地址用于不支持主机名解析的网络驱动(本例为 178.22.65.123)。

用 Python 构建 IoT 温度计:Zerynth 完整指南
用 Python 构建 IoT 温度计:Zerynth 完整指南

创建、上传与设置模板

Zerynth App 使用 HTML/CSS/JS 构建响应式 GUI,无需原生代码。模板托管于 ADM 沙箱,包含 index.html 等静态资源,引入 ADM JS 库即可与设备双向通信。

用 Python 构建 IoT 温度计:Zerynth 完整指南
用 Python 构建 IoT 温度计:Zerynth 完整指南

上传脚本至设备

修改后的完整 main.py:

################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
from zerynthapp import zerynthapp
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # slot A
sleep(1000)
print("STARTING...")
try:
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
    wifi_driver.init(SERIAL2, D24)  # slot B
    for i in range(5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    zapp.run()
    while True:
        sleep(1000)
        tmp, hum = temp_hum.get_temp_humidity()
        print("Temp is:", tmp, "Humidity is:", hum)
        try:
            zapp.event({"data": tmp})
        except Exception as e:
            print(e)
        if tmp > 30:
            try:
                zapp.notify("ALARM!", "High Temperature!")
            except Exception as e:
                print(e)
except Exception as e:
    print(e)

将 DEVICE UID、DEVICE TOKEN、SSID、PASSWORD 替换为实际值,即可上传烧录。

在 Zerynth App 查看仪表盘

打开 Zerynth App,登录并选择设备,即可看到 IoT 温度计仪表盘。支持推送通知:温度超阈值(示例 >30℃)时手机收到报警。

用 Python 构建 IoT 温度计:Zerynth 完整指南

如有疑问,欢迎在 Zerynth 社区论坛讨论。Enjoy!

完整代码

################################################################################
# Zerynth App Oscilloscope
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
from zerynthapp import zerynthapp
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # slot A
sleep(1000)
print("STARTING...")
try:
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
    wifi_driver.init(SERIAL2, D24)  # slot B
    for i in range(5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    zapp.run()
    while True:
        sleep(1000)
        tmp, hum = temp_hum.get_temp_humidity()
        print("Temp is:", tmp, "Humidity is:", hum)
        try:
            zapp.event({"data": tmp})
        except Exception as e:
            print(e)
        if tmp > 30:
            try:
                zapp.notify("ALARM!", "High Temperature!")
            except Exception as e:
                print(e)
except Exception as e:
    print(e)

原理图

用 Python 构建 IoT 温度计:Zerynth 完整指南

制造工艺

  1. 温度计:从伽利略温度计到现代数字传感器的演进
  2. 树莓派配合 TMP006 红外温度传感器:Python 库与安装指南
  3. 树莓派与 Python 构建远程温度传感器:分步实战指南
  4. 掌握 PSoC 6 Pioneer 开发板与 IoT 扩展盾:开发者指南
  5. 基于 Arduino 与 Python 的可靠 RFID 考勤系统
  6. 物联网如何重塑日常生活
  7. Windows 安装 Python 与 PyCharm 完整图文教程
  8. Python 重命名文件与目录:os.rename() 分步指南
  9. Python 与 Selenium 自动化 Facebook 登录:分步指南
  10. Python 计算平均值:从循环到 NumPy 的四种实战方法
  11. Python 字符串标题化:快速可靠的 Title Case 转换
  12. Python 发送邮件实战:SMTP 协议快速上手指南