實(shí)驗(yàn)內(nèi)容:
zigbee終端節(jié)點(diǎn)采集溫濕度、光敏數(shù)據(jù),通過zigbee無線通道傳輸給協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器接收到數(shù)據(jù)后,一方面通過串口在PC機(jī)上顯示,另一方面通過藍(lán)牙模塊發(fā)送給手機(jī)端顯示。
本項(xiàng)目需要完成的主要工作如下:
提供的硬件設(shè)備:
每個盒子包括:zigbee板2個,CCdebuger1個,藍(lán)牙模塊1個,USB-TTL模塊1個,溫濕度傳感器1個,光敏傳感器1個,miniUSB線2根,D口USB線1根, 配套杜邦線
所需的文件:
名稱 | 說明 |
開發(fā)環(huán)境IAR EW8051-8.1帶注冊工具 | IAR開發(fā)環(huán)境 |
Texas Instruments one.rar | CC2530 Z-Stack源碼及測試程序,老師提供 |
gec-Zigbee-ccdebug仿真器驅(qū)動 | CC DEBUGER的驅(qū)動,老師提供 |
CC DEBUGGER在win7 win10下的安裝方法.rar | CC DEBUGER在64bit win7/10下的驅(qū)動,老師提供 |
CH341SER | Usb轉(zhuǎn)串口驅(qū)動,老師提供 |
UartAssist.exe | 串口助手,老師提供 |
手機(jī)藍(lán)牙助手 | 自行下載 |
DHT11.rar | 溫度傳感器測試項(xiàng)目,老師提供 |
LightSensor_P07.rar | 光敏傳感器測試項(xiàng)目,老師提供 |
本文件 | 實(shí)驗(yàn)指導(dǎo)書 |
本次實(shí)驗(yàn)需要安裝IAR集成開發(fā)環(huán)境、CCDebuger仿真器驅(qū)動、通過USB-TTL模塊設(shè)置藍(lán)牙模塊波特率、安裝手機(jī)藍(lán)牙助手
1.1 安裝IAR集成開發(fā)環(huán)境,安裝CCdebuger的驅(qū)動
請按照之前實(shí)驗(yàn)的步驟安裝IAR開發(fā)環(huán)境、CCdebuger仿真器驅(qū)動。
1.2 安裝手機(jī)藍(lán)牙APP
自行從網(wǎng)上下載、安裝。藍(lán)牙助手有很多版本,設(shè)置及使用方法都基本相同。
1.3 藍(lán)牙模塊設(shè)置:
藍(lán)牙模塊與USB-TTL接口模塊的接線如下表:
藍(lán)牙模塊 | USB-TTL接口模塊 |
|
|
Rx | Rx |
Tx | Tx |
Vcc | 5v(由miniUSB供電,JTAG不提供5v) |
GND | GND |
En/State懸空 |
用杜邦線按上表引腳對應(yīng)關(guān)系,連接藍(lán)牙模塊和USB-TTL模塊,然后將USB-TTL模塊插入PC機(jī)USB接口,如下圖,在“計(jì)算機(jī)管理”窗口可看到多出一個USB轉(zhuǎn)串口的設(shè)備(本圖為串口5,COM5,每個usb口對應(yīng)的串口不一樣)。

需要進(jìn)入AT指令模式來設(shè)置藍(lán)牙模塊波特率、模塊名(以免混淆)
AT模式波特率為38400,正常通信時波特率為9600
每條AT指令輸入完成后,都必須按一下回車鍵,再點(diǎn)擊串口助手上的發(fā)送按鈕,才可發(fā)送
LED必須進(jìn)入慢閃模式后方可進(jìn)行AT指令測試
先按住HC05藍(lán)牙模塊上面的按鍵(復(fù)位鍵),再將USB-TTL模塊插上PC機(jī),等藍(lán)牙模塊上面的LED進(jìn)入慢閃模式后(約1秒鐘閃爍一次),即可進(jìn)行AT命令測試:

