欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

電子發(fā)燒友App

硬聲App

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

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

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

手勢控制機(jī)器人開源分享

2022-11-16 | zip | 0.11 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

該項(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
發(fā)射器電路
?

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

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
接收電路
?

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

poYBAGNy7WWAculkAABRjg6RAKo207.png
機(jī)器人上的接收器電路
?

第三步:邏輯

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ā)布。


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

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