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

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

3天内不再提示

如何构建一个基于arduino的战斗数据记录器

454398 来源:网络整理 作者:佚名 2019-11-07 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:工具和零件

零件:

Ublox NEO 6米GPS模块:ebay/amazon

Micro SD卡模块:ebay/amazon

Micro SD卡(高速或无需容量):amazon

Arduino pro mini:ebay/amazon

FTDI编程器和相应的电缆:ebay/amazon

Perfboard:ebay/amazon

连接线:ebay/amazon

Header引脚:ebay/amazon

整流二极管:ebay/amazon

2个1K欧姆电阻:ebay/amazon

1500微米纸板

工具:

烙铁和焊料

热胶枪

笔记本电脑或计算机

万用表(并非严格必要,但有很大帮助)

伸出援助之手(同样没有必要,但有帮助)

工艺刀

可选:

物品用于原型制作不是必需的但是非常有帮助

面包板

Arduino Uno

跳线

第2步:理论和原理图

设备的大脑是Arduino pro mini,它由RC车辆(在我的情况下是飞机)Li-Po电池平衡端口供电。我有一个2s电池的设置,但这可以很容易地改变,以适应其他电池尺寸。

这是不完整的,我将在完成控制面读取后更新此说明

Servo1将是我的飞机电动飞机,而伺服2将是我的飞行控制器伺服输出。

GPS模块正在以NMEA字符串的形式从GPS卫星接收数据。这些字符串包含位置信息,但也包含确切的时间,速度,航向,高度和许多其他有用的数据。接收到字符串后,将使用TinyGPS代码库提取对该项目有用的信息。

该数据以及电池电压和elevon位置将以一定速率写入SD卡。 1Hz此数据以CSV(逗号分隔值)格式编写,并将使用谷歌地图解释以绘制飞行路径。

步骤3:原型设计

注意:上面没有显示GPS模块的连接。 GPS的接线方式如下:

GND到Arduino地

VCC到Arduino 5V

RX至Arduino数字引脚3

TX至Arduino数字引脚2

为了测试所有组件是否正常运行,最好先将所有组件放在面包板上,因为您不希望只有在将所有组件放在一起后才能找到有缺陷的部件。需要的附加代码库是TinyGPS库,链接可以在下面找到。

微型gps

下面的电压测试器代码只测试电压测量电路。需要更改调整值以使arduino读取正确的电压。

文件代码用于测试SD卡模块和micro SD卡,以确保两者均能正确读写。

使用gpsTest代码来确保gps接收到正确的数据并且配置正确。此代码将输出您的纬度,经度和其他实时数据。

如果所有这些部分正确地协同工作,您可以继续下一步。

第4步:焊接和接线

在进行任何焊接或布线之前,将所有组件布置在一块纸板上,并将其切割到组件的外部尺寸。这将成为您所有部件的安装板。

通过将穿孔板切割到最小尺寸来制作电路板,因为重量和尺寸是优先考虑的。将割台销钉沿切好的穿孔板的边缘焊接到位,这是电池平衡端口以及将来控制面伺服和飞行控制器将连接的位置。根据电路图将2个1k Ohm电阻器和整流二极管焊接到位。

根据电路图将micro SD卡模块焊接到arduino的引脚上,以使用AWG 24导线进行连接。/p》

根据电路图和更多相同类型的电线再次在穿孔板和arduino之间建立连接。

注意:GPS是静电敏感设备焊接时要小心,连接时不要让任何电流穿过任何电线

使用长度约3-4cm(1)将GPS模块引脚焊接到arduino上的相应引脚-1.5英寸)的电线,这会使GPS模块有足够的松弛空间,可以折叠到后卡的另一侧。

检查并仔细检查所有连接的连续性,以确保所有接线正确

使用热胶将SD卡模块,Arduino Pro Mini装上,然后在面板的一侧自定义穿孔板另一方面是纸板和GPS模块和天线

一旦你将所有部件正确连接并安装到纸板上,就可以继续使用代码了。

第5步:代码

