0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

基于EsDA開發(fā)平臺快速搭建I2C數(shù)據(jù)采集監(jiān)測系統(tǒng)

AGk5_ZLG_zhiyua ? 來源:ZLG致遠電子 ? 作者:ZLG開發(fā)者社區(qū) ? 2022-10-14 11:48 ? 次閱讀

EsDA開發(fā)平臺為產(chǎn)品上線提供動力。本文將基于EsDA開發(fā)平臺,通過拖拽、連線方式,10分鐘快速搭建一個I2C數(shù)據(jù)采集監(jiān)測業(yè)務(wù),為客戶產(chǎn)品開發(fā)、部署、上線縮短周期。

簡介

I2C 是一種串行通信總線,只需SCK、SDA兩根雙向I/O線即可在連接到總線上的設(shè)備之間傳送信息。因其所需引腳少,可擴展性強,數(shù)據(jù)傳輸速率快等,所以現(xiàn)被廣泛使用于IC間的通訊。在各種嵌入式應(yīng)用場景中,使用I2C總線通信的傳感器也有很多。比如 eeprom、溫濕度傳感器、流量傳感器、壓力傳感器等。

EsDA 平臺在使用I2C總線通信時只需要通過拖拽節(jié)點、連線繪制流圖,即可實現(xiàn)從I2C從機讀取數(shù)據(jù),大大的簡化了開發(fā)流程,縮短了項目開發(fā)周期,為客戶產(chǎn)品搶占市場提供先機。

本文基于EsDA開發(fā)平臺,MPC_ZC1作為I2C主機設(shè)備,定時從TPS02RAH從機設(shè)備中去讀取溫度寄存器的值,并將采集到的溫度值上傳到ZWS云端,實現(xiàn)溫度實時監(jiān)控功能,該實驗主要用了到timer、fscript、i2c_master_read、log和zws節(jié)點,具體實現(xiàn)請見下文。

I2C相關(guān)節(jié)點介紹

I2C外設(shè)共有3個幾點,分別是i2c_master、i2c_master_read和i2c_master_write節(jié)點。i2c_master節(jié)點主要用來配置I2C的設(shè)備名稱以及設(shè)備參數(shù),i2c_master_read節(jié)點主要用于讀取從機設(shè)備的數(shù)據(jù),i2c_master_write節(jié)點主要用于向從機設(shè)備寫入數(shù)據(jù)。

1. i2c_master_write節(jié)點

I2C主機向從機設(shè)備寫數(shù)據(jù),可配置從機相關(guān)的設(shè)備信息和通信參數(shù)。

1.1 屬性

356ec9ae-4b72-11ed-a3b6-dac502259ad0.png

名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;

顯示名稱(displayName):用于畫布上顯示的名稱;

主機配置(i2c master config):綁定一個I2C主機的配置節(jié)點;

從機地址(Slave address):從機設(shè)備的地址;

地址位數(shù)(address bits):從機的地址位數(shù),由于7位尋址和10位尋址是兼容的所以可以在同一個I2C總線上同時使用7位和10位兩種不同模式的設(shè)備,可配為7位(7 bits);10位(10 bits);

是否忽略從機應(yīng)答(whether to ignore the slave ack signal):可配:忽略從機應(yīng)答(ignore);不忽略從機應(yīng)答(do not ignore);

從機設(shè)備寄存器地址位寬(SubAddressBitWidth):可配:do not set sub-address表示不設(shè)置從機的寄存器地址寬度;1 bytes sub-address表示從機具有1字節(jié)(8位)的寄存器地址寬度;2 bytes sub-address表示從機具有2字節(jié)(16位)的寄存器地址寬度;4 bytes sub-address表示從機具有4字節(jié)(32位)的寄存器地址寬度;

從機設(shè)備寄存器地址(SubAddress):從機設(shè)備子地址(寄存器地址)。注意從機設(shè)備寄存器地址位寬為0則不能設(shè)置從機子地址。

1.2輸入

payload :輸入數(shù)據(jù)流,存放需要寫入的數(shù)據(jù)。此節(jié)點接收如下類型的數(shù)據(jù):binary type(二進制類型); wbuffer object type(指針類型); string type(字符串類型);

payloadLength :需要寫入的數(shù)據(jù)長度,單位字節(jié);

subAddress :從機設(shè)備子地址(寄存器地址)。注意從機設(shè)備寄存器地址位寬為0則不能設(shè)置從機子地址。

