国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

物聯(lián)網(wǎng)節(jié)點Wi-Fi接入模塊設(shè)計

2016-02-09 06:39:23廣州市賽皓達(dá)智能科技有限公司廣東廣州510032
自動化博覽 2016年12期
關(guān)鍵詞:串口客戶端聯(lián)網(wǎng)

李 名(廣州市賽皓達(dá)智能科技有限公司,廣東 廣州 510032)

物聯(lián)網(wǎng)節(jié)點Wi-Fi接入模塊設(shè)計

李 名(廣州市賽皓達(dá)智能科技有限公司,廣東 廣州 510032)

物聯(lián)網(wǎng)系統(tǒng)中設(shè)備端基于CC3200的接入互聯(lián)網(wǎng)以及與服務(wù)器端通信交換數(shù)據(jù)功能的實現(xiàn)。設(shè)備端,CPU通過傳感器獲得相關(guān)設(shè)備參數(shù)。傳感器與Wi-Fi模塊通過I2C連接進(jìn)行通信,Wi-Fi模塊通過STA模式接入WLAN網(wǎng)絡(luò),然后跟服務(wù)器端通過TCP/IP協(xié)議建立連接,通過HTTP協(xié)議與服務(wù)器實現(xiàn)數(shù)據(jù)的交換。Wi-Fi模塊定時向服務(wù)器端發(fā)送請求建立連接,進(jìn)行數(shù)據(jù)通信。數(shù)據(jù)傳輸完畢,CPU設(shè)置冬眠(HIB,Hibernate)模式,使模塊工作在低功耗狀態(tài)。此時,用內(nèi)部實時時鐘來記錄“冬眠”的時間,當(dāng)計時一到,CPU退出HIB模式,重新連接網(wǎng)絡(luò)并與服務(wù)器建立連接,進(jìn)行數(shù)據(jù)傳輸。

物聯(lián)網(wǎng);智能硬件;CC3200;Wi-Fi模塊;HTTP

近幾年來,隨著物聯(lián)網(wǎng)技術(shù)取得長足的進(jìn)步。將所有的傳統(tǒng)物體改造成智能終端,這無疑會給這個世界注入一股新鮮的血液,大大改善我們的生活方式和人生體驗。本文就是基于這樣的設(shè)計理念,采用CC3200這款Wi-Fi芯片來實現(xiàn)一個典型物聯(lián)網(wǎng)系統(tǒng)中設(shè)備節(jié)點聯(lián)網(wǎng)通信的功能。而本次設(shè)計最主要的目標(biāo)就是解決“怎樣讓物聯(lián)網(wǎng)”的問題,之后,只需要配置調(diào)整相應(yīng)參數(shù),便可以投入實際應(yīng)用中。

1 開發(fā)平臺支持

硬件基于CC3200,它是TI無線連接SimpleLink Wi-Fi和物聯(lián)網(wǎng)(IoT)解決方案于2014年推出的一款Wi-Fi MCU,它包括MCU、Wi-Fi網(wǎng)絡(luò)處理器CC3100和電源管理三大部分,是業(yè)界第一款具有內(nèi)置Wi-Fi的無線MCU,專門針對物聯(lián)網(wǎng)應(yīng)用。同時,它還提供強(qiáng)大的軟件開發(fā)包支持,不僅提供軟件驅(qū)動庫,還包含多個應(yīng)用例程和對應(yīng)的說明文檔,給開發(fā)者提供參考和幫助。

軟件基于CCS,它的全稱是Code Composer Studio,是一種集成開發(fā)環(huán)境(IDE),支持TI的全部微控制器和嵌入式處理器產(chǎn)品系列。CCS包含一整套用于開發(fā)和調(diào)試嵌入式應(yīng)用的工具,并且將 Eclipse 軟件框架的優(yōu)點和 TI 先進(jìn)的嵌入式調(diào)試功能相結(jié)合,為嵌入式開發(fā)人員提供了一個引人注目、功能豐富的開發(fā)環(huán)境。

2 系統(tǒng)設(shè)計

2.1 系統(tǒng)初始化

開發(fā)板的初始化:主要包括設(shè)置中斷向量表的基地址,設(shè)置處理器中斷,設(shè)置系統(tǒng)時鐘中斷和MCU啟動程序。引腳復(fù)用配置,主要包括開啟GPIO,串口,I2C等外設(shè)時鐘,設(shè)置串口的發(fā)送和接收引腳,設(shè)置GPIO的輸入輸出引腳,以及設(shè)置I2C的SCL和SDA引腳。串口配置,主要是設(shè)定串口傳輸?shù)母鞣N參數(shù),包括示UART端口的基地址; UART工作的時鐘頻率;傳輸?shù)牟ㄌ芈?;傳輸?shù)臄?shù)據(jù)位,停止位和校驗位。I2C外設(shè)使能將MCU與外設(shè)之間的數(shù)據(jù)傳輸速度設(shè)置為快速模式。

