<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于ESP32開發的螞蟻機器人方案

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-11-28 09:45 ? 次閱讀

Maker: Markus Opitz/譯:趣無盡 Cherry(轉載請注明出處)

螞蟻是一種神奇的多足生物,它們只需要很少的資源,就可以做很多事情。本期項目中的螞蟻機器人是基于 ESP32 開發的。

一般來說,許多六條腿的機器人每條腿最多需要三個舵機,那么總共就需要 18 個舵機,這會消耗了大量的能量,也與螞蟻本身的體型相沖突。

但在這個項目中只用到三個舵機、一個夾具和一點機械設備,就實現了一只極簡主義的螞蟻機器人,除開電池,重量約 114 克。

組件清單

SG90 舵機 x 3
ESP32-C3 XIAO 或其他 ESP32/ESP8266 板 x 1
回形針 x 若干
小螺絲 x 若干
5V 降壓轉換器 MP1584 x 1
9V 或 7.4LiPo 電池 x 1

3D 打印部件

所有的零部件使用 Tinkercad 設計并使用 Ultimaker Cura 制作。


949bca02-8d85-11ee-939d-92fbcf53809c.jpg

安裝螞蟻軀干部分

使用鉗子或者鋸和銼刀拆下所有舵機上的凸舌。

94c769f0-8d85-11ee-939d-92fbcf53809c.jpg
如圖所示,將打印底部支架用兩個尖頭螺釘固定到舵機 2 上,舵機的中間是可以擺動。它還有一個小蓋子,稍后用螺絲固定。

94d6f190-8d85-11ee-939d-92fbcf53809c.jpg
94e8f124-8d85-11ee-939d-92fbcf53809c.jpg

再用熱膠固定舵機 1 和舵機 3 以及舵機 2 的蓋子。

94f31cc6-8d85-11ee-939d-92fbcf53809c.jpg
安裝腿部零件之前,舵機必須居中。因此,可以使用小程序 centregs.ino 將舵機設置為 90。

安裝舵機和腿部
每個舵機帶動一對腿,前后移動幾度。舵機 1 和舵機 3 會同時移動,所以可以考慮在微控制器上使用相同的引腳去控制。

94fd2aa4-8d85-11ee-939d-92fbcf53809c.jpg
舵機 2 是以相反的方向移動,并且擺動時會將腿正確的牽引到地面。這種擺動是由連接到舵機 1 的回形針產生的。
將每個支腿安裝到舵機上,可能還需要鉆孔。

9516040c-8d85-11ee-939d-92fbcf53809c.jpg
安裝機械部分
安裝時使用螺釘和回形針,通過腿的安裝板將舵機 1 連接到舵機 2 的蓋子上。這樣就可以跟舵機 1 同步同角度傾斜。

952bffb4-8d85-11ee-939d-92fbcf53809c.jpg
9540d006-8d85-11ee-939d-92fbcf53809c.jpg
安裝頭部和夾子

954e1644-8d85-11ee-939d-92fbcf53809c.jpg
頭部的夾子造型其實不是必須的,但它有很好的額外功能。

將不帶臂的舵機安裝到框內。首先將舵機設置為 90(可參考 centreslegs.ino)。將合適的夾子零件放在齒輪上,并用舵機螺釘固定。然后把第二部分放在軸上。

955a648a-8d85-11ee-939d-92fbcf53809c.jpg
用熱膠水將夾子倒置地粘在頭部,然后合上頭部。把頭放在軀干的頂部,并用膠水粘牢。

956c1504-8d85-11ee-939d-92fbcf53809c.jpg
安裝尾部電池
將尾部連接到軀干上并粘合。它將容納電池和微控制器。

957ffc54-8d85-11ee-939d-92fbcf53809c.jpg
95955180-8d85-11ee-939d-92fbcf53809c.jpg

電路和軟件

9V 的電池能夠為舵機提供足夠的能量,但電壓必須通過降壓轉換器降低到 5V。

95a2e174-8d85-11ee-939d-92fbcf53809c.jpg
四個舵機的電源通過 5V 并聯運行,數據線連接到 ESP32 開發板。它不需要更多的連接。不過,它還可以連接到傳感器LED。

95b75f5a-8d85-11ee-939d-92fbcf53809c.jpg

95cfa998-8d85-11ee-939d-92fbcf53809c.jpg

將文件名為 “Blue_Ant-RemoteXY.ino” 傳輸到 ESP32 開發板。同時遙控器已經包含在程序中??蓞⒖糋etting-Started-With-ESP32-C3-XIAO

適用于 ESP32-C3 的舵機庫:ESP32C3Servo

/*
/ Blue Ant (2023) Markus Opitz
*/
// ************ RemoteXY *************
#define REMOTEXY_MODE__ESP32CORE_BLE
#include 
#include 


