Arduino延时机器人原型

本文介绍了如何创建具有多个自由度的原型可编程移动平台,以便使用SLR相机拍照-以便随后安装延时视频。建议他们不要对电子和微控制器,Arduino上的解决方案的“专业开发人员”及其卖方有任何了解,这里没有什么用。

图片

简要说明我为什么需要它
. , — .

. . , PCMCIA-, -? , , WiFi , -? . , .
, . — -, . . — -. , , //, , . .
, , . - . . --- (360° 24 ;) ). — . , . . . GoPro. - — , . — , . , ! , . , timelapse dolly .
.

, , , . , , , — . , . . , . , , , - .

. ?

图片

也许不是每个人都能想象甚至是最简单的微控制器的功能。尤其是“创意专业”人士的财产贫乏。设计师,摄影师,摄影师-他们经常学习“过程”并对他们的专业保持保守的看法,不想改变任何东西。特别是当向侧面运动(不一定是向前运动)与研究新事物的显着努力相关时,这在主要活动中不一定有用。说,嗯,为什么我需要这个-我最好带另一个裸体女孩脱掉。当然,这项业务很少会困扰任何人。即使人们考虑横向移动,他们通常也有能力支付。如果可以买一块铁,为什么还要盖一块铁呢?

但是,如果没有什么可买的,那它永远也不会付清,您只是想尝试一下这个想法?如果我们将微控制器视为Tanchiki的替代品,是否能够发布有趣的IRL?因此,只要激励自己并迈出一步。突然之间,事实证明,即使对于摄影师(以下称机器人用户,尽管他与他一起拍摄视频,他仍被称为摄影师。生活是一件奇怪的事情),但一切看起来并不那么恐怖和复杂。尤其是如果您保持在玩具膝盖高的水平上。

对我而言,深入研究的动机是为DSLR构建移动平台的愿望。通过拍摄点的移动,延时录像可以变得更加生动有趣。就像平移一样简单的顺序运动,以及将这些运动与其他运动结合起来。

因此,对我来说,任务的制定如下-为重型SLR相机提供几个自由度-具有延时所需的运动的准确性和稳定性。而且,当然是全自动拍摄。而且只有很少的血,也就是少量的卢布和可忍受的时间消耗。即,尽快。因此,我的4DOF游戏中时光倒流机器人项目诞生了。

迈出一步。然后,对于那些从未参与过编程和组装电子设备的人们,一个美好而深思的世界打开了。跨步成为无限前景的主人。你能做到吗?可以的那么呢?可以的我想要-我可以吗?是的,你可以在这里看到如何做事......

好足够的理智,这里介绍的文字在微控制器编程器中对游戏的评论(是的,您没看错-他们甚至会玩!):

avr 35 : ( ) , , , 8- , 16- , , ( , , /, wdt), -, 8 , , ( , — , !), , , — , , 0 1, -, , . — .

, ! , , , , . . — //- .

, — :

, , . — . , , , .

, , ( - 5 ), . : , ( ), , , , . . — , .

, . , , , , — : 35 , , , - .

avr' , , 10 , stm' arm', , — arm' .

— ! .

— , , - , , . , , , , , ...

对于新手来说,广为宣传的Arduino领域似乎是最有吸引力且易于访问的。这可以用不同的方式来处理,但不能不承认-atmega328基于各种变体的解决方案的可用性和普遍性使新手可以轻松实现可容忍的结果,而无需了解微控制器的许多细节及其与外围设备的通信。 Noob不了解该死的东西如何在内部工作,但它会按照他的意愿进行工作和移动,这与中国人长期廉价出售并印刷了一百万本一样。是的,即使这是成千上万其他人长期走过的路的重复-从任务的独立执行中仍然很高兴。为什么要按照说明收集乐高-毕竟其他人已经收集了乐高?很高兴如果有哈勃望远镜,为什么要用极其简单的技术拍摄星系?很高兴如果商店在漂亮的盒子里装了数百辆推车,为什么还要用遥控器将推车装上轮子呢?很高兴

