Android结合Arduino制作LED灯光秀

本文由 极客范 - 麻瓜围脖2011 翻译自 Trevor Shannon。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

用一个彩色LED条连接到你的智能手机,把变色LED安装咖啡桌的下面,或你的自行车上,或其他你认为需要更多的颜色的地方,制作一场触控灯光秀吧!

有很多方法可以将你的智能手机连接到嵌入式单片机。在这个项目中您将使用Android手机的USB主机模式。这种方式,Android手机可以驱动Arduino设备并与之通讯 !Arduino设备通过USB连接到你的手机上,进行串行通信。就像把Arduino设备连接到你的电脑一样。

一旦你能够使你的手机跟一个Arduino对话,你便开启了一扇崭新世界的大门!

image14

下载代码

警告:项目有风险,尝试需谨慎。我们在测试中炸掉了一部手机。并不是所有的Android手机都兼容USB主机模式。只能使用兼容的手机,用适当的Android操作系统和USB主机模式驱动程序。要了解更多,请访问如何确定我的设备有USB主机模式(OTG)支持吗?

所需部件

  • Arduino Uno单片机板RadioShack # 276 – 128, Maker Shed # MKSP11或其他USB转串口 Arduino单片机
  • 无寻址1米(或更长)的RGB LED条,比如Adafruit # 346
  • 跳线:RadioShack #276-173 or 276-102
  • Android智能手机:makezine.com/go/android-arduino网站上有部分兼容手机的列表
  • 直流电源适配器:12V, 1A RadioShack #273-316 或 273-462
  • 面包板:RadioShack #276-002 或 276-098, Maker Shed #MKKN3 或 MKEL3
  • USB 线, 即插即用 (OTG), 微型-B 公接 标准-A 母线 或 花5美元自己制作一个 (见步骤 2).
  • 高能三极管, NPN: 如 TIP31, RadioShack #276-2017
  • 1kΩ (3)电阻:      RadioShack #271-1321

所需工具

  • 烙铁和焊锡
  • 电工胶带
  • 拨线器
  • 刀片
  • 能够运行arduino.cc上的Arduino IDE免费软件的计算机

操作步骤

  • 1.电路连接
  • 2.手机USB线控制连接(可选项)
  • 3.安装Android 应用程序
  • 4.编写自己的应用程序(可选项)
  • 5.上传Arduino硬件代码
  • 6.连接调试

步骤1:连接电路

image04

  • RGB LED 块一般有4条线:一根电源线,另外三根红、蓝、绿控制线。当彩色LED条接电后把控制线的任意一条接地会显示最高亮度。使用脉冲宽度调制(PWM)的控制线路可以调节灯光的亮度。
  • 1米长的LED条在红、绿、蓝LED最大亮度的可以通过1A电流。Arduino的输出端只能输出40mA左右电流,所以你需要借助驱动电路来增强电流。该电路从Arduino获得3 个PWM电信号用来驱动三极管向红色、绿色、蓝色LED供电。你完全可以控制每种颜色的亮度,来产生光谱中各种颜色。
  • 注意:如果你只想点亮一两个LED而不是一整条LED又该怎么办?只需忽略二极管直接把Arduino的输出连接到LED上。
  • 驱动电路(见第1张照片)是一个重复三次的基本放大器。来自Arduino的5V低电流的PWM信号通过1k电阻底部(B)传到三极管。这个信号作为三极管开关,通过它来控制12V以上的电流从收集器(C)和发射器通过LED(E)。三极管可以很快地切换控制,以便LED的电能像输入信号一样很快地进行脉宽调变,产生所需的亮度控制。
  • 注意: 注意保持三极管和对应颜色的LED对齐,以便三极管能控制其灯光。 对应TIP31三极管(见图二)的引出线的连接方法要正确。别忘了把Arduino的接地点连接到12 V电源的地线端!
  • 你完成电路应该和第三张照片一样。右边4引脚头是电路的输出,用于外接RGB LED块。

步骤2:手机USB线控制(可选)

image03

  • 许多Android手机的USB即插即用(OTG)设备,这意味着它们可以作为USB主机(供电方)或从机(接收方)。为了让你的手机作为一台USB Arduino设备的主机,你需要一个USB OTG电缆。你可以在网上花几块钱买到,但是如果你身边USB电缆是老式的,你可以尝试按照这里的指令操作来享受DIY的乐趣。

步骤3:安装Android应用

image06

  • 如果你想添加几行代码到Android应用上,您可以通过USB OTG电缆发送任何类型的数据到Arduino设备。此时,您将发送亮度值0到255之间的数字来控制红、绿、蓝LED的亮度。问题的关键在这里来自Mike Wakerly。他为Arduino电路板上的USB串口转换芯片编写了一个很棒的驱动程序, 叫做usb-serial-for-android。通过手机发送数据到一个Arduino设备就像在你的Android应用程序里调用device.write()一样简单!

