这是您可能遇到的问题如果你驾驶四轴飞行器或其他自主飞行器,特别是使用FPV技术:你正在飞行你的无人机,可能是在障碍物,地形,过去的树木和你的无人机坠毁。
如果你不记得四轴飞行器的确切位置怎么办?如果您使用FPV护目镜飞行,这很容易让您无法跟踪无人机相对于您的位置飞行的位置。你的无人机可能会在高高的草丛中或在树上或灌木丛中着陆。考虑到无人机可能是昂贵的投资,所有这些情况都令人失望。
因此,在这个项目中,我们将构建一个可连接到四轴飞行器的LTE连接GPS跟踪器。使用此工具,您可以直接从智能手机中找到坠毁或丢失的无人机。此外,由于电池电源是遥控飞机上的一种有价值的商品,我们将构建系统,以便可以从发射器切换开关。这样,GPS定位器在您需要找到丢失的飞机之前不会使用任何电源。
安装在无人机上的GPS追踪器。
使用Particle.io控制台跟踪无人机。
必需硬件
粒子硼LTE
Adafruit终极GPS FeatherWing
UBEC降压转换器
接收器控制开关
M2尼龙支架套件
关于Adafruit Ultimate GPS FeatherWing
该项目的核心是两个开发板,Particle Boron LTE和Adafruit Ultimate GPS FeatherWing。粒子硼在不同的文章中有更详细的介绍,但在我们开始构建我们的无人机GPS定位器之前,了解Ultimate GPS FeatherWing的工作方式将非常有用。
Adafruit Ultimate GPS FeatherWing
GPS FeatherWing的第一个主要功能部分是GPS模块本身,它是电路板一端的方形部分。这是一款MTK3339 GPS接收器,一种高灵敏度芯片组,能够跟踪多达22颗GPS卫星并每秒更新其位置十次。
此外,这对我们的项目非常重要,该装置在跟踪时消耗的电流非常小,仅为20mA。这很重要,因为电池的电能可能在无人机上供不应求。
电路板的第二个主要部分是实时时钟( RTC)系统。我们不会将RTC用于此项目,但它对于数据记录应用程序来说是一个非常有用的工具。 RTC由纽扣电池供电,可以选择插入电路板与GPS模块相对的支架上。
最后,电路板上有几个引脚断开,可以通电交付给董事会并允许粒子硼从GPS模块获取信息。此外,为此项目选择FeatherWing的原因是因为安装孔与粒子硼上的安装孔非常匹配。
GPS模块安装孔。
为系统供电
《在我们开始构建无人机GPS追踪器之前要了解的第二个概念是如何控制用于运行飞机的电池电量以为粒子硼和终极GPS羽毛提供动力。
第一个任务是打开和关闭GPS单元,以便系统在需要之前不消耗任何电池电量。为此,我们将使用接收器控制的开关。该附件连接到无人机上的无线电接收器,可以使用接收器的AUX输出切换为ON和OFF。这种配件通常用于打开和关闭LED灯,但是当我们需要定位无人机时,我们将使用它来激活GPS跟踪器。
Turnigy接收器控制器ON/OFF开关
其次,典型的四轴飞行器使用的电池电压介于7.4V和22.2V之间。这对于粒子硼来说太高了,粒子硼通过USB端口接受5V输入(然后通过板载线性稳压器将其调节到3.3V)。
因此,该项目电源系统的第二部分是用于从电池输出5V的DC/DC降压转换器。这个部件称为通用电池消除电路(UBEC),常用于遥控飞机和四轴飞行器,用于运行5V配件,如LED灯,关闭电池。对于这个项目,它将作为GPS系统的5V电源。
通用电池消除器电路(UBEC)。
构建无人机GPS追踪器
现在我们已经了解了无人机GPS追踪器的主要部分,我们可以开始构建系统。我们将首先将电源系统拼接在一起,然后将Ultimate GPS FeatherWing连接到粒子硼。
下面的接线图显示了设计中每个部件的粗略位置。关于GPS模块和Boron之间的连接的更多细节将在稍后提供。
接线图。
将接收器控制的开关连接到电池
第一步是将接收器控制的开关连接到四轴飞行器的电池。根据飞机的设计,您可能已经配备了配电板或分配器,用于将电池连接到无人机上的多个系统。
接收器控制的开关有两根输入线和一根三根-wire header。
接收器控制开关。
连接电池的电线比连接无线电接收器的标题电线厚。首先,将其中一根较粗的电线连接到电池的正极(红色)电线上。现在我们将其他粗线断开。
将开关连接到电池。
接下来,三线制标题将连接到无线电接收器。大多数无线电接收器都有AUX连接,有时只是编号最高的连接。
您需要观察接收器控制开关和接收器本身之间连接的正确极性。来自开关的黑线接地,黄线用于发出信号。
接收器控制的开关和接收器之间的连接。
将UBEC添加到电路
使用开关,添加到设计的下一部分是UBEC。现在电力系统有两个自由连接,一个来自接收器控制的开关,另一个来自电池的负极端子。 UBEC每侧都有一组电线。没有插头的一侧连接到电池和开关。只需将黑线连接到电池的负极,红线连接到接收器控制的开关。
将UBEC添加到电路中。
将粒子硼连接到Adafruit Ultimate GPS FeatherWing
现在我们已经为我们的装配完成了电力输送系统无人机GPS跟踪器,我们将略微切换齿轮并通过将粒子硼连接到GPS羽毛组装系统的业务端。
第一步是将标题连接到Adafruit Ultimate GPS FeatherWing,以便我们将能够插入标题电缆。 GPS FeatherWing包括一组正确长度的雄性分离头。您将在GPS FeatherWing上注意到的一个细节是,电路板两侧有两排引脚。我们将使用该项目的外部引脚集。只需将标头焊接到电路板上,就像过去使用其他分线板一样。
将标题电缆插入GPS FeatherWing。
焊接标头引脚。
在接头到位后,我们可以使用跨接电缆将两块板连接在一起。因为我们将组件安装到无人机上,自由空间有限,我们将使用6英寸跨接电缆。在下一节中,我们将GPS跟踪器组件打包成一个适合无人机的整洁小捆。
粒子硼与GPS羽毛之间的连接。
连接
粒子硼终极GPS羽毛
3.3 V3.3 V
GNDGND
TX(D9)RX
RX(D10)TX
组装GPS追踪器
现在我们有了他将Particle Boron和Ultimate GPS FeatherWing连接在一起,我们将机械地将两块板连接在一起。
为此项目选择FeatherWing的一个原因是因为它与粒子硼共享相同的安装孔间距。我们将使用尼龙支架将两块板连接在一起。
首先,将20毫米长的支架连接到粒子硼上的四个安装孔中的每一个。
连接20mm长的支架。
然后,将Ultimate GPS FeatherWing安装到支架上。当您将GPS板放在支架上时,您应该能够将所有电线都放在电路板之间以创建一个紧凑的模块。
将终极GPS羽毛装载到支架上。
将电路板之间的所有电线连接起来,以创建一个紧凑的模块。
连接粒子硼的电源
此时我们有一种机制可以从无人机电池上提供5V电源,可以通过无线电发射器打开和关闭。下一步是将电源连接到粒子硼。 Boron采用功能强大的微控制器,可与GPS模块通信并解释数据。 Boron还有一个板载LTE蜂窝调制解调器,包括和天线,使无人机GPS跟踪器即使没有WiFi也能将有关其位置的信息发送到手机。
组装项目的下一步是连接粒子硼到UBEC的力量。但是,我们无法将UBEC直接连接到Boron上的电源输入引脚,因为这些引脚接受3.3V,而不是5V。因此,我们将UBEC连接到Boron上的USB端口。 USB端口为线性稳压器供电,将5V电源从UBEC转换为3.3V。
因此,要使UBEC连接到粒子硼,我们首先需要组装USB插头。插头有三个部分:连接器本身带有背面的焊针,另外还有两半用于连接器的塑料护罩。在这种情况下,我们只需要连接USB插头的电源;我们可以忽略数据引脚。 USB连接器上总共有五个引脚,插头一侧有两个引脚,另一侧有三个引脚。 5V和GND引脚在下图中突出显示。
USB插头。
要组装连接器,首先将黑线从UBEC焊接到USB插头上的GND引脚,从UBEC到USB插头上的+ 5V引脚的红线。
将黑色从UBEC连接到GND,红色从UBEC连接到+ 5V。
将电线焊接到插头上后,将塑料外壳的两半卡在插头周围。
最后,带电池插入无人机的电源系统,发射器上的AUX开关设置为打开,您可以通过将USB连接器插入粒子硼来测试系统。如果系统正常工作,您应该看到两个不同的LED亮起。粒子硼上有一个LED,根据电路板的状态,它会以不同的颜色发光。 Ultimate GPS FeatherWing的一侧还有一个红色LED。要测试电路板并确保两者都通电,只需查看这两个LED。
打开粒子硼。
为终极GPS FeatherWing供电。
闪存固件
现在我们已经完成了为这个项目构建的硬件,最后阶段是将固件刷到粒子硼将允许系统运行。在将固件刷新到Boron之前,您首先需要设置一个粒子账户(如果您还没有),并申请董事会。这些步骤在前一篇文章中有详细介绍。
完成设置粒子帐户并声明电路板后,导航到粒子IDE。您可以将以下代码的代码复制/粘贴到IDE中。
// Drone GPS Tracker with LTE Connectivity
// Author: Scott Hatfield (aka Toglefritz)
// Published on Maker Pro
/*
DESCRIPTION:
This sketch for the Particle Boron runs a GPS tracker intended for use
on a quadcopter or other similar drone. The Boron has a cellular LTE
connection allowing it to publish GPS coordinates, obtained from a
GPS unit, to the Particle Cloud.
LICENSE:
This code is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
《 https://creativecommons.org/licenses/by-nc-sa/4.0/ 》
PARTS:
* Particle Boron: 《 https://www.sparkfun.com/products/15069 》
* Adafruit Ultimate GPS FeatherWing: 《 https://www.adafruit.com/product/3133 》
* UBEC Step-Down Converter: 《 https://www.adafruit.com/product/1385 》
HARDWARE CONNECTIONS:
* Boron GND --》 GPS GND
* Boron 3.3V --》 GPS 3.3V
* Boron D10 --》 GPS TX
* Boron D9 --》 GPS RX
*/
// Add the Adafruit GPS library
#include
// Name the Serial port
#define GPSSerial Serial1
// Connect to the GPS on the hardware port
Adafruit_GPS GPS(&GPSSerial);
uint32_t timer = millis();
void setup() {
// Publish a little welcome message
Particle.publish(“Drone GPS tracker online”);
// 9600 NMEA is the default baud rate for Adafruit MTK GPS‘s- some use 4800
GPS.begin(9600);
// Turn on RMC (recommended minimum) and GGA (fix data) including altitude
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
// Set the update rate
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
// Request updates on antenna status, comment out to keep quiet
GPS.sendCommand(PGCMD_ANTENNA);
delay(1000);
}
void loop()
{
// Read data from the GPS
char c = GPS.read();
// If a sentence is received, we can check the checksum, parse it.。.
if (GPS.newNMEAreceived()) {
if (!GPS.parse(GPS.lastNMEA())) // This also sets the newNMEAreceived() flag to false
return; // we can fail to parse a sentence in which case we should just wait for another
}
// if millis() or timer wraps around, we’ll just reset it
if (timer 》 millis()) timer = millis();
// Approximately every one minute or so, print out the current stats
// Since the drone will not be moving, we do not need to update its location
// too often
// Note that this statement also causes the first reading to take place
// one minute after the Boron powers on, which gives the GPS sensor time
// to obtain a fix
if (millis() - timer 》 60000) {
timer = millis(); // Reset the timer
// Check if the GPS has a fix
if (GPS.fix) {
Particle.publish(“Location: ”, String(GPS.latitudeDegrees) + “, ” + String(GPS.longitudeDegrees)); // Publish the physical location of the drone
// Divide by 60 to convert minutes to degrees
}
else {
Particle.publish(“No GPS fix”);
}
}
}
代码相当简单,这要归功于Adafruit卓越的GPS库,它可以解决大部分繁重的工作问题。 GPS模块并解释模块返回的GPS数据。
代码首先配置一些GPS功能选项,包括波特率,GPS将获得的信息以及GPS单元的速率将更新其位置。大部分艰苦工作是通过一行 GPS.parse(GPS.lastNMEA()) 完成的。 GPS传感器向粒子硼提供NMEA语句,如下所示:
$ GPBWC,220516,5130.02,N,00046.34,W,213.8,T,218.0,M, 0004.6,N,EGLM * 11
Adafruit GPS库最有用的部分之一是解析这些信息的功能的可用性,即让人类可读来自GPS传感器传送的原始数据的信息。一旦解析了信息,Boron将使用纬度和经度将GPS位置每分钟发布一次到粒子云。
使用GPS追踪器
在无人机开启的情况下(电池连接到供电系统),您可以激活粒子硼 - 通过将发射器上的AUX开关拨到ON,可以为GPS跟踪器供电。然后,打开粒子控制台。您应该在线看到粒子硼。
当您选择Boron时,您将开始在粒子控制台中接收事件。这些事件将被称为位置,事件中的数据将是无人机的GPS坐标,单位为度。
打开粒子控制台。
通过这些信息,您可以通过比较GPS追踪器的位置和手机的位置来找到丢失的无人机。在粒子控制台中,在GPS坐标上方,有一个方便的按钮可将坐标复制到剪贴板中。
将坐标复制到剪贴板。
然后,您可以将数据粘贴到Google地图中,以查看丢失的无人机的位置在地图上。您甚至可以像往常一样使用Google地图导航,从您的位置到无人机的步行,驾驶或骑车路线。
使用Google地图导航。
-
gps
+关注
关注
22文章
2882浏览量
166028 -
无人机
+关注
关注
228文章
10336浏览量
179589
发布评论请先 登录
相关推荐
评论