基于Arduino的智能乒乓球发球器的设计与制作_第1页
基于Arduino的智能乒乓球发球器的设计与制作_第2页
基于Arduino的智能乒乓球发球器的设计与制作_第3页
基于Arduino的智能乒乓球发球器的设计与制作_第4页
基于Arduino的智能乒乓球发球器的设计与制作_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1产品功能分析.....................................................1

2产品设计方案遴选.................................................1

2.1产品开发板的选择...........................................1

2.2电机驱动的选择.............................................1

2.3马达的选择方案..............................................2

2.4舵机选择方案................................................2

2.5显示屏的选择方案............................................2

2.6系统框图设计................................................2

3产品硬件设计......................................................3

3.1Arduino开发板..............................................3

3.2L298n电机驱动模块..........................................4

3.3sg90舵机...................................................5

3.4OLED12864显示屏............................................6

3.5DS1307时钟模块.............................................7

3.6蓝牙模块...................................................8

3.7130电机....................................................9

4产品软件设计.....................................................10

4.1Arduino软件开发环境......................................10

4.2Arduino软件开发流程......................................10

4.3主程序流程图..............................................12

4.4产品程序清单..............................................13

5产品组装与调试..................................................13

5.1电路的组装.................................................13

5.2产品的调试................................................13

5.3产品装配图................................................14

I

湖南商务职业技术学院毕业设计

5.4产品使用说明...............................................14

6产品设计技术标准................................................15

参考资料..........................................................16

附录..............................................................17

附录1元器件清单..............................................17

附录2电路原理图..............................................18

附录3PCB设计图..............................................18

附录4产品实物图..............................................19

附录5主程序代码..............................................20

II

湖南商务职业技术学院毕业设计

基于Arduino的智能乒乓球发球器的设计与制作

1产品功能分析

本产品是以ArduinoUNO开发板控制电机和舵机驱动来实现发球的方向和

方式为目的设计的。ArduinoUNO开发板为主要部分,外接舵机模块,L298n

电机驱动模、DS1307时钟模块和SSD1306显示器。当接入电源时,模块开始运

转,输入指令后可以实现固定角度和不同角度的发球。智能乒乓球发球器的设

计既可以娱乐健身,又适合于专业训练,性价比特别高。

2产品设计方案遴选

在进行电路的组装前需要分析适合该产品的硬件,使该产品更好的发挥其

功能。

该产品需要我们提供电机,开发板,蓝牙,显示器,时钟,舵机这些模

块,然后我们需要在这些模块中考虑性能,环保问题。

2.1产品开发板的选择

方案一:ArduinoUNO代码封装性高,所需语句少,降低软件的开发难

度,大多数功能都有固定数据库,使用便捷。

方案二:STM32开发板难度大,需掌握细节多。需要一定的专业知识,同

时编写代码实现功能也相对复杂,成本较高。

方案三:STC89C51易上手,但拓展复杂,芯片容易损坏。

综合上面的设计方案,我选择了方案一的ArduinoUNO开发板,资源多,

便于自学,可以配合图形化编程直接生成代码,适合外接传感器,且编程方便

而简洁,所以我选择使用ArduinoUNO开发板进行设计。

2.2电机驱动的选择

方案一:L298N电机驱动可以使用PWM进行电机调速控制,驱动能力强,

发热量低,且抗干扰能力强。

方案二:L9110S电机是为控制和驱动电机设计的两通道推挽式功率放大专

1

湖南商务职业技术学院毕业设计

用集成电路器件安全可靠。

综上所述,我选择使用L298n电机驱动,操作简单、性能稳定,有信号显

示更适合此设计。

2.3马达的选择方案

方案一:130马达的高速性能好,精度高,转速快,抗过载能力强,性能

稳定。

方案二:180马达稳定性良好,效率高,接线简单,但不能获得平滑的调

速。

综合上述方案,我选择了方案一130马达,体积小,性能稳定,尺寸适用

于此设计,且可调速。

2.4舵机选择方案

方案一:SG90舵机是价格便宜,可以准确控制物体运动。

方案二:MG90S适用于倾斜盘最佳,用于尾舵比高速数码舵机会差点。

综合上述方案,我选择了方案一因为SG90舵机的舵机比较便宜,位置控

制十分精确,而且转速也是可变。

2.5显示屏的选择方案

方案一:OLED12864显示屏,成本低,低功耗,具有多个控制指令,显示

效果好,高分辨率。

方案二:LCD1602字符液晶板,主板采用全新优质2行16个字符液晶,

显示位置比较少,体积大。

综合上述方案,我选择了方案一的OLED12864显示器支持的范围广,占用

