首页 » 技术分享 » 墙壁绘画机器人 ||arduino & processing

墙壁绘画机器人 ||arduino & processing

 

墙壁绘画机器人 ||arduino & processing

原作者:Sandy Noble     网名:Murphy
教程原网址:http://www.instructables.com/id/Polargraph-Drawing-Machine/?ALLSTEPS

创作图
这个机器人,是一种画图机器人,简单来说是一支悬挂着的笔,通过控制它做有规律的机器运动,就可以像绘图仪一样画出图来。但其效果,对于以往存于我们电脑里面的高清图来说,确是一种天真的尝试,是去尝试着去打破某些东西的。别太认真,认真你便输了!
它不太会像我们人类这样去画画,我们也很难像他那样去画画。他可以将图画在很大的地方,如果我们要讨论他能画的最大区域,那答案则是取决皮带线的长度。

1. 关于它的历史
这里写图片描述
最近出现了许多新的画画机器人,能够看到他们将虚拟的东西转成现实实体的感觉真是太好了。对于我来说,我能够非常容易得制作出趣味编程的、跨界的、混搭的,具有虚拟体验的数字作品,但我认为它们意义并不是很大,因为它们并不具备实体性。试想,你可以在一天之中运行一百次,一千次,甚至百万次得去更新一些变化。画出来的东西是一次性的,我很难去看到里面的价值,体会到自己动手的乐趣。
因此,3D打印机和一些其他的制作工具、技术已经变得越来越受到大众普遍的欢迎,我们对于这种现实实体的,物理化的,可以用手感触的,甚至可以去闻味的数字作品的渴望、渴求,从心底得,真的很难去估量。
事先申明,它并不是我原创的,让我们看下先前的那些艺术创作,会给你带来更多的灵感:
Hektor—所有悬挂式画画机器人的鼻祖
Der Kritzler—目前为止最smartest的(在窗上作画)
As220Drawbot—我做的画画机器人就是基于他的
SADBot—Instructable上的一种自动画画机器人,材料与我的大致相同

