0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建可以通过USB OTG电缆与Arduino通信的android应用程序

454398 来源:网络整理 作者:网络整理 2019-12-11 15:05 次阅读

步骤1:下载Android Studio

如何创建可以通过USB OTG电缆与Arduino通信的android应用程序

从http://developer.android.com/sdk/index.html获取android studio

单击“下载android studio”按钮开始下载

同意按照条款和条件,您的下载应该开始

文件将是exe文件,文件大小将约为gig

步骤2:安装Android Studio

通过一些基本的安装步骤来安装exe文件

最后,它将自动安装最新的SDK版本,使其完成。

最后,您将获得android studio的欢迎屏幕。

第3步:设置在Android Studio中

在在欢迎屏幕上,您应该看到配置按钮,通过选择它,您应该进入配置页面。单击第一个选项将是“ SDK管理器”,方法是单击一个新窗口,其中将显示当前SDK的详细信息。可以选择“启动独立的SDK管理器”,方法是单击将打开良好的旧SDK管理器,然后您可以根据需要添加新的SDK工具。

Android studio有一个用于测试android代码的模拟器,但是很遗憾,我们不能在这种情况下使用它,因为这涉及到物理设备与另一台设备通信。相反,我们可以使用Android手机本身来调试代码。

由于我们使用的是Android设备来调试代码,因此我们只需下载该设备特定版本的“ SDK平台”即可,首先了解android手机的操作系统版本。就我而言,我使用的是具有5.0(棒棒糖)的Samsung note3,因此只需从“ Android 5.0.1(API 21)”下载“ SDK平台”就足够了。

步骤4 :关于库

我用来进行通信的库称为http://www.physicaloid.com/上的physicaloid,该库最近更新于2年前最终更新无法正常工作(至少对我而言)。因此,在与github存储库中的人讨论之后,我设法获得了该库的旧工作jar文件。

通过使用该库,我们不仅可以与Arduino通信,而且可以将已编译的十六进制文件上传到Arduino,库具有内置的avrdude功能。

步骤5:在Android Studio中创建新项目

首先,我想制作一个外观与Arduino的串行监视器窗口相同的应用程序。

在android studio的欢迎屏幕上,将有一个创建新项目的选项,选择“开始一个新的android studio项目”

在下一页中输入您的项目名称和位置,然后单击下一步

在下一页中,选择我们正在为其开发应用程序的平台,然后选择正确的手机版本,然后单击下一步。

在下一页中,默认情况下将选择“空白活动”并保持现状。并在下一页上为您的活动(您在应用程序的主屏幕)命名。

然后单击完成,新创建的项目将在android studio中打开,我们现在就可以进行处理

步骤6:将库添加到新项目中

在左上角在主屏幕上,将出现一个下拉菜单,其名称为android,将选项更改为project以查看项目的目录结构。

在目录结构中,通过展开“ app”文件夹,您可以找到lib该文件夹是放置我们的库的默认文件夹。

复制physicaloidlibrary.jar文件并将其粘贴到libs文件夹中

粘贴后,单击顶部的“与gradle文件同步项目”按钮。

现在库已添加,我们可以在代码中使用其功能。

在首次创建项目时自动创建的主要活动将位于

App》 src》 main》 java》 YOUR_ACTIVITY

布局将位于

App》 src》 main》 res》布局》 activity_serial_monitor.xml

步骤7:编辑Manifest.xml

清单文件类似于我们项目的主要属性文件,其中包含权限详细信息和活动详细信息

清单文件位于App》 src》 main》 AndroidManifest中.xml

打开文件并添加

我的清单文件上方的行看起来像

通过添加该行,我们每次将USB设备连接到OTG端口时都要求用户许可

步骤8:设计布局

编辑应在“ content_serial_monitor.xml”文件中完成

我已拖动3个按钮,1个编辑文本,1个文本视图显示在屏幕上,然后重命名并按正确顺序放置它们。

打开–打开与USB设备的连接

关闭–关闭与USB设备的连接

发送–将数据发送到Arduino

我还添加了一个微调器,以选择串行监视器中可用的波特率和自动滚动功能

将此字符串数组添加到位于应用程序》 src》 main》 res》值》 strings.xml中的strings.xml文件中

Serial Monitor

Settings

Choose Baudrate

300 baud

1200 baud

2400 baud

4800 baud

9600 baud

19200 baud

38400 baud

576600 baud

744880 baud

115200 baud

230400 baud

250000 baud

让我们在应用程序中添加精美的图标

右键单击应用程序》新建》图像资产

现在浏览所需的图像文件并将其设置为ic_launcher,它将覆盖默认的android图标

Step 9:将代码添加到UI元素

我附加了完整的Java文件Serial_monitor.java,首先下载了该文件并将其与这些小代码段进行比较。

首先我们创建所有UI元素和库变量

Button btOpen, btClose, btWrite;

EditText etWrite;

TextView tvRead;

Spinner spBaud;

CheckBox cbAutoscroll;

Physicaloid mPhysicaloid; // initialising library

