Localizador de emergencia GSM y GPS basado en ESP32 con activación por botón
Localizador de emergencia GSM y GPS basado en ESP32 con activación por botón
Documentación del circuito
Resumen
El circuito en cuestión está diseñado para interconectar un módulo GSM SIM800L, un módulo GPS Neo 6M y un pulsador con un microcontrolador ESP32. El circuito está alimentado por una batería de 9V e incluye una resistencia para la regulación de voltaje. La función principal de este circuito es enviar un mensaje SMS con coordenadas GPS cuando se presiona el botón, indicando una situación de emergencia que requiere atención.
Lista de componentes
Módulo GSM SIM800L
- Pines: 5V, GND, VDD, SIM_TXD, SIM_RXD, RST
- Descripción: Un módulo GSM/GPRS que permite la conectividad a la red celular, capaz de enviar SMS y realizar llamadas de voz.
Módulo GPS Neo 6M
- Pines: GND, TX, RX, VCC
- Descripción: Un módulo receptor GPS que proporciona datos de ubicación.
Pulsador
- Pines: Pin 3 (salida), Pin 4 (salida), Pin 1 (entrada), Pin 2 (entrada)
- Descripción: Un simple pulsador que se utiliza para desencadenar una acción, en este caso, el envío de un SMS.
Batería de 9V
- Pines: -, +
- Descripción: Proporciona energía al circuito.
Resistencia
- Pines: pin 1, pin 2
- Descripción: Una resistencia de 200 ohmios, probablemente utilizada para fines de limitación de corriente o de subida/bajada.
ESP32
- Pines: 3V3, GND, D15, D2, D4, RX2, TX2, D5, D18, D19, D21, RX0, TX0, D22, D23, EN, VP, VN, D34, D35, D32, D33, D25, D26, D27, D14, D12, D13, VIN
- Descripción: Un potente microcontrolador con capacidades Wi-Fi y Bluetooth, utilizado como controlador principal en este circuito.
Detalles del cableado
Módulo GSM SIM800L
- 5V conectado a batería de 9V (+)
- GND conectado a batería de 9V (-), módulo GPS Neo 6M (GND) y ESP32 (GND)
- SIM_TXD conectado al ESP32 (D18)
- SIM_RXD conectado al ESP32 (D19)
Módulo GPS Neo 6M
- GND conectado a SIM800L módulo GSM (GND) y ESP32 (GND)
- TX conectado a ESP32 (RX2)
- RX conectado a ESP32 (TX2)
- VCC conectado a Resistencia (pin2) y ESP32 (3V3)
Pulsador
- Pin 3 (salida) conectado a ESP32 (GND)
- Pin 4 (salida) conectado al ESP32 (D4)
- Pin 2 (pulg.) conectado a la resistencia (pin 1)
Batería de 9V
- + conectado a SIM800L módulo GSM (5V)
- - conectado a SIM800L módulo GSM (GND)
Resistencia
- pin 1 conectado al pulsador (pin 2 (in))
- pin2 conectado al módulo GPS Neo 6M (VCC) y ESP32 (3V3)
ESP32
- 3V3 conectado al módulo GPS Neo 6M (VCC) y resistencia (pin2)
- GND conectado a SIM800L módulo GSM (GND), módulo GPS Neo 6M (GND) y pulsador (pin 3 (salida))
- D18 conectado a SIM800L módulo GSM (SIM_TXD)
- D19 conectado a SIM800L módulo GSM (SIM_RXD)
- RX2 conectado al módulo GPS Neo 6M (TX)
- TX2 conectado al módulo GPS Neo 6M (RX)
- D4 conectado al pulsador (pin 4 (salida))
Código documentado
#include <TinyGPS++.h>
// GSM module connection - use ESP32's hardware serial 1
#define GSM_SERIAL_NUM 1
#define GSM_RX_PIN 18
#define GSM_TX_PIN 19
// GPS module connection - use ESP32's hardware serial 2
#define GPS_SERIAL_NUM 2
#define GPS_RX_PIN 16
#define GPS_TX_PIN 17
// Pin definitions
const int buttonPin = 4; // Push button connected to GPIO 4
// TinyGPS++ object
TinyGPSPlus gps;
// Variables
int buttonState = 0;
bool messageSent = false;
const char* phoneNumber = "+1234567890"; // Replace with the desired phone number
const char* message = "Emergency! Help needed at this location: ";
void setup() {
Serial.begin(115200);
// Initialize GSM serial
Serial1.begin(9600, SERIAL_8N1, GSM_RX_PIN, GSM_TX_PIN);
// Initialize GPS serial
Serial2.begin(9600, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
// Set up button pin
pinMode(buttonPin, INPUT_PULLUP);
// Initialize GSM module
initGSM();
}
void loop() {
// Update GPS data
while (Serial2.available() > 0) {
gps.encode(Serial2.read());
}
buttonState = digitalRead(buttonPin);
if (buttonState == LOW && !messageSent) {
sendSMS();
messageSent = true;
}
if (buttonState == HIGH) {
messageSent = false;
}
}
void initGSM() {
Serial.println("Initializing GSM module...");
delay(1000);
Serial1.println("AT");
delay(1000);
Serial1.println("AT+CMGF=1"); // Set SMS text mode
delay(1000);
}
void sendSMS() {
Serial.println("Button pressed, sending SMS with location...");
String locationMessage = message;
if (gps.location.isValid()) {
locationMessage += "http://maps.google.com/maps?q=";
locationMessage += String(gps.location.lat(), 6);
locationMessage += ",";
locationMessage += String(gps.location.lng(), 6);
} else {
locationMessage += "GPS location not available";
}
// Send SMS
Serial1.println("AT+CMGS=\"" + String(phoneNumber) + "\"");
delay(1000);
Serial1.print(locationMessage);
delay(100);
Serial1.write(26); // End SMS with Ctrl+Z character
Serial.println("SMS sent with location!");
delay(1000);
}
Este código está diseñado para ejecutarse en el microcontrolador ESP32. Inicia la comunicación con el módulo GSM SIM800L y el módulo GPS Neo 6M, lee los datos GPS y envía un SMS con la ubicación actual cuando se presiona el botón. El código utiliza la biblioteca TinyGPS++ para analizar los datos del GPS.
Fuente: Localizador de emergencia GSM y GPS basado en ESP32 con activación por botón - Guía práctica y circuito editable | Diseñador de Cirkit
Comentarios
Publicar un comentario