電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>手勢控制機器人開源分享

手勢控制機器人開源分享

2022-11-16 | zip | 0.11 MB | 次下載 | 免費

資料介紹

描述

介紹

該項目旨在構(gòu)建一個手勢控制機器人,可用于醫(yī)院、商店、酒店、家庭等,在這些地方需要非接觸式交付,以便在 Covid-19 情況下嚴格遵守社交距離。

項目概況

該項目基本上包含兩個電路,一個發(fā)射器電路和一個接收器電路。手勢通過 MPU6050 加速度計傳感器轉(zhuǎn)換為電信號Arduino Nano 處理傳入的信號并將其發(fā)送到射頻發(fā)射器。在接收端,這些信號被射頻接收器接收并發(fā)送到Arduino Uno進行解碼。Arduino Uno 在接收到信號后,通過電機驅(qū)動器驅(qū)動電機。

第一步:傳輸電路

發(fā)射電路由一個 MPU6050 加速度傳感器、一個 Arduino Nano、一個 433 MHz 射頻發(fā)射器和一個 9V 電池組成。電池用于為 Arduino 供電,而傳感器和發(fā)射器可以由 Arduino 供電。這是因為,Arduino 可以接受 5V 至 12V 的電壓,而傳感器必須由 5V 電源供電。Arduino 的代碼已在本項目的后面部分提供。組件放置在面包板上,并根據(jù)下圖給出了連接。

pYYBAGNy7VyAV3ibAAIDC6MBEdI248.png
發(fā)射器電路
?

完成必要的連接后,它看起來應該是這樣的。在這里,我使用了移動電源而不是 9V 電池。

poYBAGNy7V-AHWPlAABSmtI6QHo024.png
?

第二步:接收電路

接收電路由一個 Arduino Uno、一個 433MHz 射頻接收器、一個 L298N H 橋電機驅(qū)動器、兩個直流電機和四個 18650 鋰離子電池組成。電池為電機驅(qū)動器供電,電機驅(qū)動器為 Arduino 供電,射頻接收器由 Arduino 供電。Arduino 的代碼已在項目的后期部分提供。組件放置在機器人底盤上,并根據(jù)下圖給出連接。

pYYBAGNy7WOAJpRcAAI24pQRRPo371.png
接收電路
?

電機及其輪子和腳輪應安裝在底盤底部。組件應用膠帶固定在頂部。如果它是像我這樣的金屬底盤,則用一層絕緣材料(如紙)將頂部絕緣。完成必要的連接后,機器人應類似于下圖。在這里,我為電機和 Arduino 使用了單獨的電源。

poYBAGNy7WWAculkAABRjg6RAKo207.png
機器人上的接收器電路
?

第三步:邏輯

MPU6050 傳感器具有加速度計和陀螺儀。對于這個項目,加速度計值是從傳感器獲得的。

  • 如果沿 x 軸的加速度值在 20 到 60 之間,則機器人應該向前移動。
  • 如果沿 x 軸的加速度值介于 -20 和 -60 之間,則機器人應該向后移動
  • 如果沿 y 軸的加速度值在 20 到 60 之間,則機器人應向左轉(zhuǎn)。
  • 如果沿 y 軸的加速度值介于 -20 和 -60 之間,則機器人應向右轉(zhuǎn)。
  • 如果以上條件均不滿足,則機器人應停止。

第 4 步:對發(fā)射器進行編程

首先,包括必要的庫。分別為 GY6050 和 RH_ASK 類創(chuàng)建實例,即 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ù)以獲取兩個軸的加速度計值,并將它們存儲在兩個變量中。

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 步:對接收器進行編程

首先,包含必要的庫并分別為 RH_ASK 和 String 類創(chuàng)建實例。

#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ū)中的值復制到字符串并在串行監(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 用于控制左電機,引腳 7 和 8 用于控制右電機。

如果接收到的字符串是 Front,機器人應該向前跑。這是通過將電機的第一個引腳設置為高電平并將下一個引腳設置為低電平來實現(xiàn)的。

如果接收到的字符串是 Back,機器人應該向后跑。這是通過將電機的第一個引腳設置為低電平并將下一個引腳設置為高電平來實現(xiàn)的。

如果接收到的字符串是右,機器人應該右轉(zhuǎn)。所以左電機應該向前轉(zhuǎn)動,右電機應該向后轉(zhuǎn)動。

如果接收到的字符串是 Left,機器人應該向左轉(zhuǎn)。所以左電機應該向后轉(zhuǎn)動,右電機應該向前轉(zhuǎn)動。

要停止機器人,請將所有電機引腳設置為低電平。

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 步:故障排除

有時電機不會按所需方向運行。首先找出哪個電機以這種方式運行。然后該電機的電線必須互換并重新連接。這有望解決這個問題。

如果接收到的緩沖區(qū)包含一些不需要的值以及消息,則使用子字符串函數(shù)從中提取消息。

機器人的工作

在構(gòu)建機器人并將代碼上傳到兩個 Arduino 之后,機器人就可以正常工作了。此處附有機器人的工作視頻

由于封鎖,我被迫使用可用的組件來完成這個項目。另外,由于同樣的原因,我用我的手機相機拍攝了這個視頻,因為質(zhì)量很差。帶來不便敬請諒解。如果您在構(gòu)建此項目時遇到任何問題,請在評論中發(fā)布。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費