2.2 Wi-Fi連接

Wi-Fi連接是本次設(shè)計最核心的部分,也是“萬物互聯(lián)”最關(guān)鍵的技術(shù)。由于CC3200提供的完善封裝的網(wǎng)絡(luò)接口函數(shù)以及豐富的例程,方便快速地構(gòu)建起與這次設(shè)計作業(yè)相關(guān)的應(yīng)用代碼。CC3200 Wi-Fi的連接分為系統(tǒng)設(shè)置STA模式,板子連接到可用的AP兩個步驟。

第一階段設(shè)置系統(tǒng)為STA模式。設(shè)備便相當(dāng)于無線終端。設(shè)備要想接入互聯(lián)網(wǎng)從而和遠(yuǎn)程服務(wù)器通信,必須工作在STA模式才可以連接到可用的無線網(wǎng)絡(luò)。

第二階段將板子連接到可用的AP。首先,創(chuàng)建名為SlSecParams_t的結(jié)構(gòu)體,保存Wi-Fi的安全類型,密碼及密碼長度信息。然后,通過函數(shù)sl_WlanConnect鏈接指定的Wi-Fi。它包含Wi-Fi名和長度,MAC地址,安全類型,是不是企業(yè)模式等參數(shù)。同時,設(shè)備自動連接Wi-Fi的時有時間限制,超時則連接失敗,需手動從串口助手中輸入Wi-Fi信息給設(shè)備使其連接。這里使用定時器計算時間,每隔5000ms產(chǎn)生一次中斷,中斷產(chǎn)生后進(jìn)入中斷處理函數(shù),在這里設(shè)置連接超時功能。如果變量g_ulStatus被置位,則代表鏈接成功。當(dāng)在函數(shù)void SimpleLinkWlanEventHandler (SlWlanEvent_t *pWlanEvent)中被置位,表示成功連接到Wi-Fi,如果在函數(shù)voidSimpleLinkNetAppEvent-Handler (SlNetAppEvent_t *pNetAppEvent)中被置位,表示鏈接AP成功。

2.3 服務(wù)器連接與數(shù)據(jù)傳輸

服務(wù)器連接與數(shù)據(jù)傳輸?shù)目傮w流程很簡單,先連接服務(wù)器,再通過I2C外設(shè)從傳感器獲得相關(guān)數(shù)據(jù),最后通過HTTP協(xié)議將數(shù)據(jù)傳給服務(wù)器以及從服務(wù)器獲取相應(yīng)的數(shù)據(jù)。服務(wù)器鏈接是通過函數(shù)sl_NetAppDnsGetHostByName ((signedchar *)HOST_NAME, strlen((constchar *)HOST_NAME), &g_ulDestinationIP,SL_AF_ INET);獲取服務(wù)器的IP地址,包含服務(wù)器主機(jī)名,主機(jī)名字節(jié)長度,IP地址的變量地址,和協(xié)議族等參數(shù)。當(dāng)?shù)谝粋€參數(shù)不是主機(jī)名,而是主機(jī)的IP地址時,該函數(shù)便直接將其保存在第三個參數(shù)地址所指的變量中。而連接相關(guān)的參數(shù)包含服務(wù)器地址所屬的地址族,服務(wù)器端應(yīng)用程序的端口地址,服務(wù)器的IP地址。其中后兩個參數(shù)分別調(diào)用方法htons和sl_Htonl,將變量或者常量從主機(jī)字節(jié)順序變?yōu)榫W(wǎng)絡(luò)字節(jié)順序,即高字節(jié)放在低地址,低字節(jié)放在高地址。這樣保證數(shù)據(jù)能夠在不同的主機(jī)之間設(shè)備之間正確傳遞。然后,函數(shù)HTTPCli_construct初始化一個HTTP客戶端,HTTP客戶端是一個名為HTTPCli_construct結(jié)構(gòu)體,在將結(jié)構(gòu)體的各個成員變量賦初值后,接著便調(diào)用HTTPCli_connect連接服務(wù)器。其工作原理如圖1所示。

圖1 服務(wù)器連接程序流程圖

2.4 獲取傳感器數(shù)據(jù)

