机器谱

S103】自助饮品调配机

图文展示3264(1)

图文展示3264(1)

副标题

作品说明

作者:陈子豪、邓振宇、黄鹏伟、孙志伟

单位:莆田学院

指导老师:范剑红、佘栋梁

1. 市场调研及市场前景说明

      目前只有阿里的智慧系统使用到这种桌面级的机械臂,属于前沿作品,主要面向市场有奶茶店或是酒吧,一方面可以制造噱头,试想在区域内只有独此一家的科技产物,想必可以成为一条街上最靓的崽!另一方面,奶茶店这类店铺,通常都不会有太大的店面,这样一来,小巧的机械臂就十分受到欢迎!

2. 作品功能介绍及先进性说明

2.1 功能

      可实现的功能有,蓝牙控制,自己编写软件可控,将数据传输给单片机,从而做到——混搭的效果。主要路径就是蓝牙连接,选择需要饮料的量,发送数据给单片机,舵机开始动作,到相应的点取相应的饮料。程序上可使舵机保持水平!

2.2 先进性

      本作品主要用于酒吧或者奶茶店等位置不需要大,可以放在旮旯的角落。独创的桌面固定,简单可拆卸,可以调整的机械臂定点,可转180°的大范围区间,放上较多的原料。

作品说明

自助饮品调配机

3. 工作流程图

4. 技术说明

4.1 主要技术支持

      蓝牙模块也算是比较常见的了,我们用它来与一些智能设备(手机,电脑及其他支持蓝牙的设备)连接,利用它来传输一些数据,指导机械臂进行运作。

4.2 手机APP的源程序及界面

5. 作品制作过程说明

5.1 思路来源

      奶茶店人工打奶茶的过程,所需的人工可以通过机械代替,响应国家2025计划,就想出一个代替这个过程的器械,自助饮料调配机以下是本作品想进行的改进,可用加热且保温的奶茶桶:

5.2 方案选择过程

      有过多组方案:夹具选择搭配上述保温桶,机械臂的选择,用得不同的舵机,修改WiFi还是蓝牙的控制,最后经过讨论,决定使用这样一套方案。因为保温桶的开关不是很好打开,才使用了塑料的杯桶,还有就是后期会添加。夹具使用一个舵机啮合齿轮控制,容易失效,后期3D打印会用刚性更好的材料。

5.3 制作过程的照片

6. 示例程序源代码

#include <Servo.h>

#include <SoftwareSerial.h>

SoftwareSerial BT(11,12);

Servo myservo;

Servo myservo1;//定义数字接口7 连接伺服舵机信号线

Servo myservo2;//定义数字接口4 连接伺服舵机信号线

Servo myservo3;//定义数字接口3 连接伺服舵机信号线

Servo myservo4;//定义数字接口8 连接伺服舵机信号线

Servo myservo5;//定义数字接口A2 连接伺服舵机信号线

float a,b,i,h,j,k,l;

void setup() {

  //初始化电机驱动IO为输出方式

myservo1.attach(7);//h

myservo2.attach(4);//j

myservo3.attach(3);//k

myservo4.attach(8);//l

myservo5.attach(A2);//b

  Serial.begin(115200);

  BT.begin(115200);

  //告诉电脑,蓝牙准备好了

  Serial.println("BT is ready!");

}

void loop() {

  // put your main code here, to run repeatedly:

//===================机械臂取水杯====================

while(BT.available()>0)

{

  chushihua();

 

  yidian();

 

  erdian();

 

  sandian();

 

  zhongdian();

 

  while(1);

}

}

void chushihua()//杯子存放点及其过渡点坐标

{

myservo1.write(5);//设置舵机旋转的角度

myservo2.write(0);//设置舵机旋转的角度

myservo3.write(0);//设置舵机旋转的角度

myservo4.write(0);//设置舵机旋转的角度

myservo5.write(130);//设置舵机旋转的角度

delay(500);

for(j=0,k=0,l=20;j<90;j++,k++,l++)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

  for(b=130;b>60;b--)

{

  myservo5.write(b);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(500);

for(j=90,k=90,l=110;j>70;j--,k--,l--)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

}

void yidian()     //饮料1及其过渡点坐标

{

   for(h=5;h<70;h++)

{

myservo1.write(h);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(1000);

for(j=70,k=70,l=90;j>50;j--,k--,l-=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

for(j=50,k=50,l=40;j<70;j++,k++,l+=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

}

void erdian()     //饮料2及其过渡点坐标

{

   for(h=70;h<110;h++)

{

myservo1.write(h);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(1000);

for(j=70,k=70,l=90;j>50;j--,k--,l-=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

for(j=50,k=50,l=40;j<70;j++,k++,l+=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

}

void sandian()     //饮料3及其过渡点坐标

{

   for(h=110;h<150;h++)

{

myservo1.write(h);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(1000);

for(j=70,k=70,l=90;j>50;j--,k--,l-=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

for(j=50,k=50,l=40;j<70;j++,k++,l+=2.5)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

}

void zhongdian()

{

    for(h=150;h>5;h--)

{

myservo1.write(h);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(1000);

for(j=70,k=70,l=90;j<90;j++,k++,l++)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

  for(b=60;b<130;b++)

{

  myservo5.write(b);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(500);

}

void sidian()

{

    for(h=110;h>5;h--)

{

myservo1.write(h);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(1000);

for(j=70,k=70,l=90;j<90;j++,k++,l++)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

  for(b=60;b<130;b++)

{

  myservo5.write(b);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(500);

}

void erkai()

{

  for(b=130;b>60;b--)

{

  myservo5.write(b);//设置舵机旋转的角度

  delay(30);             // 等待电机旋转到目标角度

}

delay(500);

for(j=90,k=90,l=110;j>70;j--,k--,l--)

{

  myservo2.write(j);

  myservo3.write(k);

  myservo4.write(l);

delay(50);

}

delay(1000);

}


* 本项目未获得作者开源授权,无法提供资料下载

© 2024 机器时代(北京)科技有限公司  版权所有
机器谱——机器人共享方案网站
学习  开发  设计  应用