在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

    關注

    2926

    文章

    45756

    瀏覽量

    386762
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86039
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2638

    瀏覽量

    67608

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    為什么選擇蜂窩聯網

    、Wi-SUN 或其他 LPWAN 相比,蜂窩聯網(包括 NB-IoT 和 LTE-M)更適合您的聯網項目,以下是其中一些關鍵原因。 許可與非許可頻段: 蜂窩
    發表于 03-17 11:42

    DLP6500能否用Python編程進行開發,是否有API接口?

    本人第一次接觸DLP的開發板,想知道DLP6500這款板子能否用Python編程進行開發,是否有API接口?
    發表于 02-28 06:58

    宇樹科技聯網方面

    給其他設備或云端進行分析和處理。 與通信企業合作:宇樹科技可能與通信企業展開合作,共同探索5G、6G等新一代通信技術機器人領域的應用,以提升機器人的通信效率和穩定性,滿足聯網場景下
    發表于 02-04 06:48

    AIGC入門及鴻蒙入門

    、小巧、功能強大等特點,能夠聯網時代為用戶提供更加便捷、高效的服務。 2. 開發環境搭建: 下載并安裝DevEco Studio,這是華為官方為鴻蒙系統開發提供的集成開發環境。 配
    發表于 01-13 10:32

    聯網就業有哪些高薪崗位?

    聯網就業有哪些高薪崗位? 聯網行業迎來了全面爆發式的發展,眾多高薪崗位吸引著人們的目光。聯網
    發表于 01-10 16:47

    使用Python進行串口通信的案例

    當然!以下是一個使用Python進行串口通信的簡單示例。這個示例展示了如何配置串口、發送數據以及接收數據。我們將使用 pyserial 庫,這是一個非常流行的用于串口通信的Python庫。 首先,你
    的頭像 發表于 11-22 09:11 ?1131次閱讀

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨特的優勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學者。
    的頭像 發表于 11-15 09:31 ?859次閱讀

    socket 聯網中的應用

    不同的計算機程序在網絡中進行通信。它基于TCP/IP協議,提供了一種可靠的、面向連接的通信方式。聯網中,Socket使得設備能夠發送和接收數據,實現遠程控制和監控。 2. Sock
    的頭像 發表于 11-12 14:19 ?966次閱讀

    聯網學習路線來啦!

    開發的方法,成為了未來一個單片機程序員的必備技能。 3.2.2網絡通信協議棧 聯網開發,離不開網絡的支持。作為網絡協議的實際統治者——TCP/IP,相信了解一些計算機知識的人都不陌生,單片機資源受限
    發表于 11-11 16:03

    MCU聯網中的應用前景

    與網絡的智能化交互。聯網的核心在于數據的收集、傳輸、處理和應用,而MCU在這一過程中扮演著至關重要的角色。 2. MCU聯網中的作用
    的頭像 發表于 11-01 13:39 ?836次閱讀

    FPGA聯網中的應用前景

    FPGA(現場可編程門陣列)聯網中的應用前景非常廣闊,其高度的靈活性和可編程性使其成為
    的頭像 發表于 10-25 09:22 ?1028次閱讀

    什么是聯網技術?

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

    使用Python進行Ping測試

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

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

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

    PLC聯網中的應用

    隨著科技的快速發展,聯網(IoT)技術已成為推動工業自動化、智能家居、智能交通等領域革新的重要力量。而PLC(Programmable Logic Controller,可編程邏輯控制器)作為工業
    的頭像 發表于 06-15 11:25 ?1952次閱讀
    主站蜘蛛池模板: 亚洲天堂999| 五月综合久久 | 乱色伦图片区 | 轻点灬大ji巴太粗太长了啊h | 亚洲欧美视频一区二区 | 黄色大片播放 | 五月网址 | 国产特级毛片 | 4hu影院在线观看 | 能在线观看的一区二区三区 | 美女视频一区二区三区 | 淫欲网| 狠狠狠色丁香婷婷综合久久五月 | 性生大片一级毛片免费观看 | 亚洲综合在线一区 | 日本免费大黄在线观看 | 国产一级真人毛爱做毛片 | 国产精品午夜久久久久久99热 | 一级特黄aa大片免费播放视频 | 深爱婷婷激情网 | 热门国产xvideos中文 | 亚洲第一网站快活影院 | 天堂在线最新版资源www | 四虎4hu永久在线观看 | 在线播放真实国产乱子伦 | 永久看日本大片免费 | 日本国产在线 | 456亚洲人成影院在线观 | 国产黄色小视频网站 | 亚洲国产人成在线观看 | 岛国三级在线看 | 美女视频黄a视频免费全过程 | 国产成年美女毛片80s | 久久久综合色 | 1024亚洲视频| 三级免费观看 | 免看一级a一片成人123 | 丁香六月婷婷七月激情 | 永久免费在线播放 | 日日爽天天干 | 天天干天天操天天爱 |