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

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

3天内不再提示

如何使用FONA 808分支板和Arduino来进行出色的跟踪项目

454398 来源:网络整理 作者:佚名 2019-11-08 17:47 次阅读

步骤1:这是工作原理

GPS卫星每天在非常精确的轨道上绕地球两次并将信号信息传输到地球。 GPS接收器获取此信息,并使用三边测量法计算用户的确切位置。本质上,GPS接收器将卫星发送信号的时间与接收信号的时间进行比较。时间差告诉GPS接收器卫星有多远。现在,通过再测量几颗卫星的距离,接收器就可以确定用户的位置并将其显示在设备的电子地图上。

GPS接收器必须锁定至少3颗卫星的信号才能计算二维位置(经度和纬度)并跟踪运动。在看到四个或更多卫星的情况下,接收器可以确定用户的3-D位置(纬度,经度和高度)。一旦确定了用户的位置,GPS单元就可以计算其他信息,例如速度,方位,轨道,行进距离,到目的地的距离,日出和日落时间等等。

GPS卫星系统:

* *构成GPS空间部分的24颗卫星在环绕我们12,000英里的地球上运行。它们不断移动,在不到24小时的时间内完成了两个完整的轨道。这些卫星以每小时约7,000英里的速度飞行。

* GPS卫星由太阳能提供动力。他们在船上配有备用电池,可以在没有太阳能的情况下在日食发生时保持运行。每个卫星上的小型火箭助推器都能使它们沿正确的路径飞行。

什么是信号?

GPS卫星发送两个称为L1和L2的低功率无线电信号。民用GPS在UHF频带中使用1575.42 MHz的L1频率。信号通过视线传播,这意味着它们将穿过云层,玻璃和塑料,但不会穿过大多数固体物体,例如建筑物和山脉。GPS信号包含3个不同的信息位-伪随机码,星历表数据和年历数据。伪随机码只是一个I.D.标识哪个卫星正在发送信息的代码。每个卫星不断发送的星历数据包含有关卫星状态(健康或不健康),当前日期和时间的重要信息。信号的这一部分对于确定位置至关重要。年历数据会告诉GPS接收器一天中任何时候都应将每颗GPS卫星放在哪里。每颗卫星发送的年历数据均显示该卫星以及系统中其他所有卫星的轨道信息。

步骤2:硬件

链接到部件:

Arduino Uno(克隆正常)

Adafruit FONA 808分支板

跳线

面包板

SMA或uFl天线(取决于您的板版本,一切工作都很好)

LED(绿色/红色)

330欧姆电阻器

压电蜂鸣器

3.7V锂电池

2G Sim (重要)

工具:

FONA的烙铁

松香芯

板上,您将需要一组附加组件:GSM天线,以及GPS天线。您还需要一个工作的GPRS SIM卡,上面带有一些数据信用,需要将其放置在FONA 808分支板上。您还需要一个3.7V的LiPo电池为分支板供电。您可以得到1200 mAh的电池。

FONA有两种版本,一种是SMA版本,另一种是uFl版本。具有相同功能的唯一区别是它们的天线。但是对于今天的项目,我将使用SMA版本。

对于“警报”部分,您将需要一个简单的红色或绿色LED(330欧姆)电阻和压电蜂鸣器。

如果您想要附加版本,可以购买FONA 808,该模块可以堆叠在UNO的顶部,而无需进行任何布线,只需焊接接头即可固定并连接天线和SIM卡。然后上传代码。但是由于我没有该版本,所以我打算将其800版本用于今天的项目。

步骤3:Fona库

以下是FONA的库。如果要测试FONA,请

转到:

Arduino IDE》 File》 SketchBook》 Libraries》 Fona Lib 。.》 Fona Test

以下连接是不同的,并且已在代码中进行了编辑。

从电池电压到查询,GPS定位,呼叫有多种选项可供选择和短信。

第4步:组装

如果使用FONA 808屏蔽,只需将其插入即可。对于分线,需要少量布线。首先,将电源连接到实验板上:

将 5V 引脚从 Arduino 板上连接至红色电源线/面包板上的正极

GND 引脚到蓝色电源线/负极。

您可能必须将排针正确焊接到分支板上,或者可能没有适当的导电性。

焊接后,将FONA 808分支放在面包板上。

将 VIO 引脚连接到红色电源线

GND &键引脚连接到蓝色电源线。

然后,

将FONA的 RST 引脚连接到Arduino引脚 4 ,

FONA TX 至Arduino引脚 3

RX 到Arduino引脚 2

,还将3.7V LiPo电池,GPS天线和GSM天线连接到FONA 8 08屏蔽或突破。