// RemoteXY connection settings
#define REMOTEXY_BLUETOOTH_NAME "ESP32-C3_Remote"


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 43 bytes
  { 255,3,0,0,0,36,0,16,202,1,5,32,17,37,30,30,2,26,24,4,
  128,13,23,37,6,2,78,129,0,3,3,24,6,165,66,108,117,101,32,65,
  110,116,0 };
// this structure defines all the variables and events of your control interface
struct {


    // input variables
  int8_t joystick_1_x; // from -100 to 100  
  int8_t joystick_1_y; // from -100 to 100  
  int8_t slider_1; // =0..100 slider position
    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
// *************************


// ************************* Servos
#include 
Servo servo1;  Servo servo2;  Servo servo3;  // Servo3 is attacheched to same pin as Servo1 !!!
Servo Jaws;
int pos1, pos2;    // variable to store the servo position
int centerpos = 90;
int minpos = centerpos-12;
int maxpos = centerpos+12;
int gripper;
//int speed1;




void setup() {
  Serial.begin(115200);
  servo1.attach(2); servo2.attach(3); servo3.attach(4);  //Servo3 can be attached to same pin as Servo1 //GPIOs on ESP32-C3!
  Jaws.attach(5);
  delay(2);
  servo1.write(centerpos);servo2.write(centerpos-7);servo3.write(centerpos);  //center all servos
  Jaws.write(centerpos);
 delay(3000);


 RemoteXY_Init ();
}




void loop() {
   RemoteXY_Handler ();


    if ((RemoteXY.joystick_1_x) < -30) {
      //Serial.println("<-- left   ");
      left(16);
    }
    if ((RemoteXY.joystick_1_x) > 30) {
      //Serial.println("  right -->");
      right(16);
    }
    if ((RemoteXY.joystick_1_y) < -30) {
      //Serial.println(" backwards ");
      // not yet installed
    }
    if ((RemoteXY.joystick_1_y) > 30) {
      //Serial.println(" ^forward^ ");
      forward(16);
    }
    gripper = map((RemoteXY.slider_1), 0, 100, 75,105);
    Jaws.write(gripper);
    delay(1);
}




void forward(int speed1) {       //speed1 in ms as delay between steps


  for (pos1 = minpos; pos1 <= maxpos; pos1 += 2) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1);servo3.write(pos1);Serial.print(pos1);Serial.print("  ");  // front/rear legs
    servo2.write(pos2);  Serial.print(pos2); Serial.println("");                  // center legs
    delay(speed1);
  }


  for (pos1 = maxpos; pos1 >= minpos; pos1 -= 2) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1);servo3.write(pos1);      // front/rear legs
    servo2.write(pos2);
    delay(speed1);
  }
}




void right(int speed1) {           //speed1 in ms as delay between steps


  for (pos1 = minpos; pos1 <= maxpos; pos1 += 2) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1+10);servo3.write(pos1+10);  // front/rear legs
    servo2.write(pos2+10);                           // center legs
    delay(speed1);
  }


  for (pos1 = maxpos; pos1 >= minpos; pos1 -= 1) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1+10);servo3.write(pos1+10);      // front/rear legs
    servo2.write(pos2+10);            
    delay(speed1);
  }
}


void left(int speed1) {               //speed1 in ms as delay between steps


    //pos2 = maxpos + 1 -7; //-8 is to correct center position
  for (pos1 = minpos; pos1 <= maxpos; pos1 += 1) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1-10);servo3.write(pos1-10);  // front/rear legs
    servo2.write(pos2-10);                           // center legs
    delay(speed1);
  }


  for (pos1 = maxpos; pos1 >= minpos; pos1 -= 2) {
    pos2 = map(pos1, minpos, maxpos, maxpos, minpos);


    servo1.write(pos1-10);servo3.write(pos1-10);      // front/rear legs
    servo2.write(pos2-10);            
    delay(speed1);
  }
}

源碼文件在這里可以下載
https://make.quwj.com/project/475

遠程控制

95e601e8-8d85-11ee-939d-92fbcf53809c.jpg

遙控器已包含在代碼中。
在 https://remotexy.com/ 中,你可以為智能手機遙控器創建自己的界面,并將其插入到程序“Blue_Ant-RemoteXY.ino” 中。


智能手機上安裝應用程序,激活藍牙,打開 “RemoteXY”,搜索并與配對 “ESP32-C3_Remote” 。

完成

96121ec2-8d85-11ee-939d-92fbcf53809c.jpg

現在你可以啟動這只螞蟻,等待片刻,激活應用程序,它就可以跑起來了。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    206

    文章

    27221

    瀏覽量

    201832
  • 機械
    +關注

    關注

    8

    文章

    1184

    瀏覽量

    39772
  • 降壓轉換器
    +關注

    關注

    6

    文章

    1174

    瀏覽量

    86179
  • 舵機
    +關注

    關注

    17

    文章

    241

    瀏覽量

    40505
  • ESP32
    +關注

    關注

    13

    文章

    899

    瀏覽量

    16001