的IO口较少,小巧方便,不怕摔。

2.6系统框图设计

本产品是由ArduinoUNOR3单片机和蓝牙模块,DS1307时钟模块,

OLED12864显示器,SG90舵机,L298n电机驱动模块和外接电源组成。

2

湖南商务职业技术学院毕业设计

图2.1系统框图

3产品硬件设计

3.1Arduino开发板

Arduino开发板通过USB直接烧录程序,外接扩展板比较方便。同时它的

编写程序也较为简单,可利用mind+,米思齐等这些图形化编程软件辅助完

成。网络论坛的资料资源较多。具有简单,便捷开发的特点,可跨平台操作。

图3.1ArduinoUNOR3实物图

3

湖南商务职业技术学院毕业设计

图3.2ArduinoUNOR3原理图

3.2L298n电机驱动模块

L298N电机驱动模块是使用逻辑电平信号来控制的。它有15个引脚,IN1

~IN4是控制电机的引脚,ENA和ENB为电机使能引脚,两边的m1和m2则是电

机接口,GND需要和开发板的地线接在一起,12V为外接电源,5V为接开发板

的VIN或5V。

图3.3L298n电机驱动模块实物图

4

湖南商务职业技术学院毕业设计

图3.4L298n电机驱动模块原理图

3.3sg90舵机

sg90舵机它的转动较为灵活。在接收到指令时可以灵活转到你指定的位

置,没有指令时则不会动。sg90有三条线,橙色(PWM)红色(5V)棕色

(GND)。

图3.5sg90舵机实物图

5

湖南商务职业技术学院毕业设计

图3.6sg90舵机原理图

3.4OLED12864显示屏

OLED12864显示屏对比度高,功耗低,自发光,超薄,亮度高,图形显示

模块。

图3.7OLED12864显示屏实物图

6

湖南商务职业技术学院毕业设计

图3.8OLED12864显示屏原理图

3.5DS1307时钟模块

DS1307时钟模块低功耗,价格便宜,可以读取年月日,时分秒,周等功

能,且可以自动调节闰年。引脚的SDA,SCL可以和显示器的SDA,SCL连接。

图3.9DS1307时钟模块实物图

7

湖南商务职业技术学院毕业设计

图3.10DS1307时钟模块原理图

3.6蓝牙模块

蓝牙HC05模块是一种便捷通讯模块,有六个引脚,其中SDA,SCL,在配置

蓝牙的时候不需要反接,在使用蓝牙时则需要反接。

图3.11蓝牙模块实物图

8

湖南商务职业技术学院毕业设计

图3.12蓝牙模块原理图

3.7130电机

130电机属于一种常用型的微型电机,其轴径相对来说比较纤细。

图3.13130电机实物图

9

湖南商务职业技术学院毕业设计

4产品软件设计

随着时代的进步,若想达到时代的标准,还需借助各种软件技术的支持。

例如我们经常使用的Arduino软件程序。通过编写程序然后烧录即可。

4.1Arduino软件开发环境

首先就是通过USB串口和电脑PC端连接,然后新建工程,选择开发板和

端口,进行烧录。之后观察开发板上有两个灯(L和on)是否亮了,若是亮了

则是说明开发板是正常的。

图4.1软件开发页面

4.2Arduino软件开发流程

建立工程,编写代码,连接开发坂,编译就会生成后缀为.c,.cpp的扩展

文件。编译的过程中会出现一些问题,开发板型号错误,端口号错误,或是代

码错误,编译框都会打印出这些错误,然后对照错误进行修改,直到编译通

过。当代码编译通过时仍可能存在错误,要看到效果和代码匹配上时即为通

过。有时仍需考虑硬件电路接线错误的问题。具体的开发流程如图所示。

10

湖南商务职业技术学院毕业设计

图4.2软件开发流程图

11

湖南商务职业技术学院毕业设计

4.3主程序流程图

图4.3主流程图

12

湖南商务职业技术学院毕业设计

4.4产品程序清单

图4.4产品程序清单

5产品组装与调试

5.1电路的组装

遵守焊接的基本规范。

(1)焊接桌面干净整齐,选好元器件位置,正负极区分,安放到万用板

上。

(2)烙铁达到适宜温度,按照四十五度角和焊锡丝接触在三到五秒内完成

操作。焊接时需注意不要焊接到其他的元器件,注意安全。

(3)模块接线到面包板,用杜邦线连接。由于线较多,所以整个过程中需

细致。请勿带电操作,避免损坏开发板。整个布局需要美观大方且简洁。

(4)检查整个布局有无接线错误问题。

