在之前的教程中,我们已经了解了如何将GPS模块与计算机连接以及如何使用GSM和GPS跟踪车辆。我们还使用Arduino和加速度计制作了车辆事故警报系统。在本篇文章中,我们再次制作相同的项目,但这次将使用MSP430 Launchpad开发板和振动传感器来检测车辆事故。因此,该项目还将介绍振动传感器与MSP430的连接。
振动传感器模块检测车辆的振动并向MSP430 Launchpad发送信号。然后MSP430从GPS模块获取数据,使用GSM模块通过SMS将其发送到用户移动电话。同时LED也会发出事故警报信号,这个LED可以使用其他一些警报设备取代。事故地点以谷歌地图链接的形式发送,源自GPS模块的纬度和经度。
需要的组件
● MSP430 Launchpad开发板
● GSM模块
● GPS模块
● 振动传感器模块
● 1602液晶显示屏
● 电源
● 连接导线
● 10K电位器
● 面包板
在开始制作之前,我们将先讨论GPS、GSM和振动传感器。
GPS模块及其工作原理
GPS(Global Positioning System),中文全称全球定位系统,用于检测地球上任何位置的纬度和经度,具有精确的UTC时间(协调世界时)。 GPS模块用于跟踪项目中事故的位置。该设备每时每秒接收卫星的坐标,包括时间和日期。我们之前在车辆跟踪系统中提取了$ GPGGA字符串,以查找纬度和经度坐标。
GPS模块实时发送与跟踪位置相关的数据,并以NMEA格式发送大量数据(参见下面的屏幕截图)。 NMEA格式包含几个句子,我们只需要一个句子。这句话从$ GPGGA开始,包含坐标、时间和其他有用信息。该GPGGA被称为全球定位系统修复数据。
我们可以通过计算字符串中的逗号来从$ GPGGA字符串中提取坐标。假设您找到$ GPGGA字符串并将其存储在数组中,则可以在两个逗号后找到Latitude,并且可以在四个逗号后找到Longitude。现在,这个纬度和经度可以放在其他数组中。
下面是$ GPGGA字符串及其描述:
$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47
$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data
复制代码
GSM模块
SIM900是一个完整的四频GSM / GPRS模块,可以轻松嵌入客户或业余爱好者使用。 SIM900 GSM模块提供行业标准接口。 SIM900为语音、短信、数据提供GSM / GPRS 850/900/1800 / 1900MHz性能,功耗极低。它很容易在市场上买到。
◾ SIM900采用集成AMR926EJ-S内核的单芯片处理器设计
◾ 小型GSM / GPRS四频模块。
◾ GPRS已启用
AT命令
AT表示ATTENTION。该命令用于控制GSM模块。为了测试GSM模块,我们使用AT命令。收到AT命令后,GSM模块响应OK。这意味着GSM模块工作正常。下面是我们在这个项目中使用的一些AT命令:
● ATE0用于回声
● AT + CNMI = 2,2,0,0,0 ● ATD <手机号码>; ● ● AT + CMGF = 1 ● AT + CMGS =“手机号码” >>现在我们可以写下我们的信息 >>写完信息后 ● Ctrl + Z发送消息命令(十进制26)。 ● HEX中的ENTER = 0x0d 振动传感器模块 在这个MSP430事故警报系统项目中,我们使用了一个振动传感器模块来检测振动或突然调制。振动传感器模块根据模块提供数字输出HIGH / LOW逻辑。在我们的例子中,我们使用了一个有源HIGH逻辑振动传感器模块。这意味着每当振动传感器检测到振动时,它将为微控制器提供高逻辑。 电路说明 该车辆事故警报系统项目的电路连接非常简单。这里GPS模块的Tx引脚直接连接到MSP430 Launchpad(硬件串口)的数字引脚号P1_1,5v用于为GPS模块供电。通过在此使用软件串行库,我们允许在引脚P_6和P1_7上进行串行通信,并分别使它们成为Rx和Tx并连接到GSM模块。 12伏电源用于为GSM模块供电。振动传感器连接在P1_3。 LED也用于指示事故检测。其余连接显示在电路图中。 编程说明 除GPS部分外,该项目的编程很简单。完成代码在本文结尾处给出。要在MSP430中编写或编译代码,我们使用了与Arduino兼容的Energia IDE。大多数Arduino IDE功能都可以直接在这个Energia IDE中使用。 首先,我们包含了一个必需的库,以及声明一些引脚和变量。 #include SoftwareSerial GSM(P1_6, P1_7); // RX, TX float latitude=0; float logitude=0; #define led P1_0 const int vibrationSensor=PUSH2; int i=0; 以下函数用于读取振动传感器信号。 该函数也可以过滤小的或错误的振动。 #define count_max 25 char SensorRead(int pin) // read sw with debounce { char count_low=0,count_high = 0; do { delay(1); if (digitalRead(pin) == HIGH) { count_high++; count_low = 0; } else { count_high = 0; count_low++; } }while(count_low< count_max && count_high < count_max); if (count_low >= count_max) return LOW; else return HIGH; } 下面的函数检测振动并调用gpsEvent()函数获取GPS坐标,最后调用Send()函数发送短信。 void loop() { if(SensorRead(vibrationSensor) == HIGH) { digitalWrite(led, HIGH); gpsEvent(); Send(); digitalWrite(led, LOW); delay(2000); } } 以下函数负责从GPS模块获取GPS字符串,从中提取坐标并以十进制格式转换它们。 void gpsEvent() { char gpsString[55]; char test[]="RMC"; i=0; while(1) { while (Serial.available()) //Serial incomming data from GPS { char inChar = (char)Serial.read(); gpsString[i]=inChar; //store incomming data from GPS to temparary string str[] i++; if (i < 4) { if(gpsString[i-1] != test[i-1]) //check for right string i=0; } 最后,Send()函数用于将SMS发送到此部分代码中插入的用户号码。 void Send() { GSM.print("AT+CMGS="); GSM.print('"'); GSM.print("961****059"); // enter your Mobile number GSM.println('"'); delay(500); // GSM.print("Latitude:"); // GSM.println(latitude); GSM.println("Accident Happned"); delay(500); // GSM.print(" longitude:"); // GSM.println(logitude); GSM.println("Click On link to see Location"); GSM.print("http://maps.google.com/maps?&z=15&mrt=yp&t=k&q="); GSM.print(latitude,6); GSM.print("+"); GSM.print(logitude,6); GSM.write(26); delay(4000); }
上一篇:使用MSP430G2 LaunchPad开发板连接步进电机的方法
下一篇:使用MSP430 LaunchPad开发板制作一个激光绊线报警器
推荐阅读最新更新时间:2024-11-08 11:07
设计资源 培训 开发板 精华推荐
- ADP160 具有固定输出电压、1.8V 超低静态电流、150mA CMOS 线性稳压器的典型应用电路
- STM32f411 system
- 1.2V, 1.2V, 1.8V, 2.8V DC to DC多路输出手机电源
- 使用 STMicroelectronics 的 TDA75610LVSM 的参考设计
- 使用 ADM3061EBRMZ 3 至 5.5 V、±12 kV IEC ESD 保护、50 Mbps RS-485 收发器的典型应用
- 使用 Analog Devices 的 LTC1315CG 的参考设计
- inDART-HCS08D: In-Circuit, Real-Time Debugger/Programmer for NXP S08 Family
- 这车真的快快快!
- AM3G-0505DZ ±5V 3 瓦 DC 至 DC 转换器的典型应用
- 5*5 rgb ws2812