2. 组成
这里写图片描述
事实上完全可以有一百种方法来制作这么一个画图机器人,但我打算告诉你们我自己的机器人是怎样做成的,以此作为一个出发点。同时我也希望你们可以自己找到某些可以改进它的地方。
电子部分:
1.处理电路板—Arduino Uno或者兼容Arduino的。我之前用了Seeeduino。需要注意的地方是有些arduino兼容板使用了FTDI芯片,它们只是兼容了Arduino Duemilanove,它们的存储空间比较少,因此不能符合我们这里的要求。(译者注:刚开始做这个机器人时,大家直接用UNO R3就可以了。)
2.电机驱动—Adafruit’s Motoshied v1.这是现在一种比较流行比较实用的驱动。它可以驱动俩个步进电机,并且可以对每个提供600ma的电流,同时还能驱动一个舵机,因此它和这个项目真的可以说是绝配呵。(译者注:使用easydriver最新版本,完全适用)
3.步进电机—可以去找额定电流在600ma左右的步进电机。我使用的是步距角为0.9度的步进电机(每转一圈需要400步),名字是NEMA 16步进电机,轴直径为5mm,但我认为使用额定电流为400ma的NEMA 17电机会更好。
4.电源—可以提供1A电流,交流转直流的可调电源。尽量将输出电压提高些。如果电机开始变得太烫的话,就把输入电压(相对驱动板而言)调低。我认为输出电压为9V是个不错的选择,12V对它来说可能有点高了,但是事实上还是要具体看你那边的电机参数。极限情况下,机器人的电流(只针对电机而言)会达到1.2A(2*600ma),因此不要为了贪便宜去买山寨电源。顺便说下,我的机器人居然只用一个600ma的电源运行了好几个月,如果不是因为我做了某些蠢事的原因,它或许还在运行。强悍的机器人!
贡多拉:
这是一种用来固定画笔的装置。这个名字从书面上来说是稳重的意思,我认为取这个名字有助于我们对它功能的了解,加深对它的印象。
1.3*6003ZZ轴承
2.长为50mm,直径为16.66mm的铜管(可用3D打印代替)
3.激光切割制作的亚克力零件。最早版本是一些硬纸板,一张CD,通过用胶枪胶联住制作出来,虽然简陋,倒也可以简单粗略得画。
滚轮:
1.带有珠子的窗帘绳。一般可以在卷帘窗上找到。
2.链轮齿。没有找到适配的链轮齿,因此我自己用了3D打印的链轮齿。
3.平衡物。我选择了一个螺栓,上面套有一堆金属垫片。
硬件:
1. 画图表面—将你的机器上放在一个宽大且平整的表面,具体在下面讲述。
2. 固定支架—我在这里使用了激光切割出来的木夹板零件,用来把步进电机固定在平整的墙面。如果你是要把电机安装在一块板子,那么只需要把电机直接固定在板子的顶部就可以了。
3.链轮
这里写图片描述
我没有能够找到能适配带有珠子的窗帘绳的链轮齿。应该有这样的卷帘机械结构,但还没有一种可以简单使用的结构。于是我自己设计了一个,并且3D打印了出来。JoneAbella设计了一个可调参数的链轮齿文件图,它可以适配其他尺寸珠子的窗帘绳。如果你拥有3D打印机,那你在家就可以自己打印出来了。将链轮齿推入到步进电机的5mm直径轴上。
4.电机
这里写图片描述
拨开电机线的末端,并分别给它们上锡。除非你的电机线本身就很长,否则你就必须对这些线进行延长,任意方法都可以,我用的方法是接在接线端子上。记住,一定要对你的延长线进行记号标注,以免之后错接。
5.画板
这里写图片描述
去找一个大的硬板或者其他类似的来做你的画板。画板每边都应该比你最大的画纸的每边至少长150mm。
你也可以尝试去用一面墙来作为你的画板,当然前提是你能够在墙上固定步进电机。但我总是有不好的预感,马克笔会在墙上乱画,这样我的女房东会对我产生不好的印象。
用硬板作为你的画板意味着你可以让画板轻微倾斜得靠着墙,这非常好,因为这样的话贡多拉的重量就可以使画笔去压触画纸了。如果画板是完全垂直的话,则画笔很难有力得去压触画纸—画出来的笔画会非常细小。
我自己去逛了我们当地的DIY商店,清理了边料箱,尝试着去做一个大画板,可以正好放入我的车里。但我已经做出了一个以最大的宜家Ribba相片框为基础的画板。这意味着我以后就可以直接把它作为画框了,太棒了!我们平常用到的白板也是一个非常好的选择,因为你可以轻松擦除画面,这样你就可以快速得测试,当然你用其他的平整硬板也可以。我第一次使用的是只有A3纸大小的画纸,效果也不错,所以画纸没必要很大。
6.边缘固定
这里写图片描述
你的步进电机应该被固定,并使你的链轮齿尽可能得靠近画板表面。如果你的画板是厚的,那你很幸运,你只需要用双面的泡沫胶将你的步进电机直接粘在画板上方的两个角上。这种方法可以减缓一些震动。但时间长了会有一些脱落,但在我这里并不是一个真正的问题,除非我让它连续工作好几天。当涉及到接线和安装其他东西时,这样的安装就非常简洁。所有的东西都悬挂在后面。
7.前侧固定
这里写图片描述
这是我已经采用的固定电机方法,表面上看起不是很简洁,但是它对你的画板要求不是很高,事实上它可以固定在任意画板上,其中包括墙和其他巨大的画板。
我自己设计一个可用激光雕刻加工的3mm厚、木板材质的电机固定装置,这本身没有什么聪明之处只是用螺丝连接起来,这样电机部分就可以很容易得拆装,而主要的固定板还是放置在原地方。我使用Ponoko网上一块P1大小的硬木板制作出了一个装置,你需要做两套这样的装置。
Der Kritzler的设计使用吸盘,是一种可以固定在窗上的装置。他的固定支架比我的更加坚固,但也会使用到更多零件。
将这两个大支架分别固定在画板顶端的两角,并且保证他们在同一水平线上。我在每个零件上都或多或少使用了一些双面泡沫胶,但你应该确保多用些,因为他们有些重,同时也会带来一些震动。
固定支架的设计文件:支架
8.电子
这里写图片描述这里写图片描述
你需要使用到一块Arduino UNO控制板,我自己使用了SeeeduinoV2.21。在过去的一段时间,它确实工作得很棒,但是随着新功能的加入到代码中,它已经有些不适合了。官方版UNO在存储程序的空间上稍微大些。
将编译好的代码下载到Arduino上。如果是新手的话可以去Arduino官网上或者网上教程上看帮助教程。
因为代码会不断得更新,所以我没有把代码放在这里,不过最近的版本你可以通过下面的链接得到ina bundle from the polargraph code repository。
你应该在Arduino sketch folder下面新建一个文件,将代码文件放入到这个新文件中,将新文件的名字命名成代码源文件名字一样。比方说,如果代码文件名是polargraph_server_a1.ino,那么新建的文件名就应该是polargraph_server_a1,然后将代码文件放入这个文件夹中。
程序需要用到Adafruit’s AFMotor 和Mike McCauley’s Accelstepper的库文件。
进入到Arduino/librarise,在里面新建一个叫AFMotor的文件,并将AFMotor的库文件放入其中。
同样的,进入到Arduino/librarise,在里面新建一个叫AccelStepper的文件,并将AccelStepper的库文件放入其中。
上面步骤完成后,你的Arduino安装目录应该像上面第二张图片里的内容。
当然所有的源文件都在代码库中,点击https://github.com/euphy,尽量下载最新版本的代码。
一旦你下载代码到Arduino中,你应该去确认它是否工作正确:通过使用arduino软件中的串口调试工具,将波特率设定为57600,如果下载代码过几秒后画面上出现“READY”则说明工作正确。
9.驱动板
这里写图片描述
这块电机驱动板通常是以套件形式卖的,参照Adafruit上的教程,你会发现它非常容易焊接。这玩意非常棒。我是一个Adafruit的忠实粉丝,你们来控诉我吧,可能我说得太多了。Adafruit在2013年的时候就停产了V1版的电机驱动模块,但是我还没有把polargraph更新到最新的V2版本。许多人还在ebay上销售V1版的复制品,只需要搜索“L293D arduino motorshield”就可以找到。
这款电机驱动板同时支持两个步进电机,接口两边各一个。它的电源可以由Arduino主板上得到,但它另有一个独立的电源接口,用来连接另外的外部电源。如果你的输入电源线有裸露的接头,你就可以用螺丝将两根线拧紧固定(一定要确保电源极性正确),同时把旁边的跳插拿去。我想强调的是,左边是正极+V,右边则是负极GND。在这块电路板没有防极性反接电路,所以如果你接错了就很可能烧毁驱动板,甚至Uno主控板也会有危险。
如果你不用上面的方式供电,那你应该将电源线直接连接到Arduino上,并且将跳插放上去。我自己用的是上面的直接接线方式,因为这样的话可以分别给电机部分和逻辑部分分别供电,当然也是因为seeeduino有个不能与其他接口适配的JST电源接口。
我也加了少些散热器在驱动板上的驱动芯片(L293Ds)上。芯片确实会发热,如果你有闲置的小风扇的话,就放到驱动板旁来降低芯片的温度。我并不清楚它们如果温度太高的话是否会有危险,但如果我在旁边放一个散热器的话我就可以心安理得让它们长时间工作了。
(译者注:电机驱动模块我们选择easydriver,经过测试完全可以,只不过需要在processing控制界面中修改其中一项参数,具体见下文)
10.连线
这里写图片描述
这里写图片描述这里写图片描述这里写图片描述
每个二相步进电机里面都有两个线圈,一个双极性的步进电机有四根线连接出来,每两根线对应一相。许多步进电机都有自己的工作手册,仔细阅读手册多次后就可以知道各种颜色线分别对应的相。
我自己的是红色线和蓝色线是同属于一相的,而白色线和黄色线是属于另一相。
这两个步进电机都应该按照线序连接起来。所以在左边的电机,你应该在将1相(红线/蓝线)接入上面的两个接口,2相(黄线/白线)接入下面两口。同样的,右边的电机接线方式:1相在上,2相在下。
我将Arduino板固定在泡沫板上,然后再将泡沫板固定在画板的后面。这样会使你更容易处理些。
所有线连接完后,将电机驱动板插在Arduino上面,然后你可以转动你的电机了!
11.软件安装
这里写图片描述
这个设置已经准备完毕,等待测试。控制软件是用Processing编程语言写的一个小应用。你可以运行源文件来打开程序,当然用我已经编译过的应用程序打开更加方便。软件下载地址:https://github.com/euphy/polargraphcontroller/releases/tag/1.10.6a
下载并且解压文件,运行controller文件中的可执行文件。软件初次打开时,界面会比较小,但你可以选择最大化窗口。当你运行软件时,软件本身会产生一个默认配置文件,当你鼠标点击窗口左上角的“save properties”后,就可以把当前的窗口大小设定成默认大小。
如果你对Processing怀有兴趣,你的直觉不错:它非常棒!在http://processing.org/learning/有许多教程供你学习,当然Instructables也有不少。这种语言是基于Java的,但是通过优化后可以运行小型独立的图形化程序。如果你对此兴趣并且想实时跟进控制软件的改进,那么你最好是自己直接编译源代码。
一些值得注意的地方——现在这个版本有点落伍了,我至今还没有把它更新到Processing2。因此,事实上它现在只能在Processing1.51上运行。除此以外,当时我写这个软件时的内部库文件到现在都已经更新版本了,也就是说你现在只能用我提供给你的压缩文件里的库文件。(上面的链接)我现在正在努力进行更新,不过还需要一些时间。
现在让我们打开Processing软件,鼠标点击File—Sketchbook,你会看到“polargraph”在这个列表中。点击它,然后就可以运行程序了。初始化时窗口会非常小,所以先最大化窗口或者拉拽边框达到可以看到所有的大小。如果它成功了,那很好,不错的开始呵。让我们进入下一步!
(译者注:软件在最下面提供的程序包Polargraph.1.10.6中,找到里面controller,进入后根据自己的系统选择软件。Processing版本只能是1.51,而不能是2.0.需要安装java jdk,1.6版本测下来可以,之前版本测试下来没有成功,更高版本没有测试过,大家自己测试)
12.控制软件——入门
这里写图片描述
在上面控制窗口中,有三个主要部分:
1. 左边区域:所有的控制键都在这边,
2. 中间灰色长方形区域:代表机器本身,
3. 右边区域:操作命令显示的地方。
有些控制键只与控制软件本身有关系(例如load image),但有些控制键(例如set home或者shade square wave)会发送命令到机器上。有些控制键是参数化、可调的,你可以鼠标左键一直按着控制键,然后再通过上下移动鼠标来改变数值大小。
有些控制键只与控制软件本身有关系(例如load image),但有些控制键(例如set home或者shade square wave)会发送命令到机器上。有些控制键是参数化、可调的,你可以鼠标左键一直按着控制键,然后再通过上下移动鼠标来改变数值大小。
将鼠标移动到灰色区域上时,你就可以看到两条灰色线跟随你鼠标的移动而移动,这两条线实际上代表着悬挂的窗帘线或者皮带线。你可以通过上下滚动鼠标中键来缩小放大灰色区域(代表机器)大小,也可以按住鼠标中键,然后移动鼠标来拖动这个区域。
如果一个命令发送到机器上后,该命令会出现在右边区域的命令队列中,等待去执行。当你第一次打开软件时,命令队列处于停止状态,一些默认设置的命令已经在队列中了。你可以通过单击它来控制开始和停止(就是COMMAND QUEUE aused-click to start)。通过reset queue按键可以清空命令队列(机器停下现在和之后的所有工作)。当命令队列处于停止状态时,可以通过单击各命令而将它从队列中移除。
界面被分成三个部分,通过点击窗口最上方的菜单进行切换。每一部分中都有一系列的控制按键。
1.Input.这部分用来载入,移动和缩放图片,选择一个区域来画图,还有发送画图命令。单击load image,找寻你要的图片(png或者jpg格式)然后载入,接下来移动图片和缩放图片,将图片放置到page(灰色区域内的白色区域)上。
2.Setup.这部分用来设定机器的硬件参数。改变机器的大小,图纸的大小和笔径的大小。一旦你将软件的参数调整到和现实中参数一样时,单击upload machine spec将参数发送到机器上。
3.Queue.这部分用来将命令队列发送到一个text文件上和从text文件中导入命令队列。
它们都是纯文本形式,所以可以清晰直观得看到里面的内容。
接下来让我们将软件和硬件连接起来。
13.控制软件——硬件
这里写图片描述
为了让控制软件与机器通信,你需要切换到setup部分,然后点击里面的serial按键。此时会打开一个小窗口,上面显示了可用的串口。如果你知道Arduino的串口号,请点选它。如果你不清楚,那你就依次尝试,每次点取串口号后请等待几秒钟时间,如果成功的话,在主窗口最上方会显示绿色的Polargraph READY!
硬件每次向上发送准备完毕的信息,这个过程需要几秒钟的时间,这就是为什么你需要等待几秒才能看到结果的原因。如果你不想连接两者(因为你手边可能还没有机器),只需要选择no serial connection。
做得好!现在关闭串口选择窗口,然后点击setup部分下的save properties,这样下次打开软件时就会自动连接已选定的串口。
14.控制软件——动起来
确认你已经选择正确的串口号,窗口上方显示绿色的PolargraphREADY,证明已经与Arduino正常通信。如果通信不正常,这一行字会呈现红色。如果你是运行控制软件后再连接机器的,你最好先关闭控制软件再次启动一次。
如果你是从Processing中编译后打开控制软件的,那你可以在Processing的编译框中等待几秒后看到READY。
太棒了!现在开始运行命令队列,你会看到第一批命令一个接一个快速得发送到机器上。点击Set home,你会在命令列表中看到这行命令,然后立马发送到了机器上。这时,你可以看到一个大的紫色的点出现在屏幕中灰色区域的顶上中间位置,这个点对应了实际的笔的零点位置。此时两个电机都会发出一些声音,你可以发现它们实际是被锁住了—它们现在通着电!
好的,现在让我们点击Move pen to point按键,这是一种控制笔移动的命令,你只要任意点击下方的某个地方。幸运的话,你会看见两个电机正反转,加减速,并且听到电机转动的美妙声音。
同时,紫色点也跟随移动。这就是机器认为笔应该在的地方。
再尝试一次以确保链轮齿运行在正确的方向。当机器是让笔从上往下移动的,那么左边(画纸面向人)的电机应该是顺时针转动的,而右边的电机则是逆时针运行的。当笔是从下往上移动,那么情况正好相反。
如果一个电机或者两个电机的电机运行方向不正确,那你可能拿到了一份错误的电机资料或者是接线的过程中出错了,也有可能是其他问题。你只需要将同一相的两线交换顺序连接就可以了。老实说,尝试和犯错真的是他妈的最后成功中必要的,但是这个过程确实比较艰难,除非你能够保证所有其他的部分都没问题了。
做得不错!我建议你给自己来一杯饮料!我相信你也会同意,我们在做作品的过程中没有比作品初次转动或者发出“美妙”的噪音,又或者电到你时更欢乐的事儿了呵。
15.组装贡多拉
这里写图片描述这里写图片描述
贡多拉如上图所示,是一种夹住笔的装置。除了这种设计外,还有其他许多可选的设计,比如说这种3D打印式,很适合用在商业上。我自己的设计比较重些,有一个中空的中心,因此笔可以准确地保持在两根窗帘绳聚合之处。实际上,我不清楚这种设计与其他设计有多大的不同,但是它让我感觉不错。
我第一次做出来的贡多拉,非常简单,使用了一些硬纸板和一块CD盘,接着用胶和轴承连接起来(如上面第三张图)。然后我在里面又加入了一些激光切割出来的零件,但总的原则还是不变。我已经将这个设计以EPS文件开源,尺寸是一张ponokoP1大小的亚克力板。
各部件之间不是固定的,是可以转动的,然后在中间插入一根铜管(见零件列表)。激光切割的零件上都有些地方需要人工用锉子进行打磨,在打磨过程中需要小心些,因为亚克力材料比较脆弱。各零件按顺序全部推放到铜管,如果之间有些松,你可以用一些胶进行固定。我通常将各部分零件堆叠起来,然后在放上最外面的亚克力圆环之前我在铜管周围上放上一些胶。这个上了胶的圆环可以使我在它运行的过程中感到更自信。另外用一些胶在稳定器上也非常重要。
堆叠顺序,从下往上:
1. 大尺寸圆形稳定器
2. 空轴承
3. 圆环垫片
4. 连接竖直悬挂臂的轴承
5. 圆形垫片
6. 连接水平悬挂臂的轴承
7. 圆形垫片(这个垫片我上了胶)
8. 最后是一个木头材料的圆环,作为一个对外的装饰
贡多拉零件设计图:贡多拉
16.绳子和重物
这里写图片描述这里写图片描述
你画面的大小取决于窗帘绳或者皮带线的长度。在安装过程中,请确保你的窗帘绳或者皮带线至少可以从链轮齿端延伸到你最大的画纸的对角上。另外不要忘记了留出一些长度,用来夹住你的平衡重物:只要窗帘绳或者皮带线的一端扣在贡多拉上。
平衡重物的话,我使用了螺栓,在上面套上垫片。但你也可以使用其他东西作为代替,例如在袋子里放一些重物也是一种不错的选择。重物的重量并不是很重要,这个机器并不需要绝对的平衡。重物的作用只是让贡多拉在机器画图区域的顶上方中间自然得悬挂。我每个重物大概是150克左右。
接下来,你甚至可以用带有珠子的窗帘绳给你的贡多拉做些造型后再连接,让它好像是蒸汽朋克风格的电弧反应挂饰。(这边不知道怎么翻译了哈)我经常这样做,这样会让我感到很有能量。去做吧,坏小子们!
嗯哼~~或者你直接将贡多拉放在机器上,绳套入链轮齿。如果你马达固定方式是像我一样的前置式,你应该做之前先仔细思考下如何避免各种绳线搅扰在一起。(译者注:这边窗帘绳可以用皮带线或是钓鱼线取代,但相应的滚轮也要改变)
17.画板
这里写图片描述
好的,来看接下来的设置:
1.测量你的机器尺寸
2.找到你的零点
根据上面的说明图,在应该标记的地方画上相应的线。
为了使你的测量精确,在测量时让水平线尽可能得水平和垂直线尽可能得垂直。如果你标记得不准确的话,最终结果也会让你失望。就像其他网友说的:充分的准备可以避免结局糟糕的polargraph,你不爱她,她又何必爱你。难道不是吗?
好的,现在先测量你机器的宽度,单位是毫米。这个宽度指的是两个链轮齿之间最近的距离。测量是从齿上而不是从滚轮边缘开始的。实际上应该是从窗帘绳悬挂的点开始测量,但是该点一直在变化,所以用这种方法作为代替。
现在按照上面的说明示意图,画出那条水平线作为你机器的最上端。它应该是在两个链轮齿中心和电机轴中心连线上。
然后画出另一条水平线,比作为上边界的水平线低120mm的距离,尽量精确。这条线代表着你画纸的上边界。你不能将这条线画得更高。
接着,通过你机器的中心点垂直得画出一条直线。这条线和画纸上边界线相交的点就是零点了。机器知道笔在软件中的坐标,而你知道笔的实际坐标。当你们两者的世界统一时,合一,接下来的事就好办了。
18.控制软件
这里写图片描述
再次打开控制软件,然后切换到setup部分:
设置:
Machine width
Machine height
依次输入你自己测量出来的数据,单位是毫米。其中Machine height这一项并不是非常重要,因为它并不会影响构图,但它会影响灰色区域在你屏幕上显示的大小,因此还是尽量精确些为好。当你调整这些数值时,你会发现代表机器的灰色区域也会实时随之改变。
你也可以改变画纸的宽度和画纸的坐标。除非你有比这个更宽的机器,否则page pos y这项还是设定为120。
除了这些,画纸的大小和坐标都是虚拟出来,用来辅助你正确得去设置画纸大小。通过centre page按键,你可以水平得将画纸放置在中间。
零点有一个预设的坐标,地点是在你画纸的上边界的中点。如果零点颜色是灰色的,那么点击centre homepoint重新校准。你也可以自己任意位置设零点,如果你不想把它定在那里。(或许因为某些原因)
现在点击save properties,防止你再次打开软件时还要重新设定。
进一步设定:
如果你使用了和我不一样的电机,或者其他的链轮齿,那就重新设置:
1.stepsPerRev:这项代表你电机转一圈所需要的步数。好的,事实上,我们这边需要将它翻一倍,因为我在软件中使用了一种交错的运转方式—它产生了一种类似中间的运转。我自己的步进电机每转需要400步,所以这一项设定成800。
(译者注:使用了EasyDriver作为电机驱动,在默认情况下,这项参数应该是1600)
2.mmPerRev:这项代表每转一圈窗帘绳运动的长度。很明显,它就是链轮齿的周长,换到带有珠子的绳索,则相当于8段珠子部分的长度。
(译者注:我自己用的是36齿链轮,参数设定为71)
3.step multiplier:(没有在图中显示出来)这项代表你电机每一大步中包括了多少小步。对这个机器来说,应该设置成1。
如果你正在修改这些设置,你最好修改完后保存然后再次打开控制软件。这里面包括了许多其他的基于这些参数的计算,所以重启一下会更好些。
19.下载
现在你应该看到在屏幕上的尺寸已经改变,控制软件已经知道了你机器的真正大小。但是机器本身还不知道。
你应该切换到setup部分,然后点击Upload machine spec将信息下载到机器。(这个非常重要,否则会出现严重的定位错误)这些信息会保存到Arduino的EEPROM上,这样即使在没有电的情况下信息任然可以保存。除非你要再次改变器件大小,否则不要去设置它。这些信息不包括画纸的大小,只是机器大小。
如果你对此感到好奇(你为什么不呢?)Download machine spec(如果遇到无法定位相关的问题,可以通过执行这一命令来帮助解决问题)会反向得进行信息回传-它会将机器参数恢复成之前保存的。如果你自己删除了你的设定文件,并且不想再次测量机器,那这个功能会对你很有帮助。
请记住如果你没有点击save properties的话,你这些设置的参数在下次打开软件时不会进行更新。如果你修改了某些参数的话,记得一定要及时保存。
(译者注:如果发现画图轨迹错乱或是其他一些诡异情况,就使用Download machine spec来查对下arduino中的参数是否与你自己设的参数是否一致,我有很多错误都是因为这个缘故)
20.运转起来
你需要在每次画图之前进行校准。其中包括了告诉笔在哪里。首先点击Input 部分中的Set home,然后手动得将贡多拉移动到我们之前测量出来的实体零点上。
点击Set home锁住电机,他们已经接上电,因此他们会一直抓紧贡多拉,直至你去取消。
那就是了!
点击Move pen to point让贡多拉在画板上移动。电机的声音应该是柔和的,笔在运动的过程中也应该如此。如果你发现你的电机有些滑轮——主要是发生在画板的边缘,或者是电机运作得过快时—你应该重新校准。只要贡多拉真实的坐标与机器所认为的不一致,那么你画出来的图案会很错乱、糟糕,会让你大失所望。
标准的最大速度是每秒钟600步,加速度是每秒钟700步。切换到setup部分,左键一直按着send speed,通过上下拉拽鼠标来改变参数。你也可以在第25栏中用+和-来增大减小最大速度,用/和*来增大减小加速度。这些改变速度的命令也会跳到右上边的控制命令列表中——它们是优先的,你可以看到他们以蓝色字体出现在列表中。
21.加入图片
这里写图片描述
现在载入一张图片,然后选择画图的区域以及画图风格。
1.切换到Input部分,点击load image后来载入一张图片。有一些图片比其他的更适合,不过都是要去自己体会的,因此图片的选择偏重经验。
2.如果你的图片并没有显示出来,那很有可能没有在屏幕内或者是尺寸太小了。点击move image,然后你可以看到你选择的图片会更随你鼠标的移动而移动。鼠标移动到你机器的中央然后单击放下图片,然后再次点击move image退出这个命令。
3.拉拽resizeimage来控制图片的大小
4.点击SelectArea,然后在你想要画图的区域拉出一个边框。
5.一旦你选择了一个区域,该区域的原图片就会自动隐藏起来,只是预览显示密度。使用屏幕底部控制栏中的小开关来选择显示原图片或者隐藏预览密度。
6.预览密度被用来显示被捕捉到的细节。这些圆并不是代表着它画出的形状,而是代表了它们的坐标,大小和亮度的预览。
7.点击gridsize,然后通过拉拽来改变“像素”的大小,需要记住,像素越小,画图的花费时间越长(事实上,就单个来说花费时间非常短,但这样总像素点就多了呵)
8.点击samplearea,然后通过拉拽来控制图片的对比度。这是选择密度时,被取样的区域大小。我发现最好的处理是sample area值稍大于grid size值。
记住,一旦你找到了你所喜欢的设置,你可以点击save properties来及时保存这些属性设置。如果你不保存的话,下一次打开时都会消失,那时你会欲哭无泪的。
22.画图风格
到现在为止,总共有四种风格:
1.Shade Square wave—标准的。(默认的)像素密度被转化成一种方形波纹图案。深像素=更多的波纹=更多的墨水。
2.Shade Scaled square wave—半色调的效果。不是去改变波纹的数量,而是通过改变波纹的大小来达到效果。深像素=大像素=更多的墨水。
3.Shade Solid—色度键控效果(是指两幅图像合成时,其中一幅图像中的特定颜色(cyan)为另一幅图像中的内容所取代的现象,如上面3、4图所示)。这种风格中每一个像素密度都达到最大,没有变化。
4.Shade scribble—噪音的效果。这个风格有些像随机的像素—若干线条被画上去,但是它们的方向和长度是随机的(在像素的边界之内)。深像素=更多的线条=更多的墨水。