步骤4:编写自己的应用程序代码(可选)

example-code

  • 如果你要开发自己的应用程序,你需要先从code.google.com/p/usb-serial-for-android下载Wakerly的驱动程序,复制usb-serial-for-android的JAR文件到[ 你应用程序跟目录 ] / libs目录。这是一个预编译的库文件,它包含了来从你的Android应用程序打开、关闭、写入、读取串行设备所需必要的功能函数。
  • 接下来,把 device_filter.xml文件复制到[你应用程序跟目录] / RES / xml目录。该文件作为一个连接到您的手机的USB设备的目录表。当您连接一个Arduino 设备,其设备ID (由USB转串口芯片的制造商设定)会发送到手机上。如果此设备ID出现在您的应用程序的device_filter.xml文件,那么你的应用程序会自动打开。 (Arduino的设备ID是Wakerly的device_filter.xml文件中,所以你不需要对该文件任何更改。 )
  • 最后,让你的应用程序知道应该寻找排在首位的USB设备。打开你的应用程序的AndroidManifest.xml文件,在标签中添加相应的信息:示例代码1
  • 要把Wakerly的驱动库整合到你的程序,你首先必须先编写代码在应用程序开始运行时打开串口,在程序关闭时关闭串口。下面是从Arduino      Color中的代码示例:示例代码2
  • 然后,您可以write ( )函数将数据发送到打开的串口设备。示例代码3在用户触摸Color Picker时,Arduino  Color应用程序将通过串口发送颜色数据。

步骤5:上传Arduino固件

android_leds

  • 这个项目的Arduino代码很简单,从trevorshp.com/creations/android_leds.ino可以下载到 ,然后在Arduino开发环境(IDE)中打开它,并把它上传到你的Arduino单板机。
  • 该代码采用用串口库调用,通过Arduino IDE界面,可以方便的阅读通过串口发送到单片机的数据。该代码在串行端口上无休止地循环轮询可用的字节。当找到至少3个字节可用时,字节被读出来并作为红色,绿色和蓝色的亮度存储在数组中。这些亮度等级,随后被用来设置相应的PWM输出。
  • 需要注意的是这里的max_red , max_green和max_blue常量 。您可能会发现,你的LED条并没有那么好的色彩平衡。在理论上,如果红色,绿色和蓝色LED在打开到最大亮度时,得到的光应该是白色。实践中它可能有轻微的偏色(一般为绿色或蓝色)。您可以通过map函数调用调整最大值常量弥补这一点。参见示例代码4

步骤6:连接调试

  • image12 image01你可以开始你的灯光秀了!把Arduino设备连接到你的手机上,你应该看到一个弹出通知询问你是否想打开Arduino Color应用程序,不要犹豫,请选择同意!
  • 把LED块连上你的驱动电路,并打开12 V电源。在你的手机上使用Android Color应用程序,现在应该可以实时调整你的亮条的颜色。
  • 你可以将亮条放在咖啡桌的下面,做一场夜间派对,或把它贴在你的自行车!

结论

现在您已经了解了Arduino与 Android App应用程序,你可以在这个项目进一步采用其他方式:

  • 进入无线时代:添加蓝牙或Wi-Fi模块,让您的Arduino和摆脱线缆束缚。
  • 使灯光根据您的手机的方向改变颜色。
  • 使用手机中的GPS全球定位系统,以及将一些花哨的传感器连接到Arduino做成一部位置感知数据记录器。
  • 使用独特的寻址的LED条,调整代码更好地控制灯光秀。

要了解更多有关如何Arduino入门,看看我们的畅销书Arduinoand入门我们的Arduino项目和教程,从初级到高级。

相关作品

pic1

我的机器人 Makey  Kris Magri 制作

pic2

极客园艺   Luke Iseman 制作

pic3

Arduino PIR 传感报警器   John Edgar Park 制作

pic4

豪华闪亮里脊肉    Becky Stern 制作

pic5

 

Arduino 亮晶晶自行车挂件   Becky Stern制作

pic6

Digital LED Color Organ数字LED彩色音响   Collin Cunningham 制作



原文链接: Trevor Shannon 翻译: 极客范 - 麻瓜围脖2011

译文链接: http://www.geekfan.net/4439/

[ 转载请保留原文出处、译者和译文链接。]

1 条评论

  1. TimePower  /  2014 年 1 月 1 日, 下午 8:40 回复

    …………炸掉了一部手机~~

    Thumb up 4 Thumb down 0

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">