这就是我们应该使用Arduino的方式-我们将获得乐趣,而进取的中国人,意大利人和当地商人会同时与我们一起赚钱-嗯,您必须为此付出代价!好吧,电子专业人士可以正确地朝Arduino工艺的方向吐口水。

因此,在本文中,我们享受着前所未有的乐趣-我们的数码单反相机会自行驱动并以给定的频率拍摄帧,而我们则满意地喝咖啡并阅读极客时间。

我们希望从工艺品中得到什么:
-相机控制-在相机上执行我们设置的曝光并保持帧之间所需的停顿;
-来回移动任意距离-无需长时间安装或准备底座;
-相机左右旋转任意步;
-上下任意旋转相机;
-变焦环或镜头焦点的旋转-当然,与我们选择的强度相同。

这组功能意味着在拍摄延时视频时具有极大的创作自由。您几乎可以解决所有问题-组合不同比例的相机运动并控制快门速度暂停。只能使用取决于照明的任意曝光控制-在这里,您可以只信任相机的曝光计程序,或者将自己限制在很小的范围内。每天早上和晚上拍摄时间流逝的每个人都完全了解照明条件的变化速度。

不幸的是,到目前为止,相机的上下旋转都没有实现-相对于底盘而言。我仍然无法想象用什么方法在原型的尺寸上做到这一点。到目前为止,安装时必须与最初设置的摄像机仰角有关-与水平位置的差异使得无法控制变焦焦点。

第一个问题是问题-要移动相机什么?镜子很重。寻求折衷方案的开始-您不想像儿童电动汽车那样承受重力,并且由于重心较高,因此相机将是稳定的并且不会超过其重量。配备GoPro玩具的摄影师可能会对四轮越野车感到满意。对于我的数码单反相机,我想要更稳定的东西。在研究了问题和现有解决方案之后,我选择了跟踪平台。

专门的和现成的履带式平台费用昂贵。为我们的目的使用玩具是比较明智​​的。由于家里已经有一个无线电控制的战车(豹1:20),所以我朝他的方向看的第一件事。但这很可惜-让他继续骑马并为孩子们的欢乐而吐痰。您还能快速且廉价地购买和拆卸什么?在阿维托(Avito)上闲逛时发现,这些坦克太小或太贵。但是这里有需求不大的孩子,因此并不那么昂贵,但绝不逊色于我的挖掘机。但是,很幸运,在我的城市里没有适合出售的东西。通过邮件订购?也许然后看到中国人?所以我来到了“机器人经销商”宁又名SINONING的现场您是否想以138美元的价格购买铝制酷色“水箱”底盘-没问题!您是否想要相同的尺寸,但整个塑料“挖掘机”底盘要三十?拜托 绝对贪婪?在这里,您有一个售价14美元的油箱底盘,甚至带有电机。您也可以在那买arduinki,但是我在城市中有很多东西,所以一个便宜的塑料底盘SN1000从中国买了下来。

图片