1.3輸出

sink類型節(jié)點一般并不具備數(shù)據(jù)輸出。

2.i2c_master_read節(jié)點

I2C主機向從機設(shè)備中讀數(shù)據(jù):對從機的設(shè)備地址等進行輸入/配置,最后將從機中讀取到數(shù)據(jù)和長度等信息進行輸出。

2.1 屬性

357af760-4b72-11ed-a3b6-dac502259ad0.png

名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;

顯示名稱(displayName):用于畫布上顯示的名稱;

主機配置(i2c master config):綁定一個I2C主機的配置節(jié)點;

從機地址(Slave address):從機設(shè)備的地址;

地址位數(shù)(address bits):從機的地址位數(shù),可配為7位(7 bits);10位(10 bits);

是否忽略從機應(yīng)答(whether to ignore the slave ack signal):可配:忽略從機應(yīng)答(ignore);不忽略從機應(yīng)答(do not ignore);

是否發(fā)送應(yīng)答(whether send nak):當主機讀取數(shù)據(jù)時主機是否發(fā)送給從機的應(yīng)答ACK信號; do not send表示不發(fā)送主機ACK信號; send表示發(fā)送主機的ACK信號;

從機設(shè)備寄存器地址位寬(SubAddressBitWidth):可配:do not set sub-address表示不設(shè)置從機的寄存器地址寬度;1 bytes sub-address表示從機具有1字節(jié)(8位)的寄存器地址寬度;2 bytes sub-address表示從機具有2字節(jié)(16位)的寄存器地址寬度;4 bytes sub-address表示從機具有4字節(jié)(32位)的寄存器地址寬度;

從機設(shè)備寄存器地址(SubAddress):從機設(shè)備子地址(寄存器地址)。注意從機設(shè)備寄存器地址位寬為0則不能設(shè)置從機子地址。

2.2輸入

Length :讀的數(shù)據(jù)長度,單位字節(jié);

subAddress :從機設(shè)備子地址(寄存器地址)。注意從機設(shè)備寄存器地址位寬為0則不能設(shè)置從機子地址;

2.3輸出

payload :讀緩沖區(qū),用于存放接受讀取到的數(shù)據(jù),類型pointer.如果下一個節(jié)點為fscript,則可以使用rbuffer讀取數(shù)據(jù);

payloadLength :讀的數(shù)據(jù)長度,單位字節(jié);

subAddress :從機設(shè)備子地址(寄存器地址)。注意從機設(shè)備寄存器地址位寬為0則沒有從機子地址。

3.i2c_master配置節(jié)點

I2C主機的通用配置。

3.1 屬性

359346ee-4b72-11ed-a3b6-dac502259ad0.png

名稱(name):節(jié)點名稱,用于索引查找本節(jié)點,在某些aw_flow_designer的版本被隱藏起來了,只能通過點擊i2c_master_read和i2c_master_write這兩個節(jié)點主機配置去顯現(xiàn);

顯示名稱(displayName):用于畫布上顯示的名稱;

設(shè)備名(Devname):I2C主機設(shè)備路徑名;

時鐘頻率(clock frequency):I2C設(shè)備的SCK時鐘頻率。

3.2輸入

config配置節(jié)點一般不具備數(shù)據(jù)輸入。

3.3輸出

config配置節(jié)點一般不具備數(shù)據(jù)輸出。

業(yè)務(wù)開發(fā)

1. 采集PT100的實時溫度

MPC_ZC1作為I2C主機設(shè)備,定時從TPS02RAH從機設(shè)備中去讀取溫度寄存器的值,并將采集到的溫度值上傳到ZWS云端,實現(xiàn)溫度實時監(jiān)控。

該實驗主要用到timer、fscript、i2c_master_read、log和zws節(jié)點:

timer:timer節(jié)點用于定時觸發(fā)采集PT100的溫度;

i2c_master_read:i2c_master_read節(jié)點主要用于從從機設(shè)備讀取數(shù)據(jù);

fscript:fscript節(jié)點主要用于對TPS02RAH從機設(shè)備讀取的數(shù)據(jù)進行轉(zhuǎn)換處理

和對i2c_master_read節(jié)點進行輸入配置(配置要讀取的字節(jié)長度);

log:log對采集到的溫度值進行打印顯示;

zws:zws節(jié)點將fscript節(jié)點輸出溫度值上報到zws云端。

