相信很多人都喜欢小动物(不仅仅喜欢小动物,还要吃掉小动物,这个我开玩笑的),例如小喵或小狗什么的!现在分享一个好玩的小玩意!类似Sphero的球型机器,可以用来逗喵溜狗。
2016年大概5月份的时候看到做BB-8机器人的泰哥做了一个遥控小球,我也好想做一个,可是他说电脑坏了重装系统后建模文件没了。
恰好2016年暑假8月份我家走来了一只流浪小喵,好萌好可爱啊!我正好在学习solidworks三维建模,于是就决定自己试着做一个逗喵的小球。

小喵卖萌地上滚啊滚小视频
看图,是不是好可爱呢?喵~~不过好瘦小啊,呜呜呜,好可怜QAQ!!!正好家里有老鼠,父母把小喵收养下来了,我也正式成为一名铲屎官啦。
过了不久10月份的时候又来多了一只小黄喵,一起收养了,现在他们成为好朋友啦ˏ₍•ɞ•₎ˎˏ₍•ʚ•₎ˎ!


小球3D建模效果图:

一边学习Solidworks一边建模,断断续续地画,大概画了一个多月吧,建完模后又修改了好多遍才满意。
零件清单:

↓橡胶圈是买这种橡胶圈车轮拆下来的,尺寸大概是外径28mm、内径25mm、线径3mm。

想自己做的自己到网上购买上面说的电子零件,在这里说说做小球时走过的坑!用DF活动的现金券在DF商店买了Bluno Nano、3.7v锂电、HR8833微型电机驱动板结果发现没一个能用上,原来那个集成蓝牙功能的Bluno Nano是个不通用的蓝牙,蓝牙软件必须用官方提供的app,不支持密码配对,自己弄好的蓝牙遥控app用不了;HR8833驱动板需要两个5V或以上的电源输入才能工作,我还以为一个是电源输入,另外一个可以输出电源的,折腾了我快一个多星期才搞懂了,真是每块板子都有它不工作的脾气啊!!!希望DFRobot能完善一下这些电子零件和模块,做个通用的蓝牙Nano板,电机驱动板也做得更人性化易用;3.7v电池电机启动瞬间会把电压拉低,导致蓝牙自动断开然后小球会失控,一直滚停不下来,所以改用7.4v锂电就没有问题了。
接线图:接线很简单,就是一个蓝牙小车的接线方式

自己在电池与Arduino Nano接线里加个开关
组装零件
第一个版本内部尺寸小了,两边的牛眼轮距离外壳有个空隙


第二个版本修改建模尺寸后让别人重新打印




小球程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| * 日期:2017-07-24 * 功能:逗宠萌物程序 * 版本:v1.1 */
#define IN1 4 #define IN2 5 #define IN3 6 #define IN4 7
#define SPINACW '6' #define SPINCW '5' #define RIGHT '4' #define LEFT '3' #define BACK '2' #define GO '1' #define STOP '0'
int PWM_Speed;
void setup() { Serial.begin(9600); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); initCar(); PWM_Speed=200; }
void loop() { if(Serial.available()>0){ char ch = Serial.read(); if(ch == GO){ go(); Serial.print("GO\n"); }else if(ch == BACK){ back(); Serial.print("BACK\n"); }else if(ch == LEFT){ turnLeft(); Serial.print("turnLeft\n"); }else if(ch == RIGHT){ turnRight(); Serial.print("turnRight\n"); }else if(ch == STOP){ stopCar(); Serial.print("stop\n"); }else if(ch == SPINCW){ spinCW(); Serial.print("spinCW\n"); }else if(ch == SPINACW){ spinACW(); Serial.print("spinACW\n"); } } }
void initCar(){ digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); }
void turnLeft(){ analogWrite(IN1,PWM_Speed); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); }
void turnRight(){ digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); analogWrite(IN4,PWM_Speed); }
void go(){ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void back(){ digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void spinCW() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); }
void spinACW() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); }
void stopCar(){ initCar(); }
|
蓝牙模块先不要安装,先烧录程序,通过Arduino IDE串口发送字符测试电机转向,方向不对就修改子函数下的digitalWrite(INX
,HIGH
或者LOW
);测试好再装蓝牙模块
蓝牙模块设置教程附件
HC-06AT命令设置
HC05或HC06蓝牙模块默认波特率是9600,密码为1234,如果觉得麻烦可以不用设置直接使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #define AT 2 #define LED 13 void setup() { pinMode(LED,OUTPUT); pinMode(AT,OUTPUT); digitalWrite(AT,HIGH); Serial.begin(38400); delay(100); Serial.println("AT"); delay(100); Serial.println("AT+NAME=Arduino"); delay(100); Serial.println("AT+ROLE=0"); delay(100); Serial.println("AT+PSWD=1234"); delay(100); Serial.println("AT+UART=9600,0,0"); delay(100); Serial.println("AT+RMAAD"); } void loop() { digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); delay(500); }
|
蓝牙模块设置好后再组装到Arduino板子上,我比较喜欢用杜邦线与蓝牙模块连接,不焊死,方便拆下来用到别的地方