利用溫度和加速度傳感器來設(shè)計物聯(lián)網(wǎng)系統(tǒng)設(shè)備端的完整工作流程。通過控制傳感器定時采集數(shù)據(jù),然后將溫度傳感器的數(shù)據(jù)和加速度傳感器采集到的三個方向上的速度數(shù)據(jù)中的兩個一起保存到內(nèi)存中并發(fā)送給服務(wù)器。溫度傳感器采用的是TMP006,共有五個寄存器,后兩個寄存器分別表示自身溫度寄存器和傳感電壓寄存器,通過兩次調(diào)用函數(shù)int GetRegisterValue(unsigned char ucRegAddr, unsigned short *pusRegValue)讀取這兩個值進(jìn)行相關(guān)計算后就可以得到溫度測量值。加速傳感器是BMA222,它可以測量三個垂直方向上的速度,通過兩次測量值差可以確定設(shè)備在各個方向上的加速度。本次通過間隔30ms兩次調(diào)用函數(shù)BMA222Read(signed char *pcAccX, signed char *pcAccY, signed char *pcAccZ),兩值求差而得到的加速度。

2.5 HTTP通信

本次設(shè)計設(shè)備和服務(wù)器的HTTP通信用到了GET請求和POST請求。GET請求從服務(wù)器端獲取數(shù)據(jù),POST請求則向服務(wù)器提交設(shè)備相關(guān)參數(shù)。

GET請求發(fā)送三個請求首部字段,分別是服務(wù)器主機(jī)名,客戶端可以接受的應(yīng)答數(shù)據(jù)類型和請求實體主體的長度。定義好首部字段,調(diào)用HTTPCli_setRequestFields(httpClient , fields)函數(shù)將首部字段及相應(yīng)值賦給HTTP客戶端結(jié)構(gòu)體,然后便可調(diào)用函數(shù)HTTPCli_ sendRequest(httpClient, HTTPCli_METHOD _GET, GET_ REQUEST_URI, moreFlags)發(fā)送GET請求。它包含HTTP客戶端結(jié)構(gòu)體,HTTP請求類型,請求資源在服務(wù)器主機(jī)上的存儲路徑,標(biāo)志位等參數(shù)。其中,標(biāo)志位表示除了首部字段外是否需要發(fā)送其它字段,這里設(shè)置moreFlags=0,不發(fā)送其它字段。發(fā)送完GET請求之后,調(diào)用readResponse(httpClient)函數(shù)讀取服務(wù)器應(yīng)答報文。在這之前將getFlag標(biāo)志位置1,這樣做的目的是當(dāng)發(fā)送GET請求時,當(dāng)服務(wù)器的應(yīng)答報文主體的內(nèi)容為特定字符時,CPU需要根據(jù)字符的內(nèi)容作出相應(yīng)的動作,這里采用了輸出PWM波控制LED燈來模擬整個過程。其工作原理如圖2所示。

圖2 HTTP通信程序流程圖

圖3 接收應(yīng)答報文程序流程圖

GET請求的應(yīng)答報文處理完畢后,接著發(fā)送POST請求。同上,在發(fā)送完首部字段之后,還需要向服務(wù)器發(fā)送請求的主體字段,以便向服務(wù)器提交設(shè)備的相關(guān)參數(shù)。通過函數(shù)int HTTPCli_sendRequestBody(HTTPCli_Handle cli, const char *body,int len)將HTTP客戶端結(jié)構(gòu)體,發(fā)送的主體內(nèi)容,主體字符串長度發(fā)送服務(wù)器,之后接受服務(wù)器的應(yīng)答報文。首先,通過函數(shù)HTTPCli_getResponseStatus(httpClient)返回服務(wù)器對客戶端發(fā)出的請求的相應(yīng)狀態(tài),簡單起見只考慮狀態(tài)200和非200情況,非200表示本次HTTP通信請求失敗。其次,函數(shù)HTTPCli_setResponseFields(httpClient, (const char **)ids),ids表示客戶端希望接收應(yīng)答首部字段,因此該函數(shù)將ids的內(nèi)容賦值給客戶端結(jié)構(gòu)體的成員resFields。之后,通過函數(shù)HTTPCli_ getResponseField(httpClient, (char *)g_buff, sizeof(g_buff), &moreFlags)將客戶端希望接收的應(yīng)答首部字段值存入g_buff指定的內(nèi)存空間中。moreFlags是一個輸出標(biāo)志位,當(dāng)一個字段的值不能被一次性接收完畢時,該標(biāo)志位被置1。該函數(shù)被重復(fù)調(diào)用,直到服務(wù)器所有的應(yīng)答首部字段都被輪詢完畢,此時函數(shù)返回值為HTTPCli_FIELD_ID_END,否則函數(shù)返回定義在ids數(shù)組中的字段的索引。最后,通過函數(shù)HTTPCli_readResponseBody (httpC lient, (char *) dataBuffer, len, &moreFlags)將應(yīng)答主體報文存儲到dataBuffer內(nèi)存中,次接收的數(shù)據(jù)的長度由len指定。由于len已經(jīng)被賦值為應(yīng)答主體報文的長度,因此函數(shù)執(zhí)行一次便接收了全部數(shù)據(jù)。moreFlags也是一個輸出標(biāo)志位,當(dāng)一次調(diào)用沒有接收完所有數(shù)據(jù)時,被置1,此時需要重復(fù)調(diào)用知道所有數(shù)據(jù)接收完畢。其工作原理如圖3所示。

