The circuit in question is designed to integrate various modules with an Arduino UNO microcontroller as the central processing unit. The circuit includes a pushbutton for user input, a SIM800L GSM module for cellular communication, a Neo 6M GPS module for location tracking, a sound sensor for audio detection, and an ESP32-CAM for wireless communication and camera functionalities. A resistor is used for pull-up configuration on the pushbutton, and a 9V battery provides power to the GSM module. The Arduino Nano and GSM SIM900 modules are also present in the parts list but are not integrated into the circuit based on the provided net list.
5V
connected to the 5V power rail supplying power to other componentsGND
connected to the ground railD11
connected to SIM800L GSM Module SIM_RXD
D10
connected to SIM800L GSM Module SIM_TXD
D4
connected to Neo 6M GPS Module TX
D3
connected to Neo 6M GPS Module RX
D2
connected to one terminal of the PushbuttonD1
connected to ESP32-CAM VOT
D0
connected to ESP32-CAM VOR
D2
5V
connected to 9V Battery +
GND
connected to 9V Battery -
SIM_TXD
connected to Arduino UNO D10
SIM_RXD
connected to Arduino UNO D11
+
connected to SIM800L GSM Module 5V
-
connected to SIM800L GSM Module GND
VCC
connected to 5V power railGND
connected to ground railTX
connected to Arduino UNO D4
RX
connected to Arduino UNO D3
VCC
connected to Arduino Nano 5V
GND
connected to Arduino Nano GND
Digital
connected to Arduino Nano 5V
Analog
connected to Arduino Nano A1
5V
connected to 5V power railGND
connected to ground railVOT
connected to Arduino UNO D1
VOR
connected to Arduino UNO D0
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
// Define pin numbers
const int buttonPin = 2; // Push button connected to digital pin 2
const int gsmRxPin = 10; // RX pin of GSM module
const int gsmTxPin = 11; // TX pin of GSM module
const int gpsRxPin = 4; // RX pin of GPS module
const int gpsTxPin = 3; // TX pin of GPS module
// Create software serial objects
SoftwareSerial gsmSerial(gsmRxPin, gsmTxPin);
SoftwareSerial gpsSerial(gpsRxPin, gpsTxPin);
// Create a 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(9600);
gsmSerial.begin(9600);
gpsSerial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
// Initialize GSM module
delay(1000);
gsmSerial.println("AT");
delay(1000);
gsmSerial.println("AT+CMGF=1"); // Set SMS text mode
delay(1000);
}
void loop() {
// Update GPS data
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
buttonState = digitalRead(buttonPin);
if (buttonState == LOW && !messageSent) {
sendSMS();
messageSent = true;
}
if (buttonState == HIGH) {
messageSent = false;
}
}
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";
}
}
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
(Note: The Arduino Nano code provided is empty and does not perform any function in the current circuit configuration.)