成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)

開(kāi)發(fā) 后端
今天的主題就是利用 GPIO 搭配 I2C 對(duì)外設(shè)進(jìn)行編程。主要內(nèi)容為:通過(guò)控制“智慧農(nóng)業(yè)”外設(shè)板上的傳感器,獲取當(dāng)前環(huán)境的溫度和濕度。

[[425361]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

在上一篇帖子《使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(1-GPIO外設(shè)控制)》中,已經(jīng)成功的使用 Python 對(duì) GPIO 上的外設(shè)進(jìn)行了控制。這其實(shí)不是什么大不了的事,從功能的角度也著實(shí)不值得炫耀!然而,這卻是非常重要的一步:在鴻蒙上用使用 Python 進(jìn)行物聯(lián)網(wǎng)編程是可行的!!!既然可行,加上 Python 語(yǔ)言天生的優(yōu)勢(shì)(易于掌握,開(kāi)發(fā)效率高),那么真的值得持續(xù)打造,將鴻蒙上的 Python 進(jìn)行到底。

所以呢?

所以,今天的主題就是利用 GPIO 搭配 I2C 對(duì)外設(shè)進(jìn)行編程。主要內(nèi)容為:通過(guò)控制“智慧農(nóng)業(yè)”外設(shè)板上的傳感器,獲取當(dāng)前環(huán)境的溫度和濕度。

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

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

那么,是不是在開(kāi)發(fā)板上有 I2C 專(zhuān)用的物理線路呢?

答案是:沒(méi)有!

開(kāi)發(fā)板已經(jīng)提供了一堆用于普適輸入輸出的 GPIO 了,所以沒(méi)有必要為 I2C 提供專(zhuān)用的物理線路, 只需要復(fù)用 GPIO 即可實(shí)現(xiàn) I2C 通信!

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

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

在原理上,I2C 需要 2 根信號(hào)線完成設(shè)備間的通信;其中 SDA 為串行數(shù)據(jù)線,用來(lái)傳輸起始標(biāo)志,應(yīng)答標(biāo)志和數(shù)據(jù);而 SCL 為串行時(shí)鐘線,用來(lái)對(duì)設(shè)備進(jìn)行同步。因此,在代碼層面,需要編程復(fù)用 2 個(gè) GPIO 完成對(duì) I2C 的支持。而 GPIO_0 能夠提供 I2C1_SDA 的功能,GPIO_1 能夠提供 I2C1_SCL 的功能,所以在真正初始化 I2C1 之前需要對(duì) GPIO_0 和 GPIO_1 進(jìn)行正確的功能設(shè)置,否則,設(shè)備間無(wú)法進(jìn)行通信。

當(dāng) GPIO 的初始化完成,接下來(lái)就是對(duì) I2C1 的初始化了,方法很簡(jiǎn)單:將 I2C1 的 ID 和波特率作為參數(shù)調(diào)用 i2c_init() ,可謂完全無(wú)難度 。

最后,進(jìn)行設(shè)備初始化,這一步也只需要向目標(biāo)設(shè)備發(fā)送初始化命令即可,如:向 SHT30 發(fā)送 [0x22, 0x36] 。

Ok!相信上面的初始化代碼大家理解起來(lái)沒(méi)有問(wèn)題了。那么,我們來(lái)推理一下: 有 I2C1 那么有沒(méi)有 I2C0 呢?

答案是:有! 鴻蒙 L0 設(shè)備目前通過(guò)復(fù)用 GPIO 的方式提供 2 個(gè) I2C 供使用。

當(dāng)初始化正確完成,接下來(lái)就是讀取 SHT30 上的實(shí)時(shí)數(shù)據(jù)了!

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

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

沒(méi)關(guān)系,我們先來(lái)熟悉一下目前 Python 提供的 I2C 接口函數(shù)。

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

有了這個(gè)表格,我們很容易就能理解上面的代碼片段了,即:先向 I2C1 上的 SHT30 發(fā)送讀取命令 [0xE0, 0x00],然后再?gòu)脑O(shè)備讀取 6 個(gè)字節(jié)的數(shù)據(jù)。如果函數(shù)執(zhí)行成功,那么可得到從設(shè)備返回到的溫濕度數(shù)據(jù)。

完整交互過(guò)程如下圖所示:

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

