1. 系统概要
本系统基于STM32微控制器,借助红外传感器实现对进出车辆的有效识别与数量统计。我们设计了显示模块与矩阵键盘输入,以便司机登记联系电话,并通过停车确认按键验证车辆停妥。完成停车后,系统通过人体感应与按键双确认机制,确保车辆已停放在位,随后点亮LED灯进行提醒,并将停车位置信息以短信形式通知司机。本系统包含STM32单片机、显示装置、红外计数传感器、人体传感器、继电器、LED灯、矩阵键盘以及GSM通信模块等关键部件。
2. 电路设计
本设计采用Altium Designer软件进行电路布局,选用STM32F103C8T6微控制器作为系统核心,利用光电式开关识别车辆,并由红外热释电传感器检测人体存在,通信模块则使用了SIM800C,负责通过GSM发送短信。司机可通过矩阵键盘输入接收短信的号码,车辆及人员信息和手机号码信息均会在LCD1602显示屏上显示。
3.程序设计
#include "main.h"
#include "dma.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
int main(void)
{
MX_GPIO_Init();
MX_DMA_Init();
MX_USART2_UART_Init();
MX_USART1_UART_Init();
MX_TIM1_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
usermain() ;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}
4.资料内容
24-32-01