EsDA開發平臺為產品上線提供動力。本文將基于EsDA開發平臺,通過拖拽、連線方式,10分鐘快速搭建一個I2C數據采集監測業務,為客戶產品開發、部署、上線縮短周期。
??簡介
I2C 是一種串行通信總線,只需SCK、SDA兩根雙向I/O線即可在連接到總線上的設備之間傳送信息。因其所需引腳少,可擴展性強,數據傳輸速率快等,所以現被廣泛使用于IC間的通訊。在各種嵌入式應用場景中,使用I2C總線通信的傳感器也有很多。比如 eeprom、溫濕度傳感器、流量傳感器、壓力傳感器等。
EsDA 平臺在使用I2C總線通信時只需要通過拖拽節點、連線繪制流圖,即可實現從I2C從機讀取數據,大大的簡化了開發流程,縮短了項目開發周期,為客戶產品搶占市場提供先機。
本文基于EsDA開發平臺,MPC_ZC1作為I2C主機設備,定時從TPS02RAH從機設備中去讀取溫度寄存器的值,并將采集到的溫度值上傳到ZWS云端,實現溫度實時監控功能,該實驗主要用了到timer、fscript、i2c_master_read、log和zws節點,具體實現請見下文。
I2C相關節點介紹
I2C外設共有3個幾點,分別是i2c_master、i2c_master_read和i2c_master_write節點。i2c_master節點主要用來配置I2C的設備名稱以及設備參數,i2c_master_read節點主要用于讀取從機設備的數據,i2c_master_write節點主要用于向從機設備寫入數據。1. i2c_master_write節點
I2C主機向從機設備寫數據,可配置從機相關的設備信息和通信參數。
1.1 屬性
- 名稱(name):節點名稱,用于索引查找本節點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 主機配置(i2c master config):綁定一個I2C主機的配置節點;
- 從機地址(Slave address):從機設備的地址;
- 地址位數(address bits):從機的地址位數,由于7位尋址和10位尋址是兼容的所以可以在同一個I2C總線上同時使用7位和10位兩種不同模式的設備,可配為7位(7 bits);10位(10 bits);
- 是否忽略從機應答(whether to ignore the slave ack signal):可配:忽略從機應答(ignore);不忽略從機應答(do not ignore);
- 從機設備寄存器地址位寬(SubAddressBitWidth):可配:do not set sub-address表示不設置從機的寄存器地址寬度;1 bytes sub-address表示從機具有1字節(8位)的寄存器地址寬度;2 bytes sub-address表示從機具有2字節(16位)的寄存器地址寬度;4 bytes sub-address表示從機具有4字節(32位)的寄存器地址寬度;
- 從機設備寄存器地址(SubAddress):從機設備子地址(寄存器地址)。注意從機設備寄存器地址位寬為0則不能設置從機子地址。
-
payload :輸入數據流,存放需要寫入的數據。此節點接收如下類型的數據:binary type(二進制類型); wbuffer object type(指針類型); string type(字符串類型);
-
payloadLength :需要寫入的數據長度,單位字節;
- subAddress :從機設備子地址(寄存器地址)。注意從機設備寄存器地址位寬為0則不能設置從機子地址。
1.3輸出
sink類型節點一般并不具備數據輸出。2.i2c_master_read節點
I2C主機向從機設備中讀數據:對從機的設備地址等進行輸入/配置,最后將從機中讀取到數據和長度等信息進行輸出。2.1 屬性
-
名稱(name):節點名稱,用于索引查找本節點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
主機配置(i2c master config):綁定一個I2C主機的配置節點;
-
從機地址(Slave address):從機設備的地址;
-
地址位數(address bits):從機的地址位數,可配為7位(7 bits);10位(10 bits);
-
是否忽略從機應答(whether to ignore the slave ack signal):可配:忽略從機應答(ignore);不忽略從機應答(do not ignore);
-
是否發送應答(whether send nak):當主機讀取數據時主機是否發送給從機的應答ACK信號; do not send表示不發送主機ACK信號; send表示發送主機的ACK信號;
-
從機設備寄存器地址位寬(SubAddressBitWidth):可配:do not set sub-address表示不設置從機的寄存器地址寬度;1 bytes sub-address表示從機具有1字節(8位)的寄存器地址寬度;2 bytes sub-address表示從機具有2字節(16位)的寄存器地址寬度;4 bytes sub-address表示從機具有4字節(32位)的寄存器地址寬度;
-
從機設備寄存器地址(SubAddress):從機設備子地址(寄存器地址)。注意從機設備寄存器地址位寬為0則不能設置從機子地址。
-
Length :讀的數據長度,單位字節;
-
subAddress :從機設備子地址(寄存器地址)。注意從機設備寄存器地址位寬為0則不能設置從機子地址;
-
payload :讀緩沖區,用于存放接受讀取到的數據,類型pointer.如果下一個節點為fscript,則可以使用rbuffer讀取數據;
-
payloadLength :讀的數據長度,單位字節;
- subAddress :從機設備子地址(寄存器地址)。注意從機設備寄存器地址位寬為0則沒有從機子地址。
3.i2c_master配置節點
I2C主機的通用配置。
3.1 屬性
-
名稱(name):節點名稱,用于索引查找本節點,在某些aw_flow_designer的版本被隱藏起來了,只能通過點擊i2c_master_read和i2c_master_write這兩個節點主機配置去顯現;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
設備名(Devname):I2C主機設備路徑名;
-
時鐘頻率(clock frequency):I2C設備的SCK時鐘頻率。
3.2輸入
config配置節點一般不具備數據輸入。
3.3輸出
config配置節點一般不具備數據輸出。
業務開發
1. 采集PT100的實時溫度
MPC_ZC1作為I2C主機設備,定時從TPS02RAH從機設備中去讀取溫度寄存器的值,并將采集到的溫度值上傳到ZWS云端,實現溫度實時監控。該實驗主要用到timer、fscript、i2c_master_read、log和zws節點:
- timer:timer節點用于定時觸發采集PT100的溫度;
- i2c_master_read:i2c_master_read節點主要用于從從機設備讀取數據;
- fscript:fscript節點主要用于對TPS02RAH從機設備讀取的數據進行轉換處理
- 和對i2c_master_read節點進行輸入配置(配置要讀取的字節長度);
- log:log對采集到的溫度值進行打印顯示;
- zws:zws節點將fscript節點輸出溫度值上報到zws云端。
當 value<223時, 即當前測量溫度為正溫度值:
i2c_master_read的輸出消費者節點fscript的內容如下:
//將讀取的6個uint8_t類型的數據打印
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下載驗證
選擇流圖下載接口,并點擊運行按鈕。
完成流圖下載,根據實物連線可知PT100連接的是通道1,隨著手捂探頭,可以看到channel 1(通道1)的溫度從27.67上升到30.23,因為channel 2(通道2)沒有接PT100的探頭所以數值保持850不變。
1.4接入zws云端
登錄:https://www.zlgcloud.com/按照EsDA MPC-ZC1應用:IoT監測控制系統(一)這篇文章中接入云端方法的介紹,在ZWS云端上為MPC-ZC1添加新的數據點,如下圖所示:添加通道1 的溫度顯示:
添加通道2 的溫度顯示:
在AW_FLOW Designer畫布中添加zws_iot_data_out節點并連線。
輸入對應的三元組信息并選擇正確的數據上報方式和目標鍵值對。
下載流圖并觀察云端設備列表的實時數據如下圖所示。
技術交流群長按識別如下二維碼可加入“工控板/核心板技術交流群”,與志同道合的朋友交流,并有專業技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。
-
致遠電子
+關注
關注
13文章
406瀏覽量
31301
原文標題:【產品應用】基于 EsDA MPC-ZC1 快速實現 I2C采集監測
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論