2.6 HIB模式

該模式是指設(shè)備工作在“冬眠”模式,這種模式耗電量低,可以輕松使用電池供電。在設(shè)備與服務(wù)器通信結(jié)束之后,便可將設(shè)備設(shè)置HIB模式,只有實時時鐘工作,用來定時將設(shè)備從HIB模式中喚醒。喚醒相當(dāng)于復(fù)位,所有配置都會被清除。因此,在進(jìn)入HIB模式之前要將一些狀態(tài)保存到FLASH閃存當(dāng)中,喚醒的時候再從FLASH閃存中讀取出來。本次設(shè)計需要保存用戶從串口助手中輸入的Wi-Fi的名稱和密碼,防止每次喚醒都要手動輸入。這里將Wi-Fi名和密碼保存在一個變量里面,這樣只需對FLASH進(jìn)行一次讀寫操作就能完成數(shù)據(jù)的保存和恢復(fù)的功能。首先,利用函數(shù)_i32 sl_FsOpen(const _u8 *pFileName,const _u32 AccessModeAndMaxSize,_u32 *pToken,_i32 *pFileHandle)打開文件或創(chuàng)建新的文件,包含要打開的文件名,打開方式和文件指針等參數(shù)。其次,利用函數(shù)_i32 sl_FsWrite(const _i32 FileHdl,_u32 Offset,_u8* pData,_u32 Len);向文件寫入數(shù)據(jù),包含文件地址指針,寫入第一個數(shù)據(jù)在文件中偏移位置,數(shù)據(jù)內(nèi)容指針,數(shù)據(jù)長度等參數(shù)。最后,利用函數(shù)_i16 sl_FsClose (const _i32 FileHdl,const _u8* pCeritificateFileName, const _u8* pSignature,const _u32 SignatureLen);關(guān)閉參數(shù)所指向的文件,并保存參數(shù)為今后使用。以上可以看出,操作FLASH的基本流程為:打開文件->讀寫文件->關(guān)閉文件。

將數(shù)據(jù)寫入FLASH之后,設(shè)備進(jìn)入HIB模式,關(guān)鍵代碼如下:

MAP_PRCMHibernateIntervalSet(5 * SLOW_CLK_FREQ);

MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_ SLOW_CLK_CTR);

MAP_PRCMHibernateEnter();

首先調(diào)用第一個函數(shù)設(shè)置設(shè)備工作在HIB模式時間,在這里傳遞一個5s的時間參數(shù),5s后喚醒設(shè)備。然后調(diào)用第二個函數(shù),實時時鐘開始計時。之后調(diào)用第三個函數(shù),進(jìn)入HIB模式。計時時間到,退出HIB模式,設(shè)備復(fù)位。

復(fù)位后需要從FLASH閃存中恢復(fù)數(shù)據(jù),其流程為:首先調(diào)用函數(shù)unsigned long PRCMSysResetCauseGet(void)判斷是否是從HIB模式中復(fù)位,如果是,則調(diào)用函數(shù)_i32 sl_FsRead(const _i32 FileHdl,_ u32 Offset,_u8* pData,_u32 Len);讀取數(shù)據(jù),它包含讀取數(shù)據(jù)文件指針,讀取的第一個數(shù)據(jù)在文件中的偏移字節(jié)數(shù),指向保存從村建忠讀取的數(shù)據(jù)變量指針,所讀取數(shù)據(jù)的字節(jié)長度等參數(shù)。

