51单片机送餐机器人

  • 51单片机送餐机器人快递机器人_ESP8266_APP_WIFI(原理图+PCB+源码)
    • 功能介绍
    • 原理图
    • PCB
    • 程序
      • main函数
    • 设计说明书
      • 设计背景
      • 主要完成的工作
    • 设计文件

51单片机送餐机器人快递机器人_ESP8266_APP_WIFI(原理图+PCB+源码)

原理图PCB:Altium Designer

程序编译器:keil4 / 5

编程语言:C语言

设计编号:C0056

功能介绍

小车通过三个红外探头进行线路识别,两个红外传感器识别停止的地点,手机连接WIFI后通过APP传输相关的送货信息,小车行驶到相关对应的送货地点就停止卸货。

1、装置上具有红外线感应寻迹的功能,在指定轨道布线之内,小车能遵循路线的范围行走,不跑偏、不失控,若未在指定的轨道上不做出任何反应原地待命。

2、派送的地址通过手机APP进行信息传输,即具有APP地点配送功能,在APP设置配送的地点,小车走到相应的地点后进行停止卸货,若不小心走到的地点为非配送地点,则继续行走到轨道外,等待人工重新操作。

3、机器人的电池供电具有方便的替换性,当供电电池没电时,工作人员只需将备用电池进行更换即可,省去充电的麻烦。

以下为本设计资料展示图:

​ 51单片机最小系统相对简单,除了主控芯片和电源供电外,只需要在外围搭建一个晶振、和两个起振电容即可,该系统中的晶振由单片机可支持的最大频率有关,一般在12MHZ左右,起振电容在15P到30P之间。系统的供电在5V左右,而系统的起振只需大于3V即可,系统中通常会加入一个复位按键,该按键的作用在于当系统运行着繁琐的程序中,若该程序驱动的外围器件初始化是一个相对较久的传感器,而程序运行过程出现BUG如法继续运行的情况下,手动按下复位按钮即可完成系统的重启,无需断电。如下图所示为该单片机最小系统。

原理图

PCB

程序

main函数

#include   //头文件#include#include#include/*****************灯、蜂鸣器、按键引脚定义*******************/sbit red1    = P2^0;  sbit red2    = P2^1;  sbit red3    = P2^2; sbit red4    = P2^3;  sbit red5    = P2^4;  sbit moto1= P3^4; //sbit moto2= P3^5; //sbit moto3= P3^6; //sbit moto4= P3^7; ///************************变量定义***********************/uchar temp_f=0,diqu_f=0,diqu_f2=0;   uchar T0_num=100;//计数变量/********************************************************函数名称:void delayms(uint ms)函数作用:毫毛延时函数参数说明:ms为延时的毫秒数********************************************************/void delayms(uint ms){unsigned char i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}}void delay (unsigned int a)   //这是一个延时函数{ unsigned char i; while( --a != 0) { for(i = 0; i < 8; i++); }         }/********************************************************函数名称:void display()函数作用:正常显示参数说明:********************************************************/void display(){if(ESP8266_f==1)//接收到WIFI控制指令{if(Hand("+IPD,0,1:A"))  {temp_f=1;}elseif(Hand("+IPD,0,1:B"))  {temp_f=2;diqu_f=0;}elseif(Hand("+IPD,0,1:C"))  {temp_f=3;}elseif(Hand("+IPD,0,1:D")) {temp_f=4;}clearBuff();      //清除缓存}if(temp_f==0){moto1=0;moto2=0;moto3=0;moto4=0;  lcd1602_write_character(0,2," Waiting status ");}else{if(temp_f==1){ lcd1602_write_character(0,2," Location one   "); if(red4==1&&red5==1)//第一个地点识别到 {temp_f=0;lcd1602_write_character(0,1,"  one finish    "); }else{lcd1602_write_character(0,1,"  one working   ");if((red1==1&&red2==1&&red3==1)||(red1==0&&red2==0&&red3==0))//三个都检测到黑线或者白线停止{ moto1=0;moto2=0;moto3=0;moto4=0;}if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右边检测到  {moto1=0;moto2=1;moto3=1;moto4=0;delay(50); moto3=0;delay(100-50);  }if((red1==0&&red2==0&&red3==1)||(red1==0&&red2==1&&red3==1))//左边检测到  { moto1=1;moto2=0;moto3=0;moto4=1;delay(50); moto1=0;delay(100-50); }if((red1==0&&red2==1&&red3==0))//中间{moto1=0;moto3=0;  moto2=moto4=1;                   delay(50);                   moto2=moto4=0;                   delay(100-50); }}}if(temp_f==2){   lcd1602_write_character(0,2," Location two   ");    if(diqu_f<2){lcd1602_write_character(0,1,"  two working   ");if((red1==1&&red2==1&&red3==1)||(red1==0&&red2==0&&red3==0))//三个都检测到黑线或者白线停止{ moto1=0;moto2=0;moto3=0;moto4=0;}if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右边检测到  {moto1=0;moto2=1;moto3=1;moto4=0;delay(50); moto3=0;delay(100-50);  }if((red1==0&&red2==0&&red3==1)||(red1==0&&red2==1&&red3==1))//左边检测到  { moto1=1;moto2=0;moto3=0;moto4=1;delay(50); moto1=0;delay(100-50); }if((red1==0&&red2==1&&red3==0))//中间{moto1=0;moto3=0;moto2=moto4=1;                 delay(50);                 moto2=moto4=0;                 delay(100-50); }if(red4==0&&red5==0)diqu_f2=0;if(red4==1&&red5==1&&diqu_f2==0){diqu_f++;  diqu_f2=1;  lcd1602_write_character(0,1,"  two working 1 ");}}else{temp_f=0;diqu_f=0;diqu_f2=0;    lcd1602_write_character(0,1,"  two finish    ");}}if(temp_f==3){   lcd1602_write_character(0,2," Location three ");    if(diqu_f<3){lcd1602_write_character(0,1,"  three working ");if((red1==1&&red2==1&&red3==1)||(red1==0&&red2==0&&red3==0))//三个都检测到黑线或者白线停止{ moto1=0;moto2=0;moto3=0;moto4=0;}if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右边检测到  {moto1=0;moto2=1;moto3=1;moto4=0;delay(50); moto3=0;delay(100-50);  }if((red1==0&&red2==0&&red3==1)||(red1==0&&red2==1&&red3==1))//左边检测到  { moto1=1;moto2=0;moto3=0;moto4=1;delay(50); moto1=0;delay(100-50); }if((red1==0&&red2==1&&red3==0))//中间{moto1=0;moto3=0;moto2=moto4=1;                 delay(50);                 moto2=moto4=0;                 delay(100-50); }if(red4==0&&red5==0)diqu_f2=0;if(red4==1&&red5==1&&diqu_f2==0){diqu_f++;  diqu_f2=1;}}else{temp_f=0;diqu_f=0;diqu_f2=0;    lcd1602_write_character(0,1,"  three finish  ");}}if(temp_f==4){if((red1==1&&red2==1&&red3==1)||(red1==0&&red2==0&&red3==0))//三个都检测到黑线或者白线停止{ moto1=0;moto2=0;moto3=0;moto4=0;}if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右边检测到  {moto1=0;moto2=1;moto3=1;moto4=0;delay(50); moto3=0;delay(100-50);  }if((red1==0&&red2==0&&red3==1)||(red1==0&&red2==1&&red3==1))//左边检测到  { moto1=1;moto2=0;moto3=0;moto4=1;delay(50); moto1=0;delay(100-50); }if((red1==0&&red2==1&&red3==0))//中间{moto1=0;moto3=0;moto2=moto4=1;                 delay(50);                 moto2=moto4=0;                 delay(100-50); }}}}/********************************************************函数名称:void main()函数作用:主函数参数说明:********************************************************/void main(){LCD_init();    //LCD1602初始化lcd1602_write_pic(0x00,pic);//将自定义字符“°”写入到LCD1602中ESP8266_uart();//ESP8266配置参数ESP8266_init();    //ESP8266初始化while(1)        //死循环{display();        //显示当状态}}

