当前位置:首页 > 物联网 > IoT设计分享
[导读]在本教程中,我们将构建一个Android应用程序,我们将能够使用蓝牙用我们自己的Android应用程序控制Arduino的板上LED。但本教程是我们的Android Studio for Internet of Things系列的延续,在那里我们制作了我们的第一个Android应用程序,有一个灯泡和一个按钮的图像。在这个教程中,你需要有一些耐心,请按照这个教程一步一步,因为我有很多错误,而第一次实现它。

在本教程中,我们将构建一个Android应用程序,我们将能够使用蓝牙用我们自己的Android应用程序控制Arduino的板上LED。但本教程是我们的Android Studio for Internet of Things系列的延续,在那里我们制作了我们的第一个Android应用程序,有一个灯泡和一个按钮的图像。在这个教程中,你需要有一些耐心,请按照这个教程一步一步,因为我有很多错误,而第一次实现它。

我们要建造什么?

我们已经在之前的教程中创建了MainActivity。在下面给出的图片中,你可以看到我们在之前的教程中已经做了什么。如果你感兴趣,你可以看看Getting started with Android Studio for Internet of Things

正如你在上面的图片中看到的,我们添加了一个灯泡和一个按钮的图像。每当用户点击按钮时,按钮上的文本和图像将按照上面的第二张图片进行更改。现在,让我们看一下下面的图片,以了解我们将在本教程中构建什么。

正如你在上图中看到的,我们需要构建一个工具栏部分,我用红色矩形标记了它。“IOTAPP”是工具栏的标题,“Connect Bluetooth or WiFi”是工具栏的副标题。我们将根据蓝牙连接的状态更改字幕。当用户点击这三个点时,菜单部分就会弹出。

正如你在上图中看到的,我们有一个菜单部分,有两个项目“蓝牙”和“退出”。在蓝牙中,我们需要添加可以显示配对设备的功能,我们可以通过简单的点击连接任何配对设备。在下图中,您可以发现它正在显示配对的设备。就我而言,我已经将它与HC-06蓝牙模块和我的Desktop配对。

当我点击HC-06,然后它会回到主活动,它会改变工具栏的副标题。在下图中,您可以看到工具栏的标题已更改为“Connected to HC-06”,然后我们将在activity_main.xml文件中添加进度条。

到目前为止,我只是给了您一个应用程序的概述。现在,让我们构建应用程序。在下图中,你可以看到我们已经在教程中讨论过的文件夹结构。在本教程中,我们需要创建更多的类、活动和布局。我在下面的图片中用红色标记了这些文件。

根据上面的图片,您需要创建两个Java类。一个是“DeviceInfoModel”,另一个是“DeviceListAdapter”。要创建这些类,只需按照下图所示的简单步骤操作。

步骤1:右键单击“com.example”。“java”文件夹下的“Yourappname”。然后点击“新建> Java类”。你可以看到屏幕上弹出一个窗口。

第二步:给班级起个名字。您需要执行这两个步骤两次来创建“DeviceInfoModel”和“DeviceListAdapter”类。

现在,我们需要创建“deviceselectactical .java”活动文件和“device_info.xml”布局文件。我不打算在这里解释如何创建活动和布局,因为我已经在我们的第一个教程中提到了创建活动和布局的过程。当您创建“deviceselecactivity .java”活动文件时,“activity_device_select.xml”文件将自动创建。现在您可以打开“activity_main.xml”文件,并按照下面的代码进行主活动的布局。

activity_main.xml文件:

activity_main.xml文件是我们在上一个教程中创建的MainActivity.java文件的布局。现在,我们需要在布局中添加更多的项目。最重要的一个是我在上面一节告诉你的工具栏。您可以使用下面的代码在布局上使用工具栏。

我使用“android: Id =“@+ Id /toolbar””为项目提供了一个Id“toolbar”。

“ android:layout_width=”match_parent“”和“ android:layout_height=”wrap_content“ ”用于给出工具栏的尺寸。

另一个组件是“进度条”。参考下面给出的代码,在布局中添加进度条。所以,我们已经创建了主活动的布局,你可以在下面的图片中看到。

在上面的图片中,你可以看到我们已经添加了一个进度条,我在灯泡图片下方的红色圆圈中提到过。在布局的顶部,您可以找到工具栏。至此,我们已经准备好了主活动的布局文件。

deviceinfommodel类和DeviceListAdapter类:

