一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

物聯(lián)網(wǎng)技術(shù)入門

 圓錐的布袋 2018-09-21

上一篇博客主要謝了傳感器節(jié)點(diǎn)(上一篇叫采集節(jié)點(diǎn),我覺得在物聯(lián)網(wǎng)中叫傳感節(jié)點(diǎn)更合適)的電路設(shè)計(jì),這一篇介紹傳感器節(jié)點(diǎn)的軟件設(shè)計(jì)。

傳感器節(jié)點(diǎn)的軟件主要完成兩項(xiàng)任務(wù):感知和WiFi通信。感知這塊比較簡(jiǎn)單,主要是AD的控制。在使用之前,仔細(xì)閱讀STM32的說(shuō)明書,設(shè)置好與AD有關(guān)的IO、時(shí)鐘、工作方式等,并適時(shí)啟動(dòng)AD以及讀取轉(zhuǎn)換值即可。不過值得一提的是STM32支持DMA通道,在DMA模式下,可以設(shè)置AD轉(zhuǎn)換后的值存放到DMA通道的入口地址處,DMA通道的出口地址可以指向自定義的一段緩存,或者串口、SPI等通信端口的寫入地址,這樣無(wú)需CPU過問,AD轉(zhuǎn)換后的值就可以被直接送到指定緩存或者通信外設(shè)的寫入地址,可以減輕CPU的負(fù)擔(dān),因此建議使用DMA通道。

WiFi通信是軟件設(shè)計(jì)的難點(diǎn),好在大多數(shù)工作都被前人完成了,我們只需站在巨人的肩膀上關(guān)注我們的應(yīng)用就可以了。

要實(shí)現(xiàn)WIFI通信,至少要實(shí)現(xiàn)WIFI驅(qū)動(dòng)以及TCP/IP協(xié)議,大體結(jié)構(gòu)如下圖所示:

最底層是WIFI芯片,再上層是WIFI驅(qū)動(dòng)層(包括SDIO驅(qū)動(dòng)和WLAN驅(qū)動(dòng)),最上層是TCP/IP協(xié)議層,TCP/IP協(xié)議層使用LWIP協(xié)議棧。

1. WIFI驅(qū)動(dòng)

Marvell 88w8686 WiFi模塊驅(qū)動(dòng)主要包括802.11協(xié)議驅(qū)動(dòng)和SDIO接口驅(qū)動(dòng)兩部分。如圖。
這里寫圖片描述
802.11協(xié)議驅(qū)動(dòng)組成包含802.11一些特點(diǎn),比如掃描,連接,以及802.11d,8.2.11h,WMM等,與上層application應(yīng)用層(無(wú)線工具等)實(shí)現(xiàn)信息交互,總線驅(qū)動(dòng)連接部分位于8.2.11協(xié)議驅(qū)動(dòng)和SDIO接口驅(qū)動(dòng)之間,主要為無(wú)線局域網(wǎng)模塊和低級(jí)總線驅(qū)動(dòng)模塊提供信息交互的接口。SDIO總線上的命令都是由host端發(fā)起請(qǐng)求的,后由設(shè)備回應(yīng)請(qǐng)求。設(shè)備在與host通信之前,需要在host發(fā)出命令后,由設(shè)備對(duì)讀到的命令進(jìn)行解析,才能實(shí)現(xiàn)正常的通信。在SDIO驅(qū)動(dòng)過程中,Command用于開始傳輸?shù)拿?,是由host端發(fā)往設(shè)備端,Response回應(yīng)是設(shè)備返回的host命令,作為Command的回應(yīng),通過CMD傳送。Data數(shù)據(jù)是雙向傳送的,可以設(shè)置為不同的模式,數(shù)據(jù)通過信號(hào)線DATn傳輸。SDIO每次操作都是由host在CMD線上發(fā)起一個(gè)CMD,對(duì)于有的CMD,設(shè)備需要返回一個(gè)Response,有的則不需要。WiFi Firmware是WiFi設(shè)備硬件中執(zhí)行的一段程序,由WiFi驅(qū)動(dòng)將其通過SDIO接口下載到WiFi模塊中,主要功能是實(shí)現(xiàn)WiFi硬件接口控制,數(shù)據(jù)緩沖、數(shù)據(jù)幀的轉(zhuǎn)換、MAC層管理和中斷管理等。

在通過無(wú)線局域網(wǎng)傳輸數(shù)據(jù)的過程中,需要完成安全性設(shè)計(jì),即數(shù)據(jù)加密。我們采用WPA認(rèn)證,WPA又名PSK,長(zhǎng)度一般為8~63字節(jié),它通過一定的算法可以得到PMK。認(rèn)證的時(shí)候會(huì)生成一個(gè)PTK,這是一組密鑰。PTK加上報(bào)文數(shù)據(jù)采用一定的算法,得到密文,同時(shí)得到一個(gè)簽名。認(rèn)證的原理是在獲取所有參數(shù)后,客戶端發(fā)出一個(gè)MIC,把原文同MIC一起發(fā)給AP,AP采用相同的參數(shù)和算法計(jì)算出MIC,并與客戶端發(fā)過來(lái)的比較,如果一致,則認(rèn)證通過,否則失敗。

2. LWIP協(xié)議棧

LwIP是用于嵌入式系統(tǒng)的開源裁剪版TCP/IP協(xié)議棧,可運(yùn)行在無(wú)操作系統(tǒng)的平臺(tái)上,整個(gè)協(xié)議棧實(shí)現(xiàn)了基本的IP、ICMP、UDP、TCP協(xié)議。它只需要十幾KB的RAM和40K的ROM就可運(yùn)行,尤其適用于內(nèi)存資源有限的嵌入式系統(tǒng)。

