日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在上一篇帖子《使用Python/ target=_blank class=infotextkey>Python開發鴻蒙設備程序(1-GPIO外設控制)》中,已經成功的使用 Python 對 GPIO 上的外設進行了控制。這其實不是什么大不了的事,從功能的角度也著實不值得炫耀!然而,這卻是非常重要的一步:在鴻蒙上用使用 Python 進行物聯網編程是可行的!!!既然可行,加上 Python 語言天生的優勢(易于掌握,開發效率高),那么真的值得持續打造,將鴻蒙上的 Python 進行到底。

所以呢?

所以,今天的主題就是利用 GPIO 搭配 I2C 對外設進行編程。主要內容為:通過控制“智慧農業”外設板上的傳感器,獲取當前環境的溫度和濕度。

第一次用Python開發鴻蒙設備,太強了

 

這塊外設板上的 SHT30 是一個溫度濕度傳感器,它通過 I2C 與主控板(Hi3861)進行連接。因此,SHT30 是一種 I2C 設備,只需要通過 I2C 接口就能輕易對它進行控制。什么是 I2C ? 一般能查到的定義都會是:I2C ( Inter-Integrated Circuit ) 是一種由 PHILIPS 公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。所以,把 I2C 直接看作總線是 OK 的,即:SHT30 與 Hi3861 直接通過 I2C 總線相連。除此之外,也可以把 I2C 看作一種通信協議,即:SHT30 與 Hi3861 通過 2 根信號線連接在一起,并遵守預定義的規則,進而能夠交換信息。

那么,是不是在開發板上有 I2C 專用的物理線路呢?

答案是:沒有!

開發板已經提供了一堆用于普適輸入輸出的 GPIO 了,所以沒有必要為 I2C 提供專用的物理線路, 只需要復用 GPIO 即可實現 I2C 通信!

所以,下面的代碼就有了!

第一次用Python開發鴻蒙設備,太強了

 

在原理上,I2C 需要 2 根信號線完成設備間的通信;其中 SDA 為串行數據線,用來傳輸起始標志,應答標志和數據;而 SCL 為串行時鐘線,用來對設備進行同步。因此,在代碼層面,需要編程復用 2 個 GPIO 完成對 I2C 的支持。而 GPIO_0 能夠提供 I2C1_SDA 的功能,GPIO_1 能夠提供 I2C1_SCL 的功能,所以在真正初始化 I2C1 之前需要對 GPIO_0 和 GPIO_1 進行正確的功能設置,否則,設備間無法進行通信。

當 GPIO 的初始化完成,接下來就是對 I2C1 的初始化了,方法很簡單:將 I2C1 的 ID 和波特率作為參數調用 i2c_init() ,可謂完全無難度 。

最后,進行設備初始化,這一步也只需要向目標設備發送初始化命令即可,如:向 SHT30 發送 [0x22, 0x36] 。

Ok!相信上面的初始化代碼大家理解起來沒有問題了。那么,我們來推理一下: 有 I2C1 那么有沒有 I2C0 呢?

答案是:有! 鴻蒙 L0 設備目前通過復用 GPIO 的方式提供 2 個 I2C 供使用。

當初始化正確完成,接下來就是讀取 SHT30 上的實時數據了!

第一次用Python開發鴻蒙設備,太強了

 

上面的代碼非常簡潔,但似乎不那么好理解!

沒關系,我們先來熟悉一下目前 Python 提供的 I2C 接口函數。

第一次用Python開發鴻蒙設備,太強了

 

有了這個表格,我們很容易就能理解上面的代碼片段了,即:先向 I2C1 上的 SHT30 發送讀取命令 [0xE0, 0x00],然后再從設備讀取 6 個字節的數據。如果函數執行成功,那么可得到從設備返回到的溫濕度數據。

完整交互過程如下圖所示:

第一次用Python開發鴻蒙設備,太強了

 

這里對 SHT30 返回的數據做一點說明。如果讀取成功,SHT30 會返回 6 個字節的數據,其中前 3 個字節表示溫度數據,后 3 個字節表示濕度數據;并且,d[2] 和 d[5] 分別表示溫度和濕度的校驗字節,通過這兩個字節即可判斷讀取到的溫濕度數據是否有效(注:本文的示例中,為了方便大家理解,沒有做數據校驗的工作。)

最后就是溫濕度數據的轉換了,方法如下:

第一次用Python開發鴻蒙設備,太強了

 

有了這些的工作,下面就只需要循環調用 read() 即可完成最終目標:獲取當前環境溫濕度。

第一次用Python開發鴻蒙設備,太強了

 

最后的運行結果如下:

第一次用Python開發鴻蒙設備,太強了

 

更新提示:

這個版本的實現同時支持 1.0 和 1.1 的代碼,因此,大家需要根據代碼版本編譯 dt_python_demo。

1) 將 dt_python_demo 拷貝到應用目錄

  • 1.0:./Applications/sample/wifi-iot/app
  • 1.1:./applications/sample/BearPi/BearPi-HM_Nano

2) 修改 app 模塊的任務列表

  • 1.0:./applications/sample/wifi-iot/app/BUILD.gn
  • 1.1:./applications/sample/BearPi/BearPi-HM_Nano/BUILD.gn

3) libdtpython.a 路徑

  • 1.0:./vendor/hisi/hi3861/hi3861/build/libs
  • 1.1:./device/bearpi/bearpi_hm_nano/sdk_liteos/build/libs

4) 根據代碼版本修改 BUILD.gn

第一次用Python開發鴻蒙設備,太強了

 

Enjoy it!

代碼開源地址:
https://gitee.com/delphi-tang/python-for-hos

 

——————

原創:老王丨華為認證講師/騰訊認證講師/鴻蒙開發先行者【公眾號:鴻蒙開發者老王】

分享到:
標簽:鴻蒙 開發
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定