(5)确认无误即可进行下一步烧录程序。

5.2产品的调试

(1)测试开发板,连接开发板到电脑PC端,查看L灯或者ON灯是否亮

起或闪烁。

(2)测试显示屏,烧入测试的IDE代码查看显示屏是否亮起,显示文字

13

湖南商务职业技术学院毕业设计

或者其他数据。若是无反应检查是否接线错误重新烧入,直到显示。

(3)测试时钟模块,用串口打印时间或者是显示屏查看时间。烧入测试

代码后,查看时间是否正常。若不正常则是接线,反接的问题,反过来即可。

(4)测试舵机,烧入程序后,用串口输入数据,看舵机是否转动。注意

接线问题。

(5)测试L298n电机驱动模块和电机。接线,连到外接的12V电源,查

看电机是否转动,转动则正常。反之检查接线问题。

(6)测试蓝牙,使用sscom软件对蓝牙进行调试。设置蓝牙密码,蓝牙

名称,蓝牙路径即可。

(7)整体连接,烧入代码,检查是否有反应。电机转动,显示器有数据

则为正常。

5.3产品装配图

图5.1产品装配图

5.4产品使用说明

检查桌面干净整洁,产品无误即可进行操作。

(1)接电源,显示屏会第一行显示YUANLANXIN第二行显示HNSWZY之

后显示时间和角度,同时电机转动。

14

湖南商务职业技术学院毕业设计

(2)通过串口或者上位机输入指令,进行发球。可以输入你需要的角

度,此时舵机转到你输入的角度,然后放球进行发球,屏幕会显示年份时间和

角度。输入a指令时,舵机会以50度为一个单位从0转到180度,然后从180

每次转动减20度到0度。然后显示器会读取串口数据并且打印数据在屏幕

上。输入指令b时则是固定90度,发球。显示屏显示时间和角度。

(3)使用完毕需收好产品,轻拿轻放,切勿使用暴力。

6产品设计技术标准

[1]J-STD-001E电气与电子组件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求

[3]IPC-7711/21电子组件和电路板的返工&返修

[4]GB/T11457-2006信息技术软件工程术语

[5]GB/T8566-2007信息技术软件生存周期过程标准

[6]GB/T8567-2006计算机软件文档编制规范

15

湖南商务职业技术学院毕业设计

参考资料

[1]陈吕洲.《Arduino程序设计基础》[M].北京航天航空出版社,2014

[2](美)布鲁姆(Blum,J.)著,况琪,王俊升译.Arduino魔法书:实现梦想的工具和技术[M].电子工业

出版社,2014

[3]SimonMonk著,唐乐译.Arduino+Android互动智作[M].北京:科学出版社,2013

[4]喻宗泉.《蓝牙技术基础》[M].北京:机械工业出版社,2014

16

湖南商务职业技术学院毕业设计

附录

附录1元器件清单

附表1.1元器件清单

17

湖南商务职业技术学院毕业设计

附录2电路原理图

附图2.1产品原理图

附录3PCB设计图

附图3.1产品PCB设计图

18

湖南商务职业技术学院毕业设计

附录4产品实物图

附图4.1产品实物图正面

附图4.2产品实物图反面

19

湖南商务职业技术学院毕业设计

附录5主程序代码

#include<DFRobot_Servo.h>//舵机模块

#include<DFRobot_DS1307.h>//时钟模块

#include<Adafruit_ssd1306syp.h>//oled显示器模块

#defineSDA_PIN2

#defineSCL_PIN3//定义显示器模块的引脚

//动态变量

charmind_s_i;//将串口读取的消息存储在该变量中

intmind_n_jiaodu;//将串口读取的消息存储在该变量中

Adafruit_ssd1306sypdisplay(SDA_PIN,SCL_PIN);//静态常量

#defineIN14//定义IN1引脚

#defineIN25//定义IN2引脚

#defineIN36//定义IN3引脚

#defineIN47//定义IN4引脚

//创建对象

DFRobot_DS1307ds1307;//时钟模块变量

Servoservo_11;//舵机模块变量

//主程序开始