下一步,在onCreate方法中,我们可以初始化我们创建的那些变量

btOpen = (Button) findViewById(R.id.btOpen);

btClose = (Button) findViewById(R.id.btClose);

btWrite = (Button) findViewById(R.id.btWrite);

etWrite = (EditText) findViewById(R.id.etWrite);

tvRead = (TextView) findViewById(R.id.tvRead);

spBaud = (Spinner) findViewById(R.id.spBaud);

cbAutoscroll = (CheckBox)findViewById(R.id.autoscroll);

mPhysicaloid = new Physicaloid(this); // setting the context for library

现在我们可以显示屏幕上必需的UI元素,我正在调用一个方法来实现此目的

该方法采用布尔参数,该参数指定天气应用是否已连接到Arduino

setEnabledUi(false);//未连接到Arduino,所以为假

//setEnabledUi method to set UI elements on screen

private void setEnabledUi(boolean on) {

if(on) { // if connected to device

btOpen.setEnabled(false); //hide open button (already opened)

spBaud.setEnabled(false); //hide baudrate selector

cbAutoscroll.setEnabled(false); // hide autoscroll

btClose.setEnabled(true); // display close button

btWrite.setEnabled(true); // display send button

etWrite.setEnabled(true); // display edittext field

} else { // if not connected to device

btOpen.setEnabled(true); //display open button

spBaud.setEnabled(true); //display baudrate selector

cbAutoscroll.setEnabled(true); //display autoscroll

btClose.setEnabled(false); // hide close button (already closed)

btWrite.setEnabled(false); // hide send button

etWrite.setEnabled(false); // hide edittext field

}

}

现在我们根据需要显示了所有内容,现在我们可以向按钮添加操作。

打开按钮的侦听器方法,在此方法涵盖了波特率设置,自动滚动选项以及与设备的连接。

public void onClickOpen(View v) {

// setting the baudrate based on spinner

String baudtext = spBaud.getSelectedItem().toString(); // get the text from spinner

//switch statement to check for baud rate

switch (baudtext) {

case “300 baud”:

mPhysicaloid.setBaudrate(300);

break;

case “1200 baud”:

mPhysicaloid.setBaudrate(1200);

break;

case “2400 baud”:

mPhysicaloid.setBaudrate(2400);

break;

case “4800 baud”:

mPhysicaloid.setBaudrate(4800);

break;

case “9600 baud”:

mPhysicaloid.setBaudrate(9600);

break;

case “19200 baud”:

mPhysicaloid.setBaudrate(19200);

break;

case “38400 baud”:

mPhysicaloid.setBaudrate(38400);

break;

case “576600 baud”:

mPhysicaloid.setBaudrate(576600);

break;

case “744880 baud”:

mPhysicaloid.setBaudrate(744880);

break;

case “115200 baud”:

mPhysicaloid.setBaudrate(115200);

break;

case “230400 baud”:

mPhysicaloid.setBaudrate(230400);

break;

case “250000 baud”:

mPhysicaloid.setBaudrate(250000);

break;

default: // default is 9600

mPhysicaloid.setBaudrate(9600);

}

if(mPhysicaloid.open()) { // tries to connect to device and if device was connected

setEnabledUi(true);

if(cbAutoscroll.isChecked()) { // if auto scroll was selected

tvRead.setMovementMethod(new ScrollingMovementMethod());

}

// read listener, When new data is received from Arduino add it to Text view

mPhysicaloid.addReadListener(new ReadLisener() {

@Override

public void onRead(int size) {

byte[] buf = new byte[size];

mPhysicaloid.read(buf, size);

tvAppend(tvRead, Html.fromHtml(“” + new String(buf) + “”)); // add data to text viiew

}

});

} else {

//Error while connecting

Toast.makeText(this, “Cannot open”, Toast.LENGTH_LONG).show();

}

}

tvAppend方法将接收到的数据写入Textview

Handler mHandler = new Handler();

private void tvAppend(TextView tv, CharSequence text) {

final TextView ftv = tv;

final CharSequence ftext = text;

mHandler.post(new Runnable() {

@Override

public void run() {

ftv.append(ftext); // add text to Text view

}

});

}

用于关闭按钮的监听器

public void onClickClose(View v) { //when close button is pressed

if(mPhysicaloid.close()) { //close the connection to arduino

mPhysicaloid.clearReadListener(); //clear read listener

setEnabledUi(false); // set UI accordingly

}

}

发送按钮的监听器

public void onClickWrite(View v) { // when send button is prressed

String str = etWrite.getText().toString()+“ ”; //get text from EditText

if(str.length()》0) {

byte[] buf = str.getBytes(); //convert string to byte array

mPhysicaloid.write(buf, buf.length); //write data to arduino

}

}

这一切都已完成,只需连接手机并运行应安装并打开的程序即可。

第10步:测试应用程序

现在连接手机并通过以下方式运行代码使用顶部的“播放”按钮,现在会弹出设备选择器对话框,并询问该应用程序应安装在哪个设备上。