这是在最终设备上运行的代码。当此代码运行时,一旦GPS修复了3个以上的卫星,GPS模块上的LED将开始闪烁。一旦arduino启动,arduino板上的LED将闪烁一次,表明CSV文件已成功创建,然后当成功写入micro SD卡时,它将与GPS LED一起闪烁。如果无法初始化Micro SD卡的LED指示灯,并且很可能是您的接线或Micro SD卡有问题。

此代码将在每次运行程序时创建一个新的CSV文件。标记为“flightxx”,其中xx是介于00和99之间的数字,每次运行程序时都会增加。

要使电子表格中的当前时间字段正确,您需要将UTC(协调世界时)转换为正确的时区。对我来说,值是UTC +2.0,因为这是我所在的时区,但是可以通过更改“时区”浮点数在代码中进行更改。

步骤6:测试,测试,测试

现在你应该有一个工作系统,是时候测试它,确保一切都按预期运行。

一旦一切正常,您将在电子表格上获得一个输出,该输出似乎可以正确地进行任何细微调整。例如,我最初使用电缆扎带将设备安装在我的飞机底部,但经过一些调查,我发现这可以减少任何时候可以看到的GPS卫星数量减少约40%。

测试系统,确保一切正常,并在必要时对其进行完善。

步骤7:丰富数据

现在您已拥有一个可靠的系统,现在是时候弄清楚如何以更易读的方式显示数据。如果您想一次获得准确的速度,或者想要在执行某项操作时准确检查车辆的行为,则使用电子表格就可以了,但是如果您想在地图上绘制整个飞行或查看每个数据点,该电子表格就可以了

以一种更具可读性的方式在其中提供数据丰富功能

要以一种更具可读性的方式查看我们的数据,我们将使用google Earth pro,您可以单击此处进行下载。

现在,您必须将CSV文件转换为GPX文件,Google Earth可以使用GPS可视化工具更轻松地读取该文件。选择输出GPX,上传CSV文件并下载转换后的文件。然后在Google Earth中打开GPX文件,它会自动导入所有数据并将其绘制到一个不错的飞行路径中。这还包含其他信息,例如任何时间点的标题。

注意:我已从照片中删除了lat,长数据,因为我不想透露我的确切位置。

第8步:结论和可行的改进

总而言之,我很满意这个项目的结果。我喜欢我所有航班的数据。但是,我需要做一些事情。

最明显的是,我希望能够读取控制表面的确切位置。我有大部分硬件,但我需要在代码中启用它。仍然有一些技术难题需要克服。

我还想添加一个气压计来获取更准确的高度数据,因为当前gps高度数据似乎只不过是有根据的猜测而已。

我认为添加一个三轴加速度计会很酷,这样我就能确切地看到飞机在任何时候都能承受多大的力。

也许可以创建某种类型的外壳。目前暴露的部件和布线不是很优雅或坚固。

