自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Py4OH—自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)

系統(tǒng) OpenHarmony
小凌派開發(fā)板是一款由福州市凌睿智捷電子有限公司基于OpenHarmony打造的L0級(jí)物聯(lián)網(wǎng)開發(fā)板,采用E53接口標(biāo)準(zhǔn),可接入所有的E53案例擴(kuò)展板。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

今天為大家隆重介紹一位 Py4OH 家族的新成員 – 小凌派開發(fā)板,目前已經(jīng)進(jìn)入 Py4OH 主線,基于 OpenHarmoy 3.0 LTS 并完整支持 Py4OH 所有特性。

[Py4OH]自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)-開源基礎(chǔ)軟件社區(qū)


    小凌派開發(fā)板是一款由福州市凌睿智捷電子有限公司基于OpenHarmony打造的L0級(jí)物聯(lián)網(wǎng)開發(fā)板,采用E53接口標(biāo)準(zhǔn),可接入所有的E53案例擴(kuò)展板:

  • 主控為瑞芯微RK2206芯片,200MHz主頻。
  • RAM:256KB、ROM:16KB、PSRAM:8M、FLASH:8M。
  • 板載NFC Forum Type 2 Tag芯片及天線,可實(shí)現(xiàn)HarmonyOS“碰一碰”功能。
  • 支持 IEEE 802.11b/g/n 制式,AP 模式。
  • 豐富的外設(shè)接口,包含 GPIO、UART、 I2C、ADC、DAC、PWM 等。
  • 兩個(gè)TypeC USB接口,一個(gè)用于供電及下載,一個(gè)用于串口調(diào)試。

小凌派提供了多個(gè)好玩的擴(kuò)展板,比如:智慧手勢(shì)擴(kuò)展板,智慧農(nóng)業(yè)擴(kuò)展板,有了這些擴(kuò)展板,我們可以來做點(diǎn)有意思的東西。

做點(diǎn)什么呢?嗯,空氣質(zhì)量監(jiān)控系統(tǒng)!


[Py4OH]自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)-開源基礎(chǔ)軟件社區(qū)

智慧農(nóng)業(yè)擴(kuò)展板上集成了溫濕度傳感器SHT30,LED燈,直流電機(jī),而溫濕度傳感器SHT30可以說是為我們的空氣質(zhì)量監(jiān)控系統(tǒng)量身打造:當(dāng)環(huán)境溫度在體感舒適度(大約18-25攝氏度)之外,則LED警報(bào)指示燈開始閃爍;否則關(guān)閉LED警報(bào)指示燈。

實(shí)現(xiàn)思路:開發(fā)板上電后,先進(jìn)行必要的初始化,然后每隔1秒通過SHT30獲取當(dāng)前環(huán)境的溫度和濕度;當(dāng)溫度處于體感舒適度時(shí)關(guān)閉LED燈,否則改變LED燈的狀態(tài)(閃爍)。

有了實(shí)現(xiàn)思路就可以很輕松的畫出設(shè)計(jì)圖。

首先就是交互圖。交互圖可以幫助我們理清楚開發(fā)板與擴(kuò)展板之間的關(guān)系,這是至關(guān)重要的,只有理清楚關(guān)系才可能從代碼層面出發(fā),想明白先做什么再做什么。

[Py4OH]自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)-開源基礎(chǔ)軟件社區(qū)

從上面的交互圖可以看出,在開發(fā)板一側(cè)需要一個(gè)程序變量代表擴(kuò)展板上的SHT30傳感器,同時(shí)也需要一個(gè)程序變量代表擴(kuò)展板上的LED燈。有了這兩個(gè)變量,就可以直接獲取溫度數(shù)據(jù)和濕度數(shù)據(jù),并且可以輕松愉快的控制LED燈狀態(tài)了?。?!

嗯,這是什么?同學(xué)們?。?span style="color: #1d39c4;">這是面向?qū)ο缶幊贪 ?/span>

Py4OH使用的是Python語言進(jìn)行設(shè)備開發(fā),而Python語言完美支持面向?qū)ο缶幊贪。?/span>

這又能怎樣?這就可以簡(jiǎn)化編程了??!

不信??來,看看下面的流程圖!

[Py4OH]自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)-開源基礎(chǔ)軟件社區(qū)

整個(gè)流程圖描述的邏輯是非常簡(jiǎn)單的,僅僅是表達(dá)了我們想做的東西。相信大家也看出來了,“簡(jiǎn)單”是依賴于 th 和 light 所具備的能力,這兩個(gè)變量(對(duì)象)所對(duì)應(yīng)的類型將SHT30與LED的復(fù)雜性及控制邏輯全部隱藏,使得它們變成了黑盒,我們只需要知道如何使用即可!

OK!鋪墊已經(jīng)足夠,是時(shí)候展示真正的技術(shù)了!

