基于stm32的车库管理系统

该系统采用STM32微控制器,实现车牌识别、自动开闸、扫码开门等功能。硬件包括OV7670摄像头进行车牌识别,ESP8266用于无线通信,光敏传感器监控照明,烟雾传感器配合消防预警,同时提供微信小程序和web后台进行远程控制。

需求分析

1.车牌识别功能:当车辆靠近,对车牌进行识别。
2.自动开闸功能:识别完车牌,闸门自动打开
3.扫码开闸功能:无牌车或者临时车可用小程序扫码开门
4.车位计数:对停车场内进行实时统计,查询剩余车位数量。
5.收集当前停车场的明亮度对其进行判断分析从而控制照
6.自动消防预警功能:当前停车场若有浓烟或火焰,相关装置进行报警
7.停车场远程控制功能:将收集到的数据都接入到云端,而手机端和web都可以从云端获得实时数据;支持云端下发命令,从而远程控制照明系统以及警报系统。

硬件选型 ov7670摄像头 TFT液晶显示屏 ESP8266 stm32f103zet6 光敏传感器 红外避障传感器 SG90舵机 MQ2烟雾传感器 蜂鸣器

实现实物照片

硬件端

在这里插入图片描述在这里插入图片描述

微信小程序端

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

web后台

在这里插入图片描述
车牌识别硬件端代码

#include "stm32f10x.h"
#include "stm32f10x_it.h" 
#include "key.h"
#include "usart.h"
#include "delay.h"
#include "lcd.h"
#include "ov7670.h"
#include "rcc.h"
#include "ShowChar.h"
#include "discern.h"
#include "24l01.h" 	
//////////////////////////////////////////////////////////////////////////////////	 
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//µ¥Æ¬»ú£ºSTM32F103RCT6
//ov7670³µÅÆÊ¶±ð³ÌÐò	   
//ÐÞ¸ÄÈÕÆÚ:2018/9/2
//°æ±¾£ºV1.0
//Ò«öεç×Ó
//ÌÔ±¦:https://shop391399929.taobao.com/?spm=a230r.7195193.1997079397.92.3f857ca2IOfCeJ
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//All rights reserved									  
////////////////////////////////////////////////////////////////////////////////// 	   

extern vu8 Red_Vlaue, Green_Value ,Blue_Value;//ãÐÖµ

uint8_t *door;
int doorflag=0;
int main(void)
{  
	 uint8_t str[20];
	unsigned int scan_time = 0;

 
	STM32_Clock_Init(16);                                    //³õʼ»¯Ê±ÖÓ
	uart_init(9600);	 
	LCD_Init();	
	Key_Init();	                                             //³õʼ»¯ KEY1 PA8
	OV7670_GPIO_Init();                                      //OV7670Òý½Å³õʼ»¯£¬·ÅÔÚ´®¿Ú³õʼ»¯Ç°Ãæ
	 	NRF24L01_Init();    		//³õʼ»¯NRF24L01 
	 // printf("³õʼ»¯³É¹¦\r\n");                                 //³õʼ»¯´®¿Ú	

	TIM3_Configuration();                                    //10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms  
	LCD_Fill(0x6666);		      //³õʼ»¯Ë¢ÂÌÉ«ÆÁ
	while(!Sensor_Init());    //ÉãÏñͷоƬ³õʼ»¯
	
	LCD_Fill(0xF800);         //³É¹¦ºóË¢ºìÉ«ÆÁ
	delayms(100);

	scan_time = 2;
	
  //¶þÖµ»¯ãÐÖµ	
	Red_Vlaue = 24;
	Green_Value = 53;
	Blue_Value = 24;

	while(NRF24L01_Check())
	{
		printf("¼ì²âʧ°Ü\r\n");
	}	
	while(1)
	{
			sprintf(str,"%d",doorflag);
			door=str;
			NRF24L01_TX_Mode();
			NRF24L01_TxPacket(door);
		if(scan_time <= 1) {
			CameraDiscern();                                    //³µÅÆÊ¶±ð
		}
		if(scan_time > 1) {
			CameraScan();                                       //ÉãÏñͷɨÃè²âÊÔ
			LCD_ShowNum(30,220,21 - scan_time, 2); 
			while(GPIO_ReadInputDataBit(KEY1_PORT,KEY1_PIN)==0) //K1°´¼ü°´Ï       Ìø³öÍ£Áôʱ¼äÓëÊÕ·ÑÇé¿ö
			{
				LCD_Fill(0x00);                                   //ºÚÆÁ
				Show_Title();                                     //ÏÔʾ±êÌâ
				Show_Card(0);                                     //ÏÔʾµÚ¼¸×鳵ů
				Show_Card(1);
				Show_Card(2);
				Show_Card(3);
				Show_Card(4);
				delay_ms(5000);
			}
			
		
		}
		if(scan_time == 20) {
			 scan_time = 0;
		}
		scan_time++;
	} 
}

主函数代码
while(1) 
	{		
		car_hongwai();
			Get_ADC();	
		light=Lsens_Get_Val();
		ValueCompare();	
				key_num=KEY_Scan(0);
			if(key_num==1)
			{
			
				TIM_SetCompare1(TIM3,500);
				
				key_num=0;
				GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		}
		if(key_num==2)
		{
			TIM_SetCompare1(TIM3,185);
			GPIO_SetBits(GPIOE,GPIO_Pin_5);
			key_num=0;
			
		}
			if(++timeCount >= 200)		//ʱ¼ä¼ä¸ô5s
		{
				OneNet_SendData();//·¢ËÍÊý¾Ý¸øonenet
				timeCount = 0;
				ESP8266_Clear();
				printf("ÑÌÎíŨ¶È£º%dppm%d%d\r\n",smog,light,chewei);
		}
		
		dataPtr = ESP8266_GetIPD(0);//»ñȡƽ̨·µ»ØµÄÊý¾Ý
		if(dataPtr != NULL)//Èç¹û·µ»ØÊý¾Ý²»Îª¿Õ
			OneNet_RevPro(dataPtr);//ƽ̨·µ»ØÊý¾Ý¼ì²â
		delay_ms(10);

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值