
物聯(lián)網(wǎng)學(xué)習(xí),每日一考一練!
物聯(lián)網(wǎng)學(xué)習(xí),每日一考一練:考試不是目的,學(xué)習(xí)知識(shí)才是重點(diǎn)!
完成以下答題能掌握的知識(shí)點(diǎn):
物聯(lián)網(wǎng)的基本概念
單片機(jī)IO口基本配置
Zigbee中函數(shù)傳參
Zigbee 函數(shù)調(diào)用
中斷函數(shù)使用
ZigBee 無(wú)線傳感網(wǎng)組網(wǎng)

1、下面哪一項(xiàng)不屬于物聯(lián)網(wǎng)關(guān)鍵技術(shù)?
A.ZigBee技術(shù) B. RFID C.低功耗藍(lán)牙技術(shù) D.收音機(jī)
2、我國(guó)提出發(fā)展中國(guó)的物聯(lián)網(wǎng)的口號(hào)是?
A.智慧地球 B.感知中國(guó) C.U-CHINA D.認(rèn)知中國(guó)
3、非接觸式自動(dòng)識(shí)別技術(shù)是
A.ZigBee B. M2M C.RFID D.NFC
4、智慧地球(Smarter Planet)是誰(shuí)最先提出的( )
A.無(wú)錫研究院 B.溫總理 C. IBM D. 奧巴馬
5、物聯(lián)網(wǎng)的英文名字是(), 簡(jiǎn)稱(chēng)();
6、()是物聯(lián)網(wǎng)采集信息的終端工具;
7、()與IPv4協(xié)議相比和物聯(lián)網(wǎng)的聯(lián)系更廣泛;
8、ZigBee節(jié)點(diǎn)所屬類(lèi)別有3種,包括:()、()、()。
1.基礎(chǔ)實(shí)驗(yàn),我們常需要對(duì)IO口進(jìn)行配置,點(diǎn)亮LED1?
/*************************************
 描述:點(diǎn)亮LED1
 IO口:LED1-P1.0
 點(diǎn)亮:低電平點(diǎn)亮
**************************************/
#include <ioCC2530.h>
#define LED1 ? //定義P10口為L(zhǎng)ED1控制端 
void IO_Init(void)
{
 P1SEL &=~0x01; //作為普通IO口 
 P1DIR |= ? ; //P1_0定義為輸出 
 P1INP &=~0X01; //打開(kāi)上拉 
}
void main(void)
{ 
 IO_Init(); //調(diào)用初始化程序
 LED1= ? ; //點(diǎn)亮LED1 
 while(1);
}
請(qǐng)?jiān)谏厦?define LED1 ? 和 LED1= ? ; //點(diǎn)亮LED1 2處 補(bǔ)充完代碼
2. ZigBee數(shù)據(jù)發(fā)送
ZigBee 常用數(shù)據(jù)發(fā)送函數(shù)定義如下:
afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius )
請(qǐng)參考上面代碼將下面空格補(bǔ)充完整,實(shí)現(xiàn)將數(shù)據(jù) data 發(fā)送出去。
Void SampleApp _SendPeriodicMessage ( void )
{
uint8 data[10]={0,1,2,3,4,5,6,7,8,9};
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr,
&SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
, ,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{ }
else
{
// Error occurred in request to send.
}
3.編程使節(jié)點(diǎn) 1 的 LED1 指示燈復(fù)位后閃爍 4 次,閃爍周期為 200ms,即亮 100ms,滅 100ms;可以調(diào)用 z-stack 的 LED 閃爍函數(shù):函數(shù)如下:
void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)
{
#if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
 uint8 led;
 HalLedControl_t *sts;
 if (leds && percent && period)
 {
 if (percent < 100)
 {
 led = HAL_LED_1;
 leds &= HAL_LED_ALL;
 sts = HalLedStatusControl.HalLedControlTable;
 while (leds)
 {
 if (leds & led)
 {
 /* Store the current state of the led before going to blinking */
 preBlinkState |= (led & HalLedState);
 sts->mode = HAL_LED_MODE_OFF; /* Stop previous blink */
 sts->time = period; /* Time for one on/off cycle */
 sts->onPct = percent; /* % of cycle LED is on */
 sts->todo = numBlinks; /* Number of blink cycles */
 if (!numBlinks) sts->mode |= HAL_LED_MODE_FLASH; 
 /* Continuous */
 sts->next = osal_GetSystemClock(); /* Start now */
 sts->mode |= HAL_LED_MODE_BLINK; /* Enable blinking */
 leds ^= led;
 }
 led <<= 1;
 sts++;
 }
 osal_set_event (Hal_TaskID, HAL_LED_BLINK_EVENT);
}
 else
 {
 HalLedSet (leds, HAL_LED_MODE_ON); /* >= 100%, turn on */
 }
 }
 else
 {
 HalLedSet (leds, HAL_LED_MODE_OFF); /* No on time, turn off */
 }
#elif (HAL_LED == TRUE)
 percent = (leds & HalLedState) ? HAL_LED_MODE_OFF : HAL_LED_MODE_ON;
 HalLedOnOff (leds, percent); /* Toggle */
#else
 // HAL LED is disabled, suppress unused argument warnings
 (void) leds;
 (void) numBlinks;
 (void) percent;
 (void) period;
#endif /* BLINK_LEDS && HAL_LED */
}
按題目要求調(diào)用函數(shù):(?)
4.編程使節(jié)點(diǎn)1的按鍵S1每按一次,控制LED1燈閃爍一次。
閃爍函數(shù)定義:
/***************************************************************************************************
* @fn HalLedSet
*
* @brief Tun ON/OFF/TOGGLE given LEDs
*
* @param leds - HAL_LED_1,HAL_LED_2;
* mode - BLINK, FLASH, TOGGLE, ON, OFF
* @return None
***************************************************************************************************/
uint8 HalLedSet (uint8 leds, uint8 mode);
按鍵中斷函數(shù):
void SampleApp_HandleKeys( uint8 shift, uint8 keys )
{
(void)shift; // Intentionally unreferenced parameter
if ( keys & HAL_KEY_SW_6 )
{
HalUARTWrite(0,"K1 ",3); //提示KEY1被按下
? ; // LED1閃一下
}
if ( keys & HAL_KEY_SW_1 )
{
/* This key sends the Flash Command is sent to Group 1.
* This device will not receive the Flash Command from this
* device (even if it belongs to group 1).
*/
SampleApp_SendFlashMessage( SAMPLEAPP_FLASH_DURATION );
}
if ( keys & HAL_KEY_SW_2 )
{
/* The Flashr Command is sent to Group 1.
* This key toggles this device in and out of group 1.
* If this device doesn't belong to group 1, this application
* will not receive the Flash command sent to group 1.
*/
aps_Group_t *grp;
grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
if ( grp )
{
// Remove from the group
aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
}
else
{
// Add to the flash group
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
}
}
}
請(qǐng)完善以上中斷函數(shù)的調(diào)用。
打開(kāi)工程文件 3.1。節(jié)點(diǎn) 1 作為協(xié)調(diào)器,節(jié)點(diǎn) 2 作為終端設(shè)備且連接溫度傳
感器 DS18B20,通過(guò)周期性讀取溫度信息發(fā)送給協(xié)調(diào)器。協(xié)調(diào)器將收集到的溫度
信息通過(guò)串口 0 發(fā)送到 PC 機(jī),并使用串口調(diào)試助手打印出來(lái)。
要求: 寫(xiě)出下列要求對(duì)應(yīng)的函數(shù)或代碼,在考試套件上實(shí)現(xiàn)題目功能:試卷共 6 頁(yè) 第 6 頁(yè)
(1) 配置串口波特率為 115200bps,關(guān)閉串口流控;
#define MT_UART_DEFAULT_BAUDRATE #define MT_UART_DEFAULT_OVERFLOW
(2) 將采集到的溫度信息發(fā)送給協(xié)調(diào)器的發(fā)送函數(shù);
void SampleApp_SendPointToPointMessage( void )
{
uint8 T[2];//溫度
//16 進(jìn)制轉(zhuǎn)換成 ASCII 碼 溫度十位
//16 進(jìn)制轉(zhuǎn)換成 ASCII 碼 溫度個(gè)位
if ( AF_DataRequest( &Point_To_Point_DstAddr,
&SampleApp_epDesc,
SAMPLEAPP_POINT_TO_POINT_CLUSTERID,
2,
T,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{ }
else
{ // Error occurred in request to send.
}
}
(3) 協(xié)調(diào)器將接收到的溫度信息通過(guò)串口 0 打印出來(lái)。
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
uint16 flashTime;
switch ( pkt->clusterId )
{
case SAMPLEAPP_POINT_TO_POINT_CLUSTERID:
HalUARTWrite(0,"Temp is:",8); //串口提示接收到數(shù)據(jù)
; //溫度信息通過(guò)串口 0 發(fā)給 PC 機(jī)
HalUARTWrite(0,"\n",1); // 回車(chē)換行
break;
}
}

物聯(lián)網(wǎng)學(xué)習(xí),每日一考一練!

搜浪信息科技發(fā)展(上海)有限公司 備案號(hào):滬ICP備17005676號(hào)