STM32项目分享:基于STM32的酒店送餐小车的设计与搭建
“我们不做一锤子买卖,只做手艺成长的长期伙伴!”
目录
一、视频展示
基于STM32的酒店送餐小车的设计与实现 -视频分享
二、项目简介
题目:基于STM32的酒店送餐小车的设计与搭建
主控: STM32f103c8t6
显现:OLED显示屏
三个循迹模块
避障检测:超声波
声光报警:LED+蜂鸣器
三按键
电池供电
功能:
1、OLED液晶显示屏选择餐桌,显示到达状态。
到达餐桌位置,可按键选择供餐点,到达后停留十秒,然后绕圈回到出发点。就是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 "MOTOR.h"
#include "sim900a.h"
extern u8 res,res1;
u8 mode,set,speed,cound,speed_flag;
u8 step,count,count1=0,fang_flag=1,sen_flag=1;
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(98,98);OLED_ShowCH(72,4,"左转");
}
}
}
void TrackWave(void)
{
if(length>20)
{
BEEP=1;
HW_Track(); //循迹程序
OLED_ShowCH(72,4," ");
}
else
{
BEEP=0;
stop();
OLED_ShowCH(72,4,"停止");
}
length = Senor_Using(); //超声波程序
}
int main (void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
char English_message[]={"The food trolley has arrived, please pick up your food in time"}; //英文短信内容
char phonenumber[]={"15980211168"}; //接受短信的号码
OLED_Init();
delay_ms(1);
OLED_Clear();
input_init();
output_init();
TIM2_Int_Init(71,9999);
Usart3_Init(38400);
TIM_PWM_Init(100,8);
CH_SR04_Init();
motor_init();
OLED_ShowCH(72,4,"停止");
OLED_ShowCH(40,2,"停止模式");
sim900a_send_English_message(English_message,phonenumber);
while(1)
{
time_count++;
if(time_count>=100)
{
time_count=0;
count++;
}
key_scan(1,1,1);
OLED_ShowCH(0,0," 送 餐 小 车 ");
OLED_ShowCH(0,2,"模式:");
OLED_ShowCH(0,4,"运动状态:");
OLED_ShowCH(0,6,"位置:");
// OLED_ShowNum(96,6,count,2,16);
if(add_flag==1)
{
add_flag=0;
speed_flag++;
if(speed_flag>=4)
speed_flag=0;
}
if(speed_flag==0)
{
step=0;
OLED_ShowCH(40,6,"停止");
}
else if(speed_flag==1)
{
step=1;
OLED_ShowCH(40,6,"一号");
}
else if(speed_flag==2)
{
step=2;
OLED_ShowCH(40,6,"二号");
}
else if(speed_flag==3)
{
step=3;
OLED_ShowCH(40,6,"三号");
}
if(dec_flag==1)
{
dec_flag=0;
set=2;
}
if(set_flag==1)
{
stop();
set_flag=0;
set++;
if(set>=2){set=0;}
}
if(set==1)
{
mode = 1;
OLED_ShowCH(40,2,"循迹模式");
}
if(set==0)
{
fang_flag=1;
count1=0;
mode = 0;
BEEP=1;
count=0;
OLED_ShowCH(40,2,"停止模式");
}
if(set==2)
{
mode = 2;
OLED_ShowCH(40,2,"避障模式");
}
if(mode == 0)
{
stop();
OLED_ShowCH(72,4,"停止");
}
else if(mode == 1)
{
if(fang==0)
{
if(fang_flag==1)
{
fang_flag=0;
count1++;
}
}
else
{
fang_flag=1;
}
if(count1==step+1)
{
if(count>=10)
{
sen_flag=1;
TrackWave();
OLED_ShowCH(96,6," ");
}
else
{
stop();
if(sen_flag==1)
{
sen_flag=0;
sim900a_send_English_message(English_message,phonenumber);
}
OLED_ShowCH(96,6,"送达");
}
}
else
{
OLED_ShowCH(96,6," ");
count=0;
TrackWave();
}
if(count1==5)
{
count1=0;
set=0;
stop();
OLED_ShowCH(96,6," ");
}
}
else if(mode==2)
{
Wave();
add_flag=0;
}
}
}
六、资料分享
点击即可查看当前资料分享。

浙公网安备 33010602011771号