import pin
import sht30
import gpio
import os

i2cx = 0   # SHT30是一種i2c設(shè)備,位于0號(hào)i2c上
freq = 400000  # i2c通信頻率
sda = gpio.make_id([0, 'A', 0])  # 計(jì)算sda所對(duì)應(yīng)的引腳號(hào)
scl = gpio.make_id([0, 'A', 1])   # 計(jì)算scl所對(duì)應(yīng)的引腳號(hào)

th = sht30.SHT30(i2cx, sda, scl, freq)   # 創(chuàng)建名為th的SHT30對(duì)象
th.open()  # 通過th對(duì)象打開SHT30設(shè)備

lpin = gpio.make_id([0, 'A', 2])  # 計(jì)算接入LED燈的引腳號(hào)

light = pin.Pin(lpin)  # 創(chuàng)建LED燈對(duì)象

while True :
    t = th.temperature()  # 獲取溫度數(shù)據(jù)
    h = th.humidity()      # 獲取濕度數(shù)據(jù)
    
    if t != None : 
        print('temperature = ' + str(t))
        
    if h != None : 
        print('humidity = ' + str(h))
        
    if (18 <= t) and (t <= 25) :
        light.low()      # 若當(dāng)前溫度在體感舒適度范圍內(nèi),則關(guān)閉LED燈
    else :
        light.change() # 若當(dāng)前溫度不在體感舒適度范圍內(nèi),則改變LED燈的狀態(tài),即:閃爍
        
    os.sleep(1)

很明顯,LED燈不是第一次出現(xiàn)我的文章中,SHT30也不是!如果有同學(xué)對(duì)它們的驅(qū)動(dòng)方式還不熟悉,可以參考我之前的兩篇帖子《使用Python開發(fā)鴻蒙設(shè)備程序(1-GPIO外設(shè)控制)》和《使用Python開發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)》,在這里重點(diǎn)強(qiáng)調(diào)的是使用面向?qū)ο蠹夹g(shù)對(duì)它們進(jìn)行封裝,增加代碼復(fù)用性。

要面向?qū)ο蠓庋b,必須的,先定義接口!

'''
   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):
        pass

class 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

由于實(shí)現(xiàn)細(xì)節(jié)太多,大家可以在附件中直接下載完整代碼自行參考學(xué)習(xí)。

看到這,是不是覺得我有炒冷飯的嫌疑?!

又拿LED燈和SHT30溫濕度傳感器來寫水文??!

哈哈!如果你這么想,那么請(qǐng)看看標(biāo)題,,,這只是《上》,還有《下》呢?。?/span>

下一篇文章,我會(huì)帶著大家將其它設(shè)備接入小凌派開發(fā)板,然后編程獲取當(dāng)前環(huán)境的PM2.5和PM10數(shù)據(jù),并在數(shù)據(jù)不理想時(shí)啟動(dòng)直流電機(jī)(風(fēng)扇)對(duì)空氣質(zhì)量進(jìn)行調(diào)整。

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

[Py4OH]自制開源鴻蒙空氣質(zhì)量監(jiān)控系統(tǒng)(上)-開源基礎(chǔ)軟件社區(qū)

To be continued...

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:

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

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

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

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-04-09 23:17:16

Python監(jiān)控城市空氣

2021-03-19 16:40:56

智能家居物聯(lián)網(wǎng)

2021-06-29 12:00:57

傳感器物聯(lián)網(wǎng)空氣污染

2023-11-23 19:38:41

智慧城市廢物管理空氣質(zhì)量

2019-01-02 08:41:57

物聯(lián)網(wǎng)空氣質(zhì)量IOT

2021-12-09 23:09:05

物聯(lián)網(wǎng)安全技術(shù)

2022-11-15 11:30:34

物聯(lián)網(wǎng)空氣質(zhì)量

2014-02-27 13:53:49

Birdi智能硬件霧霾

2021-01-22 15:38:24

物聯(lián)網(wǎng)IoT與低功耗廣域網(wǎng)

2018-11-21 14:09:31

可視化天氣霧霾

2021-07-15 13:25:37

物聯(lián)網(wǎng)養(yǎng)老院IOT

2021-06-16 11:18:22

物聯(lián)網(wǎng)建筑綜合癥IoT

2016-09-28 14:07:53

2020-10-22 16:21:27

物聯(lián)網(wǎng)新冠肺炎IOT

2021-03-15 10:29:04

數(shù)據(jù)中心電子腐蝕突然故障

2021-03-10 11:08:20

物聯(lián)網(wǎng)城市智能

2023-03-28 10:25:13

智慧城市物聯(lián)網(wǎng)

2018-08-16 08:40:50

空氣污染物聯(lián)網(wǎng)IOT

2022-03-31 06:38:36

集成物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)物聯(lián)網(wǎng)

2014-03-19 10:40:14

大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)