?你是否有這種困惑:需要熟悉可繁瑣的環(huán)境搭建、關注繁瑣的編譯選項、關心繁瑣的C語言陷阱。。。非常希望不寫代碼或者用寥寥幾行代碼,就完成對外設的控制,和服務器的通信!
答案在這里!
使用合宙的物聯(lián)網(wǎng)解決方案,一步到位,合宙技術人員完成開發(fā)、調(diào)試和維護工作,不需要客戶投入任何技術資源,最快1天完成開發(fā)!
本文教你怎么用簡單的幾個步驟,完成一個溫濕度傳感器數(shù)據(jù)采集項目。
讓DTU整機Air-D780L1-Y采集溫濕度傳感器的數(shù)據(jù),并且將溫濕度數(shù)據(jù)上傳到合宙業(yè)務云平臺,在小程序上可以查看溫濕度數(shù)據(jù)。
看起來復雜的多組件產(chǎn)品,實現(xiàn)起來會很簡單!
來看一下,我是如何使用Air-D780L1-Y+合宙業(yè)務云平臺,做一個溫濕度傳感器數(shù)據(jù)采集項目的。
一、DTU整機Air-D780L1-Y介紹
本次項目的主角是一款合宙DTU整機產(chǎn)品Air-D780L1-Y,
Air-D780L1-Y的功耗低,品質(zhì)穩(wěn)定,購買樣品也方便,資料全開放。
如下圖所示:
?編輯
Air-D780L1-Y的產(chǎn)品說明書可以參考:[Air-D780L1-Y 產(chǎn)品說明書] "Air-D780L1-Y 產(chǎn)品說明書") 。
今天我就用手把手的教程,教會你怎樣使用Air-D780L1-Y, 開發(fā)各種應用項目。
二、業(yè)務邏輯介紹
這里,先要告訴你一些前提條件,雖然聽著像是廢話, 但是如果你不知道的話,可能后面會比較懵逼,所以還是希望你能夠認真看完這一節(jié)。
這個項目的產(chǎn)品定義是:Air-D780L1-Y每隔5秒鐘,將溫濕度傳感器的數(shù)據(jù)上傳到合宙業(yè)務云平臺。
要想達到這個目的, 有必要先介紹一下這個項目的系統(tǒng)框架圖:
?編輯
基本的操作和業(yè)務邏輯如下:
- DTU整機為Air-D780L1-Y;
- 通過Luatools燒錄LuatOS-iRTU固件到Air-D780L1-Y中;
- Air-D780L1-Y需要插入SIM卡;
- Air-D780L1-Y通過RS485接口連接溫濕度傳感器;
- WEB參數(shù)配置平臺中,綁定并且分組設備,然后配置運行參數(shù);
- Air-D780L1-Y開機后,連接WEB參數(shù)配置平臺,下載運行參數(shù)到整機中,然后自動重啟;
- Air-D780L1-Y讀取溫濕度傳感器數(shù)據(jù),并且定時上傳數(shù)據(jù)到合宙業(yè)務云平臺,可以在小程序中查看數(shù)據(jù);
- 小程序也可以下發(fā)控制指令給Air-D780L1-Y;
在大概了解了業(yè)務邏輯之后,接下來我將帶你進入正式的動手實操階段!
三、準備硬件環(huán)境
3.1 硬件清單列表
- 準備一臺Air-D780L1-Y整機
- ?編輯
- 準備一張可以上網(wǎng)的SIM卡,也可以使用自己的手機卡,插入到Air-D780L1-Y整機中;
- 準備一條USB數(shù)據(jù)線,必須要有數(shù)據(jù)傳輸功能,將外部的絕緣皮撥開之后,里面至少要有紅色、白色、綠色、黑色或者紅色、白色、藍色、黑色四根導線,用來燒錄LuatOS-iRTU固件到Air-D780L1-Y中;
?編輯
- 準備一字和十字螺絲刀,用來拆裝Air-D780L1-Y和溫濕度傳感器;
?編輯
- 準備一臺烙鐵和焊錫條,用于將USB數(shù)據(jù)線焊接到Air-D780L1-Y電路板上;
- 準備一臺溫濕度傳感器,用來采集溫濕度數(shù)據(jù);
?編輯
- 準備六根導線或者兩面都是公頭的杜邦線,用來給溫濕度傳感器供電以及連接Air-D780L1-Y和溫濕度傳感器;
?編輯
- 準備一臺可以輸出10到30V的直流穩(wěn)壓電源,用來給Air-D780L1-Y和溫濕度傳感器供電;
?編輯
四、組裝硬件環(huán)境
使用螺絲刀將Air-D780L1-Y整機背面的四個螺絲拆下來,打開外殼;
插入可以上網(wǎng)的SIM卡;
然后找到Air780E模組下方的VB、DM、DP、GND四個焊點,
將USB數(shù)據(jù)線焊接到這四個焊點上;
如下圖所示:
?編輯
- 使用兩根導線將溫濕度傳感器和Air-D780L1-Y通過RS485接口相連,注意是A連接A,B連接B;如下圖所示:
?編輯
- 使用四根導線分別引出溫濕度傳感器和Air-D780L1-Y的供電+和-,溫濕度傳感器的供電電壓范圍是10到30V,Air-D780L1-Y的供電電壓范圍是5到36V,所以將直流穩(wěn)壓電源的電壓調(diào)節(jié)為10到30V即可,我這里調(diào)節(jié)的是12V,然后同時給溫濕度傳感器和Air-D780L1-Y供電,如下圖所示:
?編輯
如果你完全按照以上步驟組裝,到這里就應該一切妥當了,可以再次對照上面這張圖片,看看是否組裝正確。
五、準備軟件環(huán)境
5.1 Luatools工具使用
要想燒錄代碼,先要下載合宙的強大的調(diào)試工具:Luatools;
使用方法:[合宙Luatools實戰(zhàn)寶典:功能介紹+使用技巧全攻略-CSDN博客] "合宙Luatools實戰(zhàn)寶典:功能介紹+使用技巧全攻略-CSDN博客")
如果你已經(jīng)安裝使用過Luatools,可以直接跳過本小節(jié);
Luatools下載地址為:https://doc.openluat.com/wiki/52?wiki_page_id=5071 ,如下圖所示:
?編輯
Luatools 工具主要有如下幾個功能:
(1) 自動從合宙服務器獲取最新的合宙LuatOS-iRTU固件和標準模組固件;
(2) 燒錄固件和腳本;
(3) 查看和保存模組的USB口或者串口運行日志;
(4) 簡單的串口調(diào)試;
Luatools 下載之后,無需安裝,解壓到你的硬盤,點擊 Luatools_v2.exe 運行,出現(xiàn)如下界面,就代表 Luatools 安裝成功了(注意:運行Luatools后,會自動更新最新資源和版本文件,這時,你可以喝口水,耐心等待它更新完成):
?編輯
5.2 LuatOS-iRTU固件
LuatOS-iRTU固件,是合宙采用LuatOS架構自主研發(fā)的DTU嵌入式軟件系統(tǒng),已經(jīng)被眾多DTU廠商采用,經(jīng)過百萬級裝機設備的驗證,穩(wěn)定可靠,廣泛應用于物聯(lián)網(wǎng)領域的各行各業(yè);可以通過以下任何一種方式獲取這個固件:
- 訪問:https://gitee.com/openLuat/luatos-irtu/releases ,下載最新發(fā)布的文件名后綴是EC618.soc 的即可,例如下圖中紅框選中的文件.
?編輯
- 打開Luatools,點擊 菜單 1 LuatOS -> 1.2 資源目錄 ->1.2.1 Core固件目錄;找到LuatOS_iRTU_Air780E目錄,從里面找最新版本的soc文件即可;
?編輯
?編輯
5.3 DTU管理系統(tǒng)
DTU管理系統(tǒng),可以在線綁定你的DTU設備,對設備進行分組,對每個組內(nèi)的所有設備配置運行參數(shù)(例如,連接什么服務器,多久上傳一次數(shù)據(jù),上傳什么格式的數(shù)據(jù));
如果你已經(jīng)使用過DTU管理系統(tǒng),可以跳過本小節(jié);
訪問 dtu.openluat.com ,如果你已經(jīng)有 dtu.openluat.com 或者 iot.openluat.com 的賬號,可以直接使用這兩個賬號中的任何一個賬號登錄,
如果沒有賬號,點擊下圖中的 立即注冊 按鈕注冊一個賬號;
?編輯
5.3.1、 創(chuàng)建分組
此時,你已經(jīng)擁有了一個DTU管理系統(tǒng)的賬號,登錄 dtu.openluat.com 之后,第一個界面大概是下面這個樣子:
?編輯
點擊左邊菜單,設備管理->分組管理,打開如下界面:
?編輯
看到這里,你可能會有疑問:這里的分組是做什么用的呢?
其實你可以把分組理解為項目,假設你的DTU管理系統(tǒng)賬號下有100個設備,這100個設備中:50個設備是智慧農(nóng)業(yè)灌溉項目,50個設備是氣象站項目;
這時你就需要創(chuàng)建兩個分組,分別對各自的50個設備進行管理。
在這個演示項目中,我使用的是Air-D780L1-Y整機采集溫濕度數(shù)據(jù),然后上傳到合宙業(yè)務云平臺,所以我按照下圖提示,點擊右上方的 添加分組 按鈕,新建一個 Air-D780L1-Y_合宙業(yè)務云平臺_溫濕度數(shù)據(jù)采集 的分組:
?編輯
5.3.2 綁定設備并且分組
創(chuàng)建好 Air-D780L1-Y_合宙業(yè)務云平臺_溫濕度數(shù)據(jù)采集 的分組之后,接下來要做的是把你的設備IMEI添加到這個分組中;
5.3.3 查詢設備
在添加IMEI到分組之前,首先要保證這個IMEI在你的賬號下;
怎么查詢IMEI是否在你自己的賬號下呢?
點擊左邊菜單,設備管理->設備列表,打開如下界面:
?編輯
在這個界面中,輸入你的設備的IMEI,然后點擊搜索按鈕進行查詢;
如果你不知道你的Air-D780L1-Y的IMEI,參考以下兩種方法:
1、Air-D780L1-Y外殼上如果有IMEI號,直接使用;
2、如果已經(jīng)拆掉外殼,直接使用板子上Air780E模組標簽上的IMEI號;
如果設備IMEI不在你的賬號下,直接跳過本小節(jié)剩余內(nèi)容,到5.3.4章節(jié)繼續(xù)閱讀;
如果設備IMEI在你的賬號下,參考下圖,將設備劃分到你期望的分組中,跳過5.3.4章節(jié),到第六 章節(jié)繼續(xù)閱讀;
?編輯
5.3.4 自助綁定并且分組設備IMEI
我演示使用的Air-D780L1-Y的IMEI是864710071339591,在我的設備列表下,沒搜索到這個設備;
5.3.5 下載專屬固件
不要灰心,接下來教你一種自助綁定并且分組設備到你賬號下的方法,點擊 設備管理->IMEI與DTU賬號綁定,按照下圖操作:
?編輯
點擊 固件生成 按鈕之后,耐心等待一會兒,后臺在自動生成固件,大概20秒以內(nèi),就可以生成好并且下載成功,我這里下載下來是一個壓縮包
?編輯
解壓之后,里面有以下文件
?編輯
我們本次演示使用的是Air-D780L1-Y整機,所以要選擇后綴是EC618.soc的那個文件,也就是iRTU_1.0.5_LuatOS-SoC_V1108_EC618.soc
(此處注意:你操作時只需要認準EC618.soc的后綴就行,和我這里的文件名不一定完全一致);
六、燒錄專屬固件
準備好iRTU_1.0.5_LuatOS-SoC_V1108_EC618.soc固件后,
接下來請再次打開合宙強大的調(diào)試工具Luatools,使用Luatools將這個固件燒錄到Air-D780L1-Y中,
此時再來看下之前已經(jīng)組裝好的硬件環(huán)境,將已經(jīng)焊接到Air-D780L1-Y上的USB數(shù)據(jù)線,插入到電腦的USB口中,直流穩(wěn)壓電源上電(注意此處設置的是12V輸出)。
?編輯
如果電腦的設備管理器中新增3個端口,表示Air-D780L1-Y已經(jīng)正常開機,并且USB數(shù)據(jù)線通信正常
?編輯
接下來我們就要使用Luatools將固件燒錄到Air-D780L1-Y中,
燒錄之前Air-D780L1-Y需要先進入boot模式,先給直流穩(wěn)壓電源斷電,
然后一直按下Air-D780L1-Y板子上的BOOT按鍵,再給直流穩(wěn)壓電源上電,
此時電腦的設備管理器中如果新增了1個端口,而不是之前的3個端口,
則表示已經(jīng)進入了boot模式。
(注意:boot模式會持續(xù)20秒左右,如果20秒內(nèi)沒有發(fā)起燒錄固件的工作,會自動退出boot模式;此時如果還要燒錄固件,重新操作進入boot模式)
?編輯
打開Luatools后,按照下圖配置并且選擇要燒錄的固件文件:
?編輯
在最后一步點擊 下載 按鈕時,要確保Air-D780L1-Y仍然處于boot模式,如果開始下載,下載界面如下圖所示:
?編輯
下載成功后的界面如下圖所示:
?編輯
七、自動重啟并且自動綁定和分組
下載成功后,Air-D780L1-Y會自動重啟運行,部分運行日志和解析見下圖所示:
?編輯
此時我們再回到DTU管理系統(tǒng),看看864710071339591的imei是否已經(jīng)自動綁定并且自動分組
?編輯
真香,果然已經(jīng)成功了,恭喜你!
看完本小節(jié),有老鐵可能會問,為什么綁定設備這么麻煩呢?在這里請允許我解釋幾個問題:
1、為什么不讓用戶隨便輸入一個IMEI就能方便地綁定到自己的賬號下呢?
這樣風險很高,萬一你把別人設備的IMEI綁定到你自己的賬號下,豈不是亂套了?
2、如果我有批量的設備需要綁定,怎么處理呢?
無論你有多少臺設備,都有兩種綁定方法:
(1) 參考本小節(jié),采用燒錄定制固件的方式自助綁定;這種方法適用于設備數(shù)量較少的場景;
(2) 聯(lián)系合宙的銷售人員或者技術人員,告知你需要綁定的設備IMEI,合宙人員會核實這些IMEI是否屬于你,如果核實通過,合宙人員在后臺幫你綁定到你的賬號下;這種方法適用于所有場景,尤其是設備數(shù)量很多的場景;
八、設備燒錄LuatOS-iRTU固件
參考5.3.4 章節(jié)下的 使用Luatools將專屬固件燒錄到Air-D780L1-Y中 小結,
將 5.2 LuatOS-iRTU固件 章節(jié)中準備的通用LuatOS-iRTU固件
(我這里的固件名是iRTU_1.0.6_LuatOS-SoC_V1110_EC618.soc,你燒錄時,使用最新版本的固件就行),燒錄到Air-D780L1-Y中。
燒錄成功后,Air-D780L1-Y自動運行,Luatools的日志界面如下
?編輯
出現(xiàn)這個提示,說明你的設備在DTU管理系統(tǒng)中沒有配置任何運行參數(shù),不會連接你期望的業(yè)務云平臺,也沒有和具體項目有關的任何業(yè)務邏輯;
這一切都要靠在DTU管理系統(tǒng)中對分組進行配置參數(shù)實現(xiàn)。
九、配置運行參數(shù)
在DTU管理系統(tǒng)中,點擊下圖中的參數(shù)配置
?編輯
參數(shù)配置的總體頁面如下
?編輯
接下來將根據(jù)本項目的具體業(yè)務邏輯,來配置參數(shù)
9.1 基本參數(shù)
?編輯
9.2 串口參數(shù)
?編輯
9.3 網(wǎng)絡通道參數(shù)
?編輯
9.4 預置信息
?編輯
GPIO,GPS的參數(shù)是默認配置,不用修改
9.5 數(shù)據(jù)流
?編輯
?編輯
發(fā)送數(shù)據(jù)流模板代碼
function--數(shù)據(jù)流固定格式
if not _G.s_report_interval then _G.s_report_interval = 5 end
if not _G.s_485_read_interval then _G.s_485_read_interval = 0 end
_G.s_485_read_interval = _G.s_485_read_interval+5
if _G.s_485_read_interval< _G.s_report_interval then return nil end
--將串口接收的數(shù)據(jù)賦值給str
local str= ...
local addr = str:sub(1, 1)--地址位
local fun = str:sub(2, 2)--功能碼
local byte = str:sub(3, 3)--有效字節(jié)數(shù)
local humi =str:sub(4,5)--濕度值
local temp = str:sub(6,7)--溫度值
local idx, crc = pack.unpack(str:sub(-2, -1), "H")
local tmp = str:sub(1, -3)
--crc校驗原理前面所有位合起來校驗后的值等于上報的數(shù)據(jù)的最后校驗位
if crc == crypto.crc16("MODBUS", tmp) then
log.info("crc校驗成功")
-- _無用,addr地址碼,fun功能碼,byte返回有效字節(jié)數(shù),humi濕度,temp溫度
-- pack.unpack 將lua字符串分解為不同的數(shù)值
-- " >b3h2"表示在tmp字符串中,從tmp第一個字節(jié)開始,取三個字節(jié),取兩個短整數(shù)
local _,addr,fun,byte,humi,temp = pack.unpack(tmp, " >b3h2")
--如果功能碼為0x03,則為讀取溫濕度值
if fun == 0x03 then
--給表中添加一個叫做humi的元素,并將上文中的humi變量的值賦給該元素
humi = humi/10 --pack.unpack后已經(jīng)將該數(shù)轉(zhuǎn)換成了十進制的整數(shù),需要將其除以10才是真實的濕度百分比數(shù)
--給表中添加一個叫做temp的元素,并將上文中的temp變量的值賦給該元素
temp =temp/10 --pack.unpack后已經(jīng)將該數(shù)轉(zhuǎn)換成了十進制的整數(shù),需要將其除以10才是真實的溫度值
log.info("溫濕度",humi,temp)
end
local la,ln = create.getRealLocation()
if la==nil or la=="" then la = "31.131710" end
if ln==nil or ln=="" then ln = "121.548860" end
log.info("la,ln",la,ln,tonumber(la),tonumber(ln))
if not fake_la then fake_la = 31.131710 end
if not fake_ln then fake_ln = 121.548860 end
local payload =
{
location = {lat=tonumber(la),lng=tonumber(ln)},
--location = {lat=fake_la,lng=fake_ln},
temperature = temp,
humidity = humi,
pm2_5 = 16,
pm10 = 18,
interval = "INTERVAL_".._G.s_report_interval.."S",
switch_state1 = "ON",
switch_state3 = "ON",
brightness1 = 10,
brightness2 = 20,
work_mode = "WARM"
}
_G.s_485_read_interval = 0
fake_la = fake_la+0.0002
fake_ln = fake_ln+0.0002
--將該表轉(zhuǎn)換成json格式的字符串并發(fā)送給服務器
return json.encode(payload)
else
--如果crc校驗失敗則將"crc error"發(fā)送給服務器
log.info("crc校驗失敗")
return nil
end
end--數(shù)據(jù)流固定格式
接收數(shù)據(jù)流模板代碼
function
local str=...
log.info("recv",str)
if str:sub(1,22)=='{"interval":"INTERVAL_' then
local interval = str:match("(%d+)")
log.info("interval",interval)
_G.s_report_interval = tonumber(interval)
end
if str:sub(1,17)=='{"method":"reset"' then
sys.restart("server control")
end
return str,1 -- 返回值
end
9.6 預警
默認配置,不用修改
9.7 任務
?編輯
任務1代碼
function
gpio.setup(22,1)--打開485轉(zhuǎn)TTL電平芯片的供電
end
9.8 重要提醒
所有參數(shù)配置結束之后,記得點擊右下角的確認按鈕,否則不會生效?。?!
所有參數(shù)配置結束之后,記得點擊右下角的確認按鈕,否則不會生效?。。?/p>
所有參數(shù)配置結束之后,記得點擊右下角的確認按鈕,否則不會生效?。。?/p>
9.9 在合宙業(yè)務云平臺配置項目和設備參數(shù)
因合宙業(yè)務云平臺目前不對外開放,只能由合宙技術人員使用,所以此處省略很多內(nèi)容:
需要使用合宙業(yè)務云平臺的用戶,可以再仔細看下本文檔中心的1.2和1.5章節(jié),聯(lián)系合宙產(chǎn)品負責人微信18616233557溝通。
十、重啟設備,下載最新參數(shù),驗證運行邏輯
此時你可以直流電源斷電再上電重啟下Air-D780L1-Y;
或者通過Luatools的重啟按鈕重啟下設備
?編輯
設備重啟后,會自動連接DTU管理系統(tǒng),下載最新參數(shù),然后安排參數(shù)的配置邏輯進行;
Luatools中的運行日志如下
?編輯
此時你可以通過手機微信掃描以下二維碼,登錄后,可以體驗小程序
?編輯
AppID: 12772998
賬號:dtu
密碼:dtu
或點此查看原文獲取小程序:[?????????? ?? ?????????????????? ??? ?????? ?? ???合宙DTU整機產(chǎn)品線文檔中心] "?????????? ?? ?????????????????? ??? ?????? ?? ???合宙DTU整機產(chǎn)品線文檔中心")
動態(tài)演示效果見以下動畫:
?編輯
更多詳細資料詳見:[?????????? ?? ?????????????????? ??? ?????? ?? ???合宙DTU整機產(chǎn)品線文檔中心] "?????????? ?? ?????????????????? ??? ?????? ?? ???合宙DTU整機產(chǎn)品線文檔中心")
?
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關注
關注
2909文章
44557瀏覽量
372753 -
溫濕度傳感器
+關注
關注
5文章
579瀏覽量
35706 -
DTU
+關注
關注
3文章
436瀏覽量
25222 -
云平臺
+關注
關注
1文章
1302瀏覽量
38942
發(fā)布評論請先 登錄
相關推薦
評論