1、Dynamical Systems and Control 动力系统与控制动力系统与控制,2023,12(3),173-185 Published Online July 2023 in Hans.https:/www.hanspub.org/journal/dsc https:/doi.org/10.12677/dsc.2023.123019 文章引用文章引用:郭付阳,董文方,池桂林.基于 Arduino UNO R3 的画画写字机的设计与实现J.动力系统与控制,2023,12(3):173-185.DOI:10.12677/dsc.2023.123019 基于基于Arduino UNO R
2、3的画画写字机的的画画写字机的 设计与实现设计与实现 郭付阳郭付阳1,董文方,董文方1,池桂林池桂林2 1航空工业第一飞机设计研究院,陕西 西安 2中国航空工业集团公司洛阳电光设备研究所,河南 洛阳 收稿日期:2023年6月25日;录用日期:2023年7月16日;发布日期:2023年7月27日 摘摘 要要 本文设计实现了一种基于本文设计实现了一种基于Arduino UNO R3的写字绘图机械装置,本次设计综合考虑装置的功能与技术指的写字绘图机械装置,本次设计综合考虑装置的功能与技术指标,经过设计方案的选择,进行细致的调试与测试最终确定画笔驱动控制算法、画笔路径规划算法、计标,经过设计方案的选择
3、,进行细致的调试与测试最终确定画笔驱动控制算法、画笔路径规划算法、计算机与主控芯片的通讯方式等一套可实现的系统设计方案。本次设计主要完成了如下工作:系统的硬件算机与主控芯片的通讯方式等一套可实现的系统设计方案。本次设计主要完成了如下工作:系统的硬件设计与选择,包括系统的电路设计、主控芯片与拓展板的选择、步进电机的选择、抬笔舵机的选择、支设计与选择,包括系统的电路设计、主控芯片与拓展板的选择、步进电机的选择、抬笔舵机的选择、支撑框架的选材和相关通信连接线的选择等。系统的软件算法设计,包括各模块驱动算法的设计开发、画撑框架的选材和相关通信连接线的选择等。系统的软件算法设计,包括各模块驱动算法的设计
4、开发、画笔行走路径的规划算法和绘出基本图形文字的算法等。依据系统设计原理进行硬件搭建并运行程序算法,笔行走路径的规划算法和绘出基本图形文字的算法等。依据系统设计原理进行硬件搭建并运行程序算法,可以实可以实现理想文字和图形的绘出。测试结果表明,本次设计达到预期目标。现理想文字和图形的绘出。测试结果表明,本次设计达到预期目标。关键词关键词 机器人,写字机,机器人,写字机,Arduino,路径规划,写字绘图,路径规划,写字绘图 Design and Implementation of Picture Writer Based on Arduino UNO R3 Fuyang Guo1,Wenfang
5、 Dong1,Guilin Chi2 1First Aircraft Institute of AVlC,Xian Shaanxi 2Luoyang Institute of Electro-Optical Equipment,AVIC,Luoyang Henan Received:Jun.25th,2023;accepted:Jul.16th,2023;published:Jul.27th,2023 Abstract This paper designs and implements a writing and drawing mechanical device based on Ardui
6、no 郭付阳 等 DOI:10.12677/dsc.2023.123019 174 动力系统与控制 Uno R3.This design comprehensively considers the functions and technical indicators of the de-vice.After comparison and selection of design schemes,and detailed debugging and testing,the final brush drive control algorithm,brush path planning algorit
7、hm,computer program and the main control chip communication mode,such as a set of realizable system design scheme is de-termined.This design has mainly completed the following work:the hardware design and selec-tion of the system,including the circuit design of the system,the main control chip and t
8、he selec-tion of the expansion board,the selection of the stepper motor,the selection of the steering gear,the selection of the support frame and the selection of the relevant communication lines.The software algorithm design of the system includes the design and development of the module dri-ven al
9、gorithm,the planning algorithm of the brush walking path and the algorithm of drawing the basic graphics and words.According to the system design principle,set up hardware and run the program algorithm,and ideal text and graphics drawing can be achieved.The test results show that the design reaches
10、the expected goal.Keywords Robot,Writing Machine,Arduino,Path Planning,Writing Drawing Copyright 2023 by author(s)and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License(CC BY 4.0).http:/creativecommons.org/licenses/by/4.0/1.引言引言 写字是人类基本行为习惯之一,仿人功能写
11、字机器人的研究是目前机器人发展的一个重要分支,国内外对于写字机器人的研发和应用1都已经取得了一定的成果。国内小米推出的小米写字机,能够实现手写识别和书写,美国的 AxiDraw 机器人能够实现高精度的自动书写。结合现有成品以及相关文献在理论研究层面,要研究分析写字机器人的运动学过程并解决规划路径的解析工作,也要研究分析如何对写字机器人进行路径规划、画笔的力道控制、画笔的位置控制、画笔的速度控制等内容。在实践操作层面,涉及到系统的机械结构设计、整体电路设计、硬件设计与选择、软件开发等内容。本文设计实现的写字机器人将字轨迹通过运算,转换成机器人要运动的路径。具体要在完成系统参数初始化、系统部件之间
12、通信初始化的前提下,通过反解算法设置舵机的起笔、落笔子程序功能实现,步进电机的前进、停止子程序功能实现,转弯子程序功能实现等。2.系统总体设计方案系统总体设计方案 2.1.系统概述系统概述 本系统旨在设计并实现一个完整统一的竖直平面写字机,具体包括电源驱动模块、上位机控制软件、下位机主控芯片模块、画笔驱动模块、硬件连接支撑部件等。该写字机首先能够实现硬件搭建并具备一定的抗干扰能力,在此基础之上实现各功能算法子系统能够正常运作,从而使写字机能够完成对人们给定坐标串进行解析转化为电机与舵机的相关动作,从而实现预定轨迹路径的写字作图功能并可通过调节参数和起始落笔点从而实现工作区域大小和位置的改变。2
13、.2.系统实现方法系统实现方法 实现画笔写字绘图功能的关键是使画笔运动与使画笔按照预期轨迹运动。在电源设备的供能下,主Open AccessOpen Access郭付阳 等 DOI:10.12677/dsc.2023.123019 175 动力系统与控制 控芯片通过引脚接线即可以使电机使能而运动,而控制电机按照预期轨迹运动则需要通过主控芯片通过算法逻辑解析电机与舵机的运动行为从而控制控制画笔的按照预期规划运动。为体现自主性,本次设计通过人工规划文字路径并设计相关路径坐标串储存在程序中,主控芯片运行至数据坐标串时顺序读取坐标串从而控制画笔一步接一步按照预期轨迹移动从而写出相关文字。通过所建立的各
14、种运动子程序,以画笔起始点为坐标原点,通过画笔移动连接按顺序所给出的各坐标点,以此完成写字作图功能。3.系统构建系统构建 系统整体结构包括电源驱动模块、上位机控制软件、下位机主控芯片模块、画笔驱动模块、硬件连接支撑部件等,具体系统工作流程如图 1 所示。Figure 1.System hardware working principle diagram 图图 1.系统硬件工作原理图 3.1.系统总体电路设计及主控芯片选型系统总体电路设计及主控芯片选型 写字机系统以 Arduino Uno R3 为主控板2,该主控板最高工作频率达 72 MHz,是一种的低功耗、性能稳定的单片机。驱动系统采用 2
15、8BYJ-48 步进电机带动线绳从而扯动画笔在竖直二维平面上的按轨迹移动,画笔的抬起与落下通过性能稳定的 TS90A 90g 舵机进行控制,机械传动系统结构包括电机支架、线轴、线绳、舵机支架、画板等,电源系统采用 USB 数据线进行供电。由以上可知硬件电路模块包含主控芯片、串口通信模块(配置在主控芯片内)、步进电机及驱动模块、抬笔舵机模块、电源等五个模块。主控芯片图、系统总体电路连接图,整体电路连接图如图 2 所示。郭付阳 等 DOI:10.12677/dsc.2023.123019 176 动力系统与控制 Figure 2.Overall circuit connection diagram
16、 图图 2.整体电路连接图 Arduino Uno 板内部具有智能电源切换电路3,电路原理如图 3 所示。其工作原理是在运算放大器U3、二极管 D1、稳压器 U1 与 U2 和分压电阻 R1 与 R2 的共同作用下,无论是通过 S1、S2 控制的外接电源供电或者 USB 供电方法,都能在智能电源切换电路的作用下输出符合主控芯片工作状态的稳定的电压。Figure 3.Intelligent power switching circuit 图图 3.智能电源切换电路 智能电源切换电路的存在使得主控芯片可以同时连接多个电源4,此电路会自主选择最高可用电压的作为主控芯片的供电电源,然后将其此电源接入稳
17、压器进行稳压操作。兼顾便利与经济性,本文设计郭付阳 等 DOI:10.12677/dsc.2023.123019 177 动力系统与控制 所采用供电方法是用主控板与电脑相连的 USB 线进行供电,此时的 USB 数据线不仅起到了供电的作用,还是进行电脑程序数据与主控板进行通信的通信线。Arduino Uno 板通过扩展插座提供 14 个数字 I/O 口,引脚编号为 013。数字 I/O 口作为输出口使用时具有一定的带负载能力,此时需要注意的是每个 I/O 口的平均电流不宜超过 20 mA,峰值电流不能超过 40 mA,且所有 I/O 口的电流总和不要超过 200 mA。14 个数字 I/O 口
18、中的 3、5、6、9、10、11 引脚支持 PWM 输出,应用在本次设计中,两步进电机记为 M1、M2,两步进电机驱动器的各 4 条信号线 IN1IN4 分别对应连接 Arduino Uno 板的 2、3、5、6 和7、8、9、10 引脚来进行控制信号的传递。3.2.电机及驱动选型电机及驱动选型 考虑本次设计的技术指标要求如精确控制画笔走停,停电后不会因负载而被反向拉动且考虑经济性与操作方便等因素,决定采用步进电机,具体型号采用 28BYJ-48 步进电机,通过驱动板的连接即可进行供电,不用外加电源,自带减速齿轮,力道可以满足我们的需求,且有成熟的实际工业应用案例,如一般空调的导风板就是用此电
19、机进行拉动。该步进电机可在 512 V 的直流供电电压下进行工作,常采用单四拍、双四拍和八拍作为电机的通电驱动方式,本次电机驱动型别是四相八拍,电机的通过接受电脉冲信号而进行相应驱动,每接受一个电脉冲信号电机就会转过一个最小的基本角度(步距角),通过给定电机不同数量与性质的电脉冲信号就可控制电机进行相应的转动。3.3.ULN2003 步进电机驱动步进电机驱动 Figure 4.Schematic diagram of stepper motor drive 图图 4.步进电机驱动示意图 ULN2003 步进电机驱动板与 Arduino Uno 控制板进行图 4 相应的电路连接5,步进电机通过U
20、LN2003 电机驱动板从 Arduino Uno 控制板接收相应的驱动和控制信息,本次设计中直接将驱动板的“+”、“”引脚与控制板的 VCC 与 GND 引脚相连接进行供电,驱动板的四个引脚 IN1IN4 与控制板的数字口进行连接,其中画板右侧步进电机的 IN1IN4 与 Arduino Uno 主控板的 2、3、4、5 数字引脚进行连接,画板左侧步进电机的 IN1IN4 与 Arduino Uno 主控板的 7、8、9、10 数字引脚进行连接。郭付阳 等 DOI:10.12677/dsc.2023.123019 178 动力系统与控制 3.4.抬笔舵机选型抬笔舵机选型 舵机,英文名称 se
21、rvo,是一个处于闭环工作状态的伺服单元,因此有着较为精准的输出和稳定的工作性能,且有这体积小、重量轻、输出稳定且输出力矩大的特性。内部一般包括电机及其控制器、减速器等部件,如上所述舵机是一个闭环系统,舵机内有一个对转轴转角进行实时监测的角度传感器,通过检测到的实际输出转角与理想输出转角的差值可以相应的产生控制信号控制舵机的运动从而转到理想的角度。舵机有输出保持功能,即当给定电脉冲调制信号的宽度以后,舵机执行机构就会产生与之对应的转角,在保持供电的情况下,此角度可在施加外界转矩的作用下而保持固定,直至下一个驱动控制调制电脉冲信号的到来,此特点非常适合作为本次的抬笔与落笔动作的控制机构,以此来保
22、证画笔的正常抬起与落下。3.5.硬件支撑传动部件硬件支撑传动部件 硬件支撑传动部件6包括扯动画笔移动的线轴与线绳、提供输出转角使线轴转动的步进电机及其支撑机构、使画笔抬起落下的抬笔舵机及其支撑机构、用于书写工作的画笔的支撑机构。在主控芯片、步进电机与抬笔舵机进行选型并确定相应支撑与传动部件后,系统整体硬件安装情况如图 5 所示。Figure 5.Overall hardware assembly appearance of the system 图图 5.系统整体硬件组装外观图 3.6.供电方式选择供电方式选择 采用 USB 数据线进行供电,既可以与笔记本电脑相连,也可与移动电源等相连。4.系
23、统算法设计系统算法设计 4.1.上位机编译平台上位机编译平台 Arduino IDE 写字机器人雏形机之所以不能称之为完全意义上的写字机器人,是因为它只有硬件结构而不具备软郭付阳 等 DOI:10.12677/dsc.2023.123019 179 动力系统与控制 件编程功能。本次设计主控芯片采用 Arduino Uno 控制板,主控芯片需要被写入代码程序才能工作运行,对主控芯片的算法编写与录入由上位机编译平台 Arduino IDE 来完成。Arduino IDE 是一款开源软件并支持代码程序的在线烧录,打开 Arduino IDE,Arduino IDE 界面的上方、中间与下方分别是工具栏
24、、代码编辑区和消息通知区。4.2.画笔水平移动子程序设计画笔水平移动子程序设计 主控芯片通过设定的算法逻辑解析坐标串代码7,通过数字引脚发出的相应的 PWM 脉冲信号,该脉冲信号作为步进电机驱动器 ULN2003 的输入信号,电机驱动器按照其接收的信号内容来决定相应电机的动作内容,从而使画笔产生相应的位移。本设计采用步 28BYJ-48 步进电机,一周步长 2048 步转 360 度。又本设计采用线轴直径 35 mm,周长为110 mm,通过计算可知步进电机步距为0.0537 mm,即每步线绳被拉动的距离的最小分辨率为0.0537 mm。为了写出来的汉字平滑,步进电机每步运动后要进行相应的等待
25、延时时间设定且转弯等待时间也要进行设定,应等待笔静止后再运动。为了确定画笔的行走路径可遍历平面,则要实现画笔即可前进又可后退,映射到电机的正反转带动线绳的卷入与卷出。4.3.中画笔竖直移动子程序设计中画笔竖直移动子程序设计 本设计中,以竖直面为基准平面通过调整程序参数以此来控制舵机相对于竖直基准面的旋转角度从而控制画笔抬起与落下。按照下图所示方式安装画笔及其固定装置,通过实际现场调试可知,抬笔参数可选择范围为:120180,落笔参数可选择范围为:0110。完成以上硬件连接后,要进行舵机与 Arduino Uno 主控板的通信。4.4.图画笔移动至目的位置的路径算法规划程序设计图画笔移动至目的位
26、置的路径算法规划程序设计 画笔要实现如图 6 所示的移动,即要从 D 移动到 D的位置,只需要通过相应的算法分别计算出画笔移动前与移动后 AD 和 AD的差,BD 和 BD的差,即得出两线轴要放多少线或收多少线和舵机的动作,从而可确定电机应该正转还是反转及转过的步数,至此就完成了画笔按照预期轨迹的一步移动,重复上述操作,就可以实现画笔的按照给定数据坐标串的规划路径的移动。Figure 6.Schematic diagram of brush movement 图图 6.画笔移动示意图 完成系统各参数设定后,以画笔初始落点为坐标原点,以给定坐标点为目的点,依据勾股定理原理,可反解出电机的相应动作
27、,具体实现流程如图 7 所示。郭付阳 等 DOI:10.12677/dsc.2023.123019 180 动力系统与控制 Figure 7.Flow chart of the brush moving according to the expected trajectory 图图 7.画笔按照预期轨迹移动流程图 5.系统测试系统测试 5.1.主控芯片工作情况测试主控芯片工作情况测试 第一步首先在 Arduino 开发板上装上原型扩展板和面包板,并用导线连接电路。第二步用 USB 线将 Arduino Uno 板连到电脑,连接成功后,电源指示灯亮起。第三步用鼠标点击“这台电脑”,并单击右键/管
28、理/设备管理器/端口,查看 Arduino Uno 连接的 COM郭付阳 等 DOI:10.12677/dsc.2023.123019 181 动力系统与控制 口并记录,后续下载程序在此端口进行。第四步是在代码输入后,进行代码的编译工作。如果显示没有错误,设置 Arduino IDE 板子型号以及相应的串口号后,进行代码的上传工作。第五步是观察测试结果,面包板上的 LED 每隔一秒交替亮灭一次,说明主控芯片正常工作。在本次设计中,依据实际现场情况,主控芯片通电后相应指示灯亮且与之相连的面包板上的 LED 等按照设定规律变化,说明主控芯片处于正常工作状态。5.2.基础坐标数值参数测试基础坐标数值
29、参数测试 已知实际系统的水平距离参数(单位为 mm)为 400,即 X=400;竖直距离参数(单位为 mm)为 150,即 Y=150。现进行距离参数的不同对实际绘图效果的影响测试8,以下图形中,图 8 给出了 Y=80,X分别等于 200、400、800 是的实际绘出效果;图 9 给出了 Y=150,X 分别等于 200、400、800 时的实际绘出效果;图 10 给出了 Y=250,X 分别等于 200、400、800 是的实际绘出效果;图 11 给出了不同变量组合下所绘出的九张图的综合对比照。Figure 8.Actual plot when Y=80 图图 8.Y=80 时实际绘出图
30、Figure 9.Actual plot when Y=150 图图 9.Y=150 时实际绘出图 Figure 10.Actual plot at Y=250 图图 10.Y=250 时实际绘出图 郭付阳 等 DOI:10.12677/dsc.2023.123019 182 动力系统与控制 Figure 11.Comprehensive comparison of different variable value com-binations 图图 11.不同变量值组合下的综合对比图 5.3.系统绘图写字子程序测试系统绘图写字子程序测试 5.3.1.画线子程序设计画线子程序设计 依据现场设备实
31、际距离数据调整相应距离参数并设置由测试得出的合理延时等待时间,以画笔初始落点为坐标原点,在画笔的最佳工作区进行直线、矩形与菱形图形的实际绘出效果如图 12 所示。Figure 12.Line graph test run diagram 图图 12.直线图形测试运行图 以上图形的正确绘出说明在各硬件处于正常工作状态且各参数选择合理的情况下,此直线子程序可正确运行。郭付阳 等 DOI:10.12677/dsc.2023.123019 183 动力系统与控制 5.3.2.画圆形、心形等曲线子程序测试画圆形、心形等曲线子程序测试 依据现场设备实际距离数据调整相应距离参数并设置由测试得出的合理延时等待
32、时间,以画笔初始落点为坐标原点,在画笔的最佳工作区进行圆形、心形与蝴蝶曲线的绘出效果如图 13 所示。Figure 13.Curve graph test run diagram 图图 13.曲线图形测试运行图 5.3.3.规划路径程序设计测试规划路径程序设计测试 以“谷”字为例,“谷”字的笔画数为七、端点(端点在本文中的含义是字体各笔画的起点、终点及笔画中的各拐点)数为十二且书写笔画顺序如图 14 所示。以初始画笔落点为坐标原点即(0,0)点,画板右侧为 X 轴正方向,画板下方为 Y 轴正方向。端点坐标即代表了画笔实际运行的具体行进路径,分析可知各端点坐标分别是(32,65),(36,71)
33、,(28,65),(24,71),(30,68),(37,80),(30,68),(23,80),(34,77),(34,85),(26,77),(26,85)。Figure 14.Writing stroke order of the character“Gu”图图 14.“谷”字的书写笔画顺序 郭付阳 等 DOI:10.12677/dsc.2023.123019 184 动力系统与控制 书写“谷”字的具体过程如图 15 描述,首先9在电脑程序界面进行路径端点坐标值的程序录入,然后编译并通过 USB 数据线将代码上传至 Arduino Uno 控制板,相应坐标数据串代码如下所示,其中move
34、to()语句表示画笔从起始坐标点快速移动至目的坐标点,line()语句表示从起始坐标点作直线运动至目标坐标点,pen down()语句执行的操作是使画笔落下,此时画笔移动会留下笔迹,pen up()语句执行的操作是使画笔抬起,此时画笔移动不会留下笔迹。Figure 15.Actual writing effect of the character“Gu”图图 15.“谷”字的实际写出效果图 6.总结总结 本文设计实现了一种基于路径规划的绘图写字机器人的解决方案,具体包括硬件选择及电路搭建、机械传动结构选择与搭建、画笔运动算法程序开发等。该方案具有结构紧凑合理、搭建简单、工作稳定、调试方便等优点
35、,可以按照规划好的字体笔划进行书写。且本次设计所开发采用的算法逻辑简单、灵活而且实用性高,同时通过添加延时等待程序得出理想的延时等待参数,可以实现在整体工作时间与写字绘图的流畅与平滑性之间达到一个较好的均衡,延时等待程序也可以减少书写毛刺的产生并增加画笔移动运行的平稳。参考文献参考文献 1 赵祯祥,吕文博,安海宁,龚怡然.智能自动绘图写字机器人J.物联网技术,2020,10(3):7-8.2 彭攀来,马娅婕,刘智旸.基于 Arduino 的移动机器人控制系统设计J.自动化与仪表,2016,31(3):1-4+16.3 黄雪伦.基于机器学习的人形机器人识别与模仿人体动作方法研究D:硕士学位论文.
36、长沙:湖南大学,2016.4 陈玉敏,谢玮,孟宪民,等.智能写字机器人设计J.计算机测量与控制,2016,24(1):266-268.5 Crisnapati,P.N.,Indrawan,G.,Novayanti,P.D.,et al.(2019)Pasang Aksara Bot:A Balinese Script Writing Robot Using Finite State Automata Transliteration Method.Journal of Physics:Conference Series,1175,Article 012108.6 Syamlan,A.T.,Pra
37、mujati,B.and Nurhadi,H.(2016)Inverse Kinematics Modelling and Simulation for Upper Case Writing Robot Control Using ANFIS.Applied Mechanics&Materials,836,37-41.https:/doi.org/10.4028/ 7 Zamani,N.S.,Mohammed,M.N.,Abdullah,M.I.,et al.(2019)A New Developed Technique for Handwriting Robot.2019 IEEE Inte
38、rnational Conference on Automatic Control and Intelligent Systems(I2CACIS).Selangor,29 June 2019,264-267.https:/doi.org/10.1109/I2CACIS.2019.8825066 8 Miatliuk,K.,Wolniakowski,A.,Diaz,M.,et al.(2019)Universal Robot Employment to Mimic Human Writing.2019 20th International Carpathian Control Conferen
39、ce(ICCC).Krakow-Wieliczka,26-29 May 2019,1-5.https:/doi.org/10.1109/CarpathianCC.2019.8766027 郭付阳 等 DOI:10.12677/dsc.2023.123019 185 动力系统与控制 9 Chandra,S.,Dillenbourg,P.and Paiva,A.(2020)Children Teach Handwriting to a Social Robot with Different Learning Competencies.International Journal of Social Robotics,12,721-748.https:/doi.org/10.1007/s12369-019-00589-w