精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在鴻蒙上使用Python進行物聯網編程

OpenHarmony技術社區 ? 來源:鴻蒙技術社區 ? 作者:唐佐林 ? 2021-09-28 09:55 ? 次閱讀

在上一篇帖子《使用 Python 開發鴻蒙設備程序(1-GPIO 外設控制)》中,已經成功的使用 Python 對 GPIO 上的外設進行了控制。

這其實不是什么大不了的事,從功能的角度也著實不值得炫耀!然而,這卻是非常重要的一步:在鴻蒙上用使用 Python 進行物聯網編程是可行的!!!

既然可行,加上 Python 語言天生的優勢(易于掌握,開發效率高),那么真的值得持續打造,將鴻蒙上的 Python 進行到底。

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

這塊外設板上的 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 通信!

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

cfab54a8-1fc0-11ec-82a8-dac502259ad0.jpg

在原理上,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 上的實時數據了!

d01753ba-1fc0-11ec-82a8-dac502259ad0.jpg

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

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

d06842a2-1fc0-11ec-82a8-dac502259ad0.jpg

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

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

d0d23a22-1fc0-11ec-82a8-dac502259ad0.jpg

這里對 SHT30 返回的數據做一點說明。如果讀取成功,SHT30 會返回 6 個字節的數據,其中前 3 個字節表示溫度數據,后 3 個字節表示濕度數據。

并且,d[2] 和 d[5] 分別表示溫度和濕度的校驗字節,通過這兩個字節即可判斷讀取到的溫濕度數據是否有效(注:本文的示例中,為了方便大家理解,沒有做數據校驗的工作。)

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

d133ff14-1fc0-11ec-82a8-dac502259ad0.jpg

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

d197d5a2-1fc0-11ec-82a8-dac502259ad0.jpg

最后的運行結果如下:

d1f4a976-1fc0-11ec-82a8-dac502259ad0.jpg

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

將 dt_python_demo 拷貝到應用目錄:

1.0:。/applications/sample/wifi-iot/app

1.1:。/applications/sample/BearPi/BearPi-HM_Nano

修改 app 模塊的任務列表:

1.0:。/applications/sample/wifi-iot/app/BUILD.gn

1.1:。/applications/sample/BearPi/BearPi-HM_Nano/BUILD.gn

libdtpython.a 路徑:

1.0:。/vendor/hisi/hi3861/hi3861/build/libs

1.1:。/device/bearpi/bearpi_hm_nano/sdk_liteos/build/libs

根據代碼版本修改 BUILD.gn:

d26c3c3e-1fc0-11ec-82a8-dac502259ad0.jpg

Enjoy it!

代碼開源地址:

https://gitee.com/delphi-tang/python-for-hos

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2894

    文章

    43251

    瀏覽量

    366257
  • python
    +關注

    關注

    53

    文章

    4752

    瀏覽量

    84061
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2627

    瀏覽量

    65776

