【chocho精品】“吃”钱币的机器人

2018-04-273.6万
精华项目
AI 快速预览详细 收起
本文介绍了一个名为“吃钱币的机器人”的DIY项目。该项目使用Beetle控制器作为主控板,结合激光测距传感器和舵机,实现检测并收集硬币的功能。文章详细列出了所需材料清单,包括Beetle控制器、激光测距传感器、舵机等,并提供了详细的制作步骤和程序代码。通过这个项目,孩子们可以在动手实践中学习编程和机械设计,同时也能解决家中硬币堆积的问题。
每个“精分”机器人背后,都有一个同样“精分”的工程师
                                                                                                             ——用Beetle与激光测距打造的吃钱小机器人
【chocho精品】“吃”钱币的机器人图1

【chocho精品】“吃”钱币的机器人图13

【chocho精品】“吃”钱币的机器人图2
有那么一群人,常年累月地混迹在正常人群里,小心行事的他们很难被常人发现,他们就是——“精分”工程师唯一能让他们现形的方法就是让他们做个小玩意儿出来。对不起,我憋不住了,我承认我是一名“精分”工程师。
想到硬币不方便携带,平时每次收到硬币都放在家里,搞得家里硬币成堆了。
于是我就想,可以做一个吃硬币的机器人嘛,刚好用来存放硬币。说干就干!
材料准备
      TowerProSG90舵机   1个;  购买地址
       品胜9V/250mAh镍氢充电电池  1个;  购买地址
      Gravity:VL53L0X ToF 激光测距传感器  1个;  购买地址
      Gravity I2C OLED-2864 显示屏  1个;    购买地址
      高品质 micro USB数据线  1根;    购买地址
      Beetle控制器  1个;    购买地址
      降压模块  1个;某宝有卖哟,哈哈,我是自拆了一个下来
      雪糕木棒若干;自备
      多层木板数块;自备
      微型合页带螺丝   1块;自备
      乳白木工胶、快干胶、热熔胶等;自备
【chocho精品】“吃”钱币的机器人图3
原理图
      使用Beetle作为主控板,连接激光测距传感器收集距离的数据,通过2864oled显示屏显示出相应的机器人表情,并在得到的数据基础上操作舵机的转动角度;以实现监测到前面有硬币的时候,oled显示相应表情,控制舵机将硬币抛入机身内。
【chocho精品】“吃”钱币的机器人图4
制作
首先是切木板,粘接成盒体,将木板钻孔待上合页,将前面板切出一个oled大小的方孔.
【chocho精品】“吃”钱币的机器人图5

用合页连接机器人的上下部分身体,用1.5mm粗的铁丝弯出一个波形,在两侧装上适当长度的雪糕         棒,用雪糕棒为小机器人做上手臂,最后在舵机底部用木板增高:
【chocho精品】“吃”钱币的机器人图6

用雪糕棒,用铅笔画一个弧度,然后用小刀切下来,钻个小孔,然后将木块粘在舵机上
【chocho精品】“吃”钱币的机器人图7

在木盒正面板下部分中心位置打孔,放置激光测距传感器,机身背后打孔安装开关使用
【chocho精品】“吃”钱币的机器人图8

按照原理图焊接电路的各个部分
【chocho精品】“吃”钱币的机器人图9

最后使用热熔胶、快干胶,将所有的器件转入机器人机身内
【chocho精品】“吃”钱币的机器人图10

最后在手臂与身体上钻孔,安装一根铁丝支撑,达到手臂抬起连带上盖也可以上升的目的,调试达到最好的效果:
【chocho精品】“吃”钱币的机器人图11

至此,机器人的硬件部分就算制作完成了。
【chocho精品】“吃”钱币的机器人图12

接下来,下载运行程序到主控,点击连接下载程序,程序主要功能代码如下:
[mw_shl_code=applescript,true]#include "Arduino.h"
#include "Wire.h"
#include "DFRobot_VL53L0X.h"
#include "U8glib.h"
#include "font.h"
#include <Servo.h>

DFRobotVL53L0X sensor;
Servo myservo;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);

bool checkDistance(void){
  uint8_t i = 5;
  if(sensor.getDistance() <= 60 && sensor.getDistance() >= 20.00 && sensor.getDistance() != 5.00){
    while(i--){
      Serial.println(i);
      if(sensor.getDistance() <= 60 && sensor.getDistance() >= 20.00 && sensor.getDistance() != 5.00){
      }else{
        break;
      }
      delay(100);
    }
  }
  
  return((i==0)?true:false);
}