现在,我们需要准备前面创建的两个类。这些类是“deviceinfommodel”类和“DeviceListAdapter”类。在“deviceinfommodel”类中,我们将保存设备数据(即设备的名称和硬件设备的地址)。“DeviceListAdapter”是一个回收器视图适配器,它将帮助我们从“deviceinfommodel”类中获取设备数据。你可以访问这个链接来了解更多关于ViewModel和RecyclerViewAdapter的信息。

deviceinfommodel类:

在上面的代码中,在DeviceInfoModel公共类中,我们有一个DeviceInfoModel()构造函数,它是模型和适配器类之间的桥梁。

我们有两个getter getDeviceName()和getDeviceHardwareAddress()这两个getter方法用于从设备属性中获取值我们将在主活动中使用这些值。

DeviceListAdapter类:

上面的代码片段中主要有两个变量“context”和“deviceList”。上下文用于访问特定于应用程序的资源和类,以及调用应用程序级操作,如启动活动、广播和接收意图等。deviceList提供了一个可调整大小的数组,这意味着在我们的例子中,设备的名称和地址可以从列表中添加和删除。它实现了List接口。然后我们创建一些Override方法

ViewHolder():在这个方法中,我们定义视图,并根据它们的Id从XML中获取文本视图或图像视图。

1.DeviceListAdapter():创建一个参数化的构造函数——>构造函数是Adapter和Activity之间的中介。

2.onCreateViewHolder():这个方法为用户创建一个视图。

3.onBindViewHolder():该方法将数据与项目列表绑定。

4.getItemCount():该方法指示将在AdapterView中显示的数据集中有多少项(或行)。

我们准备了两个类模型和回收器适配器类。现在,我们需要显示模型类中的数据。

我们将使用“deviceselecactivity .java”和“activity_device_select.xml”文件。

activity_device_select.xml文件:

在activity_device_select.xml文件中,我们需要添加回收器视图,它将帮助我们显示配对设备的列表。下面的代码可用于在应用程序中添加回收者视图。

我已经给了一个ID的RecyclerView使用android: ID ="@+ ID /recyclerViewDevice"。其他属性可用于在布局中给出RecyclerView的适当维度。下图代表了一个回收者视图,你可以看到物品是垂直向下列出的。在我们的示例中,这些项将是设备名称和设备地址。

“deviceselectactical .java”文件:

在deviceselecactivity .java文件中,我们需要显示设备列表,并且需要添加一个方法show,当用户单击设备时,它将保留设备详细信息的记录。然后它会把我们送到主要的活动。您可以按照下面的代码在活动中显示一个回收者视图。

在上面的代码中,BluetoothAdapter允许我们执行基本的蓝牙任务。我使用了蓝牙适配器中可用的一些方法。

getbondeddevices()用于获取配对设备的列表。然后我使用deviceList作为数组,它将存储我们从bluetoothAdapter.getBondedDevices()方法获得的配对设备的列表。我在以下“RecyclerView RecyclerView = findViewById(R.id)”中使用了来自activity_device_select.xml文件的RecyclerView。recyclerViewDevice”线。

然后我调用DeviceListAdapter(),并通过使用“RecyclerView . setadapter (DeviceListAdapter)”方法将适配器设置为RecyclerView。因此,我们准备了deviceselecactivity .java文件来显示配对设备的列表。

MainActivity.java文件:

我已经讨论了主活动文件activity_main.xml的布局。现在,我们需要在MainActivity.java文件中对主活动的后端进行编程。你可以遵循下面的代码,因为我没有必要在这里解释关于Android studio和java的一切。我已经在下面的代码中给出了一些注释,以便您可以对这些概念有一个概述。

蓝牙模块和Arduino Uno原理图

正如我之前所讨论的,我们需要一个Arduino Uno和一个HC-06蓝牙模块来在Arduino Uno和我们的Android应用程序之间建立蓝牙连接。

在上图中,可以看到蓝牙模块的接收器引脚(RXD引脚)用紫色的线连接到Arduino Uno的发射器引脚(TX0引脚),蓝牙模块的发射器引脚(TX0引脚)用橙色的线连接到Arduino Uno的接收器引脚(RXD引脚)。蓝牙模块的VCC引脚与Arduino Uno的5V引脚用红线连接。两块板的GND (Ground)已经用黑线连接。

Arduino Uno的代码

下面的代码是Arduino草图。您可以看到,我们将LED 13定义为一个引脚,以访问Arduino Uno板的内置LED。然后我们使用串行库在蓝牙模块和Arduino Uno之间使用UART通信。将下面的代码上传到Arduino上,并按照上面的原理图连接蓝牙模块。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