当前位置:首页 > 物联网 > IoT设计分享
[导读]有没有想过你的手机软件是如何在驾驶时使用GPS定位你的位置的?这个问题的答案是,嵌入你手机中的一个小型GPS模块与卫星网络通信,以确定你手机的位置。在这个项目中,我们将了解GPS模块是如何工作的,我们将了解一种流行的GPS接收器模块NEO 6M,该模块与手机中使用的模块大小不同,但工作原理相同。通过使用GPS接收器模块和Thingspeak物联网平台提供的信息,我们将尝试在图表上绘制数据。除此之外,我们还将通过使用Thingspeak- Matlab可视化中的inbuild函数生成URL来可视化卫星视图地图上的位置(需要编码,在代码说明部分进行解释)。

有没有想过你的手机软件是如何在驾驶时使用GPS定位你的位置的?这个问题的答案是,嵌入你手机中的一个小型GPS模块与卫星网络通信,以确定你手机的位置。在这个项目中,我们将了解GPS模块是如何工作的,我们将了解一种流行的GPS接收器模块NEO 6M,该模块与手机中使用的模块大小不同,但工作原理相同。通过使用GPS接收器模块和Thingspeak物联网平台提供的信息,我们将尝试在图表上绘制数据。除此之外,我们还将通过使用Thingspeak- Matlab可视化中的inbuild函数生成URL来可视化卫星视图地图上的位置(需要编码,在代码说明部分进行解释)。通过使用这个URL,任何浏览器的任何人都可以跟踪它所连接的GPS设备的位置。如果你正在寻找一个简单的解决方案,你也可以看看NodeMCU GPS Webserver项目,它也非常类似于我们即将构建的。

组件的要求

•NEO 6M GPS模块

•节点单片机

•连接电线

GPS模块是如何工作的?

GPS是全球定位系统的缩写,是一种全球性的无线电导航系统。为了跟踪设备的位置,GPS跟踪系统使用全球导航卫星系统(GNSS)网络。该网络由一系列卫星组成,这些卫星使用微波信号传输数据,这些数据将被GPS接收器模块接收。

GPS卫星星座由24颗绕地球运行的GPS卫星组成。这些卫星的定位方式是,在任何时候,至少有6颗卫星处于地球表面任何地方的视线范围内。当涉及到GPS设备的精确定位时,该系统遵循一个简单的数学原理,称为三边定位。

例如,考虑卫星a。当您打开移动GPS时,它会接收卫星a的当前时间和位置。现在接收器通过计算信号的时间和速度(信号的速度等于光速)来计算到卫星A的距离。接收器现在知道它必须位于由卫星A的距离形成的圆上。现在,GPS接收器从另一颗卫星获得数据,假设是卫星B。通过使用卫星B提供的数据,它知道它必须位于这两个圆(由卫星A和卫星B组成)之间的交互点上。现在,它从第三颗卫星获取数据来精确定位。这种利用卫星的时间和位置等数据来确定你的位置的过程被称为三边定位。

NEO 6M GPS接收器模块

因此,现在在我们的项目中,我们将使用NEO 6M GPS接收器模块,它由50个通道组成。这些频道就像房间,每个频道可以容纳每个卫星的一个频率。这些信道通常是并行操作的,这使得接收机在移动时保持精度。首次定位时间(TTFF)是接收卫星信号和导航信号并使用该数据计算位置所需的时间。NEO 6M的TTFF在冷启动和热启动时为27秒,热启动时为1秒。

在工作条件方面,最大工作电压为3.6V,最小工作电压为2.7V。NEO 6M模块的平均供电电流为39mA。在一些模块中,有一个内置的3.3V稳压器。因此,我们可以将模块连接到5V以获得最大性能。在通信方面,该模块采用UART,可以方便地与任何MCU (Node MCU)进行通信。连接部分在电路图部分讨论。

测试Neo 6M GPS模块

要知道GPS模块是否工作,请按照如下电路图连接模块,并上传空代码。注意,如果您上传的是空代码,那么串行通信将使用nodeMCU的默认TX和RX引脚进行。要检查串行监视器上的数据,请相应地更改电路,即将GPS模块的RX和TX连接到NodeMCU的RX和TX,如下所示

上传空代码后,打开串口监视器。到目前为止,您应该看到屏幕上打印了一些值。等等,它们不是正确的值。如果您观察,您可以发现输出中缺少一些位。首先,模块需要一些时间才能给出正确的值。注意:如果GPS模块开始闪烁,则表示该模块正在接收值。下图显示了接收到的数据中缺少一些位的情况。