设计说明书

设计背景

机器人赋予人的概念是替代人工做一些高效率或者难以完成的事,随着物联网时代的发展,目前市场上出现的相关机器人越来越多,比如送餐机器人,洗碗机器人,无人机监控交通机器人等,不管是否具有人的外观形态,能帮助人工完成繁琐而复杂的工作,具有人的替代性,就统称机器人。

但随着目前互联网的发达,各种电商平台的崛起,物流行业也跟着兴旺起来,不管是从小公司还是知名上市大公司,物流分炼的分配大部分都是依靠人工,不仅效率慢而且还会随着外部因素的增加导致分炼错误的事件发生,因为物流的人工运输成本较高,工作质量也随着不同物流公司的管理制度出现不同的服务。尤其是购物节期间,物流物件的增多给人工的工作量带来了很大的压力,尤其是在总部公司的物件地方分炼,要保证精准高效率的分炼配送是相当的有难度,若有一款智能分配物件派送地址并且制定的送货区卸货拉货,岂不是方便快捷高效率很大,于是快递机器人的想法就表现的非常具有意义性,本文的设计理念就是基于该现象提出的做法,相信在今后的市场肯定有广阔应用场景和一席之地。

主要完成的工作

要整体的实现快递机器人的实验,不仅仅要从理论的分析,还需要实际的设计,包括软件和硬件的设计,将三者结合才能实现本次装置设计的需求,所需要的研究内容如下:

1、对快递机器人的工作原理、结构概念进行深入的研究和设计,提出多种可实行的方案,包括单片机以及相关传感器的选型,分析这几个选型方案的优缺点,选出最佳的设计方案。

2、对选定的传感器和单片机进行理论上的资源分析,包括该器件的控制方式、资源利用以及精度换算等,为后期的硬件设计和软件编写做铺垫。

3、采用相关的原理图绘制工具,对整体电路进行线路绘制,并导入PCB布线布局,再利用外围器件将绘制的原理图进行焊接实物利。

4、对硬件结构焊接完成后,勾勒整体的程序流程图,再采用相关的程序编写软件对主程序、各个子程序进行程序的编写和调试。

设计文件

###开发资料下载