基于Zigbee的智能道路路灯系统

发布时间:2026/10/3 1:42:14
基于Zigbee的智能道路路灯系统
CC2530作为物联网解决方案孕育而生的芯片内核是利用了51内核编程软件主要以IAR为主ZigBee主要是基于IEEE802.15.4的无线标准在物联网方面最大的好处就是能够自组网。利用zigbee完成小型的道路路灯系统。硬件系统总体框图直接用两个CC2530做了点对点的组网一个作为节点端控制超声波模块对过往的行人和车辆进行超声波监测当有物体人或物靠近到达一定距离的时候会将通行的路灯亮起当没有行人和车辆经过的时候就会关闭路灯起到节能减排的作用终端节点还使用了光照传感器当没有天亮的时候并不会因为车辆或路人而开启路灯。超声波模块超声波实物图超声波模块的具体功能和主要特性可以参考商家给定的数据手册。超声波程序的编写主要依照超声波的时序图去编写代码利用单片机对超声波模块给定一个起始信号将电平从低电平拉高至高电平并等待10us秒完成超声波的启动和发射最终便等待超声波的信号回传接收便可进行相应的数据处理。起始信号//产生一个20us的脉冲在Trig引脚 Trig1; delay_20us(); Trig0; //等待Echo回波引脚变高电平 while(Echo0);程序设计流程图程序流程图两个CC2530一个作为终端控制节点另外一个作为路由节点两个节点组成一个利用Z-stack协议栈进行自组网的操作首先对两个节点的系统时钟进行初始化将系统时钟设置成32MHZCC2530默认时钟频率为16MHZ,并对其他需要使用到的IO口进行初始化移植Z-stack协议栈设置组网模式为点对点组网通信并对两个节点进行判断当节点是路由器节点时会初始化射频模块并接收终端节点返回的数据若返回的数据显示有物体接近超过100cm则会进行路灯开启并将数据上传到PC端进行距离显示当节点是终端节点时会对终端节点的射频模块进行初始化并对超声波模块和光照传感器进行初始化当光照传感器监测到天亮之后便会给超声波模块发送起始信号驱动模块发射超声波并对超声波返回的时间进行记录若监测到有人或车靠近超过100cm的时候并会将监测到的数据返回给协调器模块。路由节点跟PC端的上位机进行联通将终端节点发送过来的数据利用串口将数据以八位的二进制代码进行传输上位机将发送到上来的数据进行实时显示。终端节点利用CC2530的IO口对超声波传感器和光敏传感器进行数据收集将AD/DA转换的数据进行处理最终得到相应的数据值。关键代码中断处理函数 #pragma vector P0INT_VECTOR __interrupt void P0_ISR(void) { //P0_5产生中断 if((P0IFG0x20)0x20) { IEN1 ~0X20; // 关闭P0口中断 outcomeL T1CNTL; //取出定时器的值 outcomeH T1CNTH; //取出定时器的值 succeed_flag1; //置成功测量的标志 } P0IFG 0; //清中断标志 P0IF 0; //清中断标志 }定义中断处理函数当超声波模块接收端接收到有超声波传输回来的信息之后便会产生中断信号而后处理中断内部函数。利用CC2530的P0_5口作为外部接收中断口当发生中断的时候会对IO口进行判断确定是P0_5口产生的中断并关闭中断等待下次计数器和中断的开启。并将发射信号时开启的定时器值取出得到超声波在发射接收过程中所需要的时间并将因为外部中断产生的中断标志位清除等待下一次中断的到来。数据处理函数 int PrintfDistance() { uint distance_data0; uint date 0; distance_dataoutcomeH; //测量结果的高8位 distance_data8; //放入16位的高8位 distance_datadistance_data|outcomeL; //与低8位合并成为16位结果数据 distance_data*4; //因为定时器为128分频,32M时钟, 4128/32, distance_data/58; //微秒的单位除以58等于厘米 date | distance_data; if(date1000) { return -1; } else { return date; } }定义distance_data变量作为存储变量将测量到的数据高八位存入distance_data变量并将存入的数据左移八位作为16位数据的高八位使用再或上16位数据的低八位组成监测的16位结果数据定时器为128分频32M时钟因此128/324由于计数时间为微秒。所以利用公式Y米X秒*344/2得到X秒 2*Y米/344得到X秒0.0058*Y米转化为厘米和微秒得厘米微秒/58。再将得到的16位数据distance_data利用或运算将起存储到date变量中并对data变量进行判断超过一千厘米返回-1证明没监测到有人或车靠近否则返回测量到的数据信息。这个项目是我学生时期的作品原工程文件已不再保留。如果你正在做类似的Zigbee/CC2530项目我可以提供一对一辅导原理讲解、代码调试、组网排错私信说明你的情况即可。本人现为嵌入式工程师蓝牙音频/Zigbee/STM32/ESP32方向承接项目辅导与定制开发。