--- title: XY-MD02 tags: Device Integration image: --- # XY-MD02 :::info * IC: SHT20 [datasheet](https://www.mouser.com/datasheet/2/682/Sensirion_Humidity_Sensors_SHT20_Datasheet-1274196.pdf) * [Manual](http://www.sah.rs/media/sah/techdocs/xy-md02-manual.pdf) ::: [toc] MD02為一台溫溼度檢測機,可經由RS485控制,baud rate 初始設定為9600 ## 運作環境 ![](https://i.imgur.com/7R8M1zZ.png) ## 接線方式 上述已知此設備的傳輸方式為RS-485,所以主機設定serial port 以RS485輸出,由於現有主機端都僅有DB9或者USB接口,所以根據下列方式接線即可,將設備A、B端分別接入端子台1、2孔位,如下圖所示,注意,部分電腦需跳線 ![](https://i.imgur.com/6DEqFCX.png) ## 03h command ![](https://i.imgur.com/7gHIKgC.png) 此程式碼為讀取機器內部register value,每一Byte以空白鍵區分,注意主機端baud rate設定需改成9600 ### Master Transmin ![](https://i.imgur.com/qNgz4U7.png) * ID 1byte 機器初始設定為ID=1 * 04h 1byte 為04h command 代碼 * Address 1word(2byte) 為記憶體起始位,以下為常用起始位 ![](https://i.imgur.com/qlIwoPU.png) * Quantity 1word(2byte) 需讀取的Register byte數,最長支援36 byte * CRC16 1word(2byte) CRC(Cyclic redundancy check)檢查碼,根據特定算法計算出的2byte檢查碼,詳細算法參考[Wikipedia 循環冗餘校驗](https://zh.m.wikipedia.org/zh-tw/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97) ### Slave Reply ![](https://i.imgur.com/fL2kEK7.png) * ID 1byte 機器初始設定為ID=1。廣播模式 ID=EF * 04h 1byte 為04h command 代碼 * Bytes(n) 1byte 紀錄本次register value 回傳byte數 * Register Value 回傳register value 紀錄資料,在register中資料以固定排序紀錄,slave 會根據master transmit 的address起始位開始讀取 quantity數量並回傳,資料排序詳細參考排序為下![](https://i.imgur.com/aUVYkbS.png) * CRC16 1word(2byte) CRC(Cyclic redundancy check)檢查碼,根據特定算法計算出的2byte檢查碼,詳細算法參考[Wikipedia 循環冗餘校驗](https://zh.m.wikipedia.org/zh-tw/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97) example: 以下為一個讀取機器溫度與濕度的範例 格式 Master Transmin: ![](https://i.imgur.com/qNgz4U7.png) 01 04 00 01 00 01 60 0A Slave Reply: ![](https://i.imgur.com/fL2kEK7.png) 01 04 02 09 83 24 77 09 83 為temperature,以1word紀錄,即0983=2435 temperature 為 24.35℃ !!!PS. 計算方式與網頁中的方式不一樣,換算後的數值是除以100,並非文件中除以10!!! ## Thingsboard gateway config ``` { "master": { "slaves":[ { "type": "serial", "method": "rtu", "port": "/dev/ttyUSB0", "baudrate": 9600, "timeout": 35, "unitId": 1, "bytesiaze": 8, "byteOrder":"BIG", "wordOrder":"BIG", "retries":true, "retryOnEmpty":true, "pollPeriod":5000, "deviceName": "MD02", "deviceType":"intelligent cabinet", "attributesPollPeriod": 5000, "timeseriesPollPeriod": 5000, "sendDataOnlyOnChange": false, "connectAttemptTimeMs":5000, "connectAttempCount":5, "waitAfterFailedAttemptsMs":300000, "attributes": [ ], "timeseries":[ { "tag": "temperature", "type": "16uint", "functionCode": 4, "objectsCount": 1, "address": 1, "divider": 100 } , { "tag" : "MD02_humidity", "type": "16uint", "functionCode": 4, "objectsCount": 1, "address": 2, "divider": 100 } ], "attributeUpdates":[ ], "rpc":[ ] } ] } } ``` ## Troubleshooting XY_MD02在與其他器材長時間串連時~(20分鐘-1小時,看polling次數約100-200次)~,可能會發生設備無回應的問題,而同時連結的iAeris 20 仍可繼續回傳,目前還不確定原因,猜測可能是 firmware 造成的原因 ![](https://i.imgur.com/B8TildK.png) **將線材改用雙絞線後**,有大幅提升設備連接穩定度 ## Reference [Manual](http://www.sah.rs/media/sah/techdocs/xy-md02-manual.pdf) [露天賣家](https://www.ruten.com.tw/item/show?22025708149291) [Wikipedia 循環冗餘校驗](https://zh.m.wikipedia.org/zh-tw/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97) [16進制線上轉換器](https://www.convertworld.com/zh-hant/numerals/hexadecimal.html) [CRC計算機](https://www.lddgo.net/encrypt/crc)