程序編譯器:keil4 / 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0056
功能介紹
小車(chē)通過(guò)三個(gè)紅外探頭進(jìn)行線路識(shí)別,兩個(gè)紅外傳感器識(shí)別停止的地點(diǎn),手機(jī)連接WIFI后通過(guò)APP傳輸相關(guān)的送貨信息,小車(chē)行駛到相關(guān)對(duì)應(yīng)的送貨地點(diǎn)就停止卸貨。
1、裝置上具有紅外線感應(yīng)尋跡的功能,在指定軌道布線之內(nèi),小車(chē)能遵循路線的范圍行走,不跑偏、不失控,若未在指定的軌道上不做出任何反應(yīng)原地待命。
2、派送的地址通過(guò)手機(jī)APP進(jìn)行信息傳輸,即具有APP地點(diǎn)配送功能,在APP設(shè)置配送的地點(diǎn),小車(chē)走到相應(yīng)的地點(diǎn)后進(jìn)行停止卸貨,若不小心走到的地點(diǎn)為非配送地點(diǎn),則繼續(xù)行走到軌道外,等待人工重新操作。
3、機(jī)器人的電池供電具有方便的替換性,當(dāng)供電電池沒(méi)電時(shí),工作人員只需將備用電池進(jìn)行更換即可,省去充電的麻煩。
以下為本設(shè)計(jì)資料展示圖:
? 51單片機(jī)最小系統(tǒng)相對(duì)簡(jiǎn)單,除了主控芯片和電源供電外,只需要在外圍搭建一個(gè)晶振、和兩個(gè)起振電容即可,該系統(tǒng)中的晶振由單片機(jī)可支持的最大頻率有關(guān),一般在12MHZ左右,起振電容在15P到30P之間。系統(tǒng)的供電在5V左右,而系統(tǒng)的起振只需大于3V即可,系統(tǒng)中通常會(huì)加入一個(gè)復(fù)位按鍵,該按鍵的作用在于當(dāng)系統(tǒng)運(yùn)行著繁瑣的程序中,若該程序驅(qū)動(dòng)的外圍器件初始化是一個(gè)相對(duì)較久的傳感器,而程序運(yùn)行過(guò)程出現(xiàn)BUG如法繼續(xù)運(yùn)行的情況下,手動(dòng)按下復(fù)位按鈕即可完成系統(tǒng)的重啟,無(wú)需斷電。如下圖所示為該單片機(jī)最小系統(tǒng)。
原理圖
PCB
程序
main函數(shù)
#include<reg52.h> //頭文件
#include<LCD1602.h>
#include<ESP8266.h>
#include<EEPROM.h>
/*****************燈、蜂鳴器、按鍵引腳定義*******************/
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; //計(jì)數(shù)變量
/********************************************************
函數(shù)名稱(chēng):void delayms(uint ms)
函數(shù)作用:毫毛延時(shí)函數(shù)
參數(shù)說(shuō)明:ms為延時(shí)的毫秒數(shù)
********************************************************/
void delayms(uint ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
void delay (unsigned int a) //這是一個(gè)延時(shí)函數(shù)
{
unsigned char i;
while( --a != 0)
{
for(i = 0; i < 8; i++);
}
}
/********************************************************
函數(shù)名稱(chēng):void display()
函數(shù)作用:正常顯示
參數(shù)說(shuō)明:
********************************************************/
void display()
{
if(ESP8266_f==1)//接收到WIFI控制指令
{
if(Hand("+IPD,0,1:A"))
{
temp_f=1;
}
else
if(Hand("+IPD,0,1:B"))
{
temp_f=2; diqu_f=0;
}
else
if(Hand("+IPD,0,1:C"))
{
temp_f=3;
}
else
if(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)//第一個(gè)地點(diǎn)識(shí)別到
{
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))//三個(gè)都檢測(cè)到黑線或者白線停止
{
moto1=0;moto2=0;moto3=0;moto4=0;
}
if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右邊檢測(cè)到
{
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))//左邊檢測(cè)到
{
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))//三個(gè)都檢測(cè)到黑線或者白線停止
{
moto1=0;moto2=0;moto3=0;moto4=0;
}
if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右邊檢測(cè)到
{
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))//左邊檢測(cè)到
{
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))//三個(gè)都檢測(cè)到黑線或者白線停止
{
moto1=0;moto2=0;moto3=0;moto4=0;
}
if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右邊檢測(cè)到
{
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))//左邊檢測(cè)到
{
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))//三個(gè)都檢測(cè)到黑線或者白線停止
{
moto1=0;moto2=0;moto3=0;moto4=0;
}
if((red1==1&&red2==0&&red3==0)||(red1==1&&red2==1&&red3==0))//右邊檢測(cè)到
{
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))//左邊檢測(cè)到
{
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);
}
}
}
}
/********************************************************
函數(shù)名稱(chēng):void main()
函數(shù)作用:主函數(shù)
參數(shù)說(shuō)明:
********************************************************/
void main()
{
LCD_init(); //LCD1602初始化
lcd1602_write_pic(0x00,pic);//將自定義字符“°”寫(xiě)入到LCD1602中
ESP8266_uart();//ESP8266配置參數(shù)
ESP8266_init(); //ESP8266初始化
while(1) //死循環(huán)
{
display(); //顯示當(dāng)狀態(tài)
}
}
設(shè)計(jì)說(shuō)明書(shū)
設(shè)計(jì)背景
機(jī)器人賦予人的概念是替代人工做一些高效率或者難以完成的事,隨著物聯(lián)網(wǎng)時(shí)代的發(fā)展,目前市場(chǎng)上出現(xiàn)的相關(guān)機(jī)器人越來(lái)越多,比如送餐機(jī)器人,洗碗機(jī)器人,無(wú)人機(jī)監(jiān)控交通機(jī)器人等,不管是否具有人的外觀形態(tài),能幫助人工完成繁瑣而復(fù)雜的工作,具有人的替代性,就統(tǒng)稱(chēng)機(jī)器人。
但隨著目前互聯(lián)網(wǎng)的發(fā)達(dá),各種電商平臺(tái)的崛起,物流行業(yè)也跟著興旺起來(lái),不管是從小公司還是知名上市大公司,物流分煉的分配大部分都是依靠人工,不僅效率慢而且還會(huì)隨著外部因素的增加導(dǎo)致分煉錯(cuò)誤的事件發(fā)生,因?yàn)槲锪鞯娜斯み\(yùn)輸成本較高,工作質(zhì)量也隨著不同物流公司的管理制度出現(xiàn)不同的服務(wù)。尤其是購(gòu)物節(jié)期間,物流物件的增多給人工的工作量帶來(lái)了很大的壓力,尤其是在總部公司的物件地方分煉,要保證精準(zhǔn)高效率的分煉配送是相當(dāng)?shù)挠须y度,若有一款智能分配物件派送地址并且制定的送貨區(qū)卸貨拉貨,豈不是方便快捷高效率很大,于是快遞機(jī)器人的想法就表現(xiàn)的非常具有意義性,本文的設(shè)計(jì)理念就是基于該現(xiàn)象提出的做法,相信在今后的市場(chǎng)肯定有廣闊應(yīng)用場(chǎng)景和一席之地。
主要完成的工作
要整體的實(shí)現(xiàn)快遞機(jī)器人的實(shí)驗(yàn),不僅僅要從理論的分析,還需要實(shí)際的設(shè)計(jì),包括軟件和硬件的設(shè)計(jì),將三者結(jié)合才能實(shí)現(xiàn)本次裝置設(shè)計(jì)的需求,所需要的研究?jī)?nèi)容如下:
1、對(duì)快遞機(jī)器人的工作原理、結(jié)構(gòu)概念進(jìn)行深入的研究和設(shè)計(jì),提出多種可實(shí)行的方案,包括單片機(jī)以及相關(guān)傳感器的選型,分析這幾個(gè)選型方案的優(yōu)缺點(diǎn),選出最佳的設(shè)計(jì)方案。
2、對(duì)選定的傳感器和單片機(jī)進(jìn)行理論上的資源分析,包括該器件的控制方式、資源利用以及精度換算等,為后期的硬件設(shè)計(jì)和軟件編寫(xiě)做鋪墊。
3、采用相關(guān)的原理圖繪制工具,對(duì)整體電路進(jìn)行線路繪制,并導(dǎo)入PCB布線布局,再利用外圍器件將繪制的原理圖進(jìn)行焊接實(shí)物利。
4、對(duì)硬件結(jié)構(gòu)焊接完成后,勾勒整體的程序流程圖,再采用相關(guān)的程序編寫(xiě)軟件對(duì)主程序、各個(gè)子程序進(jìn)行程序的編寫(xiě)和調(diào)試。
設(shè)計(jì)文件
開(kāi)發(fā)資料下載