对于arduino,我利用了Make Robots(https://vk.com/makerobot66提供的优惠,在该优惠中购买了该项目中使用的以下垃圾:

  • DCcduino UNO(带USB电缆)... 480 x 1 = 480
  • GY-273 HMC5883L模块... 170 x 1 = 170
  • Arduino入门套件... 480 x 1 = 480
  • 1通道5V继电器模块... 180 x 1 = 180
  • LCD 2004 I2C蓝色... 610 x 1 = 610
  • 电机驱动罩L293D ... 360 x 1 = 360
  • 操纵杆模块KY-023 ... 170 x 1 = 170
  • 同步皮带GT2 6mm ... 120 x 1 = 120
  • 正时皮带轮GT2 16t 6mm ... 140 x 1 = 140
  • 10件30厘米跳线1f1f ... 55 x 1 = 55
  • 10个30厘米跳线1m1f ... 55 x 1 = 55
  • 28BYJ-48步进电机+ ULN2003驱动程序... 260 x 1 = 260
  • 电池座18650 x2 ... 60 x 1 = 60

总计3140卢布。

此外,还需要:

  • 两节18650电池
  • 薄层压纤维板“胶合板”。
  • 一堆的螺栓和螺母M4
  • 六个螺丝3.5x51有点像。
  • 10个M5衬套和2个M8-就像垫片一样。
  • 有关“机械”构造函数的一些详细信息。
  • 焊锡开关
  • 3.5mm焊锡插座
  • 2.1x5.5电源插座
  • 和回形针

从照相设备的侧面,它们很方便:

-单反相机
-中国的“无线”遥控器-作为连接到相机的遥控器连接器的电缆的供体
-最简单的相机支架是带隔板的三脚架螺栓。普通的三脚架头会更好,但负号会是更高的重心。

机械师没有什么大惊小怪的。最终的SN1000具有两个用于驱动轨道的“ 130尺寸”直流电动机,并且在变速箱中安装了另一个直流电动机,以在该履带式底盘上旋转平台。一切都收集了。因此,一切准备就绪。仅保留将相机和电子设备固定在平台上。我看到的传统解决方案是将电子垃圾放在放置有效负载或控件的平面下方的机箱上。飞机通过所需高度的垫片与底盘隔开。一些设法建立几层楼。

好的,我看到了胶合板,在其中钻了一些用于固定的孔,我买了衬套和螺钉-一切就绪。即使对于摄影师来说,也没有什么复杂的。 “挖掘机”的底盘为平台和连接点提供了足够的刚性。

有了电子产品,麻烦就更多了,但有趣的是。不,真的,这很有趣。但并不困难。尽管受过非常专业的教育,但我不懂电子学,欧姆定律也没有动弹,大约十二年前,我最后一次编程C是纯粹的教育性任务,没有销售,而且我真的不知道该如何动手。但不是那么可怕。即使是像我这样的烂程序员,也完全不熟悉所使用的电子组件,也能够快速轻松地抛出一些可行的东西。而且,从闪烁LED到解决任务的方法非常快捷,容易-借助众多的arduino网络资源,所有内容都经过精心处理,可以通过切换轻松地注释掉代码和图片。也有不错的书(有时甚至是俄语),一致且相当容易获得Arduino平台最受欢迎的功能。因此,吞下几本书并在浏览器中保存了十二个书签以找到有趣的解决方案,我很快就为Arduino编写并调试了该项目的程序(草图)。烙铁也没什么大不了的,所有这些都仅限于将接线纯粹焊接到围巾或开关上。结果当然很丑,但在膝盖上效果很好。对于摄影师而言,仅当焊接或程序的缺乏干扰其目标的实现时,焊接或程序的完美性才有意义。在短短的几天内,他为Arduino编写并调试了该项目的程序(草图)。烙铁也没什么大不了的,所有这些都仅限于将接线纯粹焊接到围巾或开关上。结果当然很丑,但在膝盖上效果很好。对于摄影师而言,仅当焊接或程序的缺乏干扰其目标的实现时,焊接或程序的完美性才有意义。在短短的几天内,他为Arduino编写并调试了该项目的程序(草图)。烙铁也没什么大不了的,所有这些都仅限于将接线纯粹焊接到围巾或开关上。结果当然很丑,但在膝盖上效果很好。对于摄影师而言,仅当焊接或程序的缺乏干扰其目标的实现时,焊接或程序的完美性才有意义。

让我们再次返回到组件列表-我将评论它们的目的和相互作用。

原型的大脑是DCcduino UNO。这是中文版的经典Arduino UNO R3。我注意到,这绝不逊于原始作品。具有相同的Atmega328P及其绑定,除了用于USB的虚拟串行端口驱动程序需要不同但容易找到的(CH340芯片),并且在Win8中它似乎已经完成。这个arduinka通常是第一个也是最简单的选择菜鸟的人,我也不例外。而且,您知道,这对我来说足够了。即尽管出现了资源紧张的问题,但是尽管如此,我简单的8位微控制器仍然能够完成我的任务。

大脑通过另一条披肩控制马达“屏蔽”-插入arduino的连接器中的板,在其上施加并焊接了有用的负载。这必须与仅一个“模块”区分开。 “模块”(包括所有布线和焊接组件的统包解决方案)通过插在arduino连接器中的电线连接到arduino,有时使用无焊面包板形式的中间物。并且“屏蔽”就是安装在arduino顶部的这种“模块”,因为后者具有标准的连接器尺寸和位置。

就我而言,我发现有必要购买Motor Drive Shield L293D-这是一个模块,用于控制四个直流电动机(或两个步进电动机),每个直流电动机的电流最高为600mA。简而言之,小型车就可以。对于我底盘中的发动机,中国人规定了800mA的失速电流-最大的马达消耗,所以我建议我有足够的电流。有点不对劲。现在,我宁愿选择Adafruit Motor Shield V2-这条围巾更适合该任务,并释放了我第一个版本选择的大量资源。甚至没有电流-在第一块板上,还可以通过在每个L293D芯片的顶部安装另一个双芯来解决此问题,或者通常用类似布线的SN754410芯片代替它们。我还提请注意以下事实:电机必须额定为6V或更高。中国人说我那里有6V电机,而且我懒得爬上去检查。因为3V电机也可以工作,所以时间不会太长。无论如何,它们都是标准尺寸,易于更改。顺便说一句,您对自己说,在对该项目进行大惊小怪之前,我不知道上面写了什么,但是所有这些都很容易找到,掌握和应用。

“屏蔽”连接到整个系统的电源。从那里供电,电机和arduinka等捆扎带。该项目的电源是两节锂离子18650电池,可提供约7.4V的电流,最高可提供3A的电流(可能更多,但我不会做得更好)。作为备用电源,通过2.1x5.5mm连接器到外部电源的输出也将焊接到交换机。当然,在连接外部电源之前,别忘了取出电池,因为并行使用不会带来任何好处。绝对是尽管如此,还是有必要提供外部电源,因为在锂离子电池冷的时候,它会非常非常非常快地耗尽,甚至会永久耗尽。

arduinka通过中继模块与摄像机通信。显然,她所能做的就是关闭遥控器的“按钮”。在那里,它取决于相机可以使用的曝光类型(更确切地说,是摄影师设置的曝光类型)。当然,如果相机处于灯泡模式,那么我们将在“按钮”式转盘的整个时间内控制曝光。对于夜间拍摄,没有这个没有任何关系,因此,在程序中,我们不仅设置了释放卷轴,而且还设置了在摄影师需要时握住随附的卷轴的能力。我有尼康相机,所以需要一个特定的遥控器接口,该接口是我从中文延时摄影控制台借来的。佳能的支持者喜欢简单的插孔插头,我对此很羡慕。

为了使摄影师与程序进行交流,设计了直接和反馈器官-LCD 2004 I2C蓝色和操纵杆模块KY-023。第一个是带有蓝色背光的LCD显示器,该显示器具有4行20个字符的矩阵和字符生成器中的一个拉丁字母。他的I2C适配器的价格明显上涨-这是一个铰链,您可以通过两根线与arduinka进行通信。更准确地说,即使一次也只有一根,但是接线都是一两两的,当然,对于电源接地也要多两根(+和-,是的)。由于大多数arduino端口都被屏蔽层(用于马达控制的“屏蔽层”)吞噬(这是V2屏蔽层的优势-它也通过I2C进行通信,使端口保持空闲状态),因此我们别无选择。另外三个端口(两个模拟输入和一个数字)有一个操纵杆。这是一个相当简单的设备,其中通过沿两个轴摆动操纵杆来改变其阻力,并且它上的arduinka可以非常准确地告诉程序我们拒绝它的位置和数量,甚至通过按操纵杆也可以使按钮触点闭合。总的来说,仅使用三个端口(至少有五种接线,对地电源,是的),我们至少有五种可能对程序说些什么。但是,操纵杆本身不会引起愉悦的情绪。非常敏感,安装不方便,但是...可以,可以。

最终,该原型机的相机镜头中包含一个步进电机(stepper)28BYJ-48。他还需要一个驱动器-一种芯片,该芯片可以根据arduinka的低电流命令将大电流驱动到其中。这是ULN2003的模块模块。由于镜头环的移动必须非常准确且可重复-传统的直流电动机不适用。步进电机使您能够以极高的精度稍微转动镜头,而在下一次转动时则更精确-并且不会造成任何延时。当然,它没有集成到镜头中,问题就从这里开始。他扭动了一条宽度为6毫米的GT2同步带。可以假设,扭转可靠性取决于皮带张力及其对镜环橡胶表面的附着力。但是我没有想象并且相信不会有问题。会的。

由于在该原型机上,台阶位于相机的左侧,因此,如果不拧紧皮带,绷紧的皮带会导致相机从三脚架螺栓上塌陷。相反,如果他在右边,他本来会延迟的,但是,悲伤就在这里……而离合器还是不稳定的。您可以通过在环上粘贴某种具有更好抓地力的涂层来增加它。或在另一侧重新布置电动机。直到我决定哪个更好。

现在,我将讨论所有这一切的逻辑。从逻辑上讲,一切都是非常原始的-如果您不尝试研究一切的工作方式。因此,我们的“朴实无华”的微处理器(atmega328)具有一千字节可擦写只读存储器(即EEPROM),用于存储延时拍摄参数的值。有32KB的非易失性闪存用于程序存储和Bootloader-重写器。我们的程序在运行期间有2KB的RAM用于存储变量。当然,内部仍然有一堆寄存器,计时器甚至温度计,但现在无需了解它们了。

接通电源后,闪存中的引导加载程序将启动在那里编写的程序。首先,它将写入其中的所有变量和常量放入RAM,从那里的EEPROM读取拍摄参数,并在LCD上显示可供摄影师采取的其他操作的替代方法。结论结束后,它将旋转以等待拍摄者的任何反应-直到电池完全放电。可以采取以下措施:

-直接控制机器人驱动器-检查连接的可操作性,评估电动机的工作校准并将底架设置在起始位置。
-设置拍摄延时-更改摄影师定义的相同拍摄参数。
-测试拍摄性能-逐步执行不包括曝光和步骤之间暂停的编程拍摄(“帧”)。
-开始定时摄影-根据输入的参数逐步执行拍摄程序。

拍摄程序的执行周期包括重复的步骤帧-它们的数量等于摄影师设置的视频中的帧数。它按以下顺序

执行0)LCD上显示当前拍摄参数及其进度。
1)曝光。切换继电器并等待参数中指定的时间。
2)来回运动。我们打开电动机并移动到参数中指定的距离。
3)相机左右旋转。我们将摄像机左右旋转至参数中指定的度数。旋转可能并非每帧都发生,但可能每秒钟,第三,第五,第十发生-取决于摄影师意识到自己的幻想。
4)镜头环按参数指定的角度旋转。更精确地,参数指定该步骤的步骤数,以及多少步骤导致摄影者预先计算的环的所需旋转角度-在步骤的直接控制模式下。
5)等待帧之间的暂停。如果将框架设置为移动,则至少要暂停两秒钟,因为平台需要冷静下来。