责任编辑:wv

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

    关注

    0

    文章

    55

    浏览量

    13179
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197431
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度解析DS1683:总耗时与事件记录器的卓越之选

    深度解析DS1683:总耗时与事件记录器的卓越之选 在电子设备的运行监测领域,准确记录设备的运行时间和事件次数至关重要。DS1683作为款集成式总耗时与事件记录器,凭借其独特的设计和
    的头像 发表于 03-24 15:45 123次阅读

    DS1682:集成式累计时间记录器的技术剖析与应用指南

    DS1682:集成式累计时间记录器的技术剖析与应用指南 在电子设备的运行监测与管理中,准确记录设备的运行时间和事件次数是项关键需求。DS1682作为款集成式累计时间
    的头像 发表于 03-24 15:25 141次阅读

    隐患无处遁形:云翎智能高精度定位工作记录构建电网巡检三维安全屏障

    电网巡检工作是保障电力系统安全稳定运行的关键环节,而传统巡检模式存在监管盲区、隐患识别滞后、作业规范性难以保障等问题。云翎智能高精度定位工作记录仪通过融合多重技术,构建覆盖空间、
    的头像 发表于 01-08 21:04 249次阅读
    隐患无处遁形:云翎智能高精度定位工作<b class='flag-5'>记录</b>仪<b class='flag-5'>构建</b>电网巡检三维安全屏障

    使用KickStart数据记录器应用轻松进行数据采集

    数据采集(DAQ)或数据记录(Data Logging)是从各种物理现象中收集和分析数据的过
    的头像 发表于 12-09 14:48 3107次阅读
    使用KickStart<b class='flag-5'>数据</b><b class='flag-5'>记录器</b>应用轻松进行<b class='flag-5'>数据</b>采集

    为进行检测温度的记录,可使用串口数据记录模块来实现

    为进行检测温度的记录,可使用串口数据记录模块来实现。 该数据记录模块是种串口设备,在使用时其工
    发表于 12-01 08:18

    温度循环测试后如何进行数据记录和分析?

    60068-2-14/GB/T 2423.22)和装置特性(如电压、谐波、暂降参数),形成结构化记录与多维度分析体系。以下是具体实施方法: 数据记录
    的头像 发表于 09-26 14:22 659次阅读

    医院专用数据记录仪产品有哪些?有何推荐?

    简单介绍下: 首先,医院专用数据记录仪产品的应用具有以下优势: 1、提高医疗服务效率:配备专用数据记录仪有助于整合医生和保安的工作过程和信
    发表于 08-25 16:02

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3927次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另<b class='flag-5'>一个</b><b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    数据驱动的起重装备智能研发设计平台构建与应用

    数据驱动的起重装备智能研发设计平台构建与应用分析 、平台构建的核心逻辑 数据驱动的起重装备智能研发设计平台以
    的头像 发表于 07-29 09:38 634次阅读

    CCLink IE转ModbusTCP网关配置无纸记录器(上篇)

    本研究案例采用CCLink IE转ModbusTCP网关技术,实现了将记录数据传输至三菱PLCPLC的过程。具体操作步骤如下所述。 在确保无纸记录仪与PT100传感传感
    的头像 发表于 07-18 18:03 875次阅读
    CCLink IE转ModbusTCP网关配置无纸<b class='flag-5'>记录器</b>(上篇)

    FeRAM在汽车事件数据记录器中的应用

    在安全气囊的电子控制单元(ECU)中的事件数据记录器(EDR)中,FeRAM也得到了应用。通过使用 FeRAM,可以满足 EDR 的规定,确保在事故发生时,能够记录并保存详细的数据,有
    的头像 发表于 06-18 09:47 1989次阅读
    FeRAM在汽车事件<b class='flag-5'>数据</b><b class='flag-5'>记录器</b>中的应用

    Analog Devices / Maxim Integrated MAX42500 SoC电源系统监控数据手册

    %。其中两输入具有单独的远程接地检测输入,并通过集成I^2^C接口支持动态电压调节(DVS)。此外,MAX42500还包括可编程、灵活的电源序列记录器(FPSR)。该
    的头像 发表于 06-12 10:33 922次阅读
    Analog Devices / Maxim Integrated MAX42500 SoC电源系统监控<b class='flag-5'>器</b><b class='flag-5'>数据</b>手册

    如何为树莓派 FPV 战斗无人机构建自动驾驶仪的“眼睛”!

    学习如何为FPV战斗无人机构建视频模块,该模块能够从模拟FPV摄像机捕获视频流,利用这些视频流执行计算机视觉任务,并将图像传输到飞行控制
    的头像 发表于 06-08 08:33 1600次阅读
    如何为树莓派 FPV <b class='flag-5'>战斗</b>无人机<b class='flag-5'>构建</b>自动驾驶仪的“眼睛”!

    压力数据记录仪功能有哪些?点开看看就知道

    在工业、科研等众多领域,压力数据的精确记录和分析至关重要。想要测量压力数据,必然需要用到专业的工具,那就是压力数据记录仪。那么,压力
    发表于 05-19 16:39

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    I/O口转台和初始化串口等操作。2、loop()setup()函数中的程序执行完毕后,Arduino会接着执行loop()函数中的程序。而loop()函数是死循环,其中的程序会不断地重复运行。通常在loop()函数中完成程序
    发表于 05-13 09:28