当前位置:首页 >百科 >Py4OH—自制开源鸿蒙空气质量监控系统(上) 目前已经进入 Py4OH 主线

Py4OH—自制开源鸿蒙空气质量监控系统(上) 目前已经进入 Py4OH 主线

2024-07-01 08:49:38 [百科] 来源:避面尹邢网

Py4OH—自制开源鸿蒙空气质量监控系统(上)

作者:唐佐林 系统 OpenHarmony 小凌派开发板是自制质量一款由福州市凌睿智捷电子有限公司基于OpenHarmony打造的L0级物联网开发板,采用E53接口标准,开源空气可接入所有的鸿蒙E53案例扩展板。

想了解更多关于开源的监控内容,请访问:

Py4OH—自制开源鸿蒙空气质量监控系统(上) 目前已经进入 Py4OH 主线

51CTO 开源基础软件社区

Py4OH—自制开源鸿蒙空气质量监控系统(上) 目前已经进入 Py4OH 主线

https://ost.51cto.com

Py4OH—自制开源鸿蒙空气质量监控系统(上) 目前已经进入 Py4OH 主线

今天为大家隆重介绍一位 Py4OH 家族的系统新成员 – 小凌派开发板,目前已经进入 Py4OH 主线,自制质量基于 OpenHarmoy 3.0 LTS 并完整支持 Py4OH 所有特性。开源空气

[Py4OH]自制开源鸿蒙空气质量监控系统(上)-开源基础软件社区


    小凌派开发板是鸿蒙一款由福州市凌睿智捷电子有限公司基于OpenHarmony打造的L0级物联网开发板,采用E53接口标准,监控可接入所有的系统E53案例扩展板:

  • 主控为瑞芯微RK2206芯片,200MHz主频。自制质量
  • RAM:256KB、开源空气ROM:16KB、鸿蒙PSRAM:8M、监控FLASH:8M。系统
  • 板载NFC Forum Type 2 Tag芯片及天线,可实现HarmonyOS“碰一碰”功能。
  • 支持 IEEE 802.11b/g/n 制式,AP 模式。
  • 丰富的外设接口,包含 GPIO、UART、 I2C、ADC、DAC、PWM 等。
  • 两个TypeC USB接口,一个用于供电及下载,一个用于串口调试。

小凌派提供了多个好玩的扩展板,比如:智慧手势扩展板,智慧农业扩展板,有了这些扩展板,我们可以来做点有意思的东西。

做点什么呢?嗯,空气质量监控系统!


[Py4OH]自制开源鸿蒙空气质量监控系统(上)-开源基础软件社区

智慧农业扩展板上集成了温湿度传感器SHT30,LED灯,直流电机,而温湿度传感器SHT30可以说是为我们的空气质量监控系统量身打造:当环境温度在体感舒适度(大约18-25摄氏度)之外,则LED警报指示灯开始闪烁;否则关闭LED警报指示灯。

实现思路:开发板上电后,先进行必要的初始化,然后每隔1秒通过SHT30获取当前环境的温度和湿度;当温度处于体感舒适度时关闭LED灯,否则改变LED灯的状态(闪烁)。

有了实现思路就可以很轻松的画出设计图。

首先就是交互图。交互图可以帮助我们理清楚开发板与扩展板之间的关系,这是至关重要的,只有理清楚关系才可能从代码层面出发,想明白先做什么再做什么。

[Py4OH]自制开源鸿蒙空气质量监控系统(上)-开源基础软件社区

从上面的交互图可以看出,在开发板一侧需要一个程序变量代表扩展板上的SHT30传感器,同时也需要一个程序变量代表扩展板上的LED灯。有了这两个变量,就可以直接获取温度数据和湿度数据,并且可以轻松愉快的控制LED灯状态了!!!

嗯,这是什么?同学们!!这是面向对象编程啊。

Py4OH使用的是Python语言进行设备开发,而Python语言完美支持面向对象编程啊!