void caozuo()
{
  Serial.println(sensor.getDistance());
  if (checkDistance())
  {
    delay(2000);
    u8g.firstPage();
    do {
      u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits9);
    } while (u8g.nextPage());
    delay(500);
    myservo.write(30);
    delay(200);
    myservo.write(130);
  }
}

void setup() {
  Serial.begin(115200);
  Wire.begin();
  sensor.begin(0x50);
  sensor.setMode(Continuous, High);
  sensor.start();
  myservo.attach(11);
}

void loop()
{
  unsigned char i;
  myservo.write(130);
  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  for (i = 8; i > 0; i--)
  {
    delay(100);
    caozuo();
  }

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits1);
  } while (u8g.nextPage());
  delay(100);
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  delay(100);
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits2);
  } while (u8g.nextPage());
  delay(100);
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  for (i = 5; i > 0; i--)
  {
    delay(100);
    caozuo();
  }

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits3);
  } while (u8g.nextPage());
  delay(50);//bishuangyan 0.05s

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  delay(50);//xiaolian 0.05s
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits3);
  } while (u8g.nextPage());
  delay(50);//bishuangyan 0.05s

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  delay(50);//xioalian 0.05s
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits7);
  } while (u8g.nextPage());
  delay(50);//zuoxiaoyiyan 0.05s

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits4);
  } while (u8g.nextPage());
  for (i = 3; i > 0; i--)
  {
    delay(100);
    caozuo();
  }

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits7);
  } while (u8g.nextPage());
  delay(50);//zuoxiaoyiyan 0.05s

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  delay(50);//xiaolian 0.05s
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits8);
  } while (u8g.nextPage());
  delay(50);//youxiaoyiyan 0.05s

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits5);
  } while (u8g.nextPage());
  delay(100);//youdayiyan 0.1s
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits8);
  } while (u8g.nextPage());
  delay(100);//youxiaoyiyan 1s
  caozuo();

  u8g.firstPage();
  do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
  } while (u8g.nextPage());
  delay(500);
  caozuo();

  u8g.firstPage();
  do {
  } while (u8g.nextPage());
  delay(200);
  caozuo();

  u8g.firstPage();
  do {
    u8g.setFont(u8g_font_unifont);
    u8g.drawStr( 23, 25, "Put a coin!");
    u8g.drawStr( 7, 55, "Get a surprise!");
  } while ( u8g.nextPage() );
  delay(500);
  caozuo();
}
[/mw_shl_code]

欢迎各位加杂家的微信,进行创意探讨:zcl2009031081

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(22)
IOHDHQ
IOHDHQ
新型存钱罐,最近很多人做
花生编程
花生编程
这个很棒啊!好像很多人都做这种
花生编程
花生编程
赞赞赞赞赞
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
赞赞赞赞赞!
三春牛-创客
三春牛-创客
厉害厉害
好奇号
好奇号
感觉不错。
DFS1w2cb8o8
DFS1w2cb8o8
贱贱的小表情好萌啊
王佩奇儿
王佩奇儿
这个舵机的速度是不是太快了一点
DFrJ5KYVQaH
DFrJ5KYVQaH
创意,无限
fz666
fz666
“坑钱!”XX说。
香椿
香椿

历害,做的真好
ad2000
ad2000
这种屏显示的漂亮
gray6666
gray6666
好棒,可以批量量产。。。。。。。。。。。。。。
Chocho2017
Chocho2017
作者
回复gray6666
如果量產,你會買?
微笑的rockets
微笑的rockets
用laserblock做一个试试?
DI玩
DI玩
目前看到的最高级的吃硬币机器人
Chocho2017
Chocho2017
作者
回复DI玩
哈哈,谢谢。
铁熊
铁熊
最近吃硬币比较火~
DFHJM_IpFmV
DFHJM_IpFmV回复铁熊
是啊,好多人做这种存钱罐
1973742214
1973742214
加上腿,找钱币吃
R2D2
R2D2
能不能加入心愿单?
Chocho2017
Chocho2017
作者
回复R2D2
可以呀。
Forgotten
Forgotten
哈哈 好萌 这个贱贱的小表情
Chocho2017
Chocho2017
作者
回复Forgotten
评论内容