组装完成

用扎带把电池固定

完成

我在GitHub上找到了一个android开源的蓝牙遥控App把源码修改成自己想要的,我不会iOS,所以就没有iOS苹果手机的App啦。
遥控App演示:

自定义编码默认值为:前进 1、后退 2、左转 3、右转 4、停止 0
滑动虚拟摇杆上-前进、下-后退、左-左转、右-右转、松开为停止;也可以作为其它蓝牙小车的遥控app。
小球演示:

演示视频: B站地址
Processing上位机程序
我做完小球和安卓程序觉得还不够好玩,电脑也可以利用起来的,于是看了两天Processing的资料写出了个电脑蓝牙遥控小球的程序
使用方法:到Processing官网下载IDE安装,先让蓝牙模块连接电脑获取串口(设备管理器上查看),例如COM3(不同电脑可能不一样)修改下面String arduinoPort = "COM3"
;再运行程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| import processing.serial.*; Serial port;
char stop = '0'; char up = '1'; char down = '2'; char left = '3'; char right = '4'; char CW = '5'; char ACW= '6';
void setup() { size(680, 480, P3D); String arduinoPort = "COM3"; port = new Serial(this, arduinoPort, 9600); }
void draw() { text("up", 326, 156); text("down", 316, 335); text("left", 230, 240); text("right", 420, 240); if (keyPressed && (key == CODED)) { if (keyCode == UP) { port.write(up); fill(0); rect(315, 165, 50, 50); } else if (keyCode == DOWN) { port.write(down); fill(0); rect(315, 265, 50, 50); } else if (keyCode == LEFT) { port.write(left); fill(0); rect(265, 215, 50, 50); } else if (keyCode == RIGHT) { port.write(right); fill(0); rect(365, 215, 50, 50); } } else { stop(); } if(keyPressed){ if (key == 'a'){ port.write(ACW); }else if (key == 'd'){ port.write(CW); } }else{ stop(); } }
void stop(){ port.write(stop); fill(255, 255, 255); rect(315, 165, 50, 50); rect(265, 215, 50, 50); rect(365, 215, 50, 50); rect(315, 265, 50, 50); }
|
Processing程序演示

如图,按键盘方向键为上-前进、下-后退、左-左转、右-右转、松开为停止


开源文件↓
Arduino程序
Android程序
开源程序地址
建模及打印文件–sldprt文件需solidworks2016及以上版本打开
最后感谢那些帮助过我的小伙伴(泰哥和SC),因为我没有3D打印机要找小伙伴帮忙!
祝大家玩得开心ヽ(•‿•)ノ。
我知道我的水平不够,只是我有个梦想—让大家一起爱上科技DIY。
注:转载需注明出处!!!
——————-2017-07-29——————–
程序更新:
-下位机程序修改顺时针自转和逆时针自转为绕圈左右转,新增两个方向为顺时针自转和逆时针
-上位机新增两个按钮控制顺时针自转和逆时针
-原来的圆孔轴轮子容易打滑,现在改成D轴孔再也不会打滑啦😏
