Untitled Document

RS Components 为您传递最新工程动态

还不是RS用户?

立即注册,您可收到最新的
产品、技术和推广资讯。

Android 开关界面

作者: Jos van Kempen

低成本 Android 手机,可作为微控制器电路的高端 用户界面或远程控制的良好基础。 本文将告诉您, 如何使用带蓝牙盾的 Arduino 板实现各种无线传感 和开关功能。

几乎所有打算用来控制一些事情的微控制器电路,均具有某种形式 的用户界面。 这通常涉及几个按钮、旋钮、LED 和 LED 模 块。 如果真的想要好东西,您甚至可以使用触摸屏。 遥控 器也可以是手边的 — 最好是不需要很精确瞄准的遥控器。 然而,这种“奢华”的界面通常花费更多且更难实现。 情况不一定是这样。 正如您将看到的那样,带远程控 制的具有吸引力的用户界面不一定昂贵,且编程相当 容易。 您有带蓝牙功能的智能手机就是很好的机 会,可用作很好的远程控制单元。 一些微控制器 板内置了蓝牙功能,使用其他微控制器板,您可 以购买适配器或盾来增加此功能。 在本文中, 我们使用带蓝牙盾的小型 Arduino 板(ITead, 售价约 15 英镑),增加了专为本文设计的小 型输入/输出盾。

硬件和微控制器软件

蓝牙盾安装在 Arduino 板上。 它通过 UART 接口通信。 在 Bascom 中,您可 以使用“input”和“print”指令接收来 自 Arduino 板的命令,并将数据发送到 Arduino 板。

对于这个项目,我们还开发了一个简单的盾,其包括一对带 LED 的继 电器(数字输出),一个带 FET 的 PWM 输出(“模拟”输出),一个 开关(输入)和一个 NTC 热敏电阻作为模拟传感器(模拟输入)。 原理 图如图 1 所示,为此电路设计的印刷电路板布局如图 2 所示。 Android 智能手机与使用蓝牙的 Arduino 板之间的所有通信选项,均可由此盾来 实验。 连接器 K9 上提供所有继电器、开关和传感器线路。

元件列表
电阻器 RS 库存号
R1,R2,R3 = 560Ω 707-7644
R4 = 100Ω 707-7587
R5,R6 = 4.7Ω 707-7489
R7 = 10kΩ 707-7745
R8,R9 = 1kΩ 707-7666
半导体 RS 库存号
D1,D2 = 1N4148 670-8858
LED1 = LED, 绿色, 5mm 255-8472
LED2 = LED, 红色, 5mm 826-802
LED3 = LED, 黄色, 5mm 255-8450
T1,T2= BC547C 545-2248
T3 = BS170 671-4736
其它 RS 库存号
K3,K4 = 8 引脚管座 668-9533
K5,K6 = 6 路管座插座 668-9769
K7,K8 = 8 路管座插座 668-9772
K9 = 10 路排针插座 668-9779
RE1,RE2 = 5V 微型继电器 (例如泰克 MT2-C93401 或欧姆龙 G5V-2-H1) 619-2981
237-5328
S1 = 带接通触点的按钮( 例如 B3F-1000) 686-6847
PCB # 120075-1 (请参见 [1])


图 1. 输入/输出盾的原理图包括一对 LED 和继电器、一个 NTC 热敏电阻、一 个按钮以及具有 FET 和 LED 指示灯的 PWM 输出。


图 2. 打印布局的设 计使连接器与 Arduino标准板 配用。

微控制器软件(用 Bascom 编写的)工作如下: 一个循环检查是否已经收到字符。 如果 Arduino 收到“R”,将激活 输出 D11(LED1 灯亮起且继电器 RE1 通电)。 如果它收到“r”, 则 LED1 和 RE1 断电。 输出 D13 和第二个 LED 和继电器的行为方 式类似,但它们响应字符“O”和“o”。 如果收到“P” (“PWM”的简称),则例程“Input”等待一个值(智 能手机必须在值之后发送字符串“\r\n”),该值用于驱 动 PWM 输出。 FET T3 具有最大额定值 60 V/0.5 A。 LED3 提供 PWM 电平的指示。 NTC 热敏电阻传感器 R9 的测得值也会使用格 式“T;adc(0);t”打印,如果是高 (“1”),按钮 S1 连 接至的输入 D7 的信号电平打印为“G”;如果是低 (“0”),则打印为“g”。 接口配置为标准数据速率 9600 波特,这意味着发送值之后有必要短时间等待(大 约 30 至 40 ms)。

