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
    +关注

    关注

    187

    文章

    6461

    浏览量

    186570
收藏 人收藏

    评论

    相关推荐

    抖动跟踪不丢失 慧视图像跟踪和自研算法强势升级

    成都慧视开发的Viztra-HE030图像处理是采用了瑞芯微旗舰级高性能芯片RK3588,能够凭借八核处理核心输出至高6.0TOPS的算力,在算法的强力辅助下,能够实现对目标的稳定锁定跟踪。随着
    的头像 发表于 09-04 08:05 307次阅读
    抖动<b class='flag-5'>跟踪</b>不丢失 慧视图像<b class='flag-5'>跟踪</b><b class='flag-5'>板</b>和自研算法强势升级

    开源项目!基于 Arduino DIY 漂亮的宏机械键盘

    。 接下来,我们将要制作的这款键盘拥有 12 个按键,你可以根据自己的喜好和需求,将这些按键与所需的快捷键进行关联。尽管这个项目听起来可能有些复杂,但实际上无论是电子部分还是软件部分,都非常易于上手和操作
    发表于 08-19 17:02

    esp32-S3arduino编程吗?

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

    【Vision Board创客营连载体验】利用 OpenMV 实现 AprilTag 跟踪以及通过串口通讯控制 Arduino 驱动 LED 灯带

    Arduino Uno 板子并对两端程序进行补充与修复,成功实现一维 LED 矩阵的跟踪功能,下面附上连线图与效果图: 待办 / TODO 调通上位机与下位机之间的 UART 通讯 当识别
    发表于 05-31 00:01

    电路测试项目有哪些

    将对每个项目进行详细的分析和讨论。 外观检查 外观检查是电路测试的第一步,主要目的是检查电路的外观缺陷,如划痕、凹陷、翘曲、污染等。外观检查可以通过人工检查或自动化视觉检测系统
    的头像 发表于 05-28 16:28 1266次阅读

    OpenELA接手继续维护Linux 4.14分支

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

    图像跟踪设备发展历史

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

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发上持续运行,并且只有在程序被重新上传或开发断电重启时才会停止。然而,在某些情况下,你可能需要在程序执
    的头像 发表于 02-14 16:24 4146次阅读

    如何使用Arduino UNO和电位器控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO和电位器控制伺服电机。
    的头像 发表于 02-11 10:11 2537次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO<b class='flag-5'>板</b>和电位器控制伺服电机

    如何使用arduino控制接触器?

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

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

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

    工程师说 | 使用Chat-GPT为RL78 MCU(Arduino)编写AI代码

    使用时需要注意这一点。 什么是ArduinoArduino是一个用于轻松进行电子项目的开源平台。它由一个配备有微控制器的
    的头像 发表于 12-21 18:20 979次阅读
    工程师说 | 使用Chat-GPT为RL78 MCU(<b class='flag-5'>Arduino</b>)编写AI代码

    开源作品!3D打印2轮机器人、音乐反应式多色LED灯、多功能电能表等开源项目

    没有模拟值,则停止该功能。 这个项目也可以用 Arduino UNO R3 和一些(IRFZ44N 晶体管和类似的)组件完成,但我在一个上准备了这个
    发表于 12-20 14:11

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

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

    请问AD7606持差输入吗?

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