技术实现框架
ZigBee路灯灯光照明控制系统-标准版(光控人感调光屏幕上位机) |
ZigBee路灯灯光照明控制系统-标准版+灯泡故障检测 |
ZigBee路灯灯光照明控制系统-标准版+声控 |
ZigBee路灯灯光照明控制系统-onenet云平台版 |
ZigBee路灯灯光照明控制系统-手机APP版 |
ZigBee路灯灯光照明控制系统-手机APP版+温湿度监测 |
ZigBee路灯灯光照明控制系统-冷暖双色温版 |
ZigBee路灯灯光照明控制系统-光线阈值可调版 |
zigbee路灯灯光照明控制系统-时控微波光控故障与车流量检测版 |
zigbee路灯灯光照明控制系统-时控微波光控故障与车流量+pm2.5检测版 |
ZigBee路灯灯光照明控制系统-时控人感光控版 |
ZigBee路灯灯光照明控制系统-时控人感光控版+故障检测 |
ZigBee路灯灯光照明控制系统-时控人感光控版+故障检测+分区控制 |
ZigBee路灯灯光照明控制系统-时控人感光控版+故障检测+SOS一键求助 |
ZigBee路灯灯光照明控制系统-时控人感光控版+温湿度烟雾监测 |
ZigBee路灯灯光照明控制系统-时控人感光控版+声控 |
ZigBee路灯灯光照明控制系统-时控压感光控版 |
ZigBee路灯灯光照明控制系统-各自多节点版本 |
ZigBee路灯灯光照明控制系统-光控压感微波故障检测版 |
ZigBee路灯灯光照明控制系统-灯泡故障监测GSM报警版 |
1 系统实现功能
- 实时监测 :实时监测环境光线情况,路灯的灯光级别及是否故障等情况。
- 手动控制模式:可以根据自己的意愿控制灯光的五级亮度。
- 自动控制模式:当环境光线低于30%且有人或有车经过时,可以根据路灯所处环境自动调节光线的亮度,当环境光线高于30%且有人或有车经过时,不开灯。
- 故障检测:当路灯发生故障,蜂鸣器报警提醒,并将该路灯的故障信息在APP上提醒。
- APP监测与控制:通过蓝牙无线通信技术与手机APP通信,在手机端实现远程信息交互。
2 硬件选型
序号 | 模块 | 型号 |
1 | ZigBee节点*2 | CC2530 |
2 | 光敏电阻传感器*2 | 5516 |
3 | 屏幕 | OLED |
4 | 路灯 | —— |
5 | 光敏传感器 | 光敏电阻 |
6 | 人体红外传感器 | HC-SR501 |
7 | 蓝牙模块 | JDY-31 |
8 | 杜邦线 | 若干 |
9 | ZigBee下载器 | SmartRF04EB仿真器 |
3 实物展示
4 部分源码
/*********************************************************
* @fn APP()
* @brief 用帘自定义轮询函数
* @param task - Loop task
* @return none
**********************************************************/
void APP(unsigned char task)//用帘轮询进程
{
#if defined(ZDO_COORDINATOR) //协调器
unsigned char i;
key_server();//按键扫描进程
ble_process();
display_info();//显示刷新功能
if((flag_bad[0]==1)&&status_led[0])
{
if(cnt_beep>3000)
{
BEEP_ON;
cnt_beep=0;
}
else
{
if(cnt_beep>100)
{
BEEP_OFF;
}
}
}
else
{
BEEP_OFF;
}
#else
#endif
switch(task) //任务进程
{
case 0://串口进程
if(rx_update) //串口命令进程,收到\r\n更新命令
{
rx_update=0; //清除更新标志位
rtc_usart_time_set(); //串口设置RTC时间函数
usart_set_mode();
usart_set_switch();
usart_set_timing();
flash_erase(122);//清除FLASH
flash_temp[0]=mode;
flash_write(122,0,flash_temp,10);
wipe_buffer(rx_temp,50);//清除串口缓存数据
rx_index=0; //串口缓存指针回0
rx_flag=1; //串口允许接收
}
break;
case 1:
#if defined(ZDO_COORDINATOR) //协调器
if(timer1cnt>1000) //定时器进程
{
if(mode==0){//自动模式下
for(i=0;i<3;i++)
{
if(light[i]<30){
if(status_ir[i]==1){
if(light[i]<5)status_led[i]=5;
else {
if(light[i]<10)status_led[i]=4;
else{
if(light[i]<20)status_led[i]=3;
else{
if(light[i]<25)status_led[i]=2;
else status_led[i]=1;
}
}
}
}
else{
status_led[i]=0;
}
}else{
status_led[i]=0;
}
}
}
tx_temp[0]='1';
tx_temp[1]='2';
tx_temp[2]='3';
tx_temp[3]=status_led[0];//调光值
tx_temp[4]=status_led[1];
tx_temp[5]=status_led[2];
RF_Master2Point(tx_temp,10);
timer1cnt=0;
}
#else
if(timer1cnt>2000) //定时器进程,每3秒翻转一次显示内容
{
printf("run\r\n");
timer1cnt=0;
}
#endif
break;
case 2:
break;
default:
task=0;
break;
}
}