資料介紹
描述
介紹
該項(xiàng)目旨在構(gòu)建一個手勢控制機(jī)器人,可用于醫(yī)院、商店、酒店、家庭等,在這些地方需要非接觸式交付,以便在 Covid-19 情況下嚴(yán)格遵守社交距離。
項(xiàng)目概況
該項(xiàng)目基本上包含兩個電路,一個發(fā)射器電路和一個接收器電路。手勢通過 MPU6050 加速度計(jì)傳感器轉(zhuǎn)換為電信號,Arduino Nano 處理傳入的信號并將其發(fā)送到射頻發(fā)射器。在接收端,這些信號被射頻接收器接收并發(fā)送到Arduino Uno進(jìn)行解碼。Arduino Uno 在接收到信號后,通過電機(jī)驅(qū)動器驅(qū)動電機(jī)。
第一步:傳輸電路
發(fā)射電路由一個 MPU6050 加速度傳感器、一個 Arduino Nano、一個 433 MHz 射頻發(fā)射器和一個 9V 電池組成。電池用于為 Arduino 供電,而傳感器和發(fā)射器可以由 Arduino 供電。這是因?yàn)?,Arduino 可以接受 5V 至 12V 的電壓,而傳感器必須由 5V 電源供電。Arduino 的代碼已在本項(xiàng)目的后面部分提供。組件放置在面包板上,并根據(jù)下圖給出了連接。
![pYYBAGNy7VyAV3ibAAIDC6MBEdI248.png](https://file.elecfans.com/web2/M00/7B/1C/pYYBAGNy7VyAV3ibAAIDC6MBEdI248.png)
完成必要的連接后,它看起來應(yīng)該是這樣的。在這里,我使用了移動電源而不是 9V 電池。
![poYBAGNy7V-AHWPlAABSmtI6QHo024.png](https://file.elecfans.com/web2/M00/7A/8D/poYBAGNy7V-AHWPlAABSmtI6QHo024.png)
第二步:接收電路
接收電路由一個 Arduino Uno、一個 433MHz 射頻接收器、一個 L298N H 橋電機(jī)驅(qū)動器、兩個直流電機(jī)和四個 18650 鋰離子電池組成。電池為電機(jī)驅(qū)動器供電,電機(jī)驅(qū)動器為 Arduino 供電,射頻接收器由 Arduino 供電。Arduino 的代碼已在項(xiàng)目的后期部分提供。組件放置在機(jī)器人底盤上,并根據(jù)下圖給出連接。
![pYYBAGNy7WOAJpRcAAI24pQRRPo371.png](https://file.elecfans.com/web2/M00/7B/1C/pYYBAGNy7WOAJpRcAAI24pQRRPo371.png)
電機(jī)及其輪子和腳輪應(yīng)安裝在底盤底部。組件應(yīng)用膠帶固定在頂部。如果它是像我這樣的金屬底盤,則用一層絕緣材料(如紙)將頂部絕緣。完成必要的連接后,機(jī)器人應(yīng)類似于下圖。在這里,我為電機(jī)和 Arduino 使用了單獨(dú)的電源。
![poYBAGNy7WWAculkAABRjg6RAKo207.png](https://file.elecfans.com/web2/M00/7A/8D/poYBAGNy7WWAculkAABRjg6RAKo207.png)
第三步:邏輯
MPU6050 傳感器具有加速度計(jì)和陀螺儀。對于這個項(xiàng)目,加速度計(jì)值是從傳感器獲得的。
- 如果沿 x 軸的加速度值在 20 到 60 之間,則機(jī)器人應(yīng)該向前移動。
- 如果沿 x 軸的加速度值介于 -20 和 -60 之間,則機(jī)器人應(yīng)該向后移動。
- 如果沿 y 軸的加速度值在 20 到 60 之間,則機(jī)器人應(yīng)向左轉(zhuǎn)。
- 如果沿 y 軸的加速度值介于 -20 和 -60 之間,則機(jī)器人應(yīng)向右轉(zhuǎn)。
- 如果以上條件均不滿足,則機(jī)器人應(yīng)停止。
第 4 步:對發(fā)射器進(jìn)行編程
首先,包括必要的庫。分別為 GY6050 和 RH_ASK 類創(chuàng)建實(shí)例,即 acc 和 driver。0x68 代表傳感器的 I2C 地址。
#include <RH_ASK.h>
#include <Wire.h>
#include <GY6050.h>
GY6050 acc(0x68);
RH_ASK driver;
char* msg="100";
在 setup 函數(shù)中,首先初始化加速度傳感器。然后開始串行通信,以 9600 的波特率顯示串行監(jiān)視器中的值。然后,檢查 RH_ASK 驅(qū)動程序是否已正確初始化。
void setup()
{
acc.initialisation();
Serial.begin(9600);
if (!driver.init())
Serial.println("init failed");
}
在循環(huán)函數(shù)中,聲明一個名為 msg 的變量,用于將消息發(fā)送給接收者。將必要的參數(shù)傳遞給刷新函數(shù)以獲取兩個軸的加速度計(jì)值,并將它們存儲在兩個變量中。
void loop()
{
const char *msg = "hello";
int AcX=acc.refresh('A', 'X');
int AcY=acc.refresh('A', 'Y');
delay(25);
- 如果 AcX 的值介于 20 和 60 之間,則在串行監(jiān)視器中打印 Front 并將值 Front 存儲在 msg 中。
- 如果 AcX 的值介于 -20 和 -60 之間,則在串行監(jiān)視器中打印 Back 并將值 Back 存儲在 msg 中。
- 如果 AcY 的值介于 20 和 60 之間,則在串行監(jiān)視器中打印 Left 并將值 Left 存儲在 msg 中。
- 如果 AcY 的值介于 -20 和 -60 之間,則在串行監(jiān)視器中打印 Right 并將值 Right 存儲在 msg 中。
- 如果上述條件都不滿足,則將值 Stop 存儲在 msg 中并在串行監(jiān)視器中打印 Stop。
if(AcX>=20 && AcX<=60)
{
Serial.println("Front");
msg="Front";
}
else if(AcX<=-20 && AcX>=-60)
{
Serial.println("Back");
msg="Back";
}
else if(AcY>=20&&AcY<60)
{
Serial.println("Left");
msg="Left";
}
else if(AcY>=-60&&AcY<-20)
{
Serial.println("Right");
msg="Right";
}
else
{
Serial.println("Stop");
msg="Stop";
}
delay(100);
然后通過 send 函數(shù)發(fā)送消息并等待任何先前的消息傳輸完成。
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(200);
}
第 5 步:對接收器進(jìn)行編程
首先,包含必要的庫并分別為 RH_ASK 和 String 類創(chuàng)建實(shí)例。
#include
RH_ASK driver;
String str;
在 setup 函數(shù)中,以 9600 的波特率啟動串行通信,并檢查 RH_ASK 驅(qū)動程序是否已正確初始化。
void setup()
{
Serial.begin(9600);
if (!driver.init())
Serial.println("init failed");
}
在循環(huán)函數(shù)內(nèi)部,創(chuàng)建一個緩沖區(qū)來存儲從發(fā)送器接收到的值。然后將緩沖區(qū)中的值復(fù)制到字符串并在串行監(jiān)視器中打印。
void loop()
{
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];//max size of the buffer
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) //Receive the value and store it in a buffer
{
str=(char*)buf; //Copy the message from the buffer to a string
Serial.println(str);
}
delay(200);
數(shù)字引腳 5 和 6 用于控制左電機(jī),引腳 7 和 8 用于控制右電機(jī)。
如果接收到的字符串是 Front,機(jī)器人應(yīng)該向前跑。這是通過將電機(jī)的第一個引腳設(shè)置為高電平并將下一個引腳設(shè)置為低電平來實(shí)現(xiàn)的。
如果接收到的字符串是 Back,機(jī)器人應(yīng)該向后跑。這是通過將電機(jī)的第一個引腳設(shè)置為低電平并將下一個引腳設(shè)置為高電平來實(shí)現(xiàn)的。
如果接收到的字符串是右,機(jī)器人應(yīng)該右轉(zhuǎn)。所以左電機(jī)應(yīng)該向前轉(zhuǎn)動,右電機(jī)應(yīng)該向后轉(zhuǎn)動。
如果接收到的字符串是 Left,機(jī)器人應(yīng)該向左轉(zhuǎn)。所以左電機(jī)應(yīng)該向后轉(zhuǎn)動,右電機(jī)應(yīng)該向前轉(zhuǎn)動。
要停止機(jī)器人,請將所有電機(jī)引腳設(shè)置為低電平。
if(str=="Front")
{
digitalWrite(5,HIGH); //5,6 Left motor
digitalWrite(6,LOW);
digitalWrite(7,HIGH); //7,8 Right motor
digitalWrite(8,LOW);
}
else if(str=="Back")
{
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
else if(str=="Left")
{
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
else if(str=="Right")
{
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
else
{
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
}
第 6 步:故障排除
有時(shí)電機(jī)不會按所需方向運(yùn)行。首先找出哪個電機(jī)以這種方式運(yùn)行。然后該電機(jī)的電線必須互換并重新連接。這有望解決這個問題。
如果接收到的緩沖區(qū)包含一些不需要的值以及消息,則使用子字符串函數(shù)從中提取消息。
機(jī)器人的工作
在構(gòu)建機(jī)器人并將代碼上傳到兩個 Arduino 之后,機(jī)器人就可以正常工作了。此處附有機(jī)器人的工作視頻。
由于封鎖,我被迫使用可用的組件來完成這個項(xiàng)目。另外,由于同樣的原因,我用我的手機(jī)相機(jī)拍攝了這個視頻,因?yàn)橘|(zhì)量很差。帶來不便敬請諒解。如果您在構(gòu)建此項(xiàng)目時(shí)遇到任何問題,請?jiān)谠u論中發(fā)布。
- 手勢控制機(jī)器人開源項(xiàng)目
- WiFi控制機(jī)器人開源項(xiàng)目
- 手勢控制機(jī)器人開源硬件
- 簡單的藍(lán)牙控制機(jī)器人開源
- 藍(lán)牙控制機(jī)器人開源
- 藍(lán)牙控制機(jī)器人車開源分享
- 使用TensorFlow對自平衡機(jī)器人進(jìn)行手勢控制
- 藍(lán)牙控制機(jī)器人開源分享
- WiFi控制機(jī)器人開源分享
- 語音控制機(jī)器人開源分享
- 如何制作手勢控制機(jī)器人-MadeWithArduino(發(fā)射器)
- 基于DSP和PC的農(nóng)業(yè)機(jī)器人控制系統(tǒng) 18次下載
- 機(jī)器人PID控制概述 27次下載
- 機(jī)器人設(shè)計(jì)教程之機(jī)器人控制和決策子系統(tǒng) 25次下載
- 手勢對工業(yè)機(jī)器人進(jìn)行控制 0次下載
- 如何使用PLC控制機(jī)器人 1882次閱讀
- 字節(jié)發(fā)布機(jī)器人領(lǐng)域首個開源視覺-語言操作大模型,激發(fā)開源VLMs更大潛能 561次閱讀
- 機(jī)器人技術(shù)中常用的路徑規(guī)劃算法的開源庫 1188次閱讀
- 如何利用ADXL335實(shí)現(xiàn)手勢控制機(jī)器人的設(shè)計(jì) 3107次閱讀
- 基于PIC單片機(jī)和PSC控制器實(shí)現(xiàn)機(jī)器人控制系統(tǒng)的設(shè)計(jì) 4085次閱讀
- 機(jī)器人控制系統(tǒng)分類_機(jī)器人控制系統(tǒng)有哪些 2.6w次閱讀
- 工業(yè)機(jī)器人技術(shù)應(yīng)用 5343次閱讀
- 機(jī)器人控制器有哪些類型_機(jī)器人控制器發(fā)展 1.2w次閱讀
- 關(guān)于工業(yè)機(jī)器人智能控制的四種控制方式 6479次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8322次閱讀
- 移動機(jī)器人控制系統(tǒng)設(shè)計(jì)與仿真 3640次閱讀
- 機(jī)器人控制系統(tǒng)的基本單元與機(jī)器人控制系統(tǒng)的特點(diǎn)分析 1.1w次閱讀
- 機(jī)器人的運(yùn)動控制的介紹和如何將機(jī)器人的運(yùn)動控制分成4種任務(wù) 1w次閱讀
- AI和VR在機(jī)器人控制的實(shí)在應(yīng)用匯總 5620次閱讀
- 基于PLC的機(jī)器人伺服運(yùn)動控制系統(tǒng)設(shè)計(jì)詳解 1.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論