然后,如果用户尚未中断执行,则转到下一个步骤框架的开头。

通常,没有简单摄影师无法理解的残酷数学或算法。

为什么我将其称为原型,而不是建立工业生产,专利,认证和国际销售渠道?

首先,它仍然是一个玩具。通过研究微控制器及其线束,我沉迷并满足了我的好奇心,我对一些家用电器的实现有了更多的想法,但是,可惜的是,我没有学会如何赚钱。但是成本却相当高-高达一百美元的价格,这是一款相当不错的设备,它本身就采用了数码单反相机。

其次,有很多问题,还有一些事情要完成。我将简要列出:

-有关shagovik皮带和镜头的信息已在上面撰写。
-从一个通道L293D向电动机供电足以使机器人在平坦的表面上平稳地运转,甚至以明显的角度向上倾斜,但在无法通行的道路上绝对不够-不能在草和沙子上驾驶机器人...这不好。在某种程度上,我是通过将引擎添加到第二个L293D的另一个通道来决定的。他果断地决定用更强大的发动机取代履带驱动器中的发动机,并将其与产生良好电流的驱动器一起使用。
-随着平台的旋转也不会结冰。转弯不到一个角度很难完成。需要一个步进电机。变速箱还是一个完全可以玩的玩具-不要忘记底盘的起源和用途!由于在延时拍摄过程中旋转是沿一个方向执行的,因此可以快速选择游戏,而并不是很关键,但是如果来回运动,则可以在游戏中随意移动平台。
-我没想到如何实现上下转动相机。因此,尽管该项目称为4DoF,但实际上我们只有三个自由度。
-发动机及其在轨道上的驱动器具有不同的特性。不完全相同。因此,随着正式的直线运动,机器人会稍微偏向侧面。据我估计-大约10厘米乘五米。我假设了这一点,并打算通过应用基于磁力计列表中提到的GY-273 HMC5883L模块的反馈来进行航向校正。

