宠物互动--逗宠萌物🐱(程序与轮子有更新)

相信很多人都喜欢小动物(不仅仅喜欢小动物,还要吃掉小动物,这个我开玩笑的),例如小喵或小狗什么的!现在分享一个好玩的小玩意!类似Sphero的球型机器,可以用来逗喵溜狗。
2016年大概5月份的时候看到做BB-8机器人的泰哥做了一个遥控小球,我也好想做一个,可是他说电脑坏了重装系统后建模文件没了。
恰好2016年暑假8月份我家走来了一只流浪小喵,好萌好可爱啊!我正好在学习solidworks三维建模,于是就决定自己试着做一个逗喵的小球。
小喵
小喵卖萌地上滚啊滚小视频
看图,是不是好可爱呢?喵~~不过好瘦小啊,呜呜呜,好可怜QAQ!!!正好家里有老鼠,父母把小喵收养下来了,我也正式成为一名铲屎官啦。
过了不久10月份的时候又来多了一只小黄喵,一起收养了,现在他们成为好朋友啦ˏ₍•ɞ•₎ˎˏ₍•ʚ•₎ˎ
小黄喵
好朋友

小球3D建模效果图:

SW效果图

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

零件清单:

名称 数量
8CM直径亚力克球 1(建议多买几个备用)
N20减速电机4mm出轴(转速300RPM/6V) 2
7.4V小锂电池602540(SM接口) 1
7.4V SM接口充电器 1
两路电机驱动板drv8833 1
塑料牛眼轮 3
Arduino Nano(不焊排针) 1
HC05或06蓝牙模块 1
橡胶圈 2
杜邦线、28号硅胶线、3mm热缩管、3*100扎带 若干
M2*8螺丝+M2螺母 14
3D打印件 按stl文件说明打印(轮子多打印几个备用)

材料
↓橡胶圈是买这种橡胶圈车轮拆下来的,尺寸大概是外径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 // 4 5 右轮
#define IN2 5
#define IN3 6 // 6 7 左轮
#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;//PWM量输出

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);测试好再装蓝牙模块

蓝牙模块设置参考:蓝牙HC05模块探究-设置AT指令

蓝牙模块设置教程附件
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//en接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");//设置主从模式:0从机,1主机
delay(100);
Serial.println("AT+PSWD=1234");//设置配对密码,如1234
delay(100);
Serial.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
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演示:

遥控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库
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 = Serial.list()[0]; // 方法1,自动获取活动串口
String arduinoPort = "COM3"; // 方法2,直接填入端口号
port = new Serial(this, arduinoPort, 9600);//初始化端口(指定端口和波特率)把'端口名称'改成Arduino连接的端口,类似COM3
}

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();
}

//普通键盘编码事件
//按键a为小球逆时针旋转,按键d为小球顺时针旋转
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程序演示

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

小喵抱球
小喵抱球

开源文件↓

Arduino程序
Android程序
开源程序地址
建模及打印文件–sldprt文件需solidworks2016及以上版本打开

最后感谢那些帮助过我的小伙伴(泰哥和SC),因为我没有3D打印机要找小伙伴帮忙!
祝大家玩得开心ヽ(•‿•)ノ。

我知道我的水平不够,只是我有个梦想—让大家一起爱上科技DIY。

注:转载需注明出处!!!

——————-2017-07-29——————–
程序更新:
-下位机程序修改顺时针自转和逆时针自转为绕圈左右转,新增两个方向为顺时针自转和逆时针
-上位机新增两个按钮控制顺时针自转和逆时针
-原来的圆孔轴轮子容易打滑,现在改成D轴孔再也不会打滑啦😏
D轴轮子

文章目录
  1. 1. 小球3D建模效果图:
  2. 2. 零件清单:
  3. 3. 接线图:接线很简单,就是一个蓝牙小车的接线方式
    1. 3.1. 组装零件
  4. 4. 小球程序:
  5. 5. 蓝牙模块设置参考:蓝牙HC05模块探究-设置AT指令
  6. 6. 遥控App演示:
  7. 7. 小球演示:
  8. 8. Processing上位机程序
  9. 9. Processing程序演示
  10. 10. 开源文件↓
  11. 11. 我知道我的水平不够,只是我有个梦想—让大家一起爱上科技DIY。
,