| 在串口助手的左側(cè)窗口 1:選擇串口號、波特率(AT模式波特率為38400,缺省的正常通信模式下波特率為9600) 2:在命令發(fā)送區(qū),輸入at(大小寫都可以),然后回車,再用鼠標(biāo)點(diǎn)擊“發(fā)送”按鈕,即可在接收區(qū)看到返回“OK”,表示串口調(diào)試助手與藍(lán)牙間連接成功 |
測試連接成功后,在發(fā)送區(qū)輸入命令(大小寫不敏感):
命令 | 接收區(qū)顯示 | 說明 | |
1 | AT+UART | +UART:9600,0,0 OK | 查看藍(lán)牙模塊當(dāng)前的波特率配置 |
2 | at+uart=115200,0,0 | OK | 設(shè)置藍(lán)牙模塊使用時的波特率為115200,停止位為1位,校驗(yàn)位為none |
3 | at+name=fengb | 沒有顯示 | 設(shè)置藍(lán)牙模塊的名字為fengb(建議設(shè)置為自己的名字拼音,免得相互沖突) |
設(shè)置完成后,拔下USB-TTL模塊,再插回PC機(jī),相當(dāng)于重啟藍(lán)牙模塊。此時,藍(lán)牙模塊上的狀態(tài)燈處于快速閃爍狀態(tài)。打開手機(jī)藍(lán)牙,搜索附近可用設(shè)備,點(diǎn)擊連接,即可看到該設(shè)備的名字(如剛才設(shè)置的為fengb),配對的pin碼為:1234
輸入后,即可實(shí)現(xiàn)手機(jī)藍(lán)牙與藍(lán)牙模塊的連接。
本步驟提供終端節(jié)點(diǎn)分別單獨(dú)采集溫濕度傳感器、光敏傳感器的項(xiàng)目,用以熟悉采集程序的代碼,并確認(rèn)藍(lán)牙模塊、串口助手、手機(jī)藍(lán)牙助手APP可正確使用。
Zigbee終端節(jié)點(diǎn)采集溫濕度項(xiàng)目,改為P06引腳,可測試溫濕度傳感器、串口助手。
本項(xiàng)目采用粵嵌傳感器測試代碼,但由于廠商提供的溫濕度傳感器、光敏傳感器都占用了P07引腳,因此,需要將原項(xiàng)目中溫濕度傳感器從P07引腳的數(shù)據(jù)輸入,改為P06引腳的輸入。
將老師提供的源碼解壓到D盤(注意路徑上不要有中文,否則IAR會閃退)。
項(xiàng)目關(guān)鍵代碼分析如下

DHT11_Read_Data(buf)讀取5個字節(jié)40bits的溫濕度數(shù)據(jù)到buf數(shù)組中(具體原理可參見《ZigBee 開發(fā)實(shí)驗(yàn)指導(dǎo)書》第六章 溫濕度實(shí)驗(yàn)),其中:
buf[0]=8bit 濕度整數(shù)數(shù)據(jù),buf[1]=8bit 濕度小數(shù)數(shù)據(jù),
buf[2]= 8bit溫度整數(shù)數(shù)據(jù),buf[3]=8bit 溫度小數(shù)數(shù)據(jù)。
然后調(diào)用hexToAscall()函數(shù)將buf中的數(shù)據(jù)按字節(jié)轉(zhuǎn)換為了ASCII碼,并與說明信息一起拼接進(jìn)rus字符串,最后調(diào)用uartSendString()函數(shù)打印到串口輸出。
請仔細(xì)學(xué)習(xí)《ZigBee 開發(fā)實(shí)驗(yàn)指導(dǎo)書》第三章LED實(shí)驗(yàn)、第六章溫濕度實(shí)驗(yàn),找到修改、配置溫濕度傳感器IO控制器的方法。并按以下內(nèi)容修改項(xiàng)目。
打開文件dht11.h,將引腳定義由P07改為P06:
![]()
打開文件dht11.c,將P0端口寄存器進(jìn)行對應(yīng)的設(shè)置:

