我控制不了我的手!忍不住把所有硬币都喂给这机器人
吃硬币机器人!太精分了!...
欢迎来到服“造”的世界
*项目作者:Chocho20171*资料来源:www.dfrobot.com.cn
每个“精分”机器人背后,都有一个同样“精分”的工程师
——用Beetle与激光测距打造的吃钱小机器人
有那么一群人,常年累月地混迹在正常人群里,小心行事的他们很难被常人发现,他们就是——“精分”工程师,唯一能让他们现形的方法就是让他们做个小玩意儿出来。对不起,我憋不住了,我承认我是一名“精分”工程师。想到硬币不方便携带,平时每次收到硬币都放在家里,搞得家里硬币成堆了。
于是我就想,可以做一个吃硬币的机器人嘛,刚好用来存放硬币。说干就干!
材料准备
- TowerProSG90舵机 1个;
- 品胜9V/250mAh镍氢充电电池 1个;
- Gravity:VL53L0X ToF 激光测距传感器 1个;
- Gravity I2C OLED-2864 显示屏 1个;
- 高品质 micro USB数据线 1根;
- Beetle控制器 1个;
- 降压模块 1个;
- 雪糕木棒若干;
- 多层木板数块;
- 微型合页带螺丝 1块;
- 乳白木工胶、快干胶、热熔胶等;
原理图
使用Beetle作为主控板,连接激光测距传感器收集距离的数据,通过2864oled显示屏显示出相应的机器人表情,并在得到的数据基础上操作舵机的转动角度;以实现监测到前面有硬币的时候,oled显示相应表情,控制舵机将硬币抛入机身内。
外壳制作
首先是切木板,粘接成盒体,将木板钻孔待上合页,将前面板切出一个oled大小的方孔。
用合页连接机器人的上下部分身体,用1.5mm粗的铁丝弯出一个波形,在两侧装上适当长度的雪糕棒,用雪糕棒为小机器人做上手臂,最后在舵机底部用木板增高:
用雪糕棒,用铅笔画一个弧度,然后用小刀切下来,钻个小孔,然后将木块粘在舵机上。
在木盒正面板下部分中心位置打孔,放置激光测距传感器,机身背后打孔安装开关使用。
按照原理图焊接电路的各个部分。
最后使用热熔胶、快干胶,将所有的器件转入机器人机身内。
最后在手臂与身体上钻孔,安装一根铁丝支撑,达到手臂抬起连带上盖也可以上升的目的,调试达到最好的效果:
至此,机器人的硬件部分就算制作完成了。
接下来,下载运行程序到主控,
点击连接(https://github.com/chocho2018/SmartRobot)下载程序,
程序主要功能代码如下:
向上滑动阅览
#include "Arduino.h"
#include "Wire.h"
#include "DFRobot_VL53L0X.h"
#include "U8glib.h"
#include "font.h"
#include
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() = 20.00 && sensor.getDistance() != 5.00){
while(i--){
Serial.println(i);
if(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();
}
项目干货戳这里
2017年度编辑选择奖 上篇
2017年度编辑选择奖 下篇
DIY树莓派游戏机 | 蓝牙音乐频谱播放器
Teleroomba | 波士顿动力| 口袋电压表
家庭萌宠Pando | DIY迷你装载机 | Sparrow
物联网项目精选 | Switch重度患者拯救指南 | 手相之诗
自制酸奶机 | wifi 气象站 | 极简感应灯 | lululu时钟鹿
3D打印私有云机箱 |智能家居——Siri语音控制旋转灯
音乐打击垫Launchpad | 新加坡ITE学生作品特辑
点击“阅读原文”,查看原教程下载代码!
2017年度编辑选择奖 上篇
2017年度编辑选择奖 下篇
DIY树莓派游戏机 | 蓝牙音乐频谱播放器
Teleroomba | 波士顿动力| 口袋电压表
家庭萌宠Pando | DIY迷你装载机 | Sparrow
物联网项目精选 | Switch重度患者拯救指南 | 手相之诗
自制酸奶机 | wifi 气象站 | 极简感应灯 | lululu时钟鹿
3D打印私有云机箱 |智能家居——Siri语音控制旋转灯
音乐打击垫Launchpad | 新加坡ITE学生作品特辑
点击“阅读原文”,查看原教程下载代码!
关注 DFRobot创客社区
微信扫一扫关注公众号