今天為大家隆重介紹一位 Py4OH 家族的新成員 – 小凌派開發板,目前已經進入 Py4OH 主線,基于 OpenHarmoy 3.0 LTS 并完整支持 Py4OH 所有特性。
小凌派開發板是一款由福州市凌睿智捷電子有限公司基于OpenHarmony打造的L0級物聯網開發板,采用E53接口標準,可接入所有的E53案例擴展板:
支持 IEEE 802.11b/g/n 制式,AP 模式
小凌派提供了多個好玩的擴展板,比如:智慧手勢擴展板,智慧農業擴展板,有了這些擴展板,我們可以來做點有意思的東西。
做點什么呢?嗯,空氣質量監控系統?。。?/p>
智慧農業擴展板上集成了溫濕度傳感器SHT30,LED燈,直流電機,而溫濕度傳感器SHT30可以說是為我們的空氣質量監控系統量身打造:當環境溫度在體感舒適度(大約18-25攝氏度)之外,則LED警報指示燈開始閃爍;否則關閉LED警報指示燈。
實現思路:開發板上電后,先進行必要的初始化,然后每隔1秒通過SHT30獲取當前環境的溫度和濕度;當溫度處于體感舒適度時關閉LED燈,否則改變LED燈的狀態(閃爍)。
有了實現思路就可以很輕松的畫出設計圖。
首先就是交互圖。交互圖可以幫助我們理清楚開發板與擴展板之間的關系,這是至關重要的,只有理清楚關系才可能從代碼層面出發,想明白先做什么再做什么。
從上面的交互圖可以看出,在開發板一側需要一個程序變量代表擴展板上的SHT30傳感器,同時也需要一個程序變量代表擴展板上的LED燈。有了這兩個變量,就可以直接獲取溫度數據和濕度數據,并且可以輕松愉快的控制LED燈狀態了?。?!
嗯,這是什么?同學們!!這是面向對象編程啊。
Py4OH使用的是Python語言進行設備開發,而Python語言完美支持面向對象編程??!
這又能怎樣?這就可以簡化編程了??!
不信??來,看看下面的流程圖!
整個流程圖描述的邏輯是非常簡單的,僅僅是表達了我們想做的東西。相信大家也看出來了,“簡單”是依賴于 th 和 light 所具備的能力,這兩個變量(對象)所對應的類型將SHT30與LED的復雜性及控制邏輯全部隱藏,使得它們變成了黑盒,我們只需要知道如何使用即可!
OK!鋪墊已經足夠,是時候展示真正的技術了!
import pin
import sht30
import gpio
import os
i2cx = 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):
self.is_high = True
def low(self):
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
(左右移動查看全部內容)
由于實現細節太多,大家可以在附件中直接下載完整代碼自行參考學習。
看到這,是不是覺得我有炒冷飯的嫌疑?!
又拿LED燈和SHT30溫濕度傳感器來寫水文!!
哈哈!如果你這么想,那么請看看標題,,,這只是《上》,還有《下》呢??!
下一篇文章,我會帶著大家將其它設備接入小凌派開發板,然后編程獲取當前環境的PM2.5和PM10數據,并在數據不理想時啟動直流電機(風扇)對空氣質量進行調整。
最后,給大家展示一下Py4OH命令行的輸出。
To be continued...
更多熱點文章閱讀
原文標題:【開源樣例】Py4OH:自制開源鴻蒙空氣質量監控系統(上)
文章出處:【微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
-
電子技術
+關注
關注
18文章
901瀏覽量
56133 -
電子發燒友論壇
+關注
關注
4文章
197瀏覽量
1116
原文標題:【開源樣例】Py4OH:自制開源鴻蒙空氣質量監控系統(上)
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論