注意:如果您在列表中找不到手机,请尝试重新安装手机驱动程序。

p》

如果选择正确,则应用程序应自动安装在手机上,并对UI进行必要的调整。

运行一些测试代码并上传到arduino

void setup()

{

// Open serial communications and wait for port to open:

// Serial.begin(1200);

// Serial.begin(2400);

// Serial.begin(4800);

Serial.begin(9600);

// Serial.begin(14400);

// Serial.begin(19200);

// Serial.begin(38400);

// Serial.begin(57600);

// Serial.begin(115200);

}

void loop()

{

while(Serial.available() 》 0) {

Serial.write(Serial.read());

}

}

断开手机与PC的连接,并使用OTG电缆连接到Arduino,并发送一些应返回的数据

步骤11:其他用途

您可以修改布局和代码以适合您的需要,并为分别制造的每台设备制作一个应用程序

例如,我修改了相同的项目以用作我的电动机计时器控制器接口

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125635
  • OTG
    OTG
    +关注

    关注

    2

    文章

    128

    浏览量

    45001
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184826
收藏 人收藏

    评论

    相关推荐

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别?

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别? USB(通用串行总线)是一种用于连接设备的
    的头像 发表于 02-02 15:32 2447次阅读

    【从0开始创建AWTK应用程序创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 12-01 08:24 217次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】<b class='flag-5'>创建</b><b class='flag-5'>应用程序</b>并在模拟器运行

    【从0开始创建AWTK应用程序】开发及调试环境搭建

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 11-11 10:00 286次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】开发及调试环境搭建

    如何通过安卓装置的USB OTG连接升级NUC240的固件

    - EVB - NUC240 - LQFP100 V1.0 这一样本代码表明如何通过安卓装置的USB OTG(On-The-Go)连接升级NUC240的固件。 您可以在下列时间下载
    发表于 08-31 07:59

    FreeRTOS队列创建任务间通信的基本应用程序

    应用程序 : 此代码是 FreeRTOS 队列创建任务间通信的基本应用程序 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-
    发表于 08-30 07:56

    FreeRTOS队列创建任务间通信的基本应用程序

    应用程序 : 此代码是 FreeRTOS 队列创建任务间通信的基本应用程序 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-
    发表于 08-22 07:12

    使用Arduino和处理Android应用程序DIY车速表

    电子发烧友网站提供《使用Arduino和处理Android应用程序DIY车速表.zip》资料免费下载
    发表于 07-06 11:23 0次下载
    使用<b class='flag-5'>Arduino</b>和处理<b class='flag-5'>Android</b><b class='flag-5'>应用程序</b>DIY车速表

    使用AndroidArduino创建物联网

    电子发烧友网站提供《使用AndroidArduino创建物联网.zip》资料免费下载
    发表于 07-05 09:43 0次下载
    使用<b class='flag-5'>Android</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>创建</b>物联网

    Android手机应用程序来控制调频收音机的创建

    电子发烧友网站提供《用Android手机应用程序来控制调频收音机的创建.zip》资料免费下载
    发表于 06-12 09:36 4次下载
    用<b class='flag-5'>Android</b>手机<b class='flag-5'>应用程序</b>来控制调频收音机的<b class='flag-5'>创建</b>

    如何通过Android应用程序在NodeMCU V2上点亮LED ?

    正如标题所说,我正在努力解决这个问题,我知道网上可能有关于我如何做到这一点的教程,但对于我来说,我无法找到我正在寻找的东西。我想知道如何通过 Android 应用程序(使用 Android
    发表于 06-06 12:23

    使用esp在android上运行应用程序或文件?

    我是初学者,我使用 Arduino 和一些我知道的传感器 但是,我想知道我是否可以使用我的 android 手机作为输出?例如,我想在特定传感器检测到某些东西时播放视频。 即使不运行视频,我也
    发表于 06-05 06:49

    android应用程序在AP模式下与esp8266通信,如何开发arduino代码?

    设备:在这个子程序中,我也有一个代理,用户可以通过互联网与设备通信。我使用一些应用程序将数据作为命令传输,这些命令将在 ESP8266-07
    发表于 05-16 07:45

    是否可以通过Android应用程序控制ESP?

    您好我是这个论坛的新手,需要一些帮助。我正在使用 ESP-01 制作一个简单的 wifi 灯控制器。我想知道是否可以通过 Android 应用程序控制 ESP。
    发表于 05-10 07:04

    blhost应用程序可以与ROM引导加载程序通信吗?

    此辅助引导加载程序加载到目标上(仅使用串行接口,我们没有 SWD、JTAG 或 USB)? blhost应用程序可以与ROM引导加载程序
    发表于 05-06 08:27

    如何在Arduino ESP8266和Android应用程序中正确地实现WebSockets?

    所以,现在我也迷上了新的 IOT 家庭自动化浪潮,并想为我的家庭构建一些应用程序(调光灯、热水器温度控制)。控制部分不是问题,我想我可以说,我在 Arduino 开发方面有很好的经验,比如在 C
    发表于 04-28 08:42