典型的 LWIP 應(yīng)用系統(tǒng)包括這樣的三個(gè)進(jìn)程:首先啟動(dòng)的是上層應(yīng)用程序進(jìn)程,然后是 LWIP 協(xié)議棧進(jìn)程,最后是底層硬件數(shù)據(jù)包接收發(fā)送進(jìn)程。通常 LWIP協(xié)議棧進(jìn)程是在應(yīng)用程序中調(diào)用 LWIP 協(xié)議棧初始化函數(shù)來(lái)創(chuàng)建的。但是在初始化LwIP協(xié)議棧之前,需要將各協(xié)議移植到開發(fā)板上,使其支持TCP和UDP兩種方式。LwIP主要包括以下子目錄:存放應(yīng)用程序接口文件子目錄、提供核心代碼文件的core子目錄、提供整個(gè)協(xié)議棧使用頭文件的子目錄、提供網(wǎng)絡(luò)接口驅(qū)動(dòng)程序基本框架的netif子目錄和移植過程中自定義的子目錄。移植LwIP協(xié)議棧,還需要完成對(duì)頭文件的定義。

LWIP簡(jiǎn)化了傳統(tǒng)的OSI七層模型,只保留了網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層,各層數(shù)據(jù)包接收與發(fā)送的全過程如圖。

這里寫圖片描述

WIFI驅(qū)動(dòng)和LWIP協(xié)議棧包含的東西實(shí)在太多,要花大量的時(shí)間才可能研究透徹,我實(shí)在沒這個(gè)精力,所以也只知道個(gè)大概。如果感興趣,可以閱讀老衲五木的博客,寫得十分全面。

3.應(yīng)用

我應(yīng)該更關(guān)注LWIP的應(yīng)用,怎么樣才能用起來(lái)是關(guān)鍵。

傳感節(jié)點(diǎn)既可以主動(dòng)往外推數(shù)據(jù),也可以作為服務(wù)器被動(dòng)地響應(yīng)客戶的請(qǐng)求,我選擇了后者。那么應(yīng)用層主要分為兩個(gè)過程:一是WiFi關(guān)聯(lián)過程,二是數(shù)據(jù)請(qǐng)求和響應(yīng)過程。

WiFi關(guān)聯(lián)過程有兩種方式,一種是采集節(jié)點(diǎn)作為AP,其他設(shè)備接入AP;另一種是采集節(jié)點(diǎn)接入到路由器。這和手機(jī)是一樣的。工作流程如下圖。

這里寫圖片描述

首先對(duì)STM32微控制器的時(shí)鐘、端口、A/DC、中斷向量、串口、內(nèi)存進(jìn)行初始化,對(duì)Marvell模塊驅(qū)動(dòng)進(jìn)行初始化配置(SDIO的設(shè)備枚舉,加載設(shè)備固件等)。在完成上述初始化過程之后,掃描WiFi網(wǎng),將結(jié)果存放在數(shù)據(jù)域中,隨后進(jìn)行網(wǎng)絡(luò)關(guān)聯(lián),若返回值為0,說(shuō)明網(wǎng)絡(luò)關(guān)聯(lián)成功,否則說(shuō)明關(guān)聯(lián)失敗,接著對(duì)LWIP協(xié)議棧進(jìn)行配置,并建立TCP服務(wù)器。至此,用戶終端就已經(jīng)可以發(fā)送數(shù)據(jù)請(qǐng)求,進(jìn)行數(shù)據(jù)信息的訪問了。

當(dāng)客戶端發(fā)起數(shù)據(jù)訪問請(qǐng)求時(shí),首先通過連接請(qǐng)求接口發(fā)出請(qǐng)求連接指令,如果連接失敗,則重新連接,若連接成功,客戶端發(fā)出數(shù)據(jù)請(qǐng)求指令,此時(shí)服務(wù)器進(jìn)行數(shù)據(jù)解析,并將客戶端請(qǐng)求的數(shù)據(jù)發(fā)送回去,當(dāng)數(shù)據(jù)發(fā)送完畢時(shí),通信結(jié)束,否則客戶端繼續(xù)通過請(qǐng)求數(shù)據(jù)指令,獲取所需數(shù)據(jù)。數(shù)據(jù)請(qǐng)求與響應(yīng)流程如圖。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本亚洲精品在线观看| 空之色水之色在线播放| 日韩女优精品一区二区三区| 91亚洲国产成人久久| 欧美一区二区三区十区| 成人国产一区二区三区精品麻豆| 国产女高清在线看免费观看| 亚洲三级视频在线观看免费| 大香蕉伊人精品在线观看| 亚洲精品成人综合色在线| 日韩综合国产欧美一区| 大尺度剧情国产在线视频| 久久大香蕉精品在线观看| 国产精品自拍杆香蕉视频| 大香蕉大香蕉手机在线视频| 日本不卡一区视频欧美| 在线观看欧美视频一区| 九九热视频免费在线视频| 亚洲中文字幕亲近伦片| 老熟女露脸一二三四区| 欧美不卡高清一区二区三区| 中文字幕一二区在线观看| 国产精品二区三区免费播放心 | 久久婷婷综合色拍亚洲| 久久精品国产在热亚洲| 亚洲日本韩国一区二区三区| 亚洲香艳网久久五月婷婷| 中文字幕高清不卡一区| 国产一区二区三区色噜噜| 日本乱论一区二区三区| 嫩草国产福利视频一区二区| 99日韩在线视频精品免费| 国产亚洲精品一二三区| 欧美日韩国产综合在线| 毛片在线观看免费日韩| 亚洲第一区二区三区女厕偷拍| av在线免费播放一区二区| 国产亚洲精品俞拍视频福利区| 日本高清不卡在线一区| 初尝人妻少妇中文字幕在线| 色婷婷久久五月中文字幕|