voidsetup(){

ds1307.setTime(constrain(2022,2000,2099),constrain(12,1,12),constrain(9,1,31),

constrain(14,0,23),constrain(31,0,59),constrain(30,0,59));

display.initialize();//初始化

display.setCursor(0,18);//显示的位置

display.setTextSize(2);//字体大小

display.print("HNSWZY");//显示“HNSWZY”

display.setCursor(0,0);//显示的位置

display.print("YUANLANXIN");//显示内容

display.update();//开启显示

servo_11.attach(11);//舵机初始化

Serial.begin(9600);//波特率

20

湖南商务职业技术学院毕业设计

ds1307.begin();//时钟初始化

mind_n_jiaodu=30;//设置角度变量的初值

pinMode(13,OUTPUT);//初始化引脚

pinMode(IN1,OUTPUT);//IN1引脚初始化

pinMode(IN2,OUTPUT);//IN2引脚初始化

pinMode(IN3,OUTPUT);//IN3引脚初始化

pinMode(IN4,OUTPUT);//IN4引脚初始化

}

voidloop(){

display.clear();//清屏

if((Serial.available())>0){//判断串口是否有数据可读

mind_n_jiaodu=Serial.parseInt();//控制串口

servo_11.angle(abs(mind_n_jiaodu));//设置舵机角度

Serial.println((String("angle:")+mind_n_jiaodu));//输出数据

}

Serial.println((String(ds1307.getTime(ds1307.DS1307_YR))+String((String("-")+

String((String(ds1307.getTime(ds1307.DS1307_MTH))+String((String("-")+

String((String(ds1307.getTime(ds1307.DS1307_DATE))))))))))));//显示年月日

Serial.println((String(ds1307.getTime(ds1307.DS1307_HR))+String((String("-")+

String((String(ds1307.getTime(ds1307.DS1307_MIN))+String((String("-")+

String((String(ds1307.getTime(ds1307.DS1307_SEC))))))))))));//显示时分秒

analogWrite(IN1,-150);//设置马达1转速为-150

analogWrite(IN2,-150);//设置马达1转速为-150

analogWrite(IN3,-150);//设置马达2转速为-150

analogWrite(IN4,-150);//设置马达2转速为-150

digitalWrite(13,HIGH);//高电平

delay(1000);//延时1s

digitalWrite(13,LOW);//低电平

delay(1000);//延时1s闪烁灯

display.setCursor(0,0);//显示的位置

display.print(ds1307.getTime(ds1307.DS1307_YR));//年

display.print("-");

display.print(ds1307.getTime(ds1307.DS1307_MTH));//月

display.print("-");

display.print(ds1307.getTime(ds1307.DS1307_DATE));//日

21

湖南商务职业技术学院毕业设计

display.setCursor(0,16);//显示的位置

display.print(ds1307.getTime(ds1307.DS1307_HR));//时

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_MIN));//分

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_SEC));//秒

display.setCursor(5,32);//显示的位置

display.print("angle:");//提示符angle:

display.print(mind_n_jiaodu);//显示角度变量

display.update();//开启显示

if((Serial.available())&&(mind_n_jiaodu==0)){

mind_s_i=Serial.read();//读取变量

if(mind_s_i=='a'){//串口输入a时执行以下命令舵机角度在0的基础上加50

度到180在减20度到0实现不同角度发球的一个功能

display.clear();//清屏

digitalWrite(IN1,LOW);//设置马达1为低电平

digitalWrite(IN2,HIGH);//设置马达1为高电平

digitalWrite(IN3,HIGH);//设置马达2为高电平

digitalWrite(IN4,LOW);//设置马达2为低电平

while(!(mind_n_jiaodu>180)){

servo_11.angle(abs(mind_n_jiaodu));//舵机读取角度

delay(1000);//延时1s

mind_n_jiaodu=(mind_n_jiaodu+50);//角度加50

Serial.println((String("angle:")+String(mind_n_jiaodu)));//输出角度

display.setCursor(2,0);//显示的位置

display.print(ds1307.getTime(ds1307.DS1307_YR));//年

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_MTH));//月

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_DATE));//日

//显示内容

display.setCursor(0,16);//显示的位置

display.print(ds1307.getTime(ds1307.DS1307_HR));//时

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_MIN));//分

display.print("-");//日期中的-

display.print(ds1307.getTime(ds1307.DS1307_SEC));//秒

display.setCursor(5,32);//显示的位置

display.print("angle:");//提示符angle:

22

湖南商务职业技术学院毕业设计

display.print(mind_n_jiaodu);//显示角度变量

display.update();//开启显示

}//在屏幕第一行显示角度

while(!(mind_n_jiaodu<0)){

display.clear();//清屏

digitalWrite(IN1,LOW);//设置马达1为低电平

digitalWrite(IN2,HIGH);//设置马达1为高电平

digitalWrite(IN3,HIGH);//设置马达2为高电平

digitalWrite(IN4,LOW);//设置马达2为低电平

servo_11.angle(abs(mind_n_jiaodu));//判断角度

delay(1000);//延时1s

mind_n_jiaodu=(min

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论