还要将LED与330-1K欧姆电阻串联在面包板上。将其连接到Arduino板的引脚编号 6 ,并将另一端连接到地面。

这是完全组装的项目的外观(在上方查看图片)

第5步:Adafruit IO

使用相同的硬件并将其与Adafruit IO集成。我们将使用Adafruit IO在地图上实时显示项目的位置,并在围栏被破坏的情况下显示警报。

要使用Adafruit IO,您应该拥有一个Adafruit帐户a,您必须注册邀请名称,然后才能使用Adafruit IO。完成所有这些之后,可能需要一两个星期才能获得Adafruit IO。

步骤6:跟踪和警报

在此第一个项目中,我们将连续检查项目的位置,并查看如果超出了我们在草图中设置的给定距离。

如果是这样,我们将使LED闪烁,并使蜂鸣器发出声音。

我们首先为警报声明一些常量和变量:

// LED & Buzzer pins

const int ledPin = 6;

const int buzzerPin = 9; // Alarm

int counter = 0;

bool alarm = false;

然后,我们设置项目在不提高报警范围的情况下可以走的最大距离。报警。请注意,像这样的民用GPS的精度约为10米,因此我真的建议您设置一个优于20米左右的值:

const float maxDistance = 100;

两个变量将包含项目的初始位置:

float initialLatitude;

float initialLongitude;

默认情况下,我们将警报设置为false:

alarm = false;

在草图的setup()函数中,我们获得了GPS修复程序来设置项目的初始位置:

bool gpsFix = fona.getGPS(&latitude, &longitude, &speed_kph, &heading, &altitude);

initialLatitude = latitude; initialLongitude = longitude; In the loop() function of the sketch, we constantly get the current GPS location, and then calculate the difference between this & the initial location: float distance = distanceCoordinates(latitude, longitude, initialLatitude, initialLongitude); we also print this distance inside the Serial monitor: Serial.print(“Distance: ”);

printFloat(distance, 5);

Serial.println(“”); If the measured distance exceeded the maximum distance we allowed, we also set the alarm on: if (distance 》 maxDistance) {

alarm = true;

}

之后,我们检查是否是否处于警报模式,并相应地对LED和压电蜂鸣器进行操作:

if (alarm == false) {

if (millis() - counter 》 5000) {

digitalWrite(ledPin, HIGH);

} if (millis() - counter 》 5100) {

digitalWrite(ledPin, LOW);

counter = millis();

} noTone(buzzerPin);

现在是时候测试项目了!将代码上传到Arduino开发板,然后打开串行监视器。您应该看到,最初的距离等于零,或者是一个很小的值。

实际上,请注意GPS的精度约为10米,因此两次测量之间的位置会略有变化。您也可以走出设置的边界,然后步行片刻,看看它是否会发出警报!

最好的事情是它留下了点,换句话说,它是最后找到的点

第7步:资源

您可以参考以下链接,获取有关以下方面的任何信息:对于您的疑问或下一个项目,请使用SIM800。

SIM800命令手册

SIM800 FM应用说明

SIM800 IP应用说明

SIM800 GSM位置应用笔记

SIM800嵌入式AT应用笔记

步骤8:电池消耗

我们还没有谈到的其他方面这是功耗。可以肯定地假设,如果您正在构建蜂窝跟踪器,则需要将其放在可移动的物体上,这意味着它将需要偏离我们世界的电源插座/USB端口。这意味着电池电量,这意味着测量功率消耗并计算电池寿命等。

蜂窝式设备因耗电量大而享有盛誉。 Adafruit说,此模块可在短时间内产生2安培(!!)的电流。但是,按照我们的使用方式,它会花费大部分时间关闭电源,消耗很少。

我测量了正常使用期间电池的功耗。

上电:〜25mA

获取请求:峰值持续时间在150-200mA

一个完整的位置请求和发送GET请求的周期消耗约7.47焦耳

53.4 mA的平均电流持续35秒

关闭电源:约150µA静态功耗

如果我们使用容量为1200mAH的电池,则在发出电池之前,我们可以在15分钟的间隔内获得约12天的发送位置。 (从理论上讲,没有考虑Arduino的功耗)。

责任编辑:wv

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

    关注

    186

    文章

    6445

    浏览量

    185459
收藏 人收藏

    评论

    相关推荐

    esp32-S3arduino编程吗?

    arduino选开发的时候没有es32-s3, 只有s2可选。 请问: 1. esp32-S3arduino编程吗 2. arduino
    发表于 06-27 08:23

    OpenELA接手继续维护Linux 4.14分支

    近期,OpenELA联盟也发表声明,表示将负责Linux 4.14分支的维护工作,通过名为x.y.z-openela的后缀标签推出版本更新;v4.14.339-openela已经面世。
    的头像 发表于 03-14 10:05 179次阅读

    图像跟踪设备发展历史

    传统意义上的图像跟踪主要分为两种,一种是通过在一定载体上安装定位设备并结合无线传输设备对载体的实时位置进行定位或描绘出移动轨迹,这种跟踪设备主要用于消防、户外探险等领域。另一种跟踪设备
    的头像 发表于 02-20 08:28 267次阅读
    图像<b class='flag-5'>跟踪</b>设备发展历史

    如何使用arduino控制接触器?

    我将避免铅酸电池过载。我想通过使用近 30A 的接触器和 arduino uno 控制电池过载。如何使用arduino控制接触器?
    发表于 01-22 07:14

    【开源项目Arduino ESP32 彩色电子气象站

    可以在其中存储文件和图像以显示在屏幕上。该可以通过 USB-C 连接器进行编程和供电,并具有电池充电器和锂聚合物电池。此外,该还带有一个 RTC 时钟模块,用于跟踪时间并降低功耗。
    发表于 01-16 14:01

    Git命令之本地分支与远程分支关联和解除

    在实际的工作生活中,往往需要将本地的分支和远程分支关联,这样我们就可以使用git pull命令更新拉取最新的代码,并使用git push命令将自己本地的修改推送到远程仓库。但是如果此时你本地关联
    的头像 发表于 12-15 09:27 915次阅读
    Git命令之本地<b class='flag-5'>分支</b>与远程<b class='flag-5'>分支</b>关联和解除

    请问AD7606持差输入吗?

    请问ADC采集芯片——AD7606持差输入吗? 差输入或者单端输入都可以吗?哪种可以,哪种不可以?
    发表于 12-01 08:19

    如何使用Python和PinPong库控制Arduino

    Arduino进行通信,以帮助您开发自己的电子项目。 一、为什么是PinPong库? PinPong库是一个用于控制开源硬件开发的Pyt
    的头像 发表于 10-13 10:59 582次阅读
    如何使用Python和PinPong库控制<b class='flag-5'>Arduino</b>

    dsPIC33EP128GS808开发信息表

    电子发烧友网站提供《dsPIC33EP128GS808开发信息表.pdf》资料免费下载
    发表于 09-26 09:24 0次下载
    dsPIC33EP128GS<b class='flag-5'>808</b>开发<b class='flag-5'>板</b>信息表

    dsPIC33EP128GS808开发用户指南

    电子发烧友网站提供《dsPIC33EP128GS808开发用户指南.pdf》资料免费下载
    发表于 09-25 11:25 0次下载
    dsPIC33EP128GS<b class='flag-5'>808</b>开发<b class='flag-5'>板</b>用户指南

    使用RVD进行跟踪的应用笔记

    跟踪只能从具有嵌入式跟踪宏单元(ETM)的ARM内核中收集。 ETM根据您的跟踪设置生成跟踪信息。 必须首先存储ETM输出的跟踪信息,以便将
    发表于 08-29 08:17

    基于Arduino的机器学习开发

    项目采用的开发Arduino Nano 33 ble Sense,模型训练平台为SensiML或者Edge Impulse。对于SensiML,模型部署平台为VS Code和PlatformIO;对于Edge Impuls
    的头像 发表于 08-11 11:06 1041次阅读
    基于<b class='flag-5'>Arduino</b>的机器学习开发

    合宙Air001开发——支持Arduino开发,国产MCU新热潮

    包装炸裂、价格便宜、支持Arduino开发——点燃国产MCU新热潮的合宙Air001,开发补货终于到了!!!合宙Air001开发、芯片、DAPLink,多样超值套餐可选,08月31日前发布开箱
    的头像 发表于 08-01 00:12 3875次阅读
    合宙Air001开发<b class='flag-5'>板</b>——支持<b class='flag-5'>Arduino</b>开发,国产MCU新热潮

    RGB混色器Arduino项目

    电子发烧友网站提供《RGB混色器Arduino项目.zip》资料免费下载
    发表于 07-11 14:37 1次下载
    RGB混色器<b class='flag-5'>Arduino</b><b class='flag-5'>项目</b>

    基于Arduino开发的唤醒词检测实现

    使用 Arduino 开发 TinyML 是我们遇到的最有趣的课程项目之一。学习过其他机器学习 (ML) 课程后,我们对 ML 的“魔力”并不陌生。然而,在小型且便宜的上部署复杂的
    发表于 07-07 16:36 0次下载
    基于<b class='flag-5'>Arduino</b><b class='flag-5'>板</b>开发的唤醒词检测实现