基于MicroPython 和ESP32 的家庭环境监控系统设计
2021-12-02李东明
李东明
(广西科技职业学院,广西 崇左 532200)
目前Python 编程语言是市场较受欢迎的编程语言之一,而MicroPython 是基于Python3 语法实现的一种可以在单片机上运行的Python 语言分支[1],它拥有独立的解析器、类库、编译器等完全可以实现对单片机底层的访问与操作,可以轻松实现I2C 读取数据,ADC、DAC 的转换,SD 卡的访问,对电机的控制等功能。MicroPython 支持的单片机类型有 STM32F4 系列、ESP32、W800、TI CC3200 等[2-3],它的创始人是一位澳大利亚的程序员、物理学家Damien George。
众多的通信协议和云计算数据的交换,在智能家居的开发中给开发者带来了更高的门槛和不便[4],这些问题运用MicroPython 编写系统可以得到很好地解决。MicroPython 对大部分的通信协议做了封装且使其具有良好的二次开发特性,还具有脚本语言易读的性质[5-9]。因此本设计采用ESP32 作为载体MicroPython 编写逻辑与通信协议来实现一种家庭环境监测和控制系统。
1 总体设计
监测系统的总体框架如图1 所示,通信Wi-Fi 模块集成在ESP32 单片机模块中,远程控制运用手机APP 实现,ESP32 模块通过传感器获取室内的环境信息并通过Wi-Fi 上传到网络从而传送到使用者的手机,使用者可以通过手机APP 查看家里的煤气是否泄漏、环境质量情况和温湿度等情况,系统会根据检测到的环境值自动驱动相关设备工作,如有可燃气体泄漏时会自动实现驱动外接设备,使用者可以在手机APP控制继电器外接设备。可在OLED 屏幕显示可燃气体与空气质量情况。
图1 家庭监测系统总体框架
2 系统硬件选用及物联网平台的选用
2.1 ESP32 的选用
ESP32 采用两个哈佛结构Xtensa LX6 CPU 构成双核系统。它将天线开关、RF balun、功率放大器、接收低噪声放大器、滤波器、电源管理模块等功能集于一体。ESP32 只需极少的外围器件,即可实现强大的处理性能、可靠的安全性能和Wi-Fi 及蓝牙功能,工作温度范围达到-40°C 到+125°C。集成的自校准电路实现了动态电压调整,可以消除外部电路的缺陷并适应外部条件的变化。独立系统运行应用程序或主机MCU 的从设备,通过SPI/SDIO 或I2C/UART 接口提供Wi-Fi 和蓝牙功能。如图2 所示。此板供电为2.7-3.6V,12 个ADC,2 个 DAC,2 个 I2C。基本参数如表格 1 所示。
图2 本设计使用的核心板正(左)反(右)图
2.2 Blinker 物联网平台的选用
Blinker 物联网平台是由点灯科技(成都)有限责任公司基于物联网技术和产业需求打造的轻量级平台。适用多种现今市场上热门智能硬件和多种开发板的快速接入。
可以在 Windows、Linux、MacOS 系统下开发设备,使用云服务器进行存储以及传输。手机端提供了Blinker APP,模块化拼图的形式对APP 应用界面进行编辑,此功能符合物联网设备开发的特性也为开发者提供了极大方便。提供了多种SDK 和开发文档,简洁明了的交互界面,升级更新方便等优点[10]。
3 MicroPython 的移植
本设计使用的MicroPython 编程语言遵照MIT 许可,由MicroPython.org 组织编写的支持ESP32 的MicroPython 固件为基础进行开发。ESP32 单片机与传统单片机开发有所不同,它与计算机的连接只需要运用USB 连接即可。将MicroPython 移植到ESP32 中,具体操作如下:
(1)在 Windows 的环境下,从 MicroPython 的官网获取ESP32 的固件。
(2)运用uPyCraft 软件将ESP32 的固件下载到ESP32 单片机中。
ESP32 的固件下载完成之后,下载由点灯物联网平台提供的MicroPython 封装库实现与Blinker APP通信。
4 远程监控系统软件设计
软件部分设计主要分为五个阶段,温湿度数据的采集和处理、可燃气体的采集和处理、空气质量数据的采集和处理、光照强度的采集和上传处理、数据包的上传。
温湿度的采集和处理运用DHT11 温湿度传感器完成,在处理和采集的阶段,在程序中需要调用固件中自带的dht 封装库,然后在主程序中调用端口获取data 数据,接下来进行读取即可获得温度与湿度值。在程序中应绑定数据组件,将数据发送到Blinker APP,使用者即可在手机上看到温湿度情况。
可燃气体的采集和处理在本次设计中以液态丁烷作为测试对象,运用ESP32 单片机的ADC 口进行电压数值的读取。在程序中将可燃气体泄漏情况分为三个阶段:第一阶段无泄漏状态,在此情况下程序照常运行。第二阶段轻度泄漏,在此情况下,通过程序驱动IO口从而控制继电器工作,根据实际使用需要可使输出设备扬声器、警报工作。第三个阶段严重泄漏,在此情况下,通过程序驱动IO 口从而控制继电器工作。根据实际使用需要外接步进电机、扬声器等设备。在程序运行后无论是否有可燃气体泄漏都会在OLED 显示屏和手机APP 上显示监测状态。
运用ESP32 单片机的ADC 口进行电压数值的读取。空气质量值检测分为四个阶段:分别是空气质量优、良、中、差。在程序运行后会在OLED 显示屏和手机APP 上显示监测状态。
光照强度值通过ESP32 单片机的I2C 进行数值的读取,通过获取到的数值程序自动判断是白天或夜晚,根据实际使用需要可外接步进电机。
随后每一分钟将数据写进心跳包传输给Blinker APP,在选择服务器时选用了阿里云,此平台提供的云服务器、云平台、云计算,为海量数据计算提供了很好的解决方案。系统软件流程如图3 所示。
图3 系统软件流程图
5 运行测试结果
根据需求列写清单,购买所需要元器件,测试各元器件本身是否良好,将MicroPython 固件下载到ESP32之中,然后进行调试。所制作的家庭环境监测系统物理样机如图4 所示。
图4 家庭环境监测系统物理样机
调试方式如下:通过Blinker APP 界面查看实时数据和数据传输是否正常,数据是否有变化通过将系统断电之后重启进行测试,控制指令的测试通过APP界面的按钮操纵来完成,通过人为干扰的形式来查看温室度传感器、继电器、可燃气体传感器等设备是否正常。
图5 是本次设计正常使用的情况下手机界面,界面分为两列,从左往右看,第一列第一个模块是光照度,第二个模块是温度,第三个模块是湿度。第二列第一个模块是可燃气体检测,第二个模块是空气质量值。其余的两个按钮分别可手动控制两个继电器。调试信息位于最下方,可以手动刷新数据。
图5 监测手机界面
6 结束语
本次设计将MicroPython 编程语言与ESP32 单片机应用在家庭环境监测中,系统采用Wi-Fi 方式搭建传输网络,使用手机APP 获取所采集到的家庭环境数据。系统能够监测判断家庭的可燃气体、空气质量、温湿度等情况,可在手机APP 控制相应设备,在较大程度上保障了家庭人员的安全和创建良好的环境,另外系统所使用的设备成本低、工作可靠、开发简单周期短,可以远程操控,使用简单方便,并有许多IO 口提供开发升级拓展使用。