保存并編譯,通過后,連接硬件,下載代碼。
Pin | 名稱 | 注釋 |
1 | VCC | 供電3-5.5V |
2 | DATA | 單總線,串行數(shù)據(jù) |
3 | NC | 懸空 |
4 | GND | 接地 |
| 注意: 串口號為從“設(shè)備管理器”中查到的USB轉(zhuǎn)串口的串口號 波特率為115200 |
(有可能有個別溫濕度傳感器已被燒掉,請?jiān)诮o測試系統(tǒng)上電后,用手指按住溫濕度傳感器感受是否有發(fā)燙現(xiàn)象,如果發(fā)燙則表明已燒掉,則立即斷電,取下溫濕度傳感器)
本階段測試通過后,表明可在zigbee開發(fā)板的P06端口,正確讀取到溫濕度傳感器的數(shù)據(jù)。打包保留測試通過的源碼為:DHT11_P06.rar

本項(xiàng)目采用粵嵌傳感器測試代碼,對應(yīng)源碼:LightSensor_P07.rar
光敏傳感器圖示如下:

將老師提供的源碼解壓到D盤(注意路徑上不要有中文,否則IAR會閃退)
項(xiàng)目關(guān)鍵代碼分析如下:

ADCH、ADCL:分別為ADC數(shù)據(jù)的高8位、低8位,在ioCC2530.h中定義。
對value乘以330,再右移15位(215=32768,近似于33000),相當(dāng)于將value除以100

在main.c中,調(diào)用函數(shù)getValue()得到的sensor_var除以了100,作為電壓的整數(shù)值,除以10再取余10,作為個位小數(shù)的值,取余10,作為十位小數(shù)的值。(為什么這么處理就不清楚了,廠商提供的數(shù)據(jù)手冊一直無法下載。。。)
編譯通過后,連接硬件,下載代碼。
Pin | 名稱 | 注釋 |
1 | VCC | 供電3-5.5V |
2 | GND | 接地 |
3 | Do | 數(shù)字信號輸出 |
4 | Ao | 模擬信號輸出 |
編譯、下載,全速運(yùn)行后,可以在串口助手上看到電壓值的輸出。
| 注意: 串口號為從“設(shè)備管理器”中查到的USB轉(zhuǎn)串口的串口號 波特率為115200 |
完成此步驟,即可證明光敏傳感器、串口助手及對應(yīng)的測試程序工作正常。

下一步,將已完成設(shè)置的藍(lán)牙模塊接入zigbee板,并用手機(jī)連接該藍(lán)牙模塊,實(shí)現(xiàn)zigbee模塊到手機(jī)的數(shù)據(jù)傳輸。
此時,拔掉zigbee的CCdebuger和miniUSB連接,使zigbee板處于無電狀態(tài)。將藍(lán)牙模塊連接到zigbee板上。
藍(lán)牙模塊與zigbee板的接線:
藍(lán)牙模塊 | Zigbee板 |
Rx | P02 |
Tx | P03 |
Vcc | 5v |
GND | GND |
連接好連線后,用miniusb線給本zigbee板供電(此處必須由miniUSB給zigbee板供電,因?yàn)镴TAG接口不提供5v)。可先在PC上的串口助手軟件里可以看到光敏電壓的輸出。表明光敏傳感器工作正常。

