1 使用Android和Arduino进行遥控车破解-德赢Vwin官网 网
×

使用Android和Arduino进行遥控车破解

消耗积分:0 | 格式:zip | 大小:0.32 MB | 2023-06-30

陈文博

分享资料个

描述

介绍

好吧,在这个项目中,我们将改造一辆旧的遥控遥控车,并使其成为 Android 控制的。

除此之外,我们将建造一个喇叭,这将大大改善使用伺服电机的转向。便宜的遥控车没有平稳的转向,它们通常有一个可以向左或向右转动的马达,而且很难控制。

 

概念:

  • PWM (脉冲调制)技术

如果您浏览上面的链接,您会发现这些东西如何工作的详细解释。

这是一个高级教程,我认为它是为有一些编程经验的人准备的,他们想尝试一些有趣的东西,并通过实践学习一些电子学。您需要的技能:

  • 修补:我们将使用 dremel 工具和螺丝刀、剪线钳等拆除旧车
  • 基本电子材料:我们将使用 arduino nano 和一些焊接组件创建一个小板,然后将它们连接到汽车组件
  • arduino 编程:使用 Arduino IDE 和 FTDI 适配器将代码上传到 Arduino 板,对代码进行小幅调整
  • 构建 Android 应用程序:我们将从 Bitbucket 获取代码,构建应用程序并将其上传到移动设备

第一步:拆旧车,安装伺服电机

我们将选择遥控车并将其拆毁,进行调整等。我在下面附上了一些图片供您查看整个过程。

首先我们将拆卸汽车,然后我们将从内部电子设备和无用的隔间(如电池座和旧转向)中移除

当我们这样做时,我们必须注意的想法:

  • 我们在车内有足够的空间来安装我们的电路板,包括电子元件、伺服器、H 桥和 LiPo 2S 电池
  • 可以安装伺服电机,它可以适应驱动汽车旧转向(如果你看图片,你会看到我是如何在特定型号的汽车上实现这一点的)
  • 我们不会损坏汽车结构、转向和/或动力传动系统
 
 
 
 
poYBAGN-vnSAK_0TAAgFdiNz2Vk486.jpg
 
1 / 16
 

其次,我们安装伺服电机(见图)。

第二步:搭建电子板,安装到车上

电子板将成为汽车的大脑,它将通过蓝牙监听 Android 应用程序,并控制汽车内置电机、伺服电机、转向和喇叭。

 
 
 
 
pYYBAGN-vnmACjbTAAgEAzg-SxE749.jpg
 
1 / 8
 

我附上了一个fritzing原理图,这样事情会更容易。定制 PCB 将包含 Arduino pro mini、一个 HC-05 蓝牙模块、几个用于分压器的电阻器、一个压电蜂鸣器和一个 l7805cv 5V 稳压器。

PCB 还将具有各种连接器和电线,以便于插入。我们的电路板将连接到电源、通过 H 桥连接到汽车旧电动机以及伺服电机。此外,蓝牙和 Arduino pro mini 将具有由公母 PCB 连接器制成的定制连接器。

我们的 PCB 上存在来自两个相同电阻的分压器,因此它将电压降低到 5 伏以下,以便我们的模拟引脚进行测量。测量结果将发送到 Android 应用程序并显示在屏幕上。

汽车电源将是至少 1000 mAh 的 2 节锂聚合物电池。电池将通过PWM直接驱动汽车电机。其余的电子设备将由相同的电池供电,但使用 l7805cv 5V 稳压器。

第三步:在Arduino上上传代码,在Android上构建应用

代码(在此处获取)需要使用 USB 到串行 FTDI 适配器 FT232RL 上传到 Arduino pro mini。

您需要将 GND、VCC、Rx、Tx 和 DTR 引脚连接到 Arduino pro mini。然后打开 Arduino 软件选择工具/端口和您正在使用的任何端口。然后是工具/板/Arduino Pro 或 Pro Mini。然后是工具/板/处理器/ATmega328(5V 16Mhz)。

最后,打开草图并按上传。

那么这个程序是如何工作的:首先它侦听串行线(辅助软件串行)以获取传入传输。该消息被解析并解释为喇叭命令或电机命令(包含速度和方向)。消息被解释后,命令被传输到电机/喇叭。草图还定期轮询 A3 模拟引脚以找出电池电压,并将通过蓝牙传输数据。

接下来是克隆 Android 应用程序存储库并使用 Android Studio 构建它。Bitbucket 网址是:https ://bitbucket.org/danionescu/remotecontrollbluetoothrobot

对于 Android Studio 部分,有很多教程,例如:

https://www.instructables.com/id/How-To-Create-An-Android-App-With-Android-Studio/

步骤是:

  • 下载并配置Android Studio
  • 源代码导入 Android Studio
  • 构建和安装应用程序

Android Studio 的一些替代品是InteliJEclipse。

第四步:排除汽车故障并运行应用程序

安装安卓应用程序后,首先要做的是使用安卓配对您的蓝牙设备。这将涉及以下步骤:

  • 打开你的车
  • 转到Android菜单/蓝牙
  • 扫描蓝牙设备
  • 选择您的设备并配对(出现提示时输入代码)。

好的。之后打开 Android 应用程序,单击“列出已配对”按钮,从列表中单击相应的蓝牙设备,将显示下一个屏幕。

下一个屏幕将实际控制汽车。使用顶部的水平滑块,您可以控制车轮的角度,并使用底部的垂直滑块控制速度和方向。启动/停止汽车还有一个“开/关”按钮,“Custom1”按钮是汽车喇叭。“custom1”按钮下方是一个带有电池电压的小文本。

 
 
 
 
poYBAGN-vnuAAfy2AAEbrZSuL9U908.png
 
1 / 2
 

调整:

  • 如果汽车后退而不是前退,反之亦然,将引脚 A0 和 A1 倒转
  • 如果您想修改最大/最小角度或反向角度,请调整此代码:
void adjustDirection(int direction) 
{ 
   int newDirection = steeringMiddlePoint + map(direction, 0, 100, -35, 25); 
   Serial.println(newDirection); 
   steering.write(newDirection); 
   delay(15); 
} 

我希望你在这个项目中学到了一些东西,如果你喜欢这个想法,你可以用一个定制的机器人和一个更高级的 Android 应用程序来检查这个更高级的项目。:)

 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//www.hzfubeitong.com/m/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="https://m.elecfans.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'使用Android和Arduino进行遥控车破解',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.hzfubeitong.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);