這里對(duì) SHT30 返回的數(shù)據(jù)做一點(diǎn)說(shuō)明。如果讀取成功,SHT30 會(huì)返回 6 個(gè)字節(jié)的數(shù)據(jù),其中前 3 個(gè)字節(jié)表示溫度數(shù)據(jù),后 3 個(gè)字節(jié)表示濕度數(shù)據(jù);并且,d[2] 和 d[5] 分別表示溫度和濕度的校驗(yàn)字節(jié),通過(guò)這兩個(gè)字節(jié)即可判斷讀取到的溫濕度數(shù)據(jù)是否有效(注:本文的示例中,為了方便大家理解,沒(méi)有做數(shù)據(jù)校驗(yàn)的工作。)

最后就是溫濕度數(shù)據(jù)的轉(zhuǎn)換了,方法如下:

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

有了這些的工作,下面就只需要循環(huán)調(diào)用 read() 即可完成最終目標(biāo):獲取當(dāng)前環(huán)境溫濕度。

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

最后的運(yùn)行結(jié)果如下:

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

更新提示:

這個(gè)版本的實(shí)現(xiàn)同時(shí)支持 1.0 和 1.1 的代碼,因此,大家需要根據(jù)代碼版本編譯 dt_python_demo。

1) 將 dt_python_demo 拷貝到應(yīng)用目錄

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

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

  • 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) 根據(jù)代碼版本修改 BUILD.gn

使用Python開(kāi)發(fā)鴻蒙設(shè)備程序(2-I2C應(yīng)用實(shí)例)-鴻蒙HarmonyOS技術(shù)社區(qū)

Enjoy it!

代碼開(kāi)源地址: https://gitee.com/delphi-tang/python-for-hos

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

libdtpython.zip206.04K 

dt_python_demo.zip6.5K 

E53系列擴(kuò)展板介紹文檔V1.1.pdf1016.5K

i2c-demo.zip856B 

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2023-04-07 09:14:31

硬件通信串口通信實(shí)驗(yàn)

2017-08-11 18:25:25

Linuxi2c

2010-06-08 16:25:35

I2C總線協(xié)議

2022-06-13 09:21:45

I2C DriverI2C 子系統(tǒng)

2009-03-12 10:22:27

EclipseJ2MEJDT

2022-04-12 08:46:12

i2c-tools開(kāi)源工具

2020-12-01 15:37:07

Python

2009-12-09 10:34:13

ibmdwJavaApache

2016-07-21 11:06:54

Angular 2應(yīng)用

2023-09-13 15:33:57

I2C鴻蒙

2010-08-25 09:56:02

DB2存儲(chǔ)過(guò)程

2017-03-16 08:30:19

Android ThAndroidI2C

2010-09-29 09:54:09

J2ME應(yīng)用程序

2010-10-09 16:13:10

J2ME應(yīng)用程序

2022-06-12 07:30:13

I3C通訊協(xié)議

2021-09-08 15:44:56

鴻蒙HarmonyOS應(yīng)用

2009-06-11 17:07:49

WebsphereJ2EE應(yīng)用程序

2022-05-27 09:00:09

I2C子系統(tǒng)協(xié)議

2010-07-01 16:45:05

I2C總線協(xié)議

2009-09-22 12:25:04

ibmdwDB2
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲精品在线91 | 国产精品一区二区精品 | 毛片网站在线观看视频 | 国产精品一二三区 | 日韩精品无码一区二区三区 | 久久99视频精品 | 综合久久99| 久久久久成人精品亚洲国产 | 日韩精品一区二区在线 | 欧美jizzhd精品欧美巨大免费 | 成人精品在线观看 | 高清18麻豆| 在线毛片网 | 亚洲成人网在线观看 | 91精品久久久久久久久久入口 | 羞视频在线观看 | 久久狠狠| 国产精品99久久久久久宅男 | 国产精品免费一区二区三区四区 | 一级毛片免费完整视频 | 一区二区三区视频免费看 | 中文字幕免费观看 | 久久久久久国产精品免费免费男同 | 成人三级视频在线观看 | 欧美一级淫片免费视频黄 | 亚洲精品视频一区 | 日本手机看片 | 男女国产网站 | 国产视频一区二区 | 欧美黑人又粗大 | 欧美激情精品久久久久久变态 | 国产精品一区二区久久精品爱微奶 | 一区二区三区四区国产 | 成人在线免费观看视频 | 九九热在线精品视频 | 日韩毛片在线免费观看 | 日日日日操 | 亚洲欧美综合精品久久成人 | 久久久久久久久蜜桃 | 免费三级av | 国产精品国产三级国产aⅴ中文 |