如果数据没有丢失位,则数据将如下图所示。

您看到的上述数据是用NMEA格式表示的数据。NMEA代表国家海洋电子协会。这种标准数据格式被所有GPS制造商所支持,就像计算机制造商的ASCII一样。

GPGSV -显示当前的GPS卫星

1 =此周期内该类型消息的总数

2 =留言号

3 =正在查看的sv的总数

4 = SV PRN号

5 =仰角,最高90度

6 =方位角,从真北000到359度

7 =信噪比,00-99 dB(不跟踪时为空)

8-11 =第二个SV信息

12-15=第三SV信息

16-19=第四个SV信息

GPGLL -地理定位,纬度和经度。例如:$GPGLL,4815.45,N,12311.12,W,215455,A

GPS跟踪器电路图

节点MCU与NEO 6M模块之间的连接非常简单。NEO 6M模块的VCC和GND引脚连接到面包板的正负电源轨,节点MCU的3v3和GND引脚连接到面包板的正负电源轨,如下图所示。NEO 6M的RX和TX引脚连接到节点MCU的D1和D2引脚。Node MCU采用USB供电方式。

设置Thingspeak

首先,如果你是一个新用户,注册一个thingspeak帐户。我们已经用Thingspeak构建了很多有趣的项目,你也可以去看看。

注册后,选择频道。选择通道后,选择“新建通道”。

选择新通道后,将加载下面的页面。输入详细信息和适当的字段名称,然后单击保存。

选择保存后,将加载下面的页面。现在选择选项API密钥

选择API密钥后,将加载以下页面。现在,记下通道ID,写键和读键。在nodeMCU编程中使用Write键,而在Matlab可视化程序中使用Read键。

之后,选择私有视图选项并单击Matlab可视化选项。

现在,下面的页面将被加载。不做任何更改,然后选择Create。

现在,您将加载一个页面,您可以在其中编写代码,使用纬度和经度在地图上指出位置。复制粘贴本文提供的代码,并更改所需的值(读取密钥和通道ID)。

检查“创建公共URL”框,以便任何人都可以使用此URL找到设备的位置。

接下来,我们需要两种不同类型的程序。一个代码处理从GPS模块获取数据,然后将数据传输到thingspeak。第二个代码处理使用发送给thingspeak的数据指向地图上的位置。第一个代码是用Arduino IDE编写的,而第二个代码是用thingspeak Matlab可视化编写的。

在进入代码解释之前,需要下载某些库,这些库有助于将原始数据(NMEA格式)转换为可理解的数据。首先,使用提供的链接下载tinyGPS库。接下来,通过在库管理器中搜索下载thingspeak库。下载MathWorks提供的那个。

NodeMCU程序读取GPS数据并发送给Thingspeak

完整的程序可以在本页底部找到,相同的解释如下。下面的代码片段用于包含库,这些库是我们的代码正常工作所需的,并且将GPIO引脚4和5设置为NodeMCU的RX和TX引脚。设置GPS波特率为9600。

以下代码仅在有来自GPS模块的传入数据时运行。代码对数据进行编码,如果编码后的数据有效,则考虑该数据,并进行进一步的计算以将NMEA数据转换为可理解的数据。下面的代码只向thingspeak发送纬度和经度值。

Matlab ThingSpeak可视化代码在地图上显示位置

现在,我们必须编写一个代码,它可以通过使用纬度和经度值在地图上指出位置,这些值被转移到thingspeak中。下面的屏幕截图显示了示例URL。

下面的代码获取最后10个值的值,并将它们定位在地图上。通过使用URL,该URL将在运行代码后可用。要更改值的数量,它需要考虑更改写在‘ NumPoints ’之后的值。

在下面输入您的MATLAB代码

下面的代码使用由nodeMCU提供的纬度和经度在地图上精确定位位置。

一旦您的编程完成,您的页面应该看起来像下面所示

通过使用提供的URL,我在web浏览器中得到了下面的图片。

Matlab可视化从字段中获取数据,然后在地图上定位它们。下图显示了绘制在字段上的数据,这将进一步用于Matlab可视化。

测试NodeMCU GPS跟踪器

一旦启动nodeMCU,串行监视器中看到的读数可能不正确。它需要一些有限的时间来得到正确的读数。如果GPS模块开始闪烁,您将知道读数是正确的。一旦nodeMCU与LAN连接,并且GPS数据有效,则该数据将被发送到thingspeak。您可以在Thingspeak的字段中查看正在更新的数据。通过使用我们在Matlab可视化中获得的生成的URL,我们可以从任何浏览器跟踪位置。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