步骤1:先决条件
好吧,因为是我,我确保您对普通凡人都难以理解这条指令……只是在开玩笑:p。但是实际上可能很难,因为所有这些都是为了与Linux操作系统(特别是Ubuntu)一起使用而设计的,并且大多数人使用Windows或Mac。从理论上讲,可以对主要软件进行修改,以支持这两个平台,但是我不会这样做,因为它已经对我有用,并且由于我免费提供了该软件,因此请选择或保留它。
但是,除了所有这些,您可能还需要:-具有Linux的计算机,最好是运行Ubuntu的笔记本电脑
-计算机必须同时安装python 2.x(而非3.x)以及pygame和python-serial(可以通过在终端中输入“ sudo apt-get install pygame python-serial”来获得)
-Arduino微控制器,在我的情况下,这是Arduino Mega 2560
-带有灯光的圣诞树上的
-电子学和基本焊接技能
-焊接设备
-可使用列出的零件
-许多鳄鱼夹(我知道它不是专业的,但我知道电的工作原理从理论上讲,我进行了很多测试,以确保这对于我所运行的特定条件而言是安全的)。
-我现在想不起来的几件事:p
第2步:详细材料
好,因此,如果您想具体说明硬件方面所需的内容,请参见以下列表:
-arduino,可以是我使用了Mega
-A电缆将arduino与计算机连接。-关于(或确切地说)15个鳄鱼夹
-5继电器能够在120伏电压下切换至少0.5安培的负载,但可以由12伏或更低电压供电
-5 2N3904 NPN开关晶体管
-5 4.7K欧姆电阻器
-A 9至12伏壁式适配器,您可以修改
-A电源线旧设备或其他东西
-足够大的Perfboard,可以在其上构建电路,或者如果您真的想要,则为面包板
-用电线连接所有必需的连接
步骤3:理论
因为我是我,所以我在理论上做了很多工作,甚至没有尝试为此项目构建或编程任何东西。我确实使用了万用表来找出通过一串普通的灯流了多少电流,并发现地雷消耗的电流约为0.4安培,请记住,您的测量结果可能有所不同。我的继电器在230伏时的额定电流为3安,因此我认为它们可以在120伏时轻松达到0.4安。经验法则:使继电器的额定承受的电流至少是打算通过它们的电流的两倍,这也应该与大多数其他组件保持一致。线圈的电阻平均为690欧姆。然后,我对2N3904晶体管进行了研究。我发现,基极可以在最大信号电流为50 mA的情况下进行开关,而发射极-集电极的电流将在最大200 mA的条件下工作。物理救援!我的晶体管信号是来自arduino的5伏,电流*欧姆=伏,因此可以换算成欧姆=伏/电流。这意味着我需要至少100欧姆才能在5伏电压下切换0.05安培的电流,但是更高的欧姆意味着更少的电流,直到确定的时间点还是可以的。我使用了一个4.7k欧姆的电阻器,因为这是我所需要的全部,并且它仍然提供了足够的电流来开关晶体管。
为确保晶体管可以处理继电器的开关,我采用了类似的逻辑。我将使用9伏特来切换继电器(即使它们的额定电压为12伏特,我的仍然可以在9伏特时切换),并且我必须确保流经晶体管的电流不会超过200 mA 。因此,在电流*欧姆=伏特的情况下,我将其重写为电流=伏特/欧姆。因此9伏特/690欧姆= 0.013安培或13 mA,恰好在安全区内。
然后,查看电路在任何一次可能处理的最大电流,我得到的电流值为0.4安培。一串灯,然后将其乘以5,以获得可以随时打开的通道数,以获得2安培的值,这有点低。但是,所有这些计算只是为了确保一切都在理论上起作用,并且不会有任何起火或被炸。..想象一下规划飞机建造将人们带到月球的理论:p
第4步:电路和原型
因此,请确保每件事物都能在实际环境中工作在生活中,我只在一个很小的面包板上建立了电路的一个通道。还给出了电路原理图,没什么特别的,每个通道只有一个晶体管,一个电阻和一个继电器。..非常便宜和简单。
第5步:测试原型
由于理论和电路设计不可行,因此我决定该进行实际测试了。因此,我仅将9伏电源连接到电路,将灯连接到墙上的插座,但以某种方式将继电器连接,使其像中断开关一样工作。然后,我使用信号引脚40将arduino连接起来,然后将arduino的地线与电路的地线连接起来,以便信号实际上会记录在开关电路中。我将arduino连接到了我的Ubuntu笔记本电脑,并运行了一个简单的小闪烁代码来打开和关闭灯。我使用了这个蒸汽朋克笼式灯,因为它也吸了0.4安培的电流,因此与圣诞灯的负载相等。该代码还显示了插针13上内置LED上的信号状态,并显示了以下内容:
void setup(){
pinMode(13,OUTPUT);
pinMode(40,OUTPUT); }
void loop(){
digitalWrite(13,1);
digitalWrite(40,1);
delay(1000);
digitalWrite(13,0);
digitalWrite(40,0);
delay(2000);
您可以看到,非常简单的概念验证测试代码,它将继电器打开一秒钟,然后关闭两秒钟。我附了一段视频,对测试进行了演示。那里的开关很安全,但是继电器绕过它打开和关闭灯。
步骤6:开始施工
因此,我认为我应该以一种使桥接和填充最少的方式最容易构建的方式,将组件布置在穿孔板上。因此,这只是我如何排列组件的图片,非常紧凑。
步骤7:焊接时间
好,既然组件已经布置好,我就可以开始焊接并使设计永久化。是的,在将它们焊接在一起之前,我确实测试了我使用的所有组件。这里没有太多要讨论的内容,但是我确实有一个非常方便的帮助站(请注意双关语:p),如果您进行焊接项目并且还没有焊接项目,我建议您购买一个。第二张照片也太暗了,因为我在晚上焊接,但是在外面,因为我的父母不太喜欢我在房间里吸烟:p
步骤8 :成品电路
因此,在进行一些焊接之后,这里出现了成品电路。看起来不是很完美(尤其是没有角:p的情况下),但是它可以工作并且所有连接都在那里。如您所见,在底部,我使用了拉直的回形针和小块的回形针来连接120伏特部分。我认为回形针很粗且坚固,足以承受约2安培或更高的电流,但是,伙计,它们难于焊接或其他什么问题:p另外,我还使用了从组件上剪下的引线来进行零件之间的其他连接,因为我更喜欢用焊料拖出一条路,因为它浪费很多,而且看起来不太好。构建完之后,我分别测试了每个通道,以确保所有5个通道都正常工作,尤其是自从我上次尝试焊接晶体管以来,它们并没有真正讲述这个故事:p但是幸运的是,所有通道都可以工作,我没有不需要进一步修改或更换组件。
步骤9:使其坚固
《我注意到一些区域正在旋转,这不是您想要的,因为焊点可能会破裂或引线会折断。幸运的是,我认为用热胶覆盖易碎区域是一种很好的做法,尤其是在我刚开始的焊料项目容易破损之后。因此,我只是借用了姐姐的粉红色(或紫色?)热胶枪,并在几乎整个底部表面添加了热胶,特别注意了那些不应该移动的区域。我只需要确保不覆盖接触线,否则我将无法连接电路的各个部分:p
步骤10:完成工作
所以我使用15个左右的鳄鱼夹为整个电路布线。另外,由于所有的东西都在我的房间里,所以我决定将它实际上塞进一个盒子里,以使其在我的房间和客厅之间更便于携带。我必须确保任何地方都没有多余的接触点或短路,因为这可能会引起火灾或烧毁我的arduino和/或笔记本电脑。然后将其连接到圣诞灯,如第二张图片所示,我以怪异的方式排列它们,以便与中性线有一个连续的连接,而每串灯都可以有单独的“热”连接,因此可以触发分别。黑色鳄鱼夹是常见的连接,其他颜色是单独触发的单独连接。我只有3串灯,所以我无法使用所有5个通道,但这足以测试电路和为此编写的软件。
步骤11:软件
该软件实际上是该项目的主要重点。它是由K-Labs软件开发部门(即我)开发的。与设计和构建硬件相比,我可能花费更多的时间来编写和完善控制器程序。由于该项目的启动有些晚(这就是为什么您不应该在截止日期前几天进行项目的原因),所以我只是在12月21日(圣诞节前夕)的3天才开始编程。我花了整整两天的时间进行编程,花了半天的时间调试和完善代码,但是仍然可能有一个错误使我无法进行检测(发生在您是程序员以及alpha和beta测试人员的情况下)。另外,不幸的是,对于许多人来说,该程序是为Ubuntu Linux设计的。我真的没有花任何时间在其他平台上开发该程序,因为我使用的任何计算机上都装有Ubuntu,但是从理论上讲,只需很少的调整即可使其在其他平台上运行。此外,该程序还被设计为具有与Audacity相似的界面,相似的配色方案和时序序列。
要使该程序正常工作,您需要安装python,最可能的是python 2.7,因为这就是我编写程序时使用的方式。另外,您还需要两个额外的python软件包,一个用于图形界面,一个用于与arduino进行串行通信。要安装这些软件包,只需打开终端并输入“ sudo apt-get install python-serial pygame -y”,但不带引号。然后,在安装了这两个软件包之后,该程序应该可以工作。要运行它,您不能简单地双击它,因为它将在没有root特权的情况下打开,并且串行通信需要root许可。因此,只需打开终端,使用cd命令导航到目录,然后键入“ sudo python xmascontr.py”,程序将打开。但是,在打开程序之前,请确保已连接arduino,否则它将无法正常工作,因为该程序仅在启动时检查arduino。
要知道它是否准备就绪,可以使用它。右上角,在我的图片中,您会看到一个绿色的圆圈。这是指示灯,绿色表示可以使用。如果出现红色圆圈,则意味着它找不到正确的端口,或者arduino已断开连接。如果出现红色圆圈并且arduino已连接,则需要在文本编辑器中打开程序,并在所有注释行之后将变量更改为arduino的路径,在我的情况下,我一直尝试使用的任何Ubuntu计算机将我的arduino设置为/dev/ttyACM0,所以我将其保留为端口。要找到您的arduino所在的端口,请使用arduino IDE查找它,或者将其插入并在终端中键入“ dmesg | tail”,然后尝试在其中找到路径。现在,如果在打开程序时出现黄色圆圈,则表示它检测到了arduino,但没有足够的权限与之通信,这就是为什么我们必须使用sudo命令将其打开的原因,因此您需要知道管理员密码。
一旦您使程序启动时带有绿色圆圈,就该生成序列了。我尽可能地简化了它,您所要做的就是在要打开灯的位置按住鼠标左键,然后将其拖动到要关闭灯的位置。图片中蓝色的正方形是打开部分所在的位置。要删除蓝色部分之一,只需右键单击它,它就会消失。滚动将水平移动序列以添加更多内容,或者,如果在拖动部分时单击右边缘,它将为您自动滚动。使用Home和End键可以跳到整个序列的开始或结尾。鼠标光标后会出现一个小对话框,告诉您鼠标什么时候指向,但仅在它位于5条音轨之一中时,而不是在顶部菜单部分中。
播放按钮将开始播放曲目,但是如果圆圈不是绿色,则不会写下任何内容。暂停按钮没有任何作用。..。停止按钮将停止播放曲目。保存按钮会将您的序列保存到当前活动目录下的文件中,名称为“ xmaslite.xmas”,但要警告它会覆盖已经存在的xmaslite.xmas文件。打开按钮将打开找到的xmaslite.xmas文件,但如果您尝试打开损坏或错误的xmaslite.xmas文件,它将删除当前序列并打印“错误的xmaslite.xmas文件”。重置按钮只是将序列重置为空,因此您可以重新开始。调试按钮并不是很重要,但是如果您单击它,它将在终端中显示序列,它就在那儿,因为我用它来解决这个怪异的故障,但是如果您也遇到问题,它可能会很有用。
我已经附加了一个测试xmaslite.xmas文件,因此您可以测试该程序,只需将其添加到同一目录中,按打开,您应该会在屏幕上看到一些蓝色方块。
我已经添加了一个xmaslights.ino文件。这是一个arduino文件,如果要arduino执行顺控程序发出的命令,则必须将其上传到arduino。该文件经过编程,可让您的arduino在引脚40、41、42、43、44上输出开/关信号,作为每个通道的5个引脚。
总之,不少于200个2.5天内编写的总代码行数。像往常一样,我允许任何人使用和修改该软件,但是如果要重新分发原始程序,则必须归功于我。
-
控制器
+关注
关注
112文章
16321浏览量
177794 -
Arduino
+关注
关注
188文章
6468浏览量
186937
发布评论请先 登录
相关推荐
评论