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

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

3天內(nèi)不再提示

基于ESP32開(kāi)發(fā)的螞蟻機(jī)器人方案

jf_zGNBEhbi ? 來(lái)源:趣無(wú)盡 ? 2023-11-28 09:45 ? 次閱讀

Maker: Markus Opitz/譯:趣無(wú)盡 Cherry(轉(zhuǎn)載請(qǐng)注明出處)

螞蟻是一種神奇的多足生物,它們只需要很少的資源,就可以做很多事情。本期項(xiàng)目中的螞蟻機(jī)器人是基于 ESP32 開(kāi)發(fā)的。

一般來(lái)說(shuō),許多六條腿的機(jī)器人每條腿最多需要三個(gè)舵機(jī),那么總共就需要 18 個(gè)舵機(jī),這會(huì)消耗了大量的能量,也與螞蟻本身的體型相沖突。

但在這個(gè)項(xiàng)目中只用到三個(gè)舵機(jī)、一個(gè)夾具和一點(diǎn)機(jī)械設(shè)備,就實(shí)現(xiàn)了一只極簡(jiǎn)主義的螞蟻機(jī)器人,除開(kāi)電池,重量約 114 克。

組件清單

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

3D 打印部件

所有的零部件使用 Tinkercad 設(shè)計(jì)并使用 Ultimaker Cura 制作。


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

安裝螞蟻軀干部分

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

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

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

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

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

安裝舵機(jī)和腿部
每個(gè)舵機(jī)帶動(dòng)一對(duì)腿,前后移動(dòng)幾度。舵機(jī) 1 和舵機(jī) 3 會(huì)同時(shí)移動(dòng),所以可以考慮在微控制器上使用相同的引腳去控制。

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

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

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

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

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

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 的電池能夠?yàn)槎鏅C(jī)提供足夠的能量,但電壓必須通過(guò)降壓轉(zhuǎn)換器降低到 5V。

95a2e174-8d85-11ee-939d-92fbcf53809c.jpg
四個(gè)舵機(jī)的電源通過(guò) 5V 并聯(lián)運(yùn)行,數(shù)據(jù)線連接到 ESP32 開(kāi)發(fā)板。它不需要更多的連接。不過(guò),它還可以連接到傳感器LED。

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

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

將文件名為 “Blue_Ant-RemoteXY.ino” 傳輸?shù)?ESP32 開(kāi)發(fā)板。同時(shí)遙控器已經(jīng)包含在程序中??蓞⒖糋etting-Started-With-ESP32-C3-XIAO

適用于 ESP32-C3 的舵機(jī)庫(kù):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

遠(yuǎn)程控制

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

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


智能手機(jī)上安裝應(yīng)用程序,激活藍(lán)牙,打開(kāi) “RemoteXY”,搜索并與配對(duì) “ESP32-C3_Remote” 。

完成

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

現(xiàn)在你可以啟動(dòng)這只螞蟻,等待片刻,激活應(yīng)用程序,它就可以跑起來(lái)了。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    28102

    瀏覽量

    205843
  • 機(jī)械
    +關(guān)注

    關(guān)注

    8

    文章

    1502

    瀏覽量

    40420
  • 降壓轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    7

    文章

    1299

    瀏覽量

    86341
  • 舵機(jī)
    +關(guān)注

    關(guān)注

    17

    文章

    264

    瀏覽量

    40913
  • ESP32
    +關(guān)注

    關(guān)注

    17

    文章

    950

    瀏覽量

    16992

原文標(biāo)題:僅由三個(gè)舵機(jī)驅(qū)動(dòng)的機(jī)械螞蟻

