话不多说,来段视频压压惊先:
做逗喵小球的故事如下↓ 相信很多人都喜欢小动物(不仅仅喜欢小动物,还要吃掉小动物,这个我开玩笑的),例如小狗或小喵什么的!现在分享一个好玩的小玩意!类似Sphero的球型机器,可以用来逗喵溜狗。2016年大概5月份的时候看到做BB-8机器人的泰哥做了一个遥控小球,我也好想做一个,可是他说电脑坏了重装系统后建模文件没了。恰好2016年暑假8月份我家走来了一只流浪小喵,好萌好可爱啊!我正好在学习solidworks三维建模,于是就决定自己试着做一个逗喵的小球。
看图,是不是好可爱呢?喵~~不过好瘦小啊,呜呜呜,好可怜QAQ!!!正好家里有老鼠,父母把小喵收养下来了,我也正式成为一名铲屎官啦。过了不久10月份的时候又来多了一只小黄喵,一起收养了,现在他们成为好朋友啦ˏ₍•ɞ•₎ˎˏ₍•ʚ•₎ˎ!
小球3D建模效果图:
一边学习Solidworks一边建模,断断续续地画,大概画了一个多月吧,建完模后又修改了好多遍才满意。
零件清单: 材料名称 | 数量 | | 1(建议多买几个备用) | | 2 | | 1 | | 1 | | 3 | | 1 | | 1 | | 2 | | 若干 | | 14 | | 按stl文件说明打印(轮子多打印几个备用 |
↓橡胶圈是买这种橡胶圈车轮拆下来的,尺寸大概是外径28mm、内径25mm、线径3mm。
想自己做的自己到网上购买上面说的电子零件,在这里说说做小球时走过的坑!用DF活动的现金券在DF商店买了Bluno Nano、3.7v锂电、HR8833微型电机驱动板结果发现没一个能用上,原来那个集成蓝牙功能的Bluno Nano是个不通用的蓝牙,蓝牙软件必须用官方提供的app,不支持密码配对,自己弄好的蓝牙遥控app用不了;HR8833驱动板需要两个5V或以上的电源输入才能工作,我还以为一个是电源输入,另外一个可以输出电源的,折腾了我快一个多星期才搞懂了,真是每块板子都有它不工作的脾气啊!!!希望DFRobot能完善一下这些电子零件和模块,做个通用的蓝牙Nano板,电机驱动板也做得更人性化易用;3.7v电池电机启动瞬间会把电压拉低,导致蓝牙自动断开然后小球会失控,一直滚停不下来,所以改用7.4v锂电就没有问题了。
接线图:接线很简单,就是一个蓝牙小车的接线方式组装零件
第一个版本内部尺寸小了,两边的牛眼轮距离外壳有个空隙
- /*
- * 日期: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();
- }
复制代码
感觉小球程序用PWM控制好像会好点 蓝牙模块先不要安装,先烧录程序,通过Arduino IDE串口发送字符测试电机转向,方向不对就修改子函数下的digitalWrite(INX,HIGH或者LOW);测试好再装蓝牙模块
蓝牙模块设置教程.zip
蓝牙模块设置好后再组装到Arduino板子上,我比较喜欢用杜邦线与蓝牙模块连接,不焊死,方便拆下来用到别的地方 - #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);
- }
复制代码
组装完成
用扎带把电池固定
完成
我在GitHub上找到了一个android开源的蓝牙遥控App把源码修改成自己想要的,我不会iOS,所以就没有iOS苹果手机的App啦。
遥控App演示:
自定义编码默认值为:前进 1、后退 2、左转 3、右转 4、停止 0
滑动虚拟摇杆上-前进、下-后退、左-左转、右-右转、松开为停止;也可以作为其它蓝牙小车的遥控app。
小球演示:
Processing上位机程序 我做完小球和安卓程序觉得还不够好玩,电脑也可以利用起来的,于是看了两天Processing的资料写出了个电脑蓝牙遥控小球的程序
使用方法:到 Processing官网下载IDE安装,先让蓝牙模块连接电脑获取串口(设备管理器上查看),例如COM3(不同电脑可能不一样)修改下面String arduinoPort = "COM 3";再运行程序 - 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);//下
- }
复制代码
如↑图,按键盘方向键为上-前进、下-后退、左-左转、右-右转、松开为停止
抱歉没有逗猫视频了
有个不好的消息就是小黄喵走丢了,五一放假回家的时候已经走丢1个月了,这个4月我的心情也不怎么好,猫丢了我更伤心,所以没有逗猫视频了,也不知道接下来要做些什么,想静下来学自己想学的,提高技术才能做更好玩的东西
帖子其实4月份就写好了,但只放了在个人站,之后也有一些人加我好友来与我一起交流了,费点劲搭个人站做主站分享还是挺不错的,好了现在发到其它地方一起玩吧!
Android程序
开源程序地址
pet-toy.rar--sldprt文件需solidworks2016及以上版本打开
最后感谢那些帮助过我的小伙伴(泰哥和SC),因为我没有3D打印机要找小伙伴帮忙!
祝大家玩得开心ヽ(•‿•)ノ。
想了解更多可访问我的个人站www.haoqiabin.cn
2017-07-27更新了个人站程序
程序更新:
-下位机程序修改顺时针自转和逆时针自转为绕圈左右转,新增两个方向为顺时针自转和逆时针
-上位机新增两个按钮控制顺时针自转和逆时针
-原来的圆孔轴轮子容易打滑,现在改成D轴孔再也不会打滑啦 |
|