×

如何制作Arduino人类跟随机器人

消耗积分:0 | 格式:zip | 大小:0.13 MB | 2022-11-10

张明

分享资料个

描述

伙计们,欢迎来到我的第一篇教程文章。所以今天我们要制作一个“使用 Arduino nano 的人类跟随机器人”似乎很有趣对吧?

先给大家介绍一下这款机器人的主要工作原理:

该人类追随者将拥有一个超声波传感器,该传感器将作为跟踪前方物体的媒介。我们将以这种方式对 arduino nano 进行编码,当一个物体靠近超声波传感器并且它的距离小于 5 厘米时,它会向后移动,如果它超过 10 厘米且小于 20 厘米,它就会向前移动超过 20 厘米和不到 25 厘米,比它会向左等等......

如果你还没有理解它的工作原理,那么看看整个教程你可能会理解它......

特别感谢JLCPCB为我提供优质的 PCB。

主要特征:

~ 项目中使用的物品/装备很容易获得。

~ 低成本项目。

~ 没有多少复杂的威廉希尔官方网站 。

~ 学习 AI 的最佳范例。

所以让我们开始这个项目:-)

第 1 步:制作项目所需的物品:

  • Arduino纳米:
  • L298N 电机驱动器:
  • 超声波传感器:
  • 伺服电机:
  • 齿轮马达:
  • 橡胶轮:
  • 头针:
  • 电池座:
  • 电池:(在旧的移动电源中获取)
  • 定制PCB:JLCPCB

第 2 步:制作 Chassy :

~ 所以为了制作 chassy,我使用了一块 10*14 厘米的纸板。

~ 然后我们需要一个齿轮马达 4 件。

~ 我们将使用热胶枪将电机粘在纸板上。

〜我们进入电机的接线,接线将这样我们将横向焊接同一侧的电线。如上图所示。

~ 我们需要一个橡胶轮(4 个)用于电机。

〜然后我们的chassy就准备好了。

让我们进入下一步...

第 3 步:将电机驱动器与底盘连接:

 
poYBAGNsUl-AOV0vAAD9YBnBFGE517.jpg
 
1 / 2
 

~ 在这里,我们将使用 L298N 电机驱动器。

~ 在胶水的帮助下将电机驱动器固定在机箱的背面。如图所示。

~ 然后你需要将电机线连接到电机驱动器的电机端子上。

这就是使 chassy 功能化所需要做的一切。

第4步:制作威廉希尔官方网站 ,然后将其转换为PCB。

 
 
 
 
poYBAGNsUnqAUUeoAAsPQhJdHnk004.jpg
 
1 / 9
 

在这个项目中,我使用定制设计的威廉希尔官方网站 板来提供更专业的触感。所以我选择了 JLCPCB 来设计和订购这个项目的定制设计的 PCB。

威廉希尔官方网站 原理图:网址

格柏文件:网址

关于JLCPCB

JLCPCB (深圳市佳立创电子科技发展有限公司),是国内最大的PCB样机企业,是专业从事PCB快速样机和小批量PCB生产的高科技制造商。JLCPCB拥有超过14年的PCB制造经验,在国内外拥有超过200,000家客户,每天有超过8,000个PCB原型和小批量PCB生产的在线订单。年生产能力为200, 000平方米。对于各种1层,2层或多层PCB,现在还以非常低的成本提供SMT和STENCILS服务。JLC是一家规模大、设备精良、管理严格、质量上乘的专业PCB制造商。

我们这边的特别优惠:-)

1-4 层 PCB 2 美元,注册可获得 18 美元新用户优惠券:JLCPCB优惠券代码:- JLCPCBcom

我是如何制作 Gerber 文件的:

EASYEDA是一款免费且易于使用的威廉希尔官方网站 设计、威廉希尔官方网站 模拟器和 pcb 设计,可在您的网络浏览器中运行。

第 5 步:安装 Arduino 和电机驱动器

 
 
 
 
pYYBAGNsUnyAdw6OAACRwCaV30c719.jpg
 
1 / 5
 

7 天后,我从JLCPCB获得了 10 块高质量 PCB 然后我将所有的头针安装到里面并焊接起来。

~ 现在是时候将 Arduino nano 与 PCB 一起安装,并在组件和 PCB 之间建立所有必要的连接。

〜首先我们将在电机驱动器和Arduino之间建立连接。

带有 Arduino 引脚的电机驱动器引脚:

IN1 至 D5

IN2 至 D4

IN3 至 D3

IN4 到 D2

enA 到 D6

enB 到 D7

〜所以我们需要做的就是电机驱动器引脚......

第 6 步:安装传感器、伺服等...

 
 
 
 
poYBAGNsUn6ACkD4AAB1WXIdaTg472.jpg
 
1 / 4
 

在这部分中,我们将需要超声波传感器、其支架、伺服电机...

〜首先我们将伺服与底盘粘在一起。

~ 然后我们将使用超声波传感器及其支架。

~ 然后我们将超声波传感器放入支架中。

~ 之后,我们将安装在伺服系统中。如图所示...

第 7 步:连接伺服、超声波传感器……

 
 
 
 
poYBAGNsUoGAChySAADg7QccjXs905.jpg
 
1 / 3
 

所以我们将伺服,超声波传感器与arduino连接起来。

〜将伺服连接到PCB中可用的伺服引脚。

~ 只需连接超声波传感器引脚,如下所示:

触发到 D10

回声到 D11

接地到接地

VCC 至 +5V

这就是所有的连接。非常容易和简单。

第 8 步:是时候上传草图了。

 
 
 
 
pYYBAGNsUoOAEhqzAADIMEjXqUI111.jpg
 
1 / 2
 

~ 在上传草图之前,不要忘记从 PCB 上拆下伺服线和超声波传感器的线。

~ 然后将 Arduino nano 的线连接到您的电脑中。

~ 然后打开 Arduino IDE 并将代码上传到它。

/*Human folling robot using Arduino nano.
* code created by: DIY Burner
*NOTE : Please don't forget to include the library "Servo.h".
*For any query contact me on Instagram. (id: diy.burner)
*code version: 1.0.0
*/

#include 
const int trigPin = 10 ; //Servo trig pin to D10
const int echoPin = 11; // Servo echo pin to D11
const int in1 = 5; // Motor driver pin
const int in2 = 4;
const int in3 = 3;
const int in4 = 2;
const int enA = 6;
const int enB = 7;
#define motorArpm 170 // Default speed for "enA". you can change this speed from 0 to 300
#define motorBrpm 170 // Default speed for "enB". you can change this speed from 0 to 300
Servo servo_motor; //Servo
int pos =0;
void setup(){
Serial.begin(9600);
servo_motor.attach(8); //Servo signal pin to D8
{
for(pos = 90; pos <= 180; pos += 1){
servo_motor.write(pos);
delay(15);
} for(pos = 180; pos >= 0; pos-= 1) {
servo_motor.write(pos);
delay(15);
}for(pos = 0; pos<=90; pos += 1) {
servo_motor.write(pos);
delay(15);
}
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
pinMode (in3, OUTPUT);
pinMode (in4, OUTPUT);
pinMode (enA, OUTPUT);
pinMode (enB, OUTPUT);
}
}
long duration;
int distance;
void loop(){
digitalWrite(trigPin , HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin , LOW);
duration = pulseIn(echoPin , HIGH);
distance = (duration/2) / 28.5;
if(distance < 5) // It will go Backward if distance is less than 5.
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, motorArpm);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, motorBrpm);
}
if(distance >40) // It will Stop if distance is More than 40.
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enA, 0);
analogWrite(enB, 0);
}
if(distance > 10 && distance < 20){ // to turn Forward
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, motorArpm);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, motorBrpm);
}

if(distance > 20 && distance < 30)//// to turn left
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 150);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 160);
}
if(distance > 30 && distance <40 ) //// to turn Right
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, motorArpm);
}

~ 或从 Google DRIVE 下载代码:下载代码

第 9 步:一切就绪,现在是测试它的时候了。

 
 
 
 
poYBAGNsUoaATp_aAACERl-dgbI120.jpg
 
1 / 3
 

不要忘记连接电池座并将支架的电线连接到电机驱动器和 arduino nano。

观看我们的 YouTube 视频以查看其测试视频。立即观看!

第 10 步:我们现在完成了

我们现在完成了。我希望您喜欢我的项目,如果您有任何疑问,请在此处留下您的评论,我一定会为您提供帮助,或者如果您对任何新类型的项目有任何想法,请在此处发表评论,我一定会成功的。

我会不断更新这个教程。

感谢观看项目,我希望你喜欢这个项目,如果你喜欢,请关注我,我会继续发布很棒的新项目。另外,别忘了订阅我的 YouTube 频道。(YouTube:DIY 燃烧器)

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.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:'如何制作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.obk20.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);