百度网盘资料链接:https://pan.baidu.com/s/1Qxm7A7pz6ktaHefDTkzhwg
提取码:c3ol
CSDN资料下载链接:https://download.csdn.net/download/mbs520/13134025
取走记得点赞~
一、材料准备
1、核心装备:wifi摄像头模块
名称:正点原子WiFi摄像头模块
简介:minifly四轴配套模块,体积小重量轻、WiFi通信60米距离 、720 30帧高清画面
2、电机选择
名称:霍尔编码电机
型号:620转
这里用直流电机即可,这个贵,网上搜直流减速电机,最好带个轮子,方便安装
3、小车框架
博主这个就直接锯木板了
或者直接购买智能小车底盘
4、主控芯片选择
名称:STC89C52单片机最小系统板
购买链接:https://m.tb.cn/h.43JCfUl?sm=0792c6
5、电机驱动
名称:LN298
特点:驱动电流大,工作稳定,就是比较费电
6、电源
名称:18650锂电池
电压:3.7V
(我的是废充电宝下拆下的,比较丑)
二、电路原理
电路原理图(看不清请下载资料)
按图连接好
三、源代码
/*******************************************
名称:51WIFI视频小车
作者:化作尘
时间:2020年11月20日11点27分
邮箱:2809786963@qq.com
*******************************************/
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned char
/***小车控制定义**/
#define DIR P1
#define QIAN 0xaa
#define HOU 0x55
#define ZUO 0x5a
#define YOU 0xa5
#define STOP 0x00
void uart_init();
void uart_tx_string(uchar *str);
void uart_tx_byte(uchar str);
void Delayms(unsigned int n);
void Delayus(unsigned int n);
uchar rec;//接收到的字节
uchar buff[9]="00000000";//接收到的数据包
uchar flag;//数据包开始接收标志
uchar num; //数组下标
uchar buf_ready;//接收到数据包置1
/*********************************************************
函数名:主函数
*********************************************************/
void main()
{
uart_init();
DIR = STOP;
Delayms(1);
buff[3] = 0x80;
buff[4] = 0x80;
uart_tx_string("hello buletooch car!n");
while(1)
{
if(buf_ready == 1)//接收一组数据完成标志
{
buf_ready = 0;
}
if(buff[3]>0xd0){DIR = QIAN;Delayus(5);DIR = STOP;Delayus(5);}//buff[3]控制前后
else if(buff[3]<0x20){DIR = HOU;Delayus(5);DIR = STOP;Delayus(5);}
else if(buff[4]>0xd0){DIR = YOU;Delayus(15);DIR = STOP;Delayus(5);}//buff[4]控制左右
else if(buff[4]<0x20){DIR = ZUO;Delayus(15);DIR = STOP;Delayus(5);}
else DIR = STOP;
}
}
/*********************************************************
函数名:串口中断
*********************************************************/
void uart_timer() interrupt 4
{
if(RI)
{
RI = 0;
rec=SBUF;
if(rec==0x66 && flag==0)//数据头
{
flag = 1;
num=0;
buff[0] = rec;
}
else if(flag == 1)//开始接收数据包buff[8]
{
num++;
buff[num] = rec;
if(num==7 && buff[7]==0x99)//接收到数据尾
{
buf_ready = 1;
flag = 0;
num = 0;
}
else if(num == 7)//接收错误
{
flag = 0;
num = 0;
}
}
}
}
/*********************************************************
函数名:串口初始化
波特率:19200
晶振:11.059M
*********************************************************/
void uart_init()
{
TMOD=0x20;
TH1=0xfd; //9600
TL1=0xfd;
PCON=0x80;//9600*2
SCON=0x50;
TR1=1; //start Timer1
EA=1;
ES=1;
}
/*********************************************************
函数名:串口发送一个字节
*********************************************************/
void uart_tx_byte(uchar str)
{
SBUF=str;
while(!TI);
Delayms(2);
}
/*********************************************************
函数名:串口发送一个字符串
*********************************************************/
void uart_tx_string(uchar *str)
{
while(*str!='