原文標題:將鴻蒙上的Python進行到底!

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是聯網技術?

    的概念最早可以追溯到1999年,由凱文·阿什頓寶潔公司提出,并用作新傳感器項目的演講標題。隨著技術的不斷發展,聯網逐漸成為信息科技產業的重要組成部分。
    發表于 08-19 14:08

    使用Python進行Ping測試

    )請求包,然后等待目標主機返回響應包,從而測量網絡的延遲和丟包情況。隨著Python編程語言的廣泛應用,越來越多的網絡工程師開始使用Python進行自動化網絡測試和管理任務。本篇文章將
    的頭像 發表于 08-12 17:56 ?245次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進行</b>Ping測試

    如何使用Python進行神經網絡編程

    。 為什么使用PythonPython是一種廣泛使用的高級編程語言,以其易讀性和易用性而聞名。Python擁有強大的庫,如TensorFlow、Keras和PyTorch,這些庫提
    的頭像 發表于 07-02 09:58 ?262次閱讀

    PLC聯網中的應用

    隨著科技的快速發展,聯網(IoT)技術已成為推動工業自動化、智能家居、智能交通等領域革新的重要力量。而PLC(Programmable Logic Controller,可編程邏輯控制器)作為工業
    的頭像 發表于 06-15 11:25 ?885次閱讀

    第十八屆粵港澳聯網大會暨開源鴻蒙生態發展大會:共筑智能未來,推進產業創新

    科技浪潮席卷全球的今天,聯網與開源鴻蒙技術的交融,正在為全球產業帶來前所未有的發展機遇。在這個背景下,第十八屆粵港澳
    的頭像 發表于 03-26 08:31 ?565次閱讀
    第十八屆粵港澳<b class='flag-5'>物</b><b class='flag-5'>聯網</b>大會暨開源<b class='flag-5'>鴻蒙</b>生態發展大會:共筑智能未來,推進產業創新

    純血鴻蒙系統,拿什么與安卓、iOS比?

    ArkUI …… 2、鴻蒙進階 Stage模型 網絡、數據管理 一次開發多段部署 …… 3、鴻蒙多媒體技術 音頻 視頻 相機 圖片 …… 4、鴻蒙南向與驅動開發
    發表于 02-21 21:04

    盤點那些硬件+項目學習套件:Hi3861鴻蒙開發板及入門常見問題解答

    華清遠見20歲了~過去3年里,華清遠見研發中心針對個人開發板業務,打造了多款硬件+項目學習套件,涉及STM32單片機、嵌入式、聯網、人工智能、鴻蒙、ESP32、阿里云IoT等多技術方向。 今天我們
    發表于 02-01 16:55

    【年度精選】2023年度top5榜單——鴻蒙技術社區問答

    學術交流方式感興趣的朋友,這無疑是一個值得參考學習的范例。 3、鴻蒙上能安裝docker嗎? 作者:cnasis 閱讀量:3478||回答數:1 推薦理由: 關于是否可以鴻蒙上
    發表于 01-12 17:00

    鴻蒙聯網基礎

    關于聯網架構以及鴻蒙第三方應用庫的引用方式
    的頭像 發表于 01-08 08:37 ?426次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>物</b><b class='flag-5'>聯網</b>基礎

    Python編程語言屬于什么語言

    Python編程語言屬于高級編程語言中的一種。它是一種通用、面向對象、解釋型編程語言。Python由Guido van Rossum于198
    的頭像 發表于 11-22 14:31 ?1138次閱讀

    python窗口圖形界面編程

    庫,幫助開發者快速構建具有良好用戶體驗的窗口應用程序。 Python的GUI編程領域,最常用的庫是Tkinter。Tkinter是Python的標準GUI庫,它基于Tk圖形庫,并提供
    的頭像 發表于 11-22 14:23 ?735次閱讀

    聯網里GPRS模塊耗電是很高的,怎么控制功耗?

    聯網里GPRS模塊耗電是很高的,那一般都是怎么控制功耗的。
    發表于 11-06 06:39

    聯網專業前景怎么樣?

    意味著聯網專業人才可以不同行業中找到工作機會,并且有機會參與創新和改變。3.技術復合性:聯網專業需要掌握多個技術領域的知識,如傳感器技
    發表于 10-20 09:48

    Python編程實用指南

    Python 是一種解釋型、面向對象、動態數據類型的高級程序設計語言。通過 Python 編程,我們能夠解決現實生活中的很多任務。本書是一本面向實踐的 Python
    發表于 09-27 06:21

    基于飛騰派的邊緣聯網

    、協議轉換和數據處理等功能。其中內置了萬編碼算法,以及物模型,可以給在場景內的所有的人和都附上一個唯一的ID。唯一的編碼規則來標識和管理物品和人,確保能夠復雜的環境中準確地進行
    發表于 09-21 16:50