文章出處:【微信號(hào):趣無(wú)盡,微信公眾號(hào):趣無(wú)盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    開(kāi)源項(xiàng)目!用ESP32做一個(gè)可愛(ài)的無(wú)用機(jī)器人

    、PCB板、LED矩陣模塊、ESP32E等。 制作過(guò)程包括打印PCB 焊接和組裝顯示模塊 安裝開(kāi)關(guān)、焊接驅(qū)動(dòng)板 組裝MCU板、功能測(cè)試 3D打印機(jī)器人機(jī)身、激光切割外殼
    發(fā)表于 08-30 14:50

    開(kāi)源項(xiàng)目!用ESP32做一個(gè)可愛(ài)的無(wú)用機(jī)器人

    、PCB板、LED矩陣模塊、ESP32E等。 制作過(guò)程包括打印PCB 焊接和組裝顯示模塊 安裝開(kāi)關(guān)、焊接驅(qū)動(dòng)板 組裝MCU板、功能測(cè)試 3D打印機(jī)器人機(jī)身、激光切割外殼
    發(fā)表于 09-03 09:34

    智能掃地機(jī)器人解決方案

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

    怎么利用esp32cam開(kāi)發(fā)板實(shí)現(xiàn)面對(duì)面機(jī)器人的設(shè)計(jì)?

    怎么利用esp32cam開(kāi)發(fā)板實(shí)現(xiàn)面對(duì)面機(jī)器人的設(shè)計(jì)?
    發(fā)表于 01-19 06:38

    基于ESP32-CAM的簡(jiǎn)易監(jiān)控遙控車(chē)參考方案

    一個(gè)簡(jiǎn)單的監(jiān)控 RC 機(jī)器人,帶有 ESP32-CAM 和 Arduino Uno 模塊,由任何智能手機(jī)上的網(wǎng)絡(luò)瀏覽器控制。ESP32-CAM 模塊是一種廉價(jià)、低功耗的模塊,但它為視覺(jué)、串行通信
    發(fā)表于 08-03 14:59

    【開(kāi)源資料】使用ESP32C3超簡(jiǎn)單制作迷你四足機(jī)器人

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

    PCB ESP32基礎(chǔ)機(jī)器人

    電子發(fā)燒友網(wǎng)站提供《PCB ESP32基礎(chǔ)機(jī)器人.zip》資料免費(fèi)下載
    發(fā)表于 08-03 11:21 ?4次下載
    PCB <b class='flag-5'>ESP32</b>基礎(chǔ)<b class='flag-5'>機(jī)器人</b>

    Arduino機(jī)器人螞蟻

    電子發(fā)燒友網(wǎng)站提供《Arduino機(jī)器人螞蟻.zip》資料免費(fèi)下載
    發(fā)表于 10-19 10:51 ?0次下載
    Arduino<b class='flag-5'>機(jī)器人</b><b class='flag-5'>螞蟻</b>

    Arduino ESP32多合一機(jī)器人開(kāi)源

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

    使用Websockets創(chuàng)建自己的ESP32機(jī)器人汽車(chē)

    電子發(fā)燒友網(wǎng)站提供《使用Websockets創(chuàng)建自己的ESP32機(jī)器人汽車(chē).zip》資料免費(fèi)下載
    發(fā)表于 11-04 09:40 ?0次下載
    使用Websockets創(chuàng)建自己的<b class='flag-5'>ESP32</b><b class='flag-5'>機(jī)器人</b>汽車(chē)

    基于ESP32-CAM的監(jiān)控RC機(jī)器人

    一個(gè)簡(jiǎn)單的監(jiān)控 RC 機(jī)器人,帶有 ESP32-CAM 和 Arduino Uno 模塊,由任何智能手機(jī)上的網(wǎng)絡(luò)瀏覽器控制。
    發(fā)表于 12-08 10:26 ?1次下載

    基于ESP32 CAM的人工智能機(jī)器人

    在這個(gè)項(xiàng)目中,我想向您展示如何用一些電子元件和 ESP32-CAM 模塊制作一個(gè)簡(jiǎn)單的 AI 機(jī)器人。ESP32-CAM 是一個(gè)低功耗、低延遲的視頻流模塊,它還提供 GPIO 和串行通信,但它似乎
    發(fā)表于 12-20 16:03 ?6次下載

    如何制作ESP32 CAM板監(jiān)控機(jī)器人汽車(chē)

    電子發(fā)燒友網(wǎng)站提供《如何制作ESP32 CAM板監(jiān)控機(jī)器人汽車(chē).zip》資料免費(fèi)下載
    發(fā)表于 06-29 10:24 ?6次下載
    如何制作<b class='flag-5'>ESP32</b> CAM板監(jiān)控<b class='flag-5'>機(jī)器人</b>汽車(chē)

    如何用電子元件和ESP32-CAM制作AI機(jī)器人

    電子發(fā)燒友網(wǎng)站提供《如何用電子元件和ESP32-CAM制作AI機(jī)器人.zip》資料免費(fèi)下載
    發(fā)表于 07-04 14:29 ?3次下載
    如何用電子元件和<b class='flag-5'>ESP32</b>-CAM制作AI<b class='flag-5'>機(jī)器人</b>

    構(gòu)建ESP32 MicroPython Wifi的機(jī)器人汽車(chē)

    電子發(fā)燒友網(wǎng)站提供《構(gòu)建ESP32 MicroPython Wifi的機(jī)器人汽車(chē).zip》資料免費(fèi)下載
    發(fā)表于 07-12 09:12 ?7次下載
    構(gòu)建<b class='flag-5'>ESP32</b> MicroPython Wifi的<b class='flag-5'>機(jī)器人</b>汽車(chē)