这又能怎样?这就可以简化编程了!!

不信??来,看看下面的流程图!

[Py4OH]自制开源鸿蒙空气质量监控系统(上)-开源基础软件社区

整个流程图描述的逻辑是非常简单的,仅仅是表达了我们想做的东西。相信大家也看出来了,“简单”是依赖于 th 和 light 所具备的能力,这两个变量(对象)所对应的类型将SHT30与LED的复杂性及控制逻辑全部隐藏,使得它们变成了黑盒,我们只需要知道如何使用即可!

OK!铺垫已经足够,是时候展示真正的技术了!

import pinimport sht30import gpioimport osi2cx = 0   # SHT30是一种i2c设备,位于0号i2c上freq = 400000  # i2c通信频率sda = gpio.make_id([0, 'A', 0])  # 计算sda所对应的引脚号scl = gpio.make_id([0, 'A', 1])   # 计算scl所对应的引脚号th = sht30.SHT30(i2cx, sda, scl, freq)   # 创建名为th的SHT30对象th.open()  # 通过th对象打开SHT30设备lpin = gpio.make_id([0, 'A', 2])  # 计算接入LED灯的引脚号light = pin.Pin(lpin)  # 创建LED灯对象while True :    t = th.temperature()  # 获取温度数据    h = th.humidity()      # 获取湿度数据        if t != None :         print('temperature = ' + str(t))            if h != None :         print('humidity = ' + str(h))            if (18 <= t) and (t <= 25) :        light.low()      # 若当前温度在体感舒适度范围内,则关闭LED灯    else :        light.change() # 若当前温度不在体感舒适度范围内,则改变LED灯的状态,即:闪烁            os.sleep(1)

很明显,LED灯不是第一次出现我的文章中,SHT30也不是!如果有同学对它们的驱动方式还不熟悉,可以参考我之前的两篇帖子《使用Python开发鸿蒙设备程序(1-GPIO外设控制)》和《使用Python开发鸿蒙设备程序(2-I2C应用实例)》,在这里重点强调的是使用面向对象技术对它们进行封装,增加代码复用性。

要面向对象封装,必须的,先定义接口!

'''   This is just a demo for interface definition.'''class Pin:    is_high = False       def __init__(self, pin_num):        pass            def high(self):        # output 1        self.is_high = True            def low(self):        # output 0        self.is_high = False            def status(self):        return 1 if self.is_high else 0            def change(self):        if self.is_high:            self.low()        else:            self.high()                def __del__(self):        passclass SHT30:    sht30_addr = 0x44    write_cmd = (sht30_addr << 1) | 0x00    read_cmd = (sht30_addr << 1) | 0x01    def __init__(self, i2cx, sda, scl, freq):        pass    def open(self):        pass        def close(self):        pass    def temperature(self):        return None    def humidity(self):        return None            def __del__(self):        pass

由于实现细节太多,大家可以在附件中直接下载完整代码自行参考学习。

看到这,是不是觉得我有炒冷饭的嫌疑?!

又拿LED灯和SHT30温湿度传感器来写水文!!

哈哈!如果你这么想,那么请看看标题,,,这只是《上》,还有《下》呢!!

下一篇文章,我会带着大家将其它设备接入小凌派开发板,然后编程获取当前环境的PM2.5和PM10数据,并在数据不理想时启动直流电机(风扇)对空气质量进行调整。

最后,给大家展示一下Py4OH命令行的输出。

[Py4OH]自制开源鸿蒙空气质量监控系统(上)-开源基础软件社区

To be continued...

文章相关附件可以点击下面的原文链接前往下载:

https://ost.51cto.com/resource/2813

https://ost.51cto.com/resource/2814

https://ost.51cto.com/resource/2815

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

责任编辑:jianghua 来源: 51CTO 开源基础软件社区 小凌派开发板物联网开发板

(责任编辑:热点)

    推荐文章
    热点阅读