全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 安全设备/系统 >

如何使用MSP430和GPS模块制作汽车事故警报系统

时间:2022-09-21 15:35

人气:

作者:admin

标签: GPS模块  MSP430 

导读:在这里,我们再次构建相同的项目,但这次将使用MSP430 发射台和振动传感器来检测车辆事故。因此,该项目还将介绍振动传感器与 MSP430 启动板的接口。...

在这里,我们再次构建相同的项目,但这次将使用MSP430 发射台和振动传感器来检测车辆事故。因此,该项目还将介绍振动传感器与 MSP430 启动板的接口

此处振动传感器模块检测车辆的振动并向 MSP430 Launchpad 发送信号。然后 MSP430 从 GPS 模块获取数据并使用 GSM 模块通过 SMS 将其发送到用户手机。一个 LED 也会作为事故警报信号发光,这个 LED 可以用一些警报代替。事故位置以Google Map 链接的形式发送,来自 GPS 模块的纬度和经度。

pYYBAGMqvMeAKsG8AAJO_sP3ixw139.png

所需组件

MSP430 启动板

SIM900 GSM 模块

Ublox NEO-6M GPS 模块

振动传感器模块

16x2 液晶

电源

连接电线

10 K-POT

面包板或PCB

电源 12v 1amp

3.3v电源

5v电源

在进入项目之前,我们将讨论 GPS、GSM 和振动传感器。

GPS模块及其工作:

GPS代表全球定位系统 ,用于检测地球上任何位置的纬度和经度,具有精确的UTC时间(协调世界时)。GPS模块用于跟踪我们项目中的事故位置。该设备每秒接收来自卫星的坐标,包括时间和日期。我们之前 在Vehicle Tracking System中提取了 $GPGGA 字符串 来查找纬度和经度坐标。

poYBAGMqvQWAQqEuAAS1e8eg9-I793.png

GPS模块 实时发送与跟踪位置相关的数据,它以NMEA格式发送大量数据(见下面的截图)。NMEA 格式由几个句子组成,其中我们只需要一个句子。这句话从 $GPGGA开始 ,包含坐标、时间和其他有用的信息。此 GPGGA 称为 全球定位系统修复数据。

我们可以通过计算字符串中的逗号来从 $GPGGA 字符串中提取坐标。假设你找到 $GPGGA 字符串并将其存储在一个数组中,那么在两个逗号后可以找到纬度,在四个逗号后可以找到经度。现在,这个纬度和经度可以放在其他数组中。

poYBAGMqvQyANPwNAAFaO5STm38033.png

下面是$GPGGA字符串及其描述:

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47

$GPGGA,HHMMSS.SSS,纬度,N,经度,E,FQ,NOS,HDP ,高度,M,高度,M,,校验和数据

poYBAGMqvRKAa2EBAAAtrSCr4eg996.png

GSM模块

SIM900 是一个完整的四频 GSM/GPRS 模块,可以被客户或爱好者轻松嵌入使用。SIM900 GSM 模块提供行业标准接口。SIM900 以低功耗提供 GSM/GPRS 850/900/1800/1900MHz 的语音、SMS、数据性能。它在市场上很容易买到。

SIM900采用集成AMR926EJ-S内核的单片机处理器设计

小尺寸的四频 GSM/GPRS 模块。

启用 GPRS

pYYBAGMqvRiAeD9TAAXDfdLhfWU479.png

AT 命令

AT 表示注意。该命令用于控制 GSM 模块。为了测试 GSM 模块,我们使用了 AT 命令。接收到 AT 命令后,GSM 模块回复 OK。这意味着 GSM 模块工作正常。下面是 我们在这个项目中使用的一些 AT 命令:

ATE0 用于关闭回声

AT+CNMI=2,2,0,0,0 《ENTER》 自动打开消息接收。(无需打开消息)

ATD《手机号码》;《ENTER》 拨打电话 (ATD+919610126059;\r\n)

AT+CMGF=1 《ENTER》 选择文本模式

AT+CMGS=”Mobile Number” 《ENTER》 分配收款人的手机号码

》》现在我们可以写我们的信息了

》》写完留言后

Ctrl+Z 发送消息命令(十进制的 26)。

ENTER=0x0d 十六进制

振动传感器模块