所需软件

为 Android 智能手机编写应用程序所需的以下软件,可以 免费下载:

  1. Java 语言用于编程。 可从 Oracle 网站 [2] 下载 Java 开 发套件 (JDK)。
  2. [3] 上提供 Android 软件开发包 (SDK)。
  3. 从同一网站下载用于 Eclipse 的 ADT 插件,并记下它进 入的文件夹。
  4. 我们使用了 Eclipse Classic 3.6.2 作为集成开发环境 (IDE)。 可从 [4] 下载。 (注意:在写作本文时,最新的 Android 插件是 ADT12,与 Eclipse 3.7 不兼容。)
  5. 在安装 Eclipse 之后,您必须安装 Android 插件(在“ 帮助 | 安装新软件 | 存档”下面)。 选择 ADT zip 文 件并输入名称“Android”。 然后转至“Windows | 首选项”,并查找包含精选的 Android SDK 的文 件夹(在较低级别的文件夹中,包括“Tools”) 。转至“Windows | Android SDK 和 AVD 管理器” ,选择“新建”(虚拟设备),为版本 2.3.3 选择 Gingerbread(或 Samsung_GIO 或类似名称),以便在 没有智能手机时, 必要的话可以在 PC 上模拟该程序。
  6. 从 [1] 下载包含蓝牙界面示例项目的文件夹,但不要将它放 在 Eclipse 工作空间中。

蓝牙界面项目

允许蓝牙设备发现其他蓝牙设备、建立 联系和交换信息的软件很复杂,但幸运的 是,Android SDK 随附了一个示例。 不幸的 是,它似乎无法与许多蓝牙设备一起正常工 作。 其中一个文件 (BluetoothRfcommClient. java) 的替换文件,可以在互联网上找到。 在 修改了声明之后,它解决了这个问题(参见 [5] 和 [6])。 现在,您可以使用该项目制作 自己的界面。在启动 Eclipse 之后,您可以选 择“文件 | 新建 |Android 项目 |”以创建新项 目(也许基于例子),但在此情况下您已拥有 要导入 Eclipse 工作空间中的项目。 为此,请 选择“文件 | 导入...| 工作空间中的现有项目” 。 一定要勾选“将项目复制到工作空间”, 否则原来的项目将被覆盖。 浏览至放置下载 BluetoothInterface 项目的文件夹。 在项目文件结构中可看到各种 .java 和 .xml 文件(图3)。 您可能必须单击相关文件 夹才能看到它们。 我们感兴趣的文件是 BluetoothChat.java(主程序)、main.xml(智 能手机屏幕界面)和 strings.xml(界面中使用 的变量声明)。


图 3. 蓝牙界面项目的文件结构。

界面实现

双击 main.xml 以显示智能手机屏幕界面(见 图 4)。 屏幕布局下面的选项卡,可用于在图 形布局与自动生成的代码之间切换。


图 4. 界面屏幕布局。 通常最容易将控件放在“轮 廓”窗格中。

在已下载和测试应用程序之后,通过单击左下 角的菜单按钮,并选择希望的蓝牙设备建立连 接(选择连接至设备 –安全)。 如果一切顺 利,您将看到消息“正在连接”,一会儿之后 后跟“已连接:<设备名称>”。

现在,您应能够按自己的品味开始调整界面。 Elektor 网站上的下载包括完整的应用程序文 件 (.apk),您可以将它直接下载到您的智能 手机,并在安装之后试用这里描述的所有功 能。

[1]www.elektor.com/120075
[2]http://www.oracle.com/technetwork/java/javase/downloads/
[3]http://developer.android.com/sdk/index.html
[4]http://www.eclipse.org/downloads/
[5]http://projectproto.blogspot.com/2010/09/android-bluetooth-oscilloscope.html
[6]http://code.google.com/p/android-bluetooth-oscilloscope/

更多技术文章,请在线浏览www.designspark.com/chn, 一个由RS提供的免费在线资源及工程人员设计支援通道。

回到页首