一、實驗簡介
1.公交站人流檢測是一項重要的城市交通管理任務,它不僅關系到公交服務的效率和質量,還與城市交通規劃和公共安全緊密相關。首先,公交站人流檢測可以實時反饋乘客流量情況,幫助公交公司了解各線路、各站點的客流需求。其次,公交站人流檢測可以為公交公司制定和優化運營策略提供數據支持。再次,公交站人流檢測可以及時發現擁擠、擁堵等情況,提醒調度中心及時采取措施,保障乘客安全。基于此背景,我們以CW32單片機為核心,采用公交站人流檢測中常見的紅外線檢測技術,設計了一個公交站人流檢測系統,該系統可以連接到網絡獲取當前時間,并將人流數據實時上傳到OneNET云平臺進行遠程監控。
二、實驗器材
本實驗使用到了CW32-48F大學計劃開發板、ESP8266WIFI模塊、E18-D80NK紅外光電開關及Keil5開發環境。
|
CW32-48F大學計劃板
ESP8266WIFI模塊
E18-D80NK紅外光電開關
E18-D80NK紅外光電開關
實物圖
開發板上預留了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.h"
uint8_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;
}
}
}
```審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
檢測系統
+關注
關注
3文章
999瀏覽量
45476 -
CW32
+關注
關注
1文章
299瀏覽量
1846
發布評論請先 登錄
相關推薦
熱點推薦
CW32系統發啟動過程
CW32支持 2 種不同的啟動模式,通過 BOOT 引腳狀態進行選擇,啟動模式選擇電路只在芯片解復位時刻采樣 BOOT 引腳狀態,因此在芯片解復位前用戶必須根據需要設置好BOOT 引腳的電平狀態,以
發表于 12-15 07:54
CW32單片機如何讓生活更便捷
這是一種全新的生活方式,它通過接收并處理傳感器的數據,以控制智能馬桶的所有功能。感謝CW32單片機,我們可以在日常生活中無縫地融入這種新的科技。
決定我們如何生活的,已經不再只是我們的選擇,更是我們
發表于 12-11 06:11
CW32時鐘運行中失效檢測的流程是什么?CW32時鐘運行中失效檢測注意事項有哪些呢?
CW32時鐘運行中失效檢測的流程是什么?CW32時鐘運行中失效檢測注意事項有哪些?
發表于 12-10 07:22
CW32 MCU在高頻率運行下的系統穩定性的提升方案
在嵌入式系統中,CW32 MCU的高頻率運行能夠顯著提高系統的處理速度和響應能力,但也伴隨著系統穩定性問題的挑戰,特別是跑飛現象的出現。本文將深入探討
發表于 12-04 08:04
CW32 MCU溫度監測應用
最近,我在項目中使用CW32 MCU,來實現一個簡單的溫度監測系統。CW32的靈活性和性能讓我在這個應用中得心應手。以下是我的實現過程和代碼示例。
應用簡介本項目通過連接一個溫度傳感器LM35來實時
發表于 12-03 08:03
基于芯源CW32 MCU智能家居照明控制系統設計與實現
隨著智能家居的快速發展,照明控制系統成為了其重要組成部分。基于芯源CW32 MCU的智能家居照明控制系統,能夠通過無線控制、自動調節亮度、定時開關等方式,提升用戶的生**驗。CW32
發表于 12-03 06:06
如何在CW32 MCU上優化I2C通信
在嵌入式系統中,CW32 MCU的I2C接口通常用于與各種外設(如EEPROM、傳感器等)進行數據通信。為了實現高效、穩定的I2C通信,必須考慮頻率調節和數據完整性的問題。本文將聚焦于如何在CW32
發表于 11-27 06:25
CW32 MCU用什么IDE開發?
推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發CW32 MCU應用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
發表于 11-12 07:52
CW32 MCU有哪些系列?
目前CW32 MCU有通用高性能MCU、安全低功耗MCU、無線射頻MCU等3個系列。其中射頻MCU集成了無線收發器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW32W031(Sub-1G)系列。
發表于 11-12 07:34
工業4G路由器IR5000公交站臺物聯網應用解決方案
隨著城市化進程的加速,公共交通是智慧城市的重要樞紐。城市公共交通由無數的公交站臺作作為節點組合而成,其智能化升級成為提升城市出行效率與服務質量的關鍵。傳統公交站臺信息發布滯后、缺乏實時性,難以滿足
基于CW32的公交站人流檢測系統
評論