基于CW32单片机的公交站人流检测系统设计

一、实验简介
公交站人流检测是一项重要的城市交通管理任务,它不仅关系到公交服务的效率和质量,还与城市交通规划和公共安全紧密相关。首先,公交站人流检测可以实时反馈乘客流量情况,帮助公交公司了解各线路、各站点的客流需求。其次,公交站人流检测可以为公交公司制定和优化运营策略提供数据支持。再次,公交站人流检测可以及时发现拥挤、拥堵等情况,提醒调度中心及时采取措施,保障乘客安全。基于此背景,我们以cw32单片机为核心,采用公交站人流检测中常见的红外线检测技术,设计了一个公交站人流检测系统,该系统可以连接到网络获取当前时间,并将人流数据实时上传到onenet云平台进行远程监控。
二、实验器材
本实验使用到了cw32-48f大学计划开发板、esp8266wifi模块、e18-d80nk红外光电开关及keil5开发环境。       
开发板上预留了esp8266wifi模块接口,通过串口与esp8266通信。
【两个红外光电开关与单片机接线】:
蓝线 -- gnd
棕线 -- 3.3v
黑线 -- pa0、pa4
    三、核心代码
main.c://单片机头文件#include main.h//网络设备#include esp8266.h//网络协议层#include onenet.h //onenet//硬件驱动#include rtc.h //cw32rtc#include btim.h#include usart.h#include buzzer.h //板载蜂鸣器#include infrared.h //红外光电开关#include lcd_driver.h#include lcd_calculate.huint8_t send_flag=0; //数据上云控制位uint16_t count=0,accumulation=0; //count--当前站内人数,accumulation--累计人数enum state{ state_a, state_b, state_c, state_d,}; //枚举数据类型,包含四个状态void system_init(void){ lcd_init(); //lcd屏初始化 btim_init(); //基本定时器初始化,调控数据上云频率 buzzer_init(); //蜂鸣器初始化,两个红外光电开关同时被遮挡时发出声响警告 infrared_init(); //红外光电开关初始化 usart1_init(115200); //串口1,用于串口调试助手打印调试信息 usart2_init(115200); //串口2,与esp8266进行通信 tft_welcome(); //开机界面显示 gui_drawfont_gbk16(0,128,gray1,white, 网络连接中 ); esp8266_init();//联网,获取当前时间,接入onenet云平台 rtc_itconfig(rtc_it_interval,enable); //开启rtc周期中断(rtc中断开启的时机要在esp8266连接到onenet平后之后) gui_drawfont_gbk16(0,8,white,blue, 公交站人流检测 ); gui_drawline(0,32,128,32,gray1); gui_drawfont_gbk16(0,64,white,blue, 站内人数:); tftshownumber(4,12,count); gui_drawfont_gbk16(0,96,white,blue, 累计人数:); tftshownumber(6,12,accumulation); nvic_enableirq(btim1_irqn); //开启定时器中断,中断周期10ms}int main(void){ uint16_t state=0xffff; //红外光电开关当前状态 enum state currentstate=state_a; //开机为状态a system_init(); //系统初始化 while(1) { /*模拟乘客进站的过程: 1.装置安装位置:两红外光电传开关一前一后安装在站口 2.假设站口只允许乘客排队依次进出 3.乘客进站先遮挡红外光电开关1 4.乘客继续前进,离开红外光电开关1,遮挡红外光电开关2 5.站内人数+1,累计人数+1(若过程4中同时遮挡两个红外光电开关则蜂鸣器发出警报,等待工作人员解决故障,不计数) */ /*模拟乘客出站的过程: 1.装置安装位置:两红外光电传开关一前一后安装在站口 2.假设站口只允许乘客排队依次进出 3.乘客出站先遮挡红外光电开关2 4.乘客继续前进,离开红外光电开关2,遮挡红外光电开关1 5.站内人数-1(若过程4中同时遮挡两个红外光电开关则蜂鸣器发出警报,等待工作人员解决故障,不计数) */ state=cw_gpioa->idr & 0x0011; //获取两个红外光电开关数据io当前状态 if(state==0x0000) buzzer_ring; //控制蜂鸣器 else buzzer_off; switch(currentstate) //初步模仿状态机编程模式 { case state_a: if(state==0x0011) currentstate=state_b; break; case state_b: if(state==0x0001) currentstate=state_c; else if(state==0x0010) currentstate=state_d; break; case state_c: if(state==0x0010) {count++;accumulation++;currentstate=state_a;tftshownumber(4,12,count);tftshownumber(6,12,accumulation);} break; case state_d: if(state==0x0001) {if(count!=0) count--; currentstate=state_a;tftshownumber(4,12,count);} break; } if(send_flag) { onenet_senddata(); //数据上传到onenet esp8266_clear(); //清除缓存 send_flag=0; } }}  
      四、效果演示
连接网络


传感器测量时需要考虑的几个问题
提升PCB板layout质量的6个细节
采用FPGA的SPWM变频系统设计
联发科与中国联通、中国电信共同携手推动5G关键技术落地
PCB设计中控制阻抗有何重要性
基于CW32单片机的公交站人流检测系统设计
画面处理轻而易举,T2751Q显示器做你的生产力工具!
在i.MX RT的FreeRTOS MCUXpresso工程中添加runtime
迪龙采用DSP控制器打造高性能数字式电动汽车DCDC电源
说到机海战术,如今运用的最成熟的非华为莫属
vivo年度旗舰vivo X9开箱谍照!
5G时代倒计时,Verizon能否可以抓住这次机遇
小米新机Meri曝光,搭载小米松果自主处理器?
154亿下的思考:2012华为手机所犯下的错
串口服务器在广播监控中的应用
联想到底想干什么?又是砍掉手机又是投资农业
IBM收购红帽进军云计算市场
安卓手机企业持续提升手机售价
恒流电路原理图设计方案介绍
居民供暖室温无线监测系统