物聯網采控系統「第二屆立創商城電子制作節30強作品」
2017-11-08 10:49:39閱讀量:15562來源:立創商城
本作品為第二屆立創商城電子制作節30強入圍作品,作者立創社區ID:求生之路;轉載請注明出處,未經允許不得用作商業用途。作品原鏈接:http://club.szlcsc.com/article/details_6695_1.html。
一、作品簡介
現在的物聯網設備品種太多,如果要把各類的協議標準起來也不可能,例如MODBUS也只是標準了協議,并沒標準協議內的有效數據。這樣就會使各個廠家有各自的軟件。如果自家用了5家的設備,那么最終你想控制這些設備要來回切換,不麻煩嗎?同時也防止廠家間接“強奸”用戶,例如:為了使用更加方便,買同一個牌子的設備,實際上有些我并不是很喜歡,只是能湊合罷了。
用這個網關就是集成各種廠家的數據,最終給用戶的只是一個界面,這樣用戶體驗更加清爽,舒適。同時還可以把古老的設備,沒有接入互聯網功能的設備讓它聯網!成為一個互聯網設備。讓數據集中管理,用戶單一管理,效率更高更實用。
二、系統構架圖
網關與服務器通信架構圖:
網關與節點的通信架構圖:
三、硬件部分的描述
網關PCB源文件下載:http://club.szlcsc.com/article/downFile_F36711403017984F.html
網關原理圖:
(更多圖片詳見原帖)
網關PCB圖片如下:
(更多圖片詳見原帖)
網關PCB實物圖,手工焊接了2張,WIFI是預留了接口,ESP-08。
(更多高清圖片詳見原帖)
采用了很多鉭電容,目前全部焊接,如果作為實際的產品而言,可以通過測壓力,去掉一些鉭電容,畢竟成本太高了。
選取的網關外殼,鋁合金的,不過商家不給開孔,我得想辦法了。
無線采集控制功能驗證板
PC遠程控制軟件
四、材料清單
MCU:STM32F205;
存儲:W25Q64 & TF;
無線通信:RA-01/02 & NRF24L01P & ESP8266(預留接口);
有線通信:RS232/485;
RTC:PCF8563T;
傳感器:BH1750FVI,SHT211,DS18B20,MQ-135/MQ-2;
DCDC:MP2451;
LDO:ME6210。
所有元器件都是常用的,除了模塊,其他的立創都有。(硬件詳細介紹詳見原帖)
五、軟件部分的描述
網關功能介紹:
1. 遠程升級
原理:通過以太網/RS232/R485/LORA 按照指定格式把升級Bin文件發送給網關,目前實現的是通過以太網網絡發送,每次發送256byte字節。因為軟件是等Bin文件接收完了之后,再跳轉到Bootloader進行升級,所以在此是存儲在SPI FLASH上的。該SPI FLASH 單次寫入最大數據是256byte,所以這樣規定的。其次是因為數據采用json協議,如果數據量過大,會導致解析json開銷過大。
提示:發送bin文件,因為是16進制,所以我用了base64進行轉碼。
2. 數據緩存
軟件內部會有一個RAM的緩存池,根據芯片的RAM來決定,目前我用的這款我采用了最大50KB來作為緩存池,以便于網絡不穩定,數據不會丟失。如果數據存滿了,網絡依舊尚未暢通,則會按照指定格式存儲在SPI FLASH 指定的區域,以便于網絡通暢后把歷史數據上傳到服務器。
3. 無線通信
載無線通信模塊:RA-01(LORA) + NRF24L01P+ESP8266,目前ESP8266預留接口,功能調試主要是針對于RA-01+NRF24L01P。由于硬件原因,LORA的單包最大數據為128Byte,NRF24L01P最大數據為32Byte,這對于傳輸json數據太痛苦,但是傳輸modbus這種協議很難解讀。所以我采用的類似json的“序列化”+“反序列化”的方式進行編寫,這樣后期可無限制的添加協議,不會影響之前設備的協議。同時在LORA和NRF24L01P上做了簡單的拆組包協議,以便于發送更長的數據包。目前支持最高512Byte。
4. 兼容協議
無論是通過RS232/485、LORA、NRF24L01、ETH,所有的數據協議會分為兩種,第一種JSON,第二種自定義協議。然后把數據放入指定的TASK解析,例如要開個燈,從RS232發送,從ETH發送,從LROA發送都是一樣的效果,而且執行的程序也是一樣的,只是指令進出的管道不一樣而已。這樣方便于管理通信協議,不會造成混亂。
5. 電量檢測
1秒一次檢測DCDC輸入電壓值,并記錄發送到服務器,方便于核實供電情況。
無線采集控制功能驗證板介紹:
這只是為了驗證功能,所以采用了N合一的設計,實際應用應該不會用到這么多。
多合一內容:SHT21 + DS18B20 + BH1750FVI + MQ-XXX + 2路繼電器 + 1個UART擴展。
無線通信:LORA/NRF24L01P,二選一。演示采用LORA,這個相對復雜點,NRF24L01P相對簡單一點,暫時不做演示。
模塊采用MOS管控制電源,不用則關閉,以降低功耗,主控采用STM8L151K4,最終最低功耗做到了2.5ua睡眠電流,RTC喚醒,視頻有介紹哈。
六、作品演示
七、總結
由于時間關系,只做了PC端演示程序,但是協議都是零活的,后續會完善B端展示。無論是http,ws,socket,有效數據里面的數據協議均是一樣,
這樣就讓整套系統更加容易管理。
服務器用的linux + php + workerman + mosquito + mysql + nginx搭建。支持長連接,高并發!針對于嵌入式物聯網設備。服務器目前完成了:用戶登陸+數據解析+數據存儲+遠程升級 + 遠程控制等,后續繼續完善B端,這樣就方便于手機操控,同時綁定在微信里面就更易用了。
提醒下:買物料一定要仔細!!!我這就買錯了一個物料,繼電器我設計的是5V供電,買成了12V,后面寫程序的時候才發現,然后在一個開發板上卸了兩個下來。上面的圖片繼電器是12V,那是焊接好拍攝的。視頻里面是5V,那是后面寫程序的時候修改過了。

LM1117IMPX-3.3/NOPB/線性穩壓器(LDO) | 0.7147 | |
DRV8874PWPR/有刷直流電機驅動芯片 | 3.45 | |
LM358BIDR/運算放大器 | 0.35 | |
LMR33630ADDAR/DC-DC電源芯片 | 2.01 | |
LM5164DDAR/DC-DC電源芯片 | 3.19 | |
ADS1299IPAGR/模擬前端(AFE) | 222.43 | |
TPS82130SILR/DC-DC電源模塊 | 6.13 | |
TPL5010DDCR/定時器/計時器 | 1.0884 | |
LM27762DSSR/電荷泵 | 3.11 | |
TLV9062IDR/運算放大器 | 0.3242 |