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

L7805CV-DG/線性穩(wěn)壓器(LDO) | 0.5637 | |
AMS1117-3.3/線性穩(wěn)壓器(LDO) | 0.1237 | |
BAT54C,215/肖特基二極管 | 0.0334 | |
LM358DR2G/運算放大器 | 0.35 | |
CJ431/電壓基準芯片 | 0.1147 | |
LM393DR2G/比較器 | 0.318 | |
ADUM4160BRWZ-RL/隔離式USB芯片 | 31.6 | |
SS8050/三極管(BJT) | 0.035 | |
8S005/錫膏/錫漿 | 17.67 | |
B0505S-1WR3/隔離電源模塊 | 2.34 |