傳感網應用開發為了考試(Zigbee通信)
.ZigBee網路的自定義協議訊息幀
起始位 + 命令型別 + 資料總長度 + 傳感器個數 + 傳感器型別 + 資料域 + 校驗位
START + CMD + LEN + Count + TYPE + DATA0~DATAN + CHK
協議各個報文的協議詳解:
起始位(START):固定值為0xCC;
命令型別(CMD):一般為0x01,獲取采集資料;
資料總長度(LEN):從起始位到校驗位(不包括校驗位)之前的位元組長度;
傳感器個數(Count):根據傳感器種類確定,如果采集溫濕度個數為2;
傳感器型別(TYPE):0x01代表溫濕度,其它參考表3-29;
資料域(DATA0~DATAN):存盤傳感器資料;
校驗位(CHK):從START到CHK位元組之前的累加和,然后把累加和的結果與0xFF按位與,取得低8位資料CHK的值;


然后就回到主函式中進行如下定義

考試時方法名字可能會有改變,但初始化基本不變
2.根據自定義協議,將火焰傳感器資料正確封裝到uart0_send_buf[]陣列中
uart0_send_buf[1] = (uint8)(adc_value >> 8); //讀取ADC資料高位暫存器
uart0_send_buf[2] = (uint8)adc_value; //讀取ADC資料低位暫存器
大概就是用這種方式進行封裝火焰傳感器資料
3.采集獲得溫濕度
//獲取溫濕度函式為call_sht11
call_sht11((unsigned int)(&sensor_tem),(unsigned int)(&sensor_hum));
Tx_Buff[4]=(uint8)sensor_tem;
Tx_Buff[5]=(uint8)sensor_hum;
Tx_Buff[6]=mc_check_crc8(Tx_Buff,6)
4.指示燈D3,D6,D5組成3位計數指示燈,回圈指示數值0-7
//根據D3=LED1 D6=LED4 D5=LED3 3個LED燈進行計數顯示
void show_cnt(uint8 num)
{
num=num%8;
switch(num)
{
case 0:
halLedClear(1);
halLedClear(4);
halLedClear(3);
break;
case 1:
halLedClear(1);
halLedClear(4);
halLedSet(3);
break;
case 2:
halLedClear(1);
halLedSet(4);
halLedClear(3);
break;
case 3:
halLedClear(1);
halLedSet(4);
halLedSet(3);
break;
case 4:
halLedSet(1);
halLedClear(4);
halLedClear(3);
break;
case 5:
halLedSet(1);
halLedClear(4);
halLedSet(3);
break;
case 6:
halLedSet(1);
halLedSet(4);
halLedClear(3);
break;
case 7:
halLedSet(1);
halLedSet(4);
halLedSet(3);
break;
}
}
這是建立在有"hal_led.h"這個檔案的前提下,在使用halLedSet之前,也要有相應的初始化
5.ZigBee從模塊收到ZigBee主模塊發來的無線資料后,其板上的LED1也閃爍1次,并對收到的資料進行判斷,當有火焰時使ZigBee從模塊上的LED2閃爍,當無火焰時熄滅ZigBee從模塊板上的LED2
while(1)
{
/*接收發送端(ZIGBEE通信模塊主機)無線資料實作LED1燈閃爍,根據接收資料控制LED2燈閃爍*/
if(basicRfPacketIsReady())
{
halLedSet(1);
halMcuWaitMs(250);
halLedClear(1);
len = basicRfReceive(rxData,1,NULL);
if(len != 0)
{
if(rxData[0] == '1')
{
halLedSet(2); //點亮
led_flag = 1;//讓它為1,就會執行下面if(led_flag == 1)即讓燈亮度衰減,然后關閉燈
}
else if(rxData[0] == '0')
{
halLedClear(2);
led_flag = 0;
}
}
if(led_flag == 1){
halLedSet(2);
halMcuWaitMs(250);
halLedClear(2);
}
}
/*接收發送端(ZIGBEE通信模塊主機)無線資料實作LED1燈閃爍,根據接收資料控制LED2燈閃爍*/
}
//這也是建立在有"hal_led.c"這個檔案的前提下,在使用halLedSet之前,也要有相應的初始化,也需要檢查頭檔案有沒有寫
在hal_mcu.c中halMcuWaitMs()方法為了能夠閃爍
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/392252.html
標籤:其他
上一篇:智能魔法棒———硬體篇
下一篇:傳感網應用開發知識點總結
