|
本帖最后由 zdzdzddd 于 2016-5-27 14:41 編輯
ESP8266模塊很便宜,內置獨立智能芯片還具很厲害的網絡功能,刷NodeMCU的話就可以隨時添入自己的LUA代碼搞各種實驗,即使只用裸板模塊就可以實現好多說不完的智能。目前時髦的盡是用于開關控制和溫度檢測,太屈才它了。于是就想實驗用于儀表類的智能遙測。可是,目前能找到ESP8266固件中都沒有帶奇偶校驗的串口方式,不適合大多數的485裝備,比如采集485電度表數據就沒法運用了。好在NodeMCU固件給咱提供了LUA代碼添加功能。于是我寫了幾段485軟件串口的LUA代碼,擬獨立引用ESP8266模塊內置CPU、直連電度表485接口,然后有手機控制采集電度表數據。實際試驗,果然了得。
參照電度表 2007通訊規約協議,用GPIO寫口方式來輸出波形,模擬485的字節格式和請求數據幀格式,實驗采集的電度表型號是DDS711,485通信參數為:2400比特,8數據位,1校驗位,1停止位,1起始位。
字節格式.JPG (27.58 KB, 下載次數: 136)
下載附件
2016-5-27 08:25 上傳
幀格式.JPG (36.26 KB, 下載次數: 145)
下載附件
2016-5-27 08:25 上傳
IMG_20160526_112515.jpg (126.68 KB, 下載次數: 168)
下載附件
2016-5-27 08:25 上傳
若485端口收到的請求信號波形時序得當、電度表地址正確,電度表則立馬回應,并按照請求信號內容返回一個數據信號幀。
IMG_20160526_121013.jpg (184.68 KB, 下載次數: 168)
下載附件
2016-5-27 08:26 上傳
我的實驗使用同一個GPIO口完成收與發。因電度表的端口加了485接口芯片,由A、B兩線平衡對外,我特別使用電阻法簡易完成了 “平衡-不平衡 ”變換,直接與ESP8266相連(此法不大常規也不咋專業,但實驗卻證明很為靠譜。或該說是個曾經沒被留意的“舉世創意”。決沒有詆毀正規成熟485接口規范的意思,只是不需要遠程傳輸和共模抗擾的特定情況下的特定招數罷)。
用中斷方式檢測起始位的下降沿,然后開始按約定周率讀數,你見到的藍色窄脈沖是特意在另一個GPIO口加入的時標,這可是我不吝透漏的精妙調試機巧,可以加到任意位置來實時了解代碼的生效時刻與作用位序,這里是加在讀GPIO口的代碼位置,調試時你將直觀動態的看到讀口時機與欲讀波形的相對位有所游離,如果校準游離于波寬中部則讀數誤差容限就調到最佳了,不僅如此還可以依據時標脈沖直讀波形數據,如前4個字節為“0xFE”前導碼,然后是“0x68”地址幀起始符、“0x64,0,04,0x00,0x00,0x01,0x00”地址碼等等等類比讀出,很有樂趣、很醒腦是不是? 你若還是個懵懂的門外漢,興許看了我的帖子,效法我的機巧,將從此有機緣一躍成為類似我這樣的門邊邊漢。
還可以說一些,但是得有響應才不白費。看看先。
Screenshot_2016-05-26-19-25-02.png (84.78 KB, 下載次數: 160)
下載附件
2016-5-27 08:26 上傳
Screenshot_2016-05-26-19-24-49.png (88.43 KB, 下載次數: 161)
下載附件
2016-5-27 08:26 上傳
|
|