藍(lán)牙模塊在“環(huán)境搭建”步驟已設(shè)置了模塊名(例子中為fengb)和波特率(115200),此時打開手機(jī)藍(lán)牙功能,打開手機(jī)上的藍(lán)牙助手APP,搜索周圍環(huán)境的藍(lán)牙模塊fengb,找到后點(diǎn)擊,進(jìn)行配對,配對碼是“1234”,然后連接該藍(lán)牙設(shè)備,選中“字節(jié)流模式”,就可以在手機(jī)上的藍(lán)牙助手界面看到光敏電壓數(shù)據(jù)。
注意,有的藍(lán)牙助手上不能顯示中文,則需要在代碼中把打印語句中的中文該為英文即可。
|
|
藍(lán)牙助手APP選擇字節(jié)流模式 | 中文顯示(亂碼) |
|
|
改源碼中文為英文顯示 | PC串口助手同時顯示 |
本步驟分兩個環(huán)節(jié),一是zigbee終端節(jié)點(diǎn)采集溫濕度數(shù)據(jù)發(fā)送給協(xié)調(diào)器,一是zigbee終端節(jié)點(diǎn)采集光敏數(shù)據(jù)發(fā)送給協(xié)調(diào)器。代碼原型采用前一步驟中使用的代碼,并需根據(jù)要求進(jìn)行修改。
本項(xiàng)目中,zigbee終端節(jié)點(diǎn)拿到溫濕度數(shù)據(jù)、光敏傳感器數(shù)據(jù)的所有操作,與原測試代碼都是相同的。區(qū)別在于拿到數(shù)據(jù)后,原測試代碼是直接輸出到串口打印,本項(xiàng)目需要發(fā)送到協(xié)調(diào)節(jié)點(diǎn)。這就需要分析我們做過的“基于zigbee協(xié)議棧的無線數(shù)據(jù)傳輸”實(shí)驗(yàn)中,終端節(jié)點(diǎn)是怎么把數(shù)據(jù)發(fā)送到協(xié)調(diào)器的。
在stack源碼ZStack-CC2530-2.3.0-1.4.0中,SampleApp.c是提供給用戶進(jìn)行應(yīng)用層編程的入口。其包含的函數(shù)SampleApp_SendPeriodicMessage()用以周期性發(fā)送數(shù)據(jù)(因此是終端節(jié)點(diǎn)調(diào)用該函數(shù))。

第440行為發(fā)送的數(shù)據(jù)長度,第441行為待發(fā)送的數(shù)據(jù)地址。上電后,該節(jié)點(diǎn)會周期性(5秒)發(fā)送data里的數(shù)據(jù)。
因此,我們只需要在這個函數(shù)里,把data換為從溫濕度傳感器、光敏傳感器處獲得的數(shù)據(jù)即可。
粵嵌的溫濕度傳感器測試代碼中(見DHT11-P06.rar),函數(shù)void SendTemp(void)調(diào)用函數(shù)DHT11_Read_Data(buf)讀取5個字節(jié)40bits的溫濕度數(shù)據(jù)到buf數(shù)組中(具體原理可參見《ZigBee 開發(fā)實(shí)驗(yàn)指導(dǎo)書》第六章 溫濕度實(shí)驗(yàn)),其中:
buf[0]=8bit 濕度整數(shù)數(shù)據(jù),buf[1]=8bit 濕度小數(shù)數(shù)據(jù),
buf[2]= 8bit溫度整數(shù)數(shù)據(jù),buf[3]=8bit 溫度小數(shù)數(shù)據(jù)。
然后調(diào)用hexToAscall()函數(shù)將buf中的數(shù)據(jù)按字節(jié)轉(zhuǎn)換為了ASCII碼,并與說明信息一起拼接進(jìn)rus字符串,最后調(diào)用uartSendString()函數(shù)打印到串口輸出。
本步驟中,需要:
將DHT11-P06項(xiàng)目中的dht11.c, dht11.h,delay.c,delay.h,system.h五個文件拷貝到:
ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp-transfer data in 1 hour\Source目錄下
打開SampleApp.eww項(xiàng)目,在左側(cè)窗口的workplace下,選中項(xiàng)目“SampleAPP-EndDeviceEB-Pro”下的“App”條項(xiàng),右鍵-?Add-? Add Files,將剛才拷貝過來的dht11.c、dht11.h等5個文件添加到項(xiàng)目中。
在dht11.c中:
屏蔽掉usart.h(因?yàn)閐ht11項(xiàng)目和zstack項(xiàng)目關(guān)于uart的實(shí)現(xiàn)有不同,索性屏蔽掉不用)
![]()
把所有調(diào)用uartSendString()的語句屏蔽。
在dht11.c文件末尾,添加新函數(shù)DHT11(u8 *T_H):