假设在框架中开始移动之前已经在运动方向上存储了场的值,则机器人在完成规定的运动后将通过一条轨道进行锻炼,以将过程校正为场校正期间测量并存储的值的相似性。事先尚不清楚磁力计的精度是否足以满足此要求,或者仅需输入根据经验为该原型为一台发动机工作时计算出的校正量,即可代替反馈。仅仅因为所购买的模块不能完全正常工作-而不是传感器的值,而是有一个噪音,但是我还没有收到任何替代品。另外,在此传感器上,我想固定移动时的翻转检测-停止拍摄。尽管这很有用。

-界面非常呆板。不方便的操纵杆,机器人控制的惯性(稍后会详细介绍),缺少精美的图形,按钮,卷曲,小工具和夸张功能-一些晦涩的字符和拉丁字符。通常,非营利性产品肯定
会从该产品的膝盖冒出来。许多电线,手帕以某种方式被推,固定并在这里和那里伸出。显然,这不像商店的白色漂亮玩具。

面条

第三,还有更多的项目要开发!除了解决这些问题并创造商业外观。真的!例如,上面提到的界面的惯性是出于实现远程控制并从机器人接收遥测的期望。是的是的即使如此强大的微控制器,在我手中的工作效率也很低。一切都会飞速发展,但是编程和使用标准库的缺点导致了这样一个事实,控制操纵杆,您必须等待一段时间才能使机器人对动作做出响应。一路走来,机器人已准备好从其他设备进行控制。对,对。在这种原型的阶段,已经有可能通过智能手机或计算机对其进行控制。转向,调整拍摄参数,跟踪性能-所有这些现在都可以在任何地方完成。出乎意料的是,为此,我什至不必成为微控制器的专家-以某种方式,但它已经可以工作了。尽管最好不要问我确切的方法。荣耀Arduino,什么。

接下来是什么?我会射击。享受镜头或翻拍变更的动力。为此,它完成了,不是吗?我不习惯使用不太容易使用的工具。除了你自己,这里没有人要抱怨。

希望读者能给我留下深刻的印象,那就是,在业余时间尝试一下隐藏在读者脑海中的小想法并不是那么复杂甚至有趣。但是,甚至只是“那会发生什么变形!”对我来说就足够了。感谢您的阅读和您的宝贵时间。

如果某人不太懒惰,不愿意花更多时间-您可以熟悉书面代码。它没有任何有趣或有益的功能,但是可以工作。我提前警告您,有800条线。

» 4DOF游戏中时光倒流机器人V1.2

是的 最后,从我这里购买一处避暑别墅!我很害怕等买家!

总之,这就是机器人的“实时”外观:

Source: https://habr.com/ru/post/zh-CN398381/


All Articles