23.装画笔
在一支笔涂上一些胶,然后将它固定在贡多拉中,让笔尖漏出一部分。
将画纸铺在画板上。
将贡多拉校准到零点。
点击“render”按键,选择你想要的风格。接下来,是见证奇迹的时刻!
我已经测试成功了不漏墨的笔和画纸。我个人比较喜欢非常柔滑的纸,配合硬笔尖极细笔。在英国我可以非常容易得买到这些ZIG Millennium笔,他们使用起来效果非常棒。
Pigma MiCRON的笔用起来效果差不多,并且在美国比较受欢迎。
对于画面粗犷的画,使用笔尖粗的笔效果会更好。我之前一直平常的记号笔,尽管他们会渗出墨水,但效果也挺有生气,浓密的厚度营造出别样的效果。
24.舵机控制笔的提起
这里写图片描述
如果你将一个小舵机固定在贡多拉上,那你就可以使用它来让笔尖离开画纸。在驱动电路板上有两个舵机连接部分,如果你连接了SER1,就可以实现软件对它的控制。我在舵机上加了一个角状零件,通过舵机带动这个零件戳在画板上来使画笔离开画板。
可以通过手动按下#或者~来提起放下笔。这个过程不是很精确,但却是可以保证在结束画画时防止笔的墨水渗出。当你开始画画时,这些命令会在开始和结束的时候执行。
25.笔尖的直径
笔尖的大小决定了一个像素由多少波纹组成。如果你像素是20平方毫米,而你的笔尖是1毫米的,那么该像素内你最大只能容纳20条线。加入更多的墨水也不会使它变得更深。
如果你换成0.5毫米的笔尖,那么20条线可就填不满这个像素了,而是需要40条线。机器会基于你设定的笔尖大小,尽可能得以最大密度去作画。
你可以切换到setup部分,通过改变pen tip项的参数值来改变实际效果,然后点击send pen tip size。笔尖的大小不会存储在机器中,需要你每次打开软件时上传,这就是为什么每次重启时这个命令都会预存在命令列表中。
测试笔的直径
并不是只能依赖厂家所描述的笔尖直径,这里也还有另外一种测试笔尖宽度的方法—在画纸上以最大密度画出一连串像素,但每个像素之间都会有根据设定的增长,因此当笔尖的厚度达到你想要的最深密度时,你可以尝试着去减小些。
在setup部分中,有三个相关设置用来控制测试的大小:
Pen test start tip—这是初始部分的笔尖大小,应该尽量小些。
Pen test end tip—这是机器会尝试的最大笔尖宽度。
Pen test Inc tip—这是机器从开始部分到结束部分之间笔尖宽度的增量。
如果开始部分笔尖大小被设置成0.6,结尾部分是2.0,增量是0.1,那么机器会画出第一个像素就好像它有一个0.6mm笔尖大小的笔,之后画得更宽,每次增长0.1mm,一直增加到2mm。
一旦你决定了你想要的,那就将笔尖直径设置成你所需要的,然后点击save properties。
26.适量做图
配合新控制软件,可以使用矢量图作画功能,这让机器变得更有用。
使用Inkscape软件
所有的路径需要以SVG格式文件分离。文字需要转换到这些路径中。你可以通过选择任何事物,然后进入Path->Object To Path来完成上面所说的,(这可以将任何形状比如字母变成轮廓),接下再次选择它们,执行Path->Break Apart(这可以打破多轮廓的字母)。在将填充的颜色变成透明后,你会发现这个功能很有用(在底部点击empty swatch),然后将轮廓设置成黑色(在底部点击black swatch)。保存。
切换到input部分,点击load vector,选择你的SVG格式文件。如果你看不到你的矢量图,点击“move vector”,然后你可以看到它更随你的鼠标移动而移动。再次点击放置SVG图片。你可以通过拉拽“resize vector”来控制它大小。这里100代表了它最大的尺寸,inkscape中的一个1px代表了机器中的1mm。
控制软件只会将线画在page区域中。
现在点击rendervector来将线条艺术装换成polargraph命令,然后将这些命令下载到命令列表。对于矢量画作品,move direct命令是用来告诉机器要移动的坐标,然后它就会在画纸上画出一条直线。下面的部分会有一些慢,那是因为它主要是一条线段分割成若干条更细的线条,需要不停地做更多的计算。
如果你将矢量图隐藏起来(show vector),你就可以看到存放在控制命令列表中(show queue preview)的线条直观得预览显示出来。
(译者注:最后这一部分没有认真得翻译,主要也是自己没有亲自试验过,大家自己去尝试)

Processing1.51版本和资源包(arduino程序和processing控制软件):http://pan.baidu.com/s/1gdIjUPd
里面涉及Java环境安装,jdk下载:http://pan.baidu.com/s/1o6HpJcA 配置教程:http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

转载自原文链接, 如需删除请联系管理员。

原文链接:墙壁绘画机器人 ||arduino & processing,转载请注明来源!

0