Zigbee 모듈 (CC2480) 조도센서(Cds) 전송 테스트
조도센서(Cds)
P2.1을 High로 출력해서 밝기를 측정한다.
코드 추가
CC2480 예제 soruce code에는 CdS관련 데모가 없으므로 함수 추가
void halReadLight(void)
{
ADC10CTL1 = 0;
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
ADC10AE0 |= 0x01; // P2.0 ADC option select
{
ADC10CTL1 = 0;
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
ADC10AE0 |= 0x01; // P2.0 ADC option select
halDelay(ADC_WAIT_MSECS, TRUE); // Allow Vref to ADC to charge.
ADC10CTL0 |= ENC | ADC10SC; // Sampling and conversion start
}
ADC10CTL0 |= ENC | ADC10SC; // Sampling and conversion start
}
main함수에 스위치를 누를때 데이터를 전송할 수 있도록 코드 수정
main()
{
:
while(1)
{
if (!appExecHal())
{
// If all HAL and Host events have been processed, it is ok to go to low power.
if (!appExecHost() && (appFlags & appLowPwrF))
{
HAL_LOW_POWER_MODE();
}
}
//Switch 처리
if((GetSw1())
{
SwProcess();
}
}
}
{
:
while(1)
{
if (!appExecHal())
{
// If all HAL and Host events have been processed, it is ok to go to low power.
if (!appExecHost() && (appFlags & appLowPwrF))
{
HAL_LOW_POWER_MODE();
}
}
//Switch 처리
if((GetSw1())
{
SwProcess();
}
}
}
스위치 처리함수
SwProcess()
{
halReadLight();
srceReport[0] = (halAdcVal) / 4;
srceReport[1] = gCounter++;
//데이터 전송
zb_SendDataRequest (ZB_BINDING_ADDR, SRCE_REPORT_ID, appMsgHandle,
0, AF_DEFAULT_RADIUS, SRCE_REPORT_SZ, srceReport);
HAL_TOGGLE_RED();
halDelay(DEBOUNCE_MSECS, TRUE);
}
{
halReadLight();
srceReport[0] = (halAdcVal) / 4;
srceReport[1] = gCounter++;
//데이터 전송
zb_SendDataRequest (ZB_BINDING_ADDR, SRCE_REPORT_ID, appMsgHandle,
0, AF_DEFAULT_RADIUS, SRCE_REPORT_SZ, srceReport);
HAL_TOGGLE_RED();
halDelay(DEBOUNCE_MSECS, TRUE);
}
그밖에 초기에 코디네이터 있으면 무조건 바인딩 되도록 수정하고 필요없는것들 다이어트..
테스트 동영상
Zigbee모듈에서 스위치를 누르면 조도센서 및 데이터 인덱스를 무선으로 전송하여 PC에서 그래프로 표시하는 테스트
스위치 및 LED 회로도
커넥터 회로도
반응형