一.系统概述
本设计以STM32单片机为核心控制器,功能丰富:
1. 设计包括两个车道,通过红外识别车辆,车道1或车道2相应亮起。
2. 4个超声波传感器检测车辆是否压线,压线时触发蜂鸣器报警。
3. 集成无线感应模块,感应到车辆时控制舵机打开闸门。
4. 红外识别传感器监测4个车位占用情况,显示被占用车位并显示费用。
5. 显示屏显示日期、车位占用情况及费用信息,保持实时更新。
6. 通过无线通信模块将车辆信息及费用显示在APP上,支持远程闸门控制。
二.电路设计
电路图采用Altium Designer进行设计:
1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
2. 通过光电开关进行车辆识别检测,模块的数据输出脚与单片机的GPIO口直接连接;
3. 使用HC-SR04超声波测距模块进行前后障碍物的检测,并通过Echo(超声波接收脚)和Trig(超声波发射脚)与单片机的GPIO脚进行连接;
4. 使用RC522刷卡模块进行商品的刷卡检测,该模块采用SPI总线与单片机进行通信;
5. 通过DS1302实现时钟定时,并通过SDA、SCK、DAT三个引脚与单片机进行连接;
6. 通过ESP8266-01S将检测到数据上传到上位机,通过UART串口与单片机进行通信;
7. 通过0.96寸的OLED12864进行数据显示,采用IIC总线的形式与单片机进行通信;
8. 通过舵机控制抬杆,舵机的控制线与单片机GPIO口进行连接;
9. 使用蜂鸣器进行报警,蜂鸣器采用的有源蜂鸣器,使用NPN三极管进行蜂鸣器进行驱动。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "timer.h"
#include "string.h"
#include "math.h"
#include "stdio.h"
#include "stm32f10x.h"
#include "Control_Report_To_Police.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
Usart1_Init(9600);
delay_init();
TIM4_Init(300,7200);
LCD_Init(); //液晶屏初始化 //初始化USART
main_test(); //测试主界面
LCD_Fill(0,20,lcddev.width,lcddev.height,GRAY2);
Hcsr04Init1();
RC5222_GPIO_Init_analog_Spi();
KEY_Init();
KEY1_Init();
Beep_init();
led_init();
DS1302_GPIO_Init_Write_Time();
ALi_ESP8266_GPIO_Init();
MQTT_Buff_Init();
AliIoT_Parameter_Init();
Pic_test();
Servor_GPIO_Config_Time6_Init();
Show_Str(140,84,MAGENTA,BLUE,"星期",16,1);
Show_Str(0,183,GREEN,RED,"边线1: 米",16,1);
Show_Str(0,205,GREEN,RED,"边线2: 米",16,1);
Show_Str(160,183,GREEN,RED,"边线3: 米",16,1);
Show_Str(160,205,GREEN,RED,"边线4: 米",16,1);
while(1)
{
OLED_Display_Cotrol(); //显示控制函数
}
}