借助近来我们可以使用的所有技术,为女性打造一款安全设备并不难,它不仅会发出紧急警报,还会向您的朋友、家人或相关人员发送信息。在这里,我们将构建一个可供女性佩戴的手环,她们可以使用 SOS 紧急短信和当前位置通知警察或任何人。使用这些信息,警方将能够从现场救出受害者。为此,我们使用了一个 Arduino,它可以与 GSM 和 GPS 模块连接,用于发送 SMS 警报和获取位置坐标。
使用的材料
Arduino纳米
SIM900 调制解调器
NEO6M GPS模块
433 MHZ 射频发射器和接收器
按钮
电池
面包板
跳线
GPS模块
这里我们使用 NEO6M GPS 模块。NEO-6M GPS模块是一款流行的GPS接收器,内置陶瓷天线,提供强大的卫星搜索能力。该接收器能够感知位置并跟踪多达 22 颗卫星并识别世界任何地方的位置。通过板载信号指示灯,我们可以监控模块的网络状态。具有数据备份电池,当主电源意外关闭时,模块可以保存数据。
GPS 接收器模块内部的核心是 u-blox 的 NEO-6M GPS 芯片。它可以在 50 个通道上跟踪多达 22 颗卫星,并具有令人印象深刻的灵敏度水平,即 -161 dBm。这款 50 通道 u-blox 6 定位引擎拥有不到 1 秒的首次定位时间 (TTFF)。该模块支持的波特率范围为 4800-230400 bps,默认波特率为 9600。
特征:
工作电压:(2.7-3.6)V DC
工作电流:67毫安
波特率:4800-230400 bps(9600 默认)
通讯协议:NEMA
接口:UART
外置天线和内置 EEPROM。
GPS模块的引脚排列:
VCC:模块输入电压引脚
GND:接地引脚
RX, TX:与微控制器的 UART 通信引脚
GSM 模块 SIM900
这是一款兼容GSM/GPRS的四频手机,工作频率为850/900/1800/1900MHz,可用于上网、语音通话、收发短信等多种应用等。 GSM 调制解调器的频段可以通过 AT 命令设置。波特率可通过 AT 命令配置为 1200-115200。GSM/GPRS 调制解调器有一个内部 TCP/IP 堆栈,使我们能够通过 GPRS 与互联网连接。这是一款 SMT 类型的模块,采用集成 AMR926EJ-S 内核的非常强大的单片处理器设计,在各种工业产品中非常流行。
技术规格:
电源电压:3.4V – 4.5V
省电模式:睡眠模式功耗=.5mA
频段:SIM900A 双频:EGSM900、DCS1800。
工作温度:-30ºC 至 +80ºC
支持 MIC 和音频输入
扬声器输入
UART接口支持
通过调试端口进行固件升级
通讯:AT 命令
连接图
具有 GPS 跟踪和警报的女性安全系统可以细分为两个部分,例如发射器和接收器部分。每个部分的电路图描述如下:
发射器部分:
在射频发射器部分,将有一个 SOS 按钮以及一个 433 MHz 射频发射器,它将数据无线传输到接收器部分。在这里制作两个独立部件的目的是,尽量减小发射模块的尺寸,使其可以作为腕带佩戴。发射器部分的电路图如下所示:
接收部分:
在 RF Receiver 部分,从腕带(发送器部分)发送的数据由具有 433 MHz RF 接收器的设备接收。RF 接收器通过数字引脚将此信息发送到 Arduino。Arduino Nano 然后接收信号并使用闪入其中的程序对其进行处理。当受害者按下发射器部分的 SOS 按钮时,会产生一个 HIGH 信号并传递到 Arduino 端,然后 Arduino 会向 SIM900 调制解调器发送一个信号,向注册用户发送一条短信以及已经获取的 GPS 坐标借助 NEO6M GPS 模块存储在微控制器中。接收端电路图如下图所示:
Arduino的编程
成功完成硬件连接后,现在是对 Arduino Nano 进行编程的时候了。下面给出代码的逐步解释。
通过在代码中包含所有必需的库文件来启动代码,例如用于 NEO6M GPS 板的TInyGPS++.h ,用于定义软件串行引脚的 SoftwareSerial.h 。
现在,声明 GPS 模块的连接引脚及其默认波特率,在我们的例子中为 9600。此外,定义 GPS 与 Arduino 通信使用的软件串行引脚。
静态常量 int RXPin = 2,TXPin = 3;
静态常数 uint32_t gps_baudrate = 9600;
然后为TInyGPSPlus类声明对象。此外,为SoftwareSerial类定义对象,将引脚作为前面声明的参数。
TInyGPSPlus 全球定位系统;
软件串口软(RXPin,TXPin);
在setup() 里面,声明所有的输入管脚和输出管脚。然后,初始化硬件串行和软件串行功能,在我们的例子中提供默认波特率 9600。
无效设置()
{
pinMode(12,输入);// 从射频模块输入
pinMode(4,输出);// 蜂鸣器的输出
序列号。开始(19200);
soft.begin(gps_baudrate);
}
在循环()内部,引脚 12 的数字输入状态被读取并存储在一个变量中。当此状态为 HIGH 时,表示发射器侧的开关被按下,因此 Arduino 打开蜂鸣器并调用函数sendms(),用于发送有关位置数据的 SMS。
无效循环()
{
int key = digitalRead(12);
如果(键==1)
{
数字写入(4,高);// 打开蜂鸣器
发简讯();
数字写入(4,低);//关闭蜂鸣器
}
别的;
为了接收 GPS 坐标,编写的代码不断检查串行终端是否有来自 GPS 模块的传入数据。当找到具有 GPS 坐标的有效数据时,将其存储在两个单独的变量中,即纬度和经度。
而 (soft.available() 》 0)
{
gps.encode(soft.read());
如果 (gps.locaTIon.isUpdated())
{
纬度 = gps.location.lat();
Lon = gps.location.lng();
}
别的;
}
}
最后写了一个函数,就是向注册的号码发送短信。此处 SIM900 GSM 调制解调器使用AT + CMGF命令设置为 SMS 文本模式。然后使用显示的格式定义接收者的号码。您可以将其替换为您的手机号码。然后通过串行终端发送带有附加位置变量的消息。
无效发送消息()
{
Serial.print(“AT+CMGF=1r”);
延迟(100);
Serial.println(“AT+CMGS =”+9194XXXXXXX“”);
延迟(100);
Serial.println(“我需要帮助!!!Location:” + String(“Lat:”) +String(Lat) + “”+String(“Lon:”) + String(Lon));
延迟(100);
序列号.println((char)26);
延迟(100);
序列号.println();
延迟(5000);
}
使用 Arduino 的具有 GPS 跟踪和警报的女性安全设备
当按下 SOS 按钮时,蜂鸣器开始发出哔哔声,并且一条短信将发送到授权号码,其中包含受害者所在位置的纬度和经度。输出的屏幕截图如下所示:
#include
#include
#include
静态常量 int RXPin = 2,TXPin = 3;
静态常数 uint32_t gps_baudrate = 9600;
TinyGPSPlus 全球定位系统;
软件串口软(RXPin,TXPin);
字符串文本消息;
浮动纬度,经度;
无效设置()
{
soft.begin(gps_baudrate);
序列号.开始(19200);
pinMode(12,输入);
pinMode(4,输出);
}
无效循环()
{
int key = digitalRead(12);
而 (soft.available() > 0)
{
gps.encode(soft.read());
如果 (gps.location.isUpdated())
{
纬度 = gps.location.lat();
Lon = gps.location.lng();
}
别的;
}
如果(键==1)
{
数字写入(4,高);
发简讯();
数字写入(4,低);
}
}
无效发送消息()
{
Serial.print("AT+CMGF=1r");
延迟(100);
Serial.println("AT+CMGS ="+9194XXXXXX"");
延迟(100);
Serial.println("我需要帮助!!!Location:" + String("Lat: ") +String(Lat) + " "+String("Lon: ") + String(Lon));
延迟(100);
序列号.println((char)26);
延迟(100);
序列号.println();
延迟(5000);
}