原文標題:僅由三個舵機驅動的機械螞蟻

文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【開源作品】基于樹莓派4B、ESP32制作的桌面機器人、氣象站、立方光!

    ,并為電源線的自由移動預留了充足的空間。為了提高機器人運動的穩定性,我們還特意使車身與底座輕微接觸。 另外,我們特意選擇藍白配色方案,因為藍白組合能提升機器人的視覺吸引力。 >&
    發表于 03-05 16:52

    DIY推薦!基于 ESP32 做的三舵機機械螞蟻

    。 但在這個項目中只用到三個舵機、一個夾爪和一點機械設備,就實現了一只極簡主義的螞蟻機器人,除開電池,重量約 114 克。 組件清單 SG90 舵機 x 3 ESP32/ESP82
    發表于 03-28 09:40

    DIY推薦!自制一個基于ESP32的沙畫機器人

    作者在高二的時候就做過一個非?;A的沙畫機器人,現在準備去普渡大學上學了,正好也打算帶上它,于是想著用這倆年新學到的技能重新設計一下之前的沙畫機器人。 所需材料 3D打印機 ESP32
    發表于 04-15 15:09

    最新的達芬奇機器人開發套件及方案

    科技提供的達芬奇機器人開發板,充分利用了達芬奇的技術優勢,集成了圖像處理,馬達,探測傳感器 接口(紅外線或超聲波),包含有各種例子源代碼(輸入、輸出、定時器、串口、外部中斷、機器人漫步、循跡等
    發表于 04-23 15:09

    智能掃地機器人解決方案

    ` 本帖最后由 開發快 于 2017-5-27 14:46 編輯 咨詢更多方案請移步開發快官網:kaifakuai.com一 前言1.方案背景世界上第一臺真正使用的
    發表于 05-27 13:31

    怎么利用esp32cam開發板實現面對面機器人的設計?

    怎么利用esp32cam開發板實現面對面機器人的設計?
    發表于 01-19 06:38

    基于ESP32-CAM的簡易監控遙控車參考方案

    一個簡單的監控 RC 機器人,帶有 ESP32-CAM 和 Arduino Uno 模塊,由任何智能手機上的網絡瀏覽器控制。ESP32-CAM 模塊是一種廉價、低功耗的模塊,但它為視覺、串行通信
    發表于 08-03 14:59

    基于ESP32的基礎機器人

    描述多合一ESP32 ROBOT PCB
    發表于 08-26 06:50

    【開源資料】使用ESP32C3超簡單制作迷你四足機器人

    esp8266做過小四足機器人,這次用esp32C3重制了,主要的原因是C3有藍牙可以用藍牙遙控非常方便邊,隨時連接隨時玩不占用手機WiFi。 而且esp32C3雖然管腳不多,但在8
    發表于 09-21 11:15

    基于esp32開發

    基于esp32開發板,用于物聯網開發
    發表于 08-07 08:56 ?104次下載

    PCB ESP32基礎機器人

    電子發燒友網站提供《PCB ESP32基礎機器人.zip》資料免費下載
    發表于 08-03 11:21 ?4次下載
    PCB <b class='flag-5'>ESP32</b>基礎<b class='flag-5'>機器人</b>

    Arduino ESP32多合一機器人開源

    電子發燒友網站提供《Arduino ESP32多合一機器人開源.zip》資料免費下載
    發表于 10-21 10:50 ?2次下載
    Arduino <b class='flag-5'>ESP32</b>多合一<b class='flag-5'>機器人</b>開源

    使用Websockets創建自己的ESP32機器人汽車

    電子發燒友網站提供《使用Websockets創建自己的ESP32機器人汽車.zip》資料免費下載
    發表于 11-04 09:40 ?0次下載
    使用Websockets創建自己的<b class='flag-5'>ESP32</b><b class='flag-5'>機器人</b>汽車

    如何制作ESP32 CAM板監控機器人汽車

    電子發燒友網站提供《如何制作ESP32 CAM板監控機器人汽車.zip》資料免費下載
    發表于 06-29 10:24 ?6次下載
    如何制作<b class='flag-5'>ESP32</b> CAM板監控<b class='flag-5'>機器人</b>汽車

    構建ESP32 MicroPython Wifi的機器人汽車

    電子發燒友網站提供《構建ESP32 MicroPython Wifi的機器人汽車.zip》資料免費下載
    發表于 07-12 09:12 ?5次下載
    構建<b class='flag-5'>ESP32</b> MicroPython Wifi的<b class='flag-5'>機器人</b>汽車
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>