【单片机毕业设计】基于STM32单片机的wifi无线遥控避障智能车智能六路循迹小车--物联网 嵌入式

22 篇文章 1 订阅
10 篇文章 1 订阅

1、前言

 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目,今天要分享的是基于STM32单片机的wifi无线遥控避障智能车智能六路循迹小车

2、简介

基于STM32单片机的wifi无线遥控避障智能车智能六路循迹小车

1、oled屏幕实时显示当前状态
2、通过app控制小车自动循迹模式和遥控模式
3、自动循迹模式下:小车通过循迹模块根据黑线自动循迹运行
4、app遥控模式下:通过app遥控小车前进、后退、左转、右转、停止
5、app遥控模式下:遇到障碍物躲避障碍物。

3、组成

本设计由STM32F103C8T6单片机最小系统+红外传感器电路+OLED液晶显示电路+WIFI模块+L298N模块+蜂鸣器报警电路+电源电路组成。

4、实现效果

整体展示

5、设计原理

5.1STM32F103C8T6简介

  1. STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
  2. 一、STM32的主要优点:
  3. (1)使用ARM最新的、先进架构的Cortex-M3内核
  4. (2) 优异的实时性能
  5. (3) 杰出的功耗控制
  6. (4) 出众及创新的外设
  7. (5) 最大程度的集成整合
  8. (6) 易于开发,可使产品快速将进入市场
  9. 二、STM32——最佳的平台选项
  10. 对于使用同一平台进行多个项目开发而言,STM32是最
  11. 佳的选择:
  12. (1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
  13. (2) 从苛求性能的应用到电池供电的应用
  14. (3) 从简单而成本敏感的应用到高端应用
  15. (4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
  16. STM32F103C8T6单片机核心板接口电路图如下图所示。

STM32单片机核心板接口原理图

6、部分核心代码

#include "sys.h"
 
char TCPSend[100] = {0};
char Tou[20] = {"1009,123,0009,"};


u8 ReadFlag;		// 定时
uint8_t bj = 0;
uint8_t Yundong_flag = 0;
uint8_t Speedpwm=0;
u8 mode=0;
u8 mode_falg=0;
 int main(void)
 {	
  delay_init();
	gpio_Init();
	HW_IO_Init();	 
	PWM_Init();//初始化PWM
	motor_Init();	//初始化
	YHGUI_Config();//oled初始化	 
	uart1_init(115200);
    TIM3_Int_Init(499,7199);//50ms  	 

	YHGUI_DispString(30,16,"Init...",16,1); 

	 
	delay_ms(1000);  //ÑÓʱ1s	
	YHGUI_Clear();
	 
	YHGUI_DispString(0, 0,"循迹避障车",16,1);

		
	while(1)
	{
			if(mode==0)
				YHGUI_DispString(0, 32," 循迹模式",16,1);		
				if(mode_falg==0)
				{
					mode_falg=1;
					Motor_Front(Speed,Speed);//		
				}			{	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* 这个版本是根据管理员iuviking的51单片机WIFI小车下位机程序(通信协议版) 版本修改而来,我已经加入了八路舵机控制(p0口),ε咫ヤ涯/ */ #include<reg52.h> #include<math.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int uchar Buffer =0; //从串口接收的数据 uint URTAReceivedCount=0,n=1; uchar data Tempdatatable[5],CommandDatatable[5];//数据包 uchar serVal[2]; uint pwm[]={1120,1190,1382,1382,1382,1382,1382,1382}; //初始90度,(实际是1382.4,取整得1382) uchar pwm_flag=0; uint code ms0_5Con=461; //0.5ms计数 (实际是460.8,取整得461) uint code ms2_5Con=2304; //2.5ms计数 bit key_stime_ok; sbit StatusLight=P2^0; //状态灯 sbit MainLight=P2^1; //主大灯 sbit servo0=P0^0; //舵机控制 sbit servo1=P0^1; sbit servo2=P0^2; sbit servo3=P0^3; sbit servo4=P0^4; sbit servo5=P0^5; sbit servo6=P0^6; sbit servo7=P0^7; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay_1ms(uint i)//1ms延时 { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } void TurnOnStatusLight() { StatusLight=0; } /******************************************************************** * 名称 : Send_Data() * 功能 : 向上位机传送字符 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Send_Data(uchar type,uchar cmd,uchar dat) { uchar data Buffer[5];//构建数据包 uchar *p; uint Send_Count=0; p = Buffer; Buffer[0]=0XFF; Buffer[1]=type; Buffer[2]=cmd; Buffer[3]=dat; Buffer[4]=0XFF; while(1) { if(*p==0XFF) { Send_Count++; //0XFF标志统计位 } SBUF = *p; //发送 while(!TI) //如果发送完毕,硬件会置位TI,等待发送完毕 { _nop_(); } p++; TI = 0; if(Send_Count == 2) //当统计到两次出现0XFF,则认为一个数据包发送完毕,跳出循环 { TI = 0; break;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值