加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機送餐機器人快遞機器人_ESP8266_APP_WIFI(原理圖+PCB+源碼)

08/06 09:20
2385
服務支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關方案
  • 方案介紹
  • 相關文件
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

原理圖PCBAltium Designer

程序編譯器:keil4 / 5

編程語言:C語言

設計編號:C0056

功能介紹

小車通過三個紅外探頭進行線路識別,兩個紅外傳感器識別停止的地點,手機連接WIFI后通過APP傳輸相關的送貨信息,小車行駛到相關對應的送貨地點就停止卸貨。

1、裝置上具有紅外線感應尋跡的功能,在指定軌道布線之內(nèi),小車能遵循路線的范圍行走,不跑偏、不失控,若未在指定的軌道上不做出任何反應原地待命。

2、派送的地址通過手機APP進行信息傳輸,即具有APP地點配送功能,在APP設置配送的地點,小車走到相應的地點后進行停止卸貨,若不小心走到的地點為非配送地點,則繼續(xù)行走到軌道外,等待人工重新操作。

3、機器人電池供電具有方便的替換性,當供電電池沒電時,工作人員只需將備用電池進行更換即可,省去充電的麻煩。

img

以下為本設計資料展示圖:

? 51單片機最小系統(tǒng)相對簡單,除了主控芯片電源供電外,只需要在外圍搭建一個晶振、和兩個起振電容即可,該系統(tǒng)中的晶振由單片機可支持的最大頻率有關,一般在12MHZ左右,起振電容在15P到30P之間。系統(tǒng)的供電在5V左右,而系統(tǒng)的起振只需大于3V即可,系統(tǒng)中通常會加入一個復位按鍵,該按鍵的作用在于當系統(tǒng)運行著繁瑣的程序中,若該程序驅(qū)動的外圍器件初始化是一個相對較久的傳感器,而程序運行過程出現(xiàn)BUG如法繼續(xù)運行的情況下,手動按下復位按鈕即可完成系統(tǒng)的重啟,無需斷電。如下圖所示為該單片機最小系統(tǒng)。

原理圖

img

PCB

imgimg

程序

img

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;		//計數(shù)變量

/********************************************************
函數(shù)名稱:void delayms(uint ms)
函數(shù)作用:毫毛延時函數(shù)
參數(shù)說明:ms為延時的毫秒數(shù)
********************************************************/
void delayms(uint ms)
{
	unsigned char i=100,j;
	for(;ms;ms--)
	{
		while(--i)
		{
			j=10;
			while(--j);
		}
	}
}
void delay (unsigned int a)	   //這是一個延時函數(shù)
{
	 unsigned char i;
	 while( --a != 0)
	 {
	 	for(i = 0; i < 8; i++);
	 }         
}
/********************************************************
函數(shù)名稱:void display()
函數(shù)作用:正常顯示
參數(shù)說明:
********************************************************/
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)//第一個地點識別到
				 {
							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); 
							}	
		}			
	}	

}	
/********************************************************
函數(shù)名稱:void main()
函數(shù)作用:主函數(shù)
參數(shù)說明:
********************************************************/
void main()
{	
	LCD_init();				    //LCD1602初始化
	lcd1602_write_pic(0x00,pic);//將自定義字符“°”寫入到LCD1602中
	ESP8266_uart();//ESP8266配置參數(shù)
	ESP8266_init();			    //ESP8266初始化
	while(1)			        //死循環(huán)
	{	
		display();	        //顯示當狀態(tài)
	}
}

設計說明書

img

設計背景

機器人賦予人的概念是替代人工做一些高效率或者難以完成的事,隨著物聯(lián)網(wǎng)時代的發(fā)展,目前市場上出現(xiàn)的相關機器人越來越多,比如送餐機器人,洗碗機器人,無人機監(jiān)控交通機器人等,不管是否具有人的外觀形態(tài),能幫助人工完成繁瑣而復雜的工作,具有人的替代性,就統(tǒng)稱機器人。

但隨著目前互聯(lián)網(wǎng)的發(fā)達,各種電商平臺的崛起,物流行業(yè)也跟著興旺起來,不管是從小公司還是知名上市大公司,物流分煉的分配大部分都是依靠人工,不僅效率慢而且還會隨著外部因素的增加導致分煉錯誤的事件發(fā)生,因為物流的人工運輸成本較高,工作質(zhì)量也隨著不同物流公司的管理制度出現(xiàn)不同的服務。尤其是購物節(jié)期間,物流物件的增多給人工的工作量帶來了很大的壓力,尤其是在總部公司的物件地方分煉,要保證精準高效率的分煉配送是相當?shù)挠须y度,若有一款智能分配物件派送地址并且制定的送貨區(qū)卸貨拉貨,豈不是方便快捷高效率很大,于是快遞機器人的想法就表現(xiàn)的非常具有意義性,本文的設計理念就是基于該現(xiàn)象提出的做法,相信在今后的市場肯定有廣闊應用場景和一席之地。

主要完成的工作

要整體的實現(xiàn)快遞機器人的實驗,不僅僅要從理論的分析,還需要實際的設計,包括軟件硬件的設計,將三者結(jié)合才能實現(xiàn)本次裝置設計的需求,所需要的研究內(nèi)容如下:

1、對快遞機器人的工作原理、結(jié)構(gòu)概念進行深入的研究和設計,提出多種可實行的方案,包括單片機以及相關傳感器的選型,分析這幾個選型方案的優(yōu)缺點,選出最佳的設計方案。

2、對選定的傳感器和單片機進行理論上的資源分析,包括該器件的控制方式、資源利用以及精度換算等,為后期的硬件設計和軟件編寫做鋪墊。

3、采用相關的原理圖繪制工具,對整體電路進行線路繪制,并導入PCB布線布局,再利用外圍器件將繪制的原理圖進行焊接實物利。

4、對硬件結(jié)構(gòu)焊接完成后,勾勒整體的程序流程圖,再采用相關的程序編寫軟件對主程序、各個子程序進行程序的編寫和調(diào)試。

設計文件

開發(fā)資料下載

img

  • 設計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
STM32F103CBT6TR 1 STMicroelectronics Mainstream Performance line, Arm Cortex-M3 MCU with 128 Kbytes of Flash memory, 72 MHz CPU, motor control, USB and CAN

ECAD模型

下載ECAD模型
$9.18 查看
ATMEGA64A-AU 1 Atmel Corporation RISC Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 16MHz, CMOS, PQFP64, 14 X 14 MM, 1 MM HEIGHT, 0.80 MM PITCH, GREEN, PLASTIC, MS-026AEB, TQFP-64

ECAD模型

下載ECAD模型
$4.99 查看
DS3234S# 1 Maxim Integrated Products Real Time Clock, Non-Volatile, 1 Timer(s), CMOS, PDSO20, 0.300 INCH, ROHS COMPLIANT, SOP-20
$8.75 查看

相關推薦

電子產(chǎn)業(yè)圖譜