在dht11.c文件開始部分,添加對新函數(shù)DHT11的引用說明:
![]()
將原項(xiàng)目代碼:

修改為:

原項(xiàng)目代碼:

需要改為下面的內(nèi)容:

修改文件SampleApp.h:
在文件后半部分添加對DHT11的外部引用說明及DATALEN的宏定義說明:

修改完成后,保存。
將溫濕度傳感器接到zigbee開發(fā)板上(注意是P06,vcc,GND,這三個引腳),這塊zigbee板作為終端節(jié)點(diǎn),采集傳感器數(shù)據(jù),并通過zigbee無線通道發(fā)送給協(xié)調(diào)器。
在IAR開發(fā)環(huán)境左側(cè)窗口的workplace下:
如下圖,此時溫度的整數(shù)部分為0x19,即27度。用手握住溫濕度傳感器,過一段時間后可以看到溫度數(shù)據(jù)緩慢上升。


打開手機(jī)藍(lán)牙,用藍(lán)牙助手APP連接藍(lán)牙模塊,選擇字節(jié)流方式,即可在手機(jī)藍(lán)牙助手上同時收到溫濕度信息。
至此,表明溫濕度數(shù)據(jù)可以從終端節(jié)點(diǎn)采集,發(fā)送到協(xié)調(diào)器,再由協(xié)調(diào)器通過藍(lán)牙模塊發(fā)送到手機(jī)上。
粵嵌的光敏傳感器測試代碼中(見LightSensor_P07.rar)。函數(shù)getValue()返回了16bit的電壓值,在在main.c中,又將調(diào)用getValue()得到的sensor_var除以了100,作為電壓的整數(shù)值,除以10再取余10,作為個位小數(shù)的值,取余10,作為十位小數(shù)的值。為什么這么處理就不清楚了
本步驟中,需要:
將LightSensor-P07項(xiàng)目中的lightSensor.c, lightSensor.h, 2文件拷貝到:
ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp-transfer data in 1 hour\Source目錄下
打開SampleApp.eww項(xiàng)目,在左側(cè)窗口的workplace下,選中項(xiàng)目“SampleAPP-EndDeviceEB-Pro”下的“App”條項(xiàng),右鍵-?Add-? Add Files,將剛才拷貝過來的lightSensor.c/h等2個文件添加到項(xiàng)目中。
打開lightSensor.c,修改getValue()函數(shù):

改為:

并在lightSensor.c文件開頭處添加:
![]()
在SampleApp.h文件的后部添加:
此處將DATALEN改為了6
![]()
打開SampleApp.c,在函數(shù)SampleApp_SendPeriodicMessage()中,添加劃線的幾條語句:

修改完成后,保存。
將光敏傳感器接到zigbee終端節(jié)點(diǎn)開發(fā)板上,板子上之前已經(jīng)在P06端口連接了溫濕度傳感器。
在IAR開發(fā)環(huán)境左側(cè)窗口的workplace下:
藍(lán)牙模塊在2.2步驟設(shè)置成功后,手機(jī)上的藍(lán)牙助手應(yīng)能搜索到該藍(lán)牙模塊,連接上后選擇字節(jié)流方式,選擇16進(jìn)制方式,應(yīng)可收到zigbee協(xié)調(diào)器發(fā)送上來的數(shù)據(jù),同時,在PC側(cè)的串口助手上,應(yīng)可看到相同的數(shù)據(jù)。
至此,本項(xiàng)目完成了從zigbee終端節(jié)點(diǎn)采集溫濕度、光敏數(shù)據(jù),通過zigbee無線通道傳輸給協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器接收到數(shù)據(jù)后,一方面通過串口在PC機(jī)上顯示,另一方面通過藍(lán)牙模塊發(fā)送給手機(jī)端顯示。
總體效果圖如下:


完整的Word格式文檔51黑下載地址:
指導(dǎo)書.doc
(3.14 MB, 下載次數(shù): 23)
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |