Электромонтажные работы
GPS маяк с отправкой координат в виде смс на мобилу.
Сборка GPS маяка своими руками . Данный GPS маяк собран на базе контроллера ATMEGA 328 3.3v 8 Mhz Arduino PRO mini.
GPS маяк отправляет координаты в виде текстового смс сообщение на мобильный номер телефона
Для того чтобы получить координаты место нахождение маячка нужно позвонить на него.Он сбросит вызов и отправит координаты .
GPS маяк
Питание 12 вольт
Ток потребление 55 мА
Размер 6 х 4 х 2 см
Контроллер Arduino pro mini 3.3v 8mhz
GSM модуль Neoway M590
GPS модуль NEO- 6M
DC-DC преобразователь 20 to 0.5v
// Скетч++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Код.
#include <TinyGPS++.h>
#include <EEPROM.h>
#include <SoftwareSerial.h>
#define LED 13
boolean GSMSMSflag = 0; // команда на отправку SMS
TinyGPSPlus gps;
SoftwareSerial ss(11, 12); // для GPS приемника
#define gsm Serial // для Gsm приемника
void setup()
{
delay(1000);
Serial.begin(9600);
ss.begin(9600); // скорость GPS
gsm.begin(9600); // скорость GSM M590
delay(100);
Serial.println("start");
pinMode(LED, OUTPUT);
GSMSMSflag = EEPROM.read(0); // достаем флаг
Serial.println("modem");
// нужно дождатся включения модема и соединения с сетью
delay(2000);
// while(gsm.find("STARTUP")); /// ждем команды от модема
gsm.println("ATE0"); // выключаем эхо
while(1){ // ждем подключение модема к сети
gsm.println("AT+COPS?");
if (gsm.find("+COPS: 0")) break;
digitalWrite(LED, LOW); // блымаем светодиодом
delay(50);
digitalWrite(LED, HIGH);
delay(500);
}
gsm.println("AT+CMGF=1"); //настройки для SMS
delay(100);
gsm.println("AT+CSCS="GSM"");
Serial.println("Modem OK");
digitalWrite(LED, LOW); // блымаем светодиодом
delay(1500);
digitalWrite(LED, HIGH);
delay(250);
digitalWrite(LED, LOW);
}
void loop(){
if (GSMSMSflag == 0){ // если флаг ожидания команды от модема
// ищим RING
while(gsm.find("RING")){ // если нашли RING
gsm.println("AT+CLIP=1"); // включаем АОН,
while(1){ // в цикле
if (gsm.find("79#########")){ // ищим номер телефона, если нашли
GSMSMSflag = 1; // меняем режим
EEPROM.write(0, GSMSMSflag); // пишим его в еепром
break; // и выходим
}
else{ // иначе
gsm.println("AT+CPAS"); // спрашиваем состояние модема
delay(100);
if (gsm.find("+CPAS: 0")) break; // и если он в "готовности", выходим из цикла
} // если звонок в процессе, возвращает +CPAS: 3
} // и крутимся дальше
gsm.println("AT+CLIP=0"); // выключаем АОН,
delay(500);
gsm.println("ATH0"); // сбрасываем вызов
digitalWrite(LED, LOW); // сигнализируем об этом
delay(500);
digitalWrite(LED, HIGH);
delay(250);
digitalWrite(LED, LOW);
delay(1500);
Serial.print(" AT+CMGD=1,4");
}
}
if (GSMSMSflag == 1){ // если сменился режим
do{
do{ // в цикле забераем данные от GPS
while (ss.available() > 0) gps.encode(ss.read());
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.speed.isValid()) {
Serial.print(gps.speed.kmph());
}
Serial.println();
}while (!gps.location.isUpdated() && gps.location.age() >1500);
}while (!gps.location.isValid()); // циклЫ крутим пока не убедимся что получили свежие данные
Serial.println("ok"); // отправляем SMS
delay(5000);
Serial.print("AT+CMGS="); // отправляем смс
Serial.print((char)34);
Serial.print("89#########"); // номер получателя
Serial.print((char)34); // символ кавычки "
Serial.print((char)13); // символ (ASCII character 13)
delay(1500);
Serial.print(gps.location.lat(), 6); // передаем координаты
Serial.print(",");
Serial.print(gps.location.lng(), 6);
Serial.print(" S:"); // передаем скорость движения
Serial.print(gps.speed.kmph());
Serial.print(" T:"); // передаем время с GPS
if (gps.time.hour() < 10) gsm.print("0");
Serial.print(gps.time.hour());
Serial.print(":");
//
Serial.print(gps.time.minute());
Serial.print((char)26); // символ завершающий передачу
delay(5000);
GSMSMSflag = 0; // меняем режим
EEPROM.write(0, GSMSMSflag); // пишим его в еепром
}
}
///+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++////
Схема GPS маячка.


