电子说
步骤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
全部0条评论
快来发表一下你的评论吧 !