1.1添加節(jié)點并連線 周期性的去讀取I2C從機TPS02RAH設(shè)備溫度寄存器的值,將timer,fscript,i2c_master_read,log節(jié)點添加到畫布中,并連線繪圖。

35ac2c7c-4b72-11ed-a3b6-dac502259ad0.png

1.2配置節(jié)點


雙擊timer節(jié)點,打開屬性面板設(shè)置定時周期(ms),周期性的去讀取TPS02的溫度值。 雙擊i2c_master_read的輸入節(jié)點fscript,并查看TPS02RAH溫度傳感器的數(shù)據(jù)手冊。 得知TPS02RAH溫度寄存器的值有6個字節(jié),且數(shù)據(jù)傳輸順序:先傳輸高字節(jié)后傳輸?shù)妥止?jié),可知前3個字節(jié)存儲通道1的溫度測試結(jié)果,后3個字節(jié)存儲通道2的溫度測試結(jié)果。 所以i2c_master_read節(jié)點的輸入:fscript需讀取兩個通道6個字節(jié)的數(shù)據(jù)。其他的參數(shù)可在i2c_master_read節(jié)點的屬性中配置。

35dd784a-4b72-11ed-a3b6-dac502259ad0.png

雙擊i2c_master_read節(jié)點,打開屬性面板根據(jù)TPS02RAH的數(shù)據(jù)手冊設(shè)置如下圖所示,并點擊I2C主機配置的鉛筆圖標去設(shè)置I2C主機設(shè)備路徑名和時鐘頻率。
35e76440-4b72-11ed-a3b6-dac502259ad0.png

雙擊i2c_master_read的輸出消費者節(jié)點fscript,將讀取到溫度寄存器的兩個通道溫度根據(jù)下面的溫度轉(zhuǎn)換公式將溫度輸出并打印到log中。 TPS02ARH的溫度轉(zhuǎn)換公式: 兩通道六字節(jié)數(shù)據(jù),前三位字節(jié)數(shù)據(jù)對應(yīng)通道 1,后三位字節(jié)數(shù)據(jù)對應(yīng)通道 2,操作方法一樣,取通道一數(shù)據(jù)分析如下: 3627e92a-4b72-11ed-a3b6-dac502259ad0.png
當 value≥223時,即當前測量溫度為負溫度值: 363bb478-4b72-11ed-a3b6-dac502259ad0.png

當 value<223時, 即當前測量溫度為正溫度值:

36482d98-4b72-11ed-a3b6-dac502259ad0.png

i2c_master_read的輸出消費者節(jié)點fscript的內(nèi)容如下:

//將讀取的6個uint8_t類型的數(shù)據(jù)打印
rb = rbuffer_create(msg.payload, msg.payloadLength)


temperature1 = 0 //通道1的溫度
temperature2 = 0 //通道2的溫度
for (var i = 0; i < msg.payloadLength; i = i+1) {
    d = rbuffer_read_uint8(rb);
    if(i > 2){
        temperature2 = temperature2 + (u32(d)<<(8*(5-i)));
    }
     temperature1 = temperature1 + (u32(d)<<(8*(2-i)));
}
if (temperature1 < 8388608) {//temperature<2^23正溫度
    msg.temperature1 = temperature1/8192
} else {//負溫度
    msg.temperature1 = -(16777216 - temperature1)/8192
}
if (temperature2 < 8388608) {
    msg.temperature2 = temperature2/8192
} else {//負溫度
    msg.temperature2 = -(16777216 - temperature2)/8192
}
msg.payload = join(",","channel 1:",msg.temperature1,"channel 2:",msg.temperature2)


print(msg.payload)

1.3下載驗證

選擇流圖下載接口,并點擊運行按鈕。

3658fd58-4b72-11ed-a3b6-dac502259ad0.png

完成流圖下載,根據(jù)實物連線可知PT100連接的是通道1,隨著手捂探頭,可以看到channel 1(通道1)的溫度從27.67上升到30.23,因為channel 2(通道2)沒有接PT100的探頭所以數(shù)值保持850不變。

36693ed4-4b72-11ed-a3b6-dac502259ad0.jpg

367b1d34-4b72-11ed-a3b6-dac502259ad0.png

368c0e6e-4b72-11ed-a3b6-dac502259ad0.png

1.4接入zws云端

