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