本设计:
基于STM32单片机智能跟随小车_红外遥控(程序+原理图+PCB+论文报告)
原理图:Altium Designer
程序编译器:keil 5
编程语言:C语言
编号C0021
资料下载
【腾讯文档】C0021 网盘链接
https://docs.qq.com/doc/DS1JjTFhXRHZXRnJj
功能描述:
1.以STM32F103RBT6为主控芯片,实现对小车的控制,使小车能够做出前进、后退、左转、右转等基本行驶动作,通过红外遥控控制小车工作模式的转换(自由行走避障模式、跟随模式)
2.利用压力传感器测重,放在小车上物品的重量在500g范围以内,可以跟随,如果超过范围,就停止不动,蜂鸣器响提示超重。
原理图(提供源文件):
PCB(提供源文件):
源程序(提供完整程序):
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "adc.h"
#include "remote.h"
#include "hx711.h"
#include <string.h>
u8 Model=0; //ģʽ
u8 PWM_WIDTH=28;
u8 RunModel=0;
void Hw_Process()
{
u8 key;
key=Remote_Scan();
if(key)
{
Beep=1;
delay_ms(100); //ÑÓʱ300ms
Beep=0;
printf("rnºìÍâ¼üÖµ= %drn",key);
}
if(key==224)// - :½øÈë ×ÔÓÉÒ£¿Ø±ÜÕÏģʽ
{
RunModel=0;
}
else if(key==168)// - :½øÈë ¸úËæģʽ
{
RunModel=1;
}
if(RunModel==0) //×ÔÓÉÒ£¿Ø±ÜÕÏģʽ£¬Ò£¿Ø¿ØÖÆ
{
if(key==194)// ÔÝÍ£ >||
{
Model=0;
printf("rnֹͣrn");//
}
else if(key==34)//|<<
{
Model=4;
delay_ms(500); //ÑÓʱ300ms
Model=1;
printf("rn×órn");//
}
else if(key==2) //>>|
{
Model=3;
delay_ms(500); //ÑÓʱ300ms
Model=1;
printf("rnÓÒrn");//
}
else if(key==162) //CH-
{
Model=1;
printf("rnÇ°½ørn");//
}
else if(key==98) //CH
{
Model=2;
printf("rnºóÍËrn");//
}
else if(key==48) // °´Ï¼ü1
{
PWM_WIDTH=40;
printf("rn1µµrn");//
}
else if(key==24) // °´Ï¼ü2
{
PWM_WIDTH=35;
printf("rn2µµrn");//
}
else if(key==122) // °´Ï¼ü3
{
PWM_WIDTH=28;
printf("rn3µµrn");//
}
}
}
int main(void)
{
u16 adcx;
unsigned long adtemp,adtemp1;
u16 Weight=0;
u16 temp1,temp2;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
uart_init(9600);
//uart2_init(9600);
TIM3_Int_Init(10,5199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½10Ϊ1ms ¿ØÖÆС³µ·½Ïò¼°ËÙ¶È
CH_SR04_Init();//³¬Éù²¨ÉèÖóõʼ»¯
Remote_Init(); //ºìÍâ½ÓÊÕ³õʼ»¯
//ADInit();
Beep=1;
delay_ms(100); //ÑÓʱ300ms
Beep=0;
delay_ms(100); //ÑÓʱ300ms
Beep=1;
delay_ms(100); //ÑÓʱ300ms
Beep=0;
printf("rn-----------------------------------------------rn");//
adtemp=HX711_Read(); //ÏȶÁȡƤÖضÔÓ¦µÄAD¡£×¢Ò⣺ÉϵçÇ° ³ÆÖØÅÌÉϲ»ÄÜ·ÅÈκÎÎïÆ·£¬ÒÔÃâÔì³É²âÁ¿²»×¼¡£
Model=0;
while(1)
{
Hw_Process();//ºìÍâÒ£¿Ø´¦Àí
if(RunModel==0) //×ÔÓÉÒ£¿Ø±ÜÕÏģʽ£¬Ò£¿Ø¿ØÖÆ +³¬Éù²¨±ÜÕÏ
{
temp1=Senor_Using_Left()*10;
printf("rn×ó·½¾àÀë= %d cm",temp1);//´®¿Ú´òÓ¡³öµçѹÐÅÏ¢
temp2=Senor_Using_Right()*10;
printf("ÓÒ·½¾àÀë= %d cmrn",temp2);//´®¿Ú´òÓ¡³öµçѹÐÅÏ¢
if((temp1<250||temp2<250)&&Model==1)//Ç°·½ÕÏ°Ì«½ü£¬ÐèÒª±ÜÕÏ
{
Model=0;
delay_ms(300); //ÑÓʱ300ms
Model=2;//ºóÍË
delay_ms(300); //ÑÓʱ300ms
Model=4;//ÓÒת
delay_ms(300); //ÑÓʱ300ms
Model=1;//Ç°½ø
}
}
else if(RunModel==1) //½øÈë×Ô¶¯¸úËæģʽ
{
adtemp1=HX711_Read();
if(adtemp1>adtemp) //Åжϼì²âµ½AD´óÓÚƤÖØʱ£¬ÈÏΪÓÐÎïÌå·ÅÖá£
{
Weight=(adtemp1-adtemp)*0.002388; //¸ù¾Ý´®¿Úµ÷ÊÔ¸ÃϵÊý¼ÆËã¹ý³ÌΪ£º200g ¡Â£¨8494856£¨·ÅÖÃ200gÎïÌå¶ÔÓ¦AdÖµ£©-8411097£¨ÎÞÎïÌå·ÅÖÃʱÊä³öADÖµ£©£©
printf("rn ÖØÁ¿=%d grn",Weight);
}
if(Weight>500)//Èç¹ûÖØÎï´óÓÚ 500g ·äÃùÆ÷±¨¾¯¡£²»¸úËæ
{
Beep=1;
delay_ms(300); //ÑÓʱ300ms
Beep=0;
delay_ms(300); //ÑÓʱ300ms
}
else
{
temp1=Senor_Using_Left()*10;
printf("rn×ó·½¾àÀë= %d cm",temp1);//´®¿Ú´òÓ¡³öµçѹÐÅÏ¢
temp2=Senor_Using_Right()*10;
printf("ÓÒ·½¾àÀë= %d cmrn",temp2);//´®¿Ú´òÓ¡³öµçѹÐÅÏ¢
if((temp1<200)||(temp2<200)) // 200= 20cm ×óÓÒÓÐÒ»·½Ð¡ÓÚ20cm
{
Model=0;//Í£Ö¹
}
else if((temp1>1000)&&(temp2>1000))
{
printf("rnֹͣrn");
Model=0;//
}
else if((temp1<1000)&&(temp2<1000))
{
printf("rnÇ°½ørn");
Model=1;//
delay_ms(300); //ÑÓʱ300ms
if(temp1>temp2) //˵Ã÷´Ëʱ С³µ³µÍ·Ïà¶ÔÈËÆ«×ó£¬Ó¦ÈÃС³µÏòÓÒ¹ÕÍä
{
Model=3;//ÓÒת
printf("rnÓÒתrn");
delay_ms(200); //ÑÓʱ300ms
//
}
else if(temp2>temp1)//˵Ã÷´Ëʱ С³µ³µÍ·Ïà¶ÔÈËÆ«ÓÒ£¬Ó¦ÈÃС³µÏò×ó¹ÕÍä
{
Model=4;//×óת
printf("rn×óתrn");
delay_ms(200); //ÑÓʱ300ms
}
}
Model=0;//
}
}
}
}
论文报告:
全部资料如下:
阅读全文