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 开发板。同时遥控器已经包含在程序中。可参考Getting-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

    文章

    27043

    浏览量

    201423
  • 机械
    +关注

    关注

    8

    文章

    1174

    浏览量

    39614
  • 降压转换器
    +关注

    关注

    6

    文章

    1152

    浏览量

    86135
  • 舵机
    +关注

    关注

    17

    文章

    239

    浏览量

    40396
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15815

原文标题:仅由三个舵机驱动的机械蚂蚁

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【开源作品】基于树莓派4B、ESP32制作的桌面机器人、气象站、立方光!

    ,并为电源线的自由移动预留了充足的空间。为了提高机器人运动的稳定性,我们还特意使车身与底座轻微接触。 另外,我们特意选择蓝白配色方案,因为蓝白组合能提升机器人的视觉吸引力。 >&
    发表于 03-05 16:52

    DIY推荐!基于 ESP32 做的三舵机机械蚂蚁

    。 但在这个项目中只用到三个舵机、一个夹爪和一点机械设备,就实现了一只极简主义的蚂蚁机器人,除开电池,重量约 114 克。 组件清单 SG90 舵机 x 3 ESP32/ESP82
    发表于 03-28 09:40

    DIY推荐!自制一个基于ESP32的沙画机器人

    作者在高二的时候就做过一个非常基础的沙画机器人,现在准备去普渡大学上学了,正好也打算带上它,于是想着用这俩年新学到的技能重新设计一下之前的沙画机器人。 所需材料 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的SRA板

    描述基于 ESP32开发板基于 ESP32开发板带有板载电机驱动器、过流和反向电压保护,适用于嵌入式和机器人应用。项目描述:SRA
    发表于 06-20 07:22

    基于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 102次下载

    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 MicroPython Wifi的机器人汽车

    电子发烧友网站提供《构建ESP32 MicroPython Wifi的机器人汽车.zip》资料免费下载
    发表于 07-12 09:12 5次下载
    构建<b class='flag-5'>ESP32</b> MicroPython Wifi的<b class='flag-5'>机器人</b>汽车