在这个MSP430 事故警报系统项目中,我们使用了一个振动传感器模块来检测振动或突然的调制。振动传感器模块根据模块提供数字输出高/低逻辑。在我们的案例中,我们使用了一个有源 HIGH 逻辑振动传感器模块。这意味着每当振动传感器检测到振动时,它都会为微控制器提供高逻辑。

poYBAGMqvR6AZj-bAAJktuf7XxE888.png

电路说明

该车辆事故警报系统项目的电路连接 很简单。这里GPS 模块的Tx 引脚 直接连接到 MSP430 Launchpad(硬件串行)的数字引脚号 P1_1,5v 用于为 GPS 模块供电。通过这里使用 软件串行库 ,我们允许引脚 P_6 和 P1_7 上的串行通信,并分别使它们成为 Rx 和 Tx 并连接到GSM 模块。12 伏电源用于为 GSM 模块供电。振动传感器连接在 P1_3 。LED 也用于指示事故检测。其余连接显示在电路图中。

poYBAGMqvSKATOkhAAFApAVp3GI921.png

poYBAGMqvSiAfWjNAAblkntWh9A636.png

编程说明

除了 GPS 部分外,该项目的编程很容易。完整的代码在项目结​​束时给出。为了在 MSP430 中编写或编译代码,我们使用了与 Arduino 兼容的 Energia IDE。大多数 Arduino IDE 功能都可以直接在这个 Energia IDE 中使用。

所以首先我们已经包含了一个必需的库和声明的引脚和变量。

#include
SoftwareSerial GSM(P1_6, P1_7); // 接收,发送

浮动纬度=0;
浮动对数=0;

#define led P1_0
const intvibrationSensor=PUSH2;
诠释我=0;
给定函数用于读取振动传感器信号。此功能还将过滤小振动或虚假振动。

#define count_max 25
char SensorRead(int pin) // 读sw with debounce
{
char count_low=0,count_high = 0;

{
延迟(1);
if (digitalRead(pin) == HIGH)
{
count_high++;
计数低 = 0;
}

否则
{
count_high = 0;
计数低++;
}
}while(count_low< count_max && count_high < count_max);

如果(count_low >= count_max)
返回低;
否则
返回高;
}
下面的函数检测振动并调用gpsEvent()函数获取 GPS 坐标,最后调用Send()函数发送短信。

无效循环()
{
如果(传感器读取(振动传感器)==高)
{
数字写入(领导,高);
全球定位系统事件();
发送();
数字写入(领导,低);
延迟(2000);
}
}
Given Function 负责从 GPS 模块中获取 GPS 字符串,从中提取坐标并将其转换为度数十进制格式。

无效 gpsEvent()
{
字符 gpsString[55];
字符测试[]="RMC";
我=0;
while(1)
{
while (Serial.available()) //来自 GPS 的串行传入数据
{
char inChar = (char)Serial.read();
gpsString[i]=inChar; //将来自 GPS 的传入数据存储到临时字符串 str[]
i++;
if (i < 4)
{
if(gpsString[i-1] != test[i-1]) //检查正确的字符串
i=0;
}

国际度=0;
度=gpsString[16]-48;
度*=10;
度+=gpsString[17]-48;
int minut_int=0;
minut_int=gpsString[18]-48;
minut_int*=10;
minut_int+=gpsString[19]-48;

int minut_dec=0;
minut_dec+= (gpsString[21]-48)*10000;
minut_dec+= (gpsString[22]-48)*1000;
minut_dec+= (gpsString[23]-48)*100;
minut_dec+= (gpsString[24]-48)*10;
minut_dec+= (gpsString[25]-48);

float minut= ((float)minut_int + ((float)minut_dec/100000.0))/60.0;
纬度=((浮点)度+分钟);
最后,Send()函数用于将 SMS 发送到插入在这部分代码中的用户号码。

无效发送()
{
GSM.print("AT+CMGS=");
GSM.print('"');
GSM.print("961****059"); // 输入你的手机号码
GSM.println('"');
延迟(500);
// GSM.print("纬度:");
// GSM.println(纬度);
GSM.println("事故发生");
延迟(500);
// GSM.print("经度:");
// GSM.println(logitude);
GSM.println("点击链接查看位置");
GSM.print("http://maps.google.com/maps?&z=15&mrt=yp&t=k&q=");
GSM.print(纬度,6);
GSM.print("+");
GSM.print(logitude,6);
GSM.write(26);
延迟(4000);
}
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信