22413浏览
查看: 22413|回复: 40

[项目] 宠物互动--逗宠萌物(程序有更新20170728)

[复制链接]
话不多说,来段视频压压惊先:


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

MonMarch-202103019505..png
MonMarch-202103017953..png

小球3D建模效果图:
MonMarch-202103017911..png
一边学习Solidworks一边建模,断断续续地画,大概画了一个多月吧,建完模后又修改了好多遍才满意。
零件清单:
材料名称
数量
1(建议多买几个备用)
N20减速电机4mm出轴(转速大约300RPM/6V)
2
1
1
3
1
1
2
杜邦线、28号硅胶线、热缩管、扎带
若干
14
按stl文件说明打印(轮子多打印几个备用
MonMarch-202103016495..png
橡胶圈是买这种橡胶圈车轮拆下来的,尺寸大概是外径28mm、内径25mm、线径3mm。
MonMarch-202103012076..png
       想自己做的自己到网上购买上面说的电子零件,在这里说说做小球时走过的坑!用DF活动的现金券在DF商店买了Bluno Nano、3.7v锂电、HR8833微型电机驱动板结果发现没一个能用上,原来那个集成蓝牙功能的Bluno Nano是个不通用的蓝牙,蓝牙软件必须用官方提供的app,不支持密码配对,自己弄好的蓝牙遥控app用不了;HR8833驱动板需要两个5V或以上的电源输入才能工作,我还以为一个是电源输入,另外一个可以输出电源的,折腾了我快一个多星期才搞懂了,真是每块板子都有它不工作的脾气啊!!!希望DFRobot能完善一下这些电子零件和模块,做个通用的蓝牙Nano板,电机驱动板也做得更人性化易用;3.7v电池电机启动瞬间会把电压拉低,导致蓝牙自动断开然后小球会失控,一直滚停不下来,所以改用7.4v锂电就没有问题了。

接线图:接线很简单,就是一个蓝牙小车的接线方式
MonMarch-202103016197..png
组装零件
第一个版本内部尺寸小了,两边的牛眼轮距离外壳有个空隙
MonMarch-202103011407..png
MonMarch-202103015331..png
第二个版本修改建模尺寸后让别人重新打印
MonMarch-202103014681..png
MonMarch-202103014708..png
MonMarch-202103017128..png
MonMarch-202103014698..png
小球程序:
  1. /*
  2. *   日期:2017-07-24
  3. *   功能:逗宠萌物程序
  4. *   版本:v1.1
  5. */
  6. #define IN1 4 // 4 5 右轮
  7. #define IN2 5
  8. #define IN3 6 // 6 7 左轮
  9. #define IN4 7
  10. #define SPINACW '6' //逆时针转编码
  11. #define SPINCW '5' //顺时针转编码
  12. #define RIGHT '4'//右转编码
  13. #define LEFT '3' //左转编码
  14. #define BACK '2'//后退编码
  15. #define GO '1'//前进编码
  16. #define STOP '0'//停止编码
  17. int PWM_Speed;//PWM量输出
  18. void setup() {
  19.   Serial.begin(9600);//设置蓝牙波特率
  20.   pinMode(IN1,OUTPUT);
  21.   pinMode(IN2,OUTPUT);
  22.   pinMode(IN3,OUTPUT);
  23.   pinMode(IN4,OUTPUT);
  24.   initCar();
  25.   PWM_Speed=200;
  26. }
  27. void loop() {
  28.   if(Serial.available()>0){
  29.       char ch = Serial.read();
  30.       if(ch == GO){
  31.          //前进
  32.          go();
  33.          Serial.print("GO\n");
  34.       }else if(ch == BACK){
  35.          //后退
  36.          back();
  37.          Serial.print("BACK\n");
  38.       }else if(ch == LEFT){
  39.          //左转
  40.          turnLeft();
  41.          Serial.print("turnLeft\n");
  42.       }else if(ch == RIGHT){
  43.         //右转
  44.         turnRight();
  45.         Serial.print("turnRight\n");
  46.       }else if(ch == STOP){
  47.         //停止
  48.         stopCar();
  49.         Serial.print("stop\n");
  50.       }else if(ch == SPINCW){
  51.         //顺时针转编码
  52.         spinCW();
  53.         Serial.print("spinCW\n");
  54.       }else if(ch == SPINACW){
  55.         //逆时针自转
  56.         spinACW();
  57.         Serial.print("spinACW\n");
  58.       }
  59.     }
  60. }
  61. void initCar(){
  62.   //默认全是低电平,停止状态
  63.   digitalWrite(IN1,LOW);
  64.   digitalWrite(IN2,LOW);
  65.   digitalWrite(IN3,LOW);
  66.   digitalWrite(IN4,LOW);
  67. }
  68. //左转
  69. void turnLeft(){
  70.   analogWrite(IN1,PWM_Speed);
  71.   digitalWrite(IN2,LOW);        //右轮前进
  72.   digitalWrite(IN3,LOW);
  73.   digitalWrite(IN4,LOW);        //左轮后退
  74. }
  75. //右转
  76. void turnRight(){
  77.   digitalWrite(IN1,LOW);
  78.   digitalWrite(IN2,LOW);        //右轮后退
  79.   digitalWrite(IN3,LOW);
  80.   analogWrite(IN4,PWM_Speed);  //左轮前进
  81. }
  82. //前进
  83. void go(){
  84.   digitalWrite(IN1,HIGH);
  85.   digitalWrite(IN2,LOW);         //右轮前进
  86.   digitalWrite(IN3,LOW);
  87.   digitalWrite(IN4,HIGH);         //左轮前进
  88. }
  89. //后退
  90. void back(){
  91.   digitalWrite(IN1,LOW);
  92.   digitalWrite(IN2,HIGH);        //右轮后退
  93.   digitalWrite(IN3,HIGH);
  94.   digitalWrite(IN4,LOW);        //左轮后退
  95. }
  96. // 顺时针自转
  97. void spinCW()
  98. {
  99.   digitalWrite(IN1, LOW);
  100.   digitalWrite(IN2, HIGH);       //右轮后退
  101.   digitalWrite(IN3, LOW);
  102.   digitalWrite(IN4, HIGH);        //左轮前进
  103. }
  104. // 逆时针自转
  105. void spinACW()
  106. {
  107.   digitalWrite(IN1, HIGH);
  108.   digitalWrite(IN2, LOW);        //右轮前进
  109.   digitalWrite(IN3, HIGH);
  110.   digitalWrite(IN4, LOW);       //左轮后退
  111. }
  112. // 默认停止
  113. void stopCar(){
  114.   initCar();
  115. }
复制代码

感觉小球程序用PWM控制好像会好点
蓝牙模块先不要安装,先烧录程序,通过Arduino IDE串口发送字符测试电机转向,方向不对就修改子函数下的digitalWrite(INX,HIGH或者LOW);测试好再装蓝牙模块

蓝牙模块设置参考:蓝牙HC05模块探究-设置AT指令
蓝牙模块设置教程.zip (44.33 KB, 下载次数: 125)
抱歉没有逗猫视频了
有个不好的消息就是小黄喵走丢了,五一放假回家的时候已经走丢1个月了,这个4月我的心情也不怎么好,猫丢了我更伤心,所以没有逗猫视频了,也不知道接下来要做些什么,想静下来学自己想学的,提高技术才能做更好玩的东西
MonMarch-202103019545..png MonMarch-202103019148..png

帖子其实4月份就写好了,但只放了在个人站,之后也有一些人加我好友来与我一起交流了,费点劲搭个人站做主站分享还是挺不错的,好了现在发到其它地方一起玩吧!

Android程序
开源程序地址
pet-toy.rar (2.59 MB, 下载次数: 177)

Grey  中级技匠

发表于 2017-5-17 18:44:23

沙发!6666666最喜欢这种逗小动物的了

这种操控方向,是不是和实际运动方向相反?

另外电机驱动一般会要求有两个电源,一个是逻辑供电,另一个是电机供电。这样设计是有道理的,如果用相同的供电口,当电机工作时,可能会抽取大量的电流,然后导致主控没电,就失控了。
回复

使用道具 举报

好奇吖斌  高级技师
 楼主|
来自手机

发表于 2017-5-17 22:04:20

Grey 发表于 2017-5-17 18:44
沙发!6666666最喜欢这种逗小动物的了

这种操控方向,是不是和实际运动方向相反?

调试好电机转向就不会反方向了!话说我以前用的电机驱动板都是一个电源输入的,L298N和L9110这些,尴尬了....
回复

使用道具 举报

yoyojacky  初级技匠

发表于 2017-6-22 19:32:42

gehhxing 发表于 2017-6-15 01:12
大神,我按照你的教程做了一套,调试过程中蓝牙模块变得供电不足了,这个问题你遇到过吗? ...

电源供在蓝牙上,然后引出的线再给 arduino 供电.就好啦.而且电池建议充满.
回复

使用道具 举报

yoyojacky  初级技匠 来自手机

发表于 2017-5-18 08:14:15

电机上加个大电容就好啦
回复

使用道具 举报

安卓机器人  中级技神

发表于 2017-5-18 09:54:25

建模好碉啊
回复

使用道具 举报

Grey  中级技匠

发表于 2017-5-18 20:58:11

好奇吖斌 发表于 2017-5-17 22:04
调试好电机转向就不会反方向了!话说我以前用的电机驱动板都是一个电源输入的,L298N和L9110这些,尴尬了 ...

不用在意细节~
回复

使用道具 举报

好奇吖斌  高级技师
 楼主|

发表于 2017-5-18 21:02:27

yoyojacky 发表于 2017-5-18 08:14
电机上加个大电容就好啦

好,学习了!
回复

使用道具 举报

nicho  中级技匠

发表于 2017-5-19 16:19:52

楼主好棒!!!
回复

使用道具 举报

nicho  中级技匠

发表于 2017-5-19 16:26:14

舵机电机方面之前也遇到过不少坑,多个舵机瞬间启动导致板子复位,除了电容之外,最近发现一个NCP380貌似也能起到作用,还未实验
回复

使用道具 举报

Diy_IMRE  高级技师

发表于 2017-5-20 09:38:10

尼玛,透明外壳移动看着好像滑板学的感觉
回复

使用道具 举报

飞猪的小号  中级技师

发表于 2017-5-20 09:59:42

其实我一直在纠结外面那个透明的球。谢谢楼主分享
回复

使用道具 举报

AKKan  见习技师

发表于 2017-5-20 14:04:01

楼主好牛!学习了
回复

使用道具 举报

hnyzcj  版主

发表于 2017-5-20 19:11:54

楼主牛逼,向你学习
回复

使用道具 举报

kevinzhang19701  高级技匠

发表于 2017-5-22 16:33:14

心灵手巧外加有爱心,一枚棒棒哒铲屎官:lol
回复

使用道具 举报

好奇吖斌  高级技师
 楼主|

发表于 2017-5-26 19:33:31

kevinzhang19701 发表于 2017-5-22 16:33
心灵手巧外加有爱心,一枚棒棒哒铲屎官

嗯嗯,做一只玩玩吧!
回复

使用道具 举报

yoyojacky  初级技匠 来自手机

发表于 2017-5-29 11:24:04

如果有stl文件更好啦
回复

使用道具 举报

好奇吖斌  高级技师
 楼主|

发表于 2017-5-29 19:13:16

yoyojacky 发表于 2017-5-29 11:24
如果有stl文件更好啦

有啊,打印件有sw源文件和stl文件的
回复

使用道具 举报

gehhxing  见习技师

发表于 2017-6-6 23:09:53

yoyojacky 发表于 2017-5-18 08:14
电机上加个大电容就好啦

请教一下,大概需要加多大的电容呢
回复

使用道具 举报

gehhxing  见习技师 来自手机

发表于 2017-6-15 01:12:28

大神,我按照你的教程做了一套,调试过程中蓝牙模块变得供电不足了,这个问题你遇到过吗?
回复

使用道具 举报

gehhxing  见习技师

发表于 2017-6-23 08:32:19

yoyojacky 发表于 2017-6-22 19:32
电源供在蓝牙上,然后引出的线再给 arduino 供电.就好啦.而且电池建议充满.

谢谢回复~
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail