×

远足追踪器开源分享

消耗积分:0 | 格式:zip | 大小:1.18 MB | 2023-07-03

杨帆

分享资料个

描述

什么是远足追踪器?

Hiking Tracker是一款可以感知徒步旅行者在徒步过程中周围环境变化的设备。

这个想法是观察温度、压力、湿度、高度、位置、方向等的变化。它提供了一些关于徒步旅行的有趣见解。

与低地相比,在寒冷、干燥、低密度空气的山区,许多人发现呼吸困难。有些人会出现皮肤干燥刺激。该设备让对徒步旅行感兴趣的人了解他们的极限。还有去高海拔地方的乐趣。能够知道海拔是一件有趣的事情!

不仅是山脉,还探索沼泽、沙漠、森林——每一个都有其独特的环境特征,能够在旅途中监测环境是了解自然的更好方式。

 
poYBAGOYPaWAEvpJAAFhn0NFlv0826.jpg
堆叠层
 

 

第 1 步:硬件,这是为了什么?

这个项目有很多感应

附件屏蔽板带有一些板载 I2C 设备:

  • 用于感测环境温度的 LM 75B 温度传感器
  • ADXL345 3 轴加速度计,用于感应倾斜和重力
  • DS3231 用于感应时间的高精度 RTC
  • HMC5883 3 轴磁传感器,用于感应罗盘航向
  • AM2320 湿度传感器,用于感测空气的 % RH
  • BMP180压力传感器,用于感测大气压力和高度
  • MTK3339 GPS 传感器,用于感应位置和步行距离

在 Arduino Uno 上:

  • 3.9k + 22k 分压器,用于感应 4节 AA电池电压
  • 1306 OLED 用于查看数据
  • 警报蜂鸣器
  • 此项目不需要 RGB LED
  • XBee 接口不使用,但 Arduino D2、D3、D9、D10 可以从该接口中取出用于其他项目,D2 连接到复位,允许从代码复位 Arduino!
  • 未使用 5 向操纵杆
  • 101锅没用

第 2 步:修改和连接硬件

对 Arduino Uno 进行了少量修改。它安装在带有螺丝支架和热胶的 4 AA 电池座上。

 
 
 
 
pYYBAGOYPa2ALzStAAFxk_wz_V0394.jpg
 
1 / 2Arduino 位于电池座顶部
 

4 AA 和 CR1220(用于 RTC)安装在电池座上。

 
 
 
 
pYYBAGOYPbGAD6maAAGG4ee1a7A974.jpg
 
1 / 24 AA 带支架
 

电池座和 Arduino Uno 板之间有一个空间,可以放置压力、湿度、磁性和 GPS 传感器。

 
 
 
 
pYYBAGOYPbeAT1k9AAEHnPz773A410.jpg
 
1 / 2传感器空间
 

I2C 传感器焊接在一块预制板上并放置在该空间中

 
 
 
 
poYBAGOYPbmAbeWeAAEfQ-Ei8Os737.jpg
 
1 / 2压力、湿度、磁性传感器在 I2C 通道上连接在一起
 

这些传感器从底部连接到 Arduino Uno:

 
poYBAGOYPb2AZZRxAADyJ9K8ymE983.jpg
传感器的 I2C 连接和电源(将被焊接)
 

增加了一个分压器来测量 4 节 AA 电池的电池电压。

 
pYYBAGOYPcCAbaY5AAFRzvWQtJU481.jpg
分压器焊接在电源桶连接器上
 

AA 电池组电压检测线连接到 ADC A1:

 
poYBAGOYPcWACCnlAADqWpUdPdg639.jpg
分压器到 ADC A1
 

屏蔽的操纵杆通过引脚 A5 映射到 ACD 引脚 A1。这就是为什么要拆焊并移除操纵杆的原因。

 
poYBAGOYPdCAWqv7AAFWS_VGaTw492.jpg
5 向操纵杆已移除
 

通过将 Accessory Shield 上的一些焊盘(示意图见参考)与焊桥 D2(用于软复位)连接,Arduino 的 D3、D9、D10 引脚可在 Xbee 接口上使用。

 
 
 
 
pYYBAGOYPdiAV78CAAES4-uDu3k913.jpg
 
1 / 2D9、D10 引脚分接焊桥
 

组件堆栈如下:

 
poYBAGOYPaWAEvpJAAFhn0NFlv0826.jpg
把它们放在一起!
 
  • 顶层:Arduino 上的附件屏蔽
  • 中间层:其他传感器和 GPS 将位于 Uno 和电池盒之间
  • 底层:4 AA 电池座,带电池

连接如下所示:

 
pYYBAGOYPeqAUIUmAAQbyrd2KGA855.png
互连
 

第 3 步:对设备进行编程

Arduino IDEBuild 1.8.5用于对设备进行编程。首先使用库管理器包含或下载以下所有库。

 
poYBAGOYPfGAV8SXAADRs9nHM7g822.png
添加库
 

通过在库管理器的搜索框中输入传感器的名称,将出现相应的库。

 
poYBAGOYPfOAMwNpAAEWVn1LPUw841.png
单击安装以添加新库
 

一些 Accessory Shield 库(请参阅参考资料)是通过zip.file选项添加的

 
pYYBAGOYPf-AIIowAADGEeCzmjE438.png
使用库 zip 手动添加库
 

添加必要的库后,会检查每个传感器的示例代码以找出相关传感器的 API。

接下来,所有库头文件都包含在一个空的 Arduino 草图中。

头文件列表

math.h,inttypes.h,Wire.h,lm75.h,ADXL345.h,ChainableLED.h,U8glib.h,ds3231.h,Adafruit_Sensor.h,Adafruit_AM2320.h,Adafruit_BMP085_U.h,Adafruit_HMC5883_U.h,Adafruit_GPS.h

经过多次编辑、编译和调试(包括松散的连接,我发现 BMP180 可能由于 I2C 引脚的泄漏电源而在没有 Vcc 的情况下工作)并上传 - 最后代码准备好了。

注意事项

  • 高度计算基于气压降,仅适用于正常天气条件。
 
poYBAGOYPgaAMYsAAABmMtZF6CU448.png
气压与海拔高度
 
  • 指南针代码未在软件中进行倾斜补偿,设备必须保持在水平面上。有一个固定的罗盘圆,其中还有另一个可变半径圆。当设备倾斜时,内圈会增加。当它处于水平位置时(即加速度的 x 和 y 分量几乎为 0),内圆将减小到一个点。这是罗盘航向更准确的时候。
  • 指南针指针的偏角取决于地球磁场的位置和变化。这可能会受到太阳风暴的影响。如果不包括偏角,罗盘航向将偏离几度。

查找您所在地区的磁偏角:http: //www.magnetic-declination.com

  • 指南针航向容易受到附近磁性物体的影响,例如山上存在强磁性矿物。
  • 器件的最低工作电压约为 4.5 伏。此时应更换 AA 电池。
  • 时间和日期是通过代码编程的,如果需要时间来更换纽扣电池,必须拔下并插上电源。代码中带有新时间的新程序上传将更改时间。
  • 在开发期间 GPS 模块不可用。因此,演示坐标放置在经纬度中。如果有人希望复制此项目,则需要包含 GPS 库和相关代码。
  • 加速度计和磁力计的 XY 平面以 PCB 上的布局为准。代码需要进行相应的调整。
  • 加速度计读数精度容易受到振动。建议在静止状态下使用设备。

改进范围

可以从固件方面对更多功能进行改进:

  • 在 EEPROM 上定期记录参数
  • 达到高度/位置里程碑时的蜂鸣器警报声
  • 喝水提醒
  • 休息提醒
  • 低电量报警
  • 低温、湿度警报
  • 用于倾斜补偿的指南针软件校准(大量三角函数)
  • 通过 Gateway 应用程序使用 GPS 和 IoT 连接自动获取偏角

至于硬件部分的改进:

  • 用于设置时间、偏角等的用户输入开关。
  • 设备的定制 3D 外壳
  • 使用可充电锂电池
  • 单板紧凑型 PCB 设计,更便携

结论

Travel & Hiking 很酷,当你可以检查周围环境的变化时,它会让事情变得更有趣。特别是在徒步旅行时,在数小时内检查海拔、湿度、压力和温度的变化。这个设备让你知道你在什么高度感到高原反应,什么湿度水平让你的皮肤干燥——诸如此类。尽管在电路布局和代码方面都有改进的空间来处理这些警告,但在荒野中拥有这样的小工具仍然很酷!

 


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

评论(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.lene-v.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:'远足追踪器开源分享',//标题 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.lene-v.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);