使用HIB模式的優(yōu)點顯而易見,能使設(shè)備在使用時的功耗降低許多,但是隨之而來的麻煩便是必要數(shù)據(jù)的備份和恢復(fù),因此在設(shè)計過程中應(yīng)盡量避免使用需要備份的全局?jǐn)?shù)據(jù)。

3 結(jié)語

本設(shè)計實現(xiàn)了物聯(lián)網(wǎng)節(jié)點的接入功能以外,借助于CC3200良好的函數(shù)接口封裝性和強(qiáng)大的軟件開發(fā)包等資源,還額外添加了電源管理模塊,即讓設(shè)備在空閑時工作在HIB模式,具有重要的意義。眾所周知,如何給電子設(shè)備配備能夠提供持久的電量并且不占空間的電池一直是一個很大的難題,CC3200提供的這種低功耗模式就在很大程度上解決了這個問題。

[1] (美) 陳涓, 趙振平譯. HTTP權(quán)威指南[M]. 北京:人民郵電出版社, 2012.

[2] 陳穎瑩. 芯片上的網(wǎng)絡(luò) TI SimpleLink Wi-Fi讓聯(lián)網(wǎng)如此簡單[J]. 電子技術(shù)應(yīng)用, 2014, 7 : 2.

[3] 郭書軍. ARM Cortex-M4+Wi-Fi MCU應(yīng)用指南 : CC3200 CCS基礎(chǔ)篇[M].北京 : 電子工業(yè)出版社, 2015.

[4] 郭書軍, 田志鵬. 基于單片Wi-Fi MCU CC3200的無線串口[J].儀器儀表用戶, 2016, 23 (1) : 24 - 27.

[5] 林婷, 王磊. 基于CC3200及MT9D111的嵌入式無線圖像采集系統(tǒng)設(shè)計[J].技術(shù)與市場, 2015, 22 (9) : 9 - 11.

[6] 沈建華. CC3200 Wi-Fi微控制器原理與實踐 : 基于MiCO物聯(lián)網(wǎng)操作系統(tǒng)[M]. 北京: 北京航空航天大學(xué)出版社, 2015.

[7] 謝希仁. 計算機(jī)網(wǎng)絡(luò) (第六版) [M]. 北京:電子工業(yè)出版社, 2013.

The Design of Wi-Fi Access Module of IoT Node

This paper presents the implementation of the Internet access of the device-side based on CC3200 as well as its communication and data interchange with the server-side in an IoT system. On the device-side, the CPU acquires the device parameters with different sensors. The communication between the sensors and the Wi-Fi module is based on the I2C serial bus interface. The Wi-Fi module is set to STA (Station) mode to connect the WLAN. Once connected successfully, the Wi-Fi module establishes connection with the server-side based on the TCP/IP protocol, and then exchange data via the HTTP protocol. The Wi-Fi module sends the connecting request to the server-side regularly to interchange data. After data interchange is fnished, the CPU is set to low power state by switching to HIB (Hibernate) mode. During this time, the internal RTC (Real time clock) records the time of HIB. Once HIB time is over, the CPU exits HIB mode immediately and connects WLAN again. Then it establishes connection with the server-side and exchanges data.

Internet of Things (IoT); Intelligent hardware; CC3200; Wi-Fi module; HTTP

李名(1965-),男,漢族,廣西北海人,碩士,現(xiàn)任廣州市賽皓達(dá)智能科技有限公司總經(jīng)理,主要研究方向為智能自動化。

B

1003-0492(2016)12-0088-04

TN926

猜你喜歡
串口客戶端聯(lián)網(wǎng)
“身聯(lián)網(wǎng)”等五則
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
搶占物聯(lián)網(wǎng)
通信世界(2018年27期)2018-10-16 09:02:56
縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實時無線通信
地礦測繪(2015年3期)2015-12-22 06:27:26
可再生能源與物聯(lián)網(wǎng)
風(fēng)能(2015年10期)2015-02-27 10:15:34
得MCU者得物聯(lián)網(wǎng)天下
台州市| 米易县| 水富县| 高雄市| 高台县| 措美县| 霞浦县| 天峻县| 紫金县| 保亭| 蕲春县| 玉门市| 邢台市| 莱芜市| 原平市| 友谊县| 蕲春县| 辰溪县| 永兴县| 凤山县| 柳州市| 神农架林区| 子长县| 伊吾县| 邢台市| 阿巴嘎旗| 章丘市| 新沂市| 富裕县| 合江县| 通河县| 福海县| 利川市| 博客| 洛阳市| 沧源| 云和县| 商丘市| 东方市| 砚山县| 怀安县|