登錄:https://www.zlgcloud.com/ 按照EsDA MPC-ZC1應(yīng)用:IoT監(jiān)測控制系統(tǒng)(一)這篇文章中接入云端方法的介紹,在ZWS云端上為MPC-ZC1添加新的數(shù)據(jù)點,如下圖所示: 添加通道1 的溫度顯示:

36a2c9b0-4b72-11ed-a3b6-dac502259ad0.png

添加通道2 的溫度顯示:

36ad9020-4b72-11ed-a3b6-dac502259ad0.png

在AW_FLOW Designer畫布中添加zws_iot_data_out節(jié)點并連線。

36d1e060-4b72-11ed-a3b6-dac502259ad0.png

輸入對應(yīng)的三元組信息并選擇正確的數(shù)據(jù)上報方式和目標鍵值對。

36f4ddf4-4b72-11ed-a3b6-dac502259ad0.png

下載流圖并觀察云端設(shè)備列表的實時數(shù)據(jù)如下圖所示。

370c2c0c-4b72-11ed-a3b6-dac502259ad0.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)采集
    +關(guān)注

    關(guān)注

    39

    文章

    6192

    瀏覽量

    113820
  • 監(jiān)測系統(tǒng)

    關(guān)注

    8

    文章

    2739

    瀏覽量

    81396
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1490

    瀏覽量

    124080
  • ESDA
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    7515

