"我们不做一锤子买卖,只做技术成长的长期伙伴!"
目录
一、视频展示
二、项目简介
题目:基于单片机的智能宠物玩具的设计
主控:STM32
显示:OLED显示屏
超声波避障
循迹模块
wifi通信:esp8266透传
L293电机驱动
ASRPRO语音模块
声光报警:LED+蜂鸣器
功能:
1、屏幕显示当前功能运行状态,有三种,分别为遥控模式(此模式下既可以手机控制,也可以语音控制)
循迹模式,避障模式。
2、蜂鸣器可鸣叫,可手动触发。
三、原理图设计

四、PCB硬件设计

五、程序设计
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "lcd.h"
#include "timer.h"
#include "IOput.h"
#include "HW_Track.h"
#include "wave.h"
#include "usart.h"
#include "IRC.h"
#include "MOTOR.h"
extern u8 res,res1;
u8 mode,set,speed,cound;
void Wave(void)
{
length = Senor_Using(); //超声波程序
if(length>20)
{
go(70,70);OLED_ShowCH(72,4,"前进");
}
else
{
time_count = 0;
while(time_count <= 100)
{
back(70,70);OLED_ShowCH(72,4,"后退");
}
time_count = 0;
while(time_count <= 60)
{
turn_left(70,70);OLED_ShowCH(72,4,"左转");
}
}
}
void TrackWave(void)
{
if(length>20)
{
HW_Track(); //循迹程序
OLED_ShowCH(72,4," ");
JDQ=0;
}
else
{
stop();
OLED_ShowCH(72,4,"停止");
JDQ=1;
}
length = Senor_Using(); //超声波程序
}
void Blueteeth(void)
{
if(res1 =='a' || res ==0x01)
{
res1=0;
res=0;
go(70,70);
OLED_ShowCH(72,4,"前进");
}
else if(res1 =='b' || res ==0x02)
{
res1 = 0;
res = 0;
back(70,70);
OLED_ShowCH(72,4,"后退");
}
else if(res1 =='c' || res ==0x03)
{
res1 = 0;
res = 0;
turn_left(70,70);
OLED_ShowCH(72,4,"左转");
}
else if(res1 =='d' || res ==0x04)
{
res1 = 0;
res = 0;
turn_right(70,70);
OLED_ShowCH(72,4,"右转");
}
else if(res1 =='e' || res ==0x05)
{
res1 = 0;
res = 0;
stop();
OLED_ShowCH(72,4,"停止");
}
}
int main (void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
OLED_Init();
delay_ms(1);
OLED_Clear();
input_init();
output_init();
TIM2_Int_Init(71,9999);
TIM_PWM_Init(100,8);
CH_SR04_Init();
Usart3_Init(9600);
Usart1_Init(9600);
motor_init();
Drv_Hw_Init ();
OLED_ShowCH(72,4,"停止");
OLED_ShowCH(40,2,"停止模式");
while(1)
{
Med_Hw_ReadKeyValue();
key_scan(1,1,1);
OLED_ShowCH(0,0,"智能宠物玩具设计");
OLED_ShowCH(0,2,"模式:");
OLED_ShowCH(0,4,"运动状态:");
if(set_flag==1|| res1 =='q' || res ==0x07)
{
res1 = 0;
res = 0;
stop();
set_flag=0;
set++;
if(set>=4){set=0;}
}
if(set==3)
{
mode = 3;
OLED_ShowCH(40,2,"避障模式");
}
if(set==1)
{
mode = 1;
OLED_ShowCH(40,2,"循迹模式");
}
if(set==2)
{
mode = 2;
OLED_ShowCH(40,2,"遥控模式");
}
if(set==0)
{
mode = 0;
OLED_ShowCH(40,2,"停止模式");
}
if(mode == 0)
{
stop();
OLED_ShowCH(72,4,"停止");
}
else if(mode == 1)
{
TrackWave();
}
else if(mode == 2)
{
Blueteeth();
}
else if(mode == 3)
{
Wave();
}
if(res1 =='s' || res ==0x06)
{
res1=0;
res=0;
BEEP=~BEEP;
}
}
}
六、资料分享
点击即可查看当前资料分享。