原文標題:【Z站推薦】基于 EsDA MPC-ZC1 快速實現(xiàn) I2C采集監(jiān)測

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ARM I2C 總線接口模塊在數(shù)據(jù)采集中的應(yīng)用

    ARM  I2C 總線接口模塊在數(shù)據(jù)采集中的應(yīng)用在以ARM S3C44BOX為核心處理器的新型流量積算儀表的設(shè)計中,利用ARM自帶的12C總線接口模塊擴展了A/D轉(zhuǎn)換芯片
    發(fā)表于 03-14 18:06

    什么是軟件I2C和硬件I2C

    學(xué)習(xí)I2C總線通信協(xié)議,完成基于I2C硬件協(xié)議的AHT20溫濕度傳感器的數(shù)據(jù)采集,并將采集的溫度-濕度值通過串口輸出。具體任務(wù):1)解釋什么是“軟件
    發(fā)表于 08-23 06:19

    如何去實現(xiàn)基于I2C的AHT20溫濕度傳感器的數(shù)據(jù)采集及串口輸出

    總結(jié)基于I2C的AHT20溫濕度傳感器的數(shù)據(jù)采集及串口輸出一、IIC協(xié)議I2C 通訊協(xié)議(Inter-Integrated Circuit)是由 Phiilps 公司開發(fā)的,由于它引腳
    發(fā)表于 02-18 06:56

    基于LabVIEW數(shù)據(jù)采集系統(tǒng)快速開發(fā)

    基于LabVIEW數(shù)據(jù)采集系統(tǒng)快速開發(fā)
    發(fā)表于 01-20 16:27 ?0次下載

    I2C快速指南

    I2C快速指南
    發(fā)表于 04-22 16:51 ?32次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>快速</b>指南

    基于I2C協(xié)議的AHT20溫濕度傳感器的數(shù)據(jù)采集

    學(xué)習(xí)I2C總線通信協(xié)議,完成基于I2C硬件協(xié)議的AHT20溫濕度傳感器的數(shù)據(jù)采集,并將采集的溫度-濕度值通過串口輸出。具體任務(wù):1)解釋什么是“軟件
    發(fā)表于 12-06 20:51 ?11次下載
    基于<b class='flag-5'>I2C</b>協(xié)議的AHT20溫濕度傳感器的<b class='flag-5'>數(shù)據(jù)采集</b>

    基于I2C下的溫濕度采集實驗

    目錄 一、I2C相關(guān)了解及介紹1、基本介紹2I2C 物理層3、I2C 協(xié)議層二、什么是“軟件I2C”和“硬件
    發(fā)表于 12-07 09:21 ?3次下載
    基于<b class='flag-5'>I2C</b>下的溫濕度<b class='flag-5'>采集</b>實驗

    基于I2C的AHT20溫濕度傳感器的數(shù)據(jù)采集及串口輸出

    總結(jié)基于I2C的AHT20溫濕度傳感器的數(shù)據(jù)采集及串口輸出一、IIC協(xié)議I2C 通訊協(xié)議(Inter-Integrated Circuit)是由 Phiilps 公司開發(fā)的,由于它引腳
    發(fā)表于 12-23 19:43 ?5次下載
    基于<b class='flag-5'>I2C</b>的AHT20溫濕度傳感器的<b class='flag-5'>數(shù)據(jù)采集</b>及串口輸出

    EsDA應(yīng)用】5分鐘快速實現(xiàn)攝像頭圖像采集

    些應(yīng)用領(lǐng)域都離不開攝像頭的支持。但是,攝像頭的應(yīng)用框架往往都比較復(fù)雜,對使用者有一定的要求。 本文使用M6G2C核心板,簡單介紹如何基于EsDA設(shè)計的camera攝像頭功能節(jié)點,快速實現(xiàn)圖像
    的頭像 發(fā)表于 04-12 11:50 ?748次閱讀

    【產(chǎn)品應(yīng)用】基于 EsDA MPC-ZC1 快速實現(xiàn) I2C采集監(jiān)測

    EsDA開發(fā)平臺為產(chǎn)品上線提供動力。本文將基于EsDA開發(fā)平臺,通過拖拽、連線方式,10分鐘
    的頭像 發(fā)表于 05-31 18:05 ?460次閱讀
    【產(chǎn)品應(yīng)用】基于 <b class='flag-5'>EsDA</b> MPC-ZC1 <b class='flag-5'>快速</b>實現(xiàn) <b class='flag-5'>I2C</b><b class='flag-5'>采集</b><b class='flag-5'>監(jiān)測</b>

    【Z站推薦】基于 EsDA MPC-ZC1 快速實現(xiàn) I2C采集監(jiān)測

    EsDA開發(fā)平臺為產(chǎn)品上線提供動力。本文將基于EsDA開發(fā)平臺,通過拖拽、連線方式,10分鐘
    的頭像 發(fā)表于 10-18 10:11 ?1196次閱讀
    【Z站推薦】基于 <b class='flag-5'>EsDA</b> MPC-ZC1 <b class='flag-5'>快速</b>實現(xiàn) <b class='flag-5'>I2C</b><b class='flag-5'>采集</b><b class='flag-5'>監(jiān)測</b>

    EsDA應(yīng)用】串口轉(zhuǎn)UDP服務(wù)器

    如何讓自動化領(lǐng)域的串口設(shè)備具備聯(lián)網(wǎng)能力?本文將基于EsDA平臺,帶你開發(fā)一個串口轉(zhuǎn)UDP服務(wù)器業(yè)務(wù),快速實現(xiàn)串口聯(lián)網(wǎng)功能。簡介串口服務(wù)器在物聯(lián)網(wǎng)中的應(yīng)用十分廣泛,
    的頭像 發(fā)表于 03-06 13:55 ?643次閱讀
    【<b class='flag-5'>EsDA</b>應(yīng)用】串口轉(zhuǎn)UDP服務(wù)器

    【產(chǎn)品應(yīng)用】基于 EsDA MPC-ZC1 快速實現(xiàn) I2C采集監(jiān)測

    EsDA開發(fā)平臺為產(chǎn)品上線提供動力。本文將基于EsDA開發(fā)平臺,通過拖拽、連線方式,10分鐘
    的頭像 發(fā)表于 06-08 10:13 ?661次閱讀
    【產(chǎn)品應(yīng)用】基于 <b class='flag-5'>EsDA</b> MPC-ZC1 <b class='flag-5'>快速</b>實現(xiàn) <b class='flag-5'>I2C</b><b class='flag-5'>采集</b><b class='flag-5'>監(jiān)測</b>

    數(shù)之能設(shè)備數(shù)據(jù)采集平臺如何搭建?有什么功能和應(yīng)用場景?

    、不同的網(wǎng)段,造成數(shù)據(jù)孤島,進而影響到數(shù)據(jù)采集平臺搭建,因此很多企業(yè)都對具備廣泛接入能力的數(shù)據(jù)采集平臺
    的頭像 發(fā)表于 07-13 14:16 ?471次閱讀

    基于EsDA MPC-ZC1 快速實現(xiàn)I2C 監(jiān)控報警

    本文介紹如何通過EsDA開發(fā)套件,快速完成一個I2C采集數(shù)據(jù)的監(jiān)控報警系統(tǒng),通過該
    的頭像 發(fā)表于 08-23 15:16 ?805次閱讀
    基于<b class='flag-5'>EsDA</b> MPC-ZC1 <b class='flag-5'>快速</b>實現(xiàn)<b class='flag-5'>I2C</b> 監(jiān)控報警