Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Проекты

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2016, 09:04   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: GPS треккер для собачек

И еще можно модем уводить в спячку минут на 10 , а данные логировать , потом отправлять данные после просыпания модема одним пакетом
Admin вне форума   Ответить с цитированием
Старый 06.12.2016, 10:05   #12
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: GPS треккер для собачек

А смысл?Если только GPS модуль загонять при этом в сон. А так это можно решить и фильтрацией данных GPS -есть изменения -передавать - нет и не передавать
Bulatovor вне форума   Ответить с цитированием
Старый 06.12.2016, 12:07   #13
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: GPS треккер для собачек

Цитата:
Если только GPS модуль загонять при этом в сон
Он не так много потребляет в отличии от модема и долго стартует
К тому же координаты нужны всегда, их можно сохранить а потом передать
Admin вне форума   Ответить с цитированием
Старый 06.12.2016, 12:40   #14
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: GPS треккер для собачек

Ну вот и я о том же - сидит себе координаты принимает, буферизует их. Видимо затем обязательно фильтрация - потому как даже на месте есть броски в стороны(хотя некоторые сайты трекеры сами фильтрацию делают) Есть мысли в некоторых режимах вообще их в память писать, а потом будить GPS и слать пачку точек, например протокол Wialon позволяет в одном пакете несколько сообщений отправить (как они называют этот пакет "Черный ящик" ). В идеале слот микроCD прикрутить или еще есть какие миниатюрные решения для расширения памяти ардуины?
Bulatovor вне форума   Ответить с цитированием
Старый 06.12.2016, 13:24   #15
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: GPS треккер для собачек

Что касается спячки GPS - команда AT+CFUN по книжке может иметь несколько значений основного параметра
PHP код:
0 Minimum functionality 
1 Full functionality 
2 Disable phone transmit RF circuits only 
3 Disable phone receive RF circuits only 
4 Disable phone both transmit 
and receive RF circuits 
Switch on CSW platform 
Switch off CSW platform 
Ну 1 понятно. Что под минимумом скрывается знают только разработчики - придется экспериментировать. 2-4 тож понятно. А вот кто такой CSW?
Bulatovor вне форума   Ответить с цитированием
Старый 01.02.2019, 18:36   #16
kevolech
Junior Member
 
Регистрация: 31.01.2019
Сообщений: 2
Вес репутации: 0
kevolech is an unknown quantity at this point
По умолчанию

Спасибо за тему! Как раз хочу собрать маячок для собаки на таком же железе, только акселератор не нужен, так как работа устройства будет упрощена. Его задача - это отправлять, в ответ на звонок, смс сообщение с координатами местоположения, и всё. Всё остальное время , маячок может находиться в энергосберегающем режиме, для экономии заряда аккумулятора.
kevolech вне форума   Ответить с цитированием
Старый 01.02.2019, 20:31   #17
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Начнем сразу с неприятного - модуль GPS NEO-6 очень плохо ловит спутники в помещениях - я когда с ним экспериментировал -пришлось делать это у окна - иначе спутники не находятся. когда стартанёт уже легче можно глубже в помещение.
Bulatovor вне форума   Ответить с цитированием
Старый 01.02.2019, 21:12   #18
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Ну вот на этом скетче я остановился. С чего начнем подключения с GSM или GPS?

Развернуть для просмотра

Код:
//Подключение библиотек
#include <SoftwareSerial.h>
SoftwareSerial SerialGPS(10, 11); // RX, TX

#include <AltSoftSerial.h>
AltSoftSerial SerialGsm;

#include <CyberLib.h>// быстрое управление пинами


/**********************Переменные************************/
// Общие
String NumberTelefone="+7**********" ;// номер управляющего телефона
byte result;//


//UART
String InputUART = "";// строка для чтения UART модуля GSM

//GSM
String InputGSM = "";// строка для чтения UART модуля GSM

//GPS
byte GGA=0; byte VTG=0; byte GLL=0;
char buffGPS[82];// строка данных для чтения UART модуля GPS
char TimeGPS[10];//170840.00  Время UTC: 17ч. 08м. 40.00 сек.
char reliabilityGPS;//A Статус достоверности: A – достоверные данные, V – недостоверные данные
char reliabilityGPS2;//Статус определения координат: 0 – позиция не определена, 1 – позиция определена, 2- позиция определена с повышенной точностью (DGPS)
int numerGPS;//количество спутников
char LatitudeData[11];//5509.68339  Широта: 55 градусов, 09.68339 минут
char LatitudeDir;//N N – северная, S – южная
char LongitudeData[12];//06125.49498 Долгота: 061 градусов, 25.49498 минут
char LongitudeDir;//E E – восточная, W – западная
float fracdeg;
int altiGPS;
String HSpeed2;//0.204 Горизонтальная скорость (км/ч)
String Course;//– Направление курса относительно истинного севера (градусы)
String DataGPS;//311015  Дата: 31 октября 2015 года


//String MyString;

void setup()
{
	

	D12_Out; D12_Low; // пин перезагрузки GSM
	  
	//открытие портов
Serial.begin(38400);
settinggsm(); //настройка GSM модуля
settingps();
}

void loop() 
{ 
 
 /*_________________________Проверка буферов UART________________________________________*/
 
	if (Serial.available())    { pcread(); };     //если есть данные c компа уходим в подпрограмму чтения
	if (SerialGPS.available()) { getGPS();};     //если есть данные GPS уходим в подпрограмму чтения
	if (SerialGsm.available()) {gsmread();};     //если есть данные GSM/GPRS уходим в подпрограмму чтения




};

void settingps()// настройка модуля GPS
{	
	SerialGPS.begin(9600);delay (1000);
	while(SerialGPS.available()) { delay(5); SerialGPS.read(); };// очищаем буфер
	Serial.println("Setting OK"); delay(1000);
};

void settinggsm()
{ Serial.println("Reset GSM");
  D12_High; delay(3000); D12_Low;delay(3000);//перезагрузка GSM
 SerialGsm.end();
 delay(1000); 
   SerialGsm.begin(115200);
 delay(1000); // поднятие соединения
  //настройка модуля
  if(CommandGSM("AT\r", "ок", 2000)==0){settinggsm();}; // проверка связи с модемом
  SerialGsm.println("AT+IPR=38400"); delay(2000);
  SerialGsm.begin(38400); delay(1000); // перезапуск соединения
  if(CommandGSM("AT+CMEE=2\r", "ок", 500)==0){settinggsm();}; //режим сообщений ошибок
  if(CommandGSM("ate0\r", "ок", 300)==0){settinggsm();}; //отключение эха порта
  if(CommandGSM("AT+CREG?\r", "+CREG: 1", 100)==0){settinggsm();}; //проверка регистрации в сети
  //CommandGSM("AT+CREG=0", "ок", 100)==0){settinggsm();};// запрет выдачи сообщений о смене регистрации сети
  //настройка СМС
  if(CommandGSM("AT+CMGF=1\r", "ок", 100)==0){settinggsm();}; //включение текстового режима СМС
  if(CommandGSM("AT+CSCS=\"GSM\"\r", "ок", 100)==0){settinggsm();}; //включение  режима кодировки СМС
  if(CommandGSM("AT+CNMI=2,2\r", "ок", 100)==0){settinggsm();}; //включение  режима СМС сразу в монитор
};



void pcread()//эта функция используется для отладки - сообщения с порта транслирется на соответствующий модуль
{ //InputUART = "";
while (Serial.available() > 0)
  { char d = Serial.read();
    if (d == '\r')
    {  Serial.print("Polucheno-");Serial.print(InputUART);Serial.println("**");delay(300);
       if (InputUART.substring(0,3) == "GSM")
		{
			InputUART = InputUART.substring(4);
			Serial.print("Command GSM-");

			Serial.println(InputUART);delay(300); 
			SerialGsm.println(InputUART);delay(300); 
			InputUART = "";
		} 
       else if (InputUART.substring(0,3) == "SMS"){SmsSend2();} 
       else {InputUART = "";};
    }
    else { InputUART += d;}
  };
 
};

void getGPS()
{ //чтение буфера GPS и присвоение значений переменных GPS 
	
	while (SerialGPS.available() > 0) 
	{char d = SerialGPS.read();Serial.print(d);
		
				// GPGGA 
				if(d=='G') 
				{ 	Serial.println(); d = SerialGPS.read();Serial.println(d);
					if(d=='G') 
					{ 	d = SerialGPS.read();Serial.println(d);
						if(d=='A') 
						{ 	Serial.println("GPGGA");
							GGA=1;
							d = SerialGPS.read();// пропускаем запятую
							int i = 0; int i1=0;
							memset(&buffGPS[0], 0, sizeof(buffGPS));
							
							while (d != '\n' && d!='*')  { d = SerialGPS.read(); buffGPS[i]=d; delay(2); i = i + 1;};
							Serial.write(buffGPS, sizeof(buffGPS)); Serial.println();
							
							i = 0; d = buffGPS[i];
							while (d != ',')  { TimeGPS[i1] = d;i = i + 1;i1 = i1 + 1;d = buffGPS[i];};
								
							i1 = 0;  i = i+1; d = buffGPS[i];
							while (d != ',')  {LatitudeData[i1] = d;i = i + 1; i1 = i1 + 1;d = buffGPS[i]; };
															
							i1 = 0; i = i+1; d = buffGPS[i];
							if(d != ',') LatitudeDir=d;
								
							i1 = 0; i = i+2; d = buffGPS[i];
							while (d != ',')  {LongitudeData[i1] = d;i = i + 1;i1 = i1 + 1;d = buffGPS[i];};
							
						
							i1 = 0; i = i+1; d = buffGPS[i];
							if(d != ',')LongitudeDir=d;
							
							i = i+2; d = buffGPS[i];
							while (d != ',')  {i = i + 1;d= buffGPS[i];};
							
							numerGPS=0; i1 = 0; i = i+1; d = buffGPS[i];
							if(d != ',') numerGPS=int(d-48)*10+int(buffGPS[i+1]-48);
								
							 i = i+3; d = buffGPS[i];
							while (d != ',')  {i = i + 1;d = buffGPS[i];};
							
							altiGPS=0; i = i+1; d = buffGPS[i];
							while (d != ','&& d != '.'){	altiGPS=altiGPS*10+int(d-48);i = i+1; d = buffGPS[i];};

							memset(&buffGPS[0], 0, sizeof(buffGPS));
						};
					}
				}
				if(GGA==1){GGA=0;};
	};
};

void gsmread()
{ 

while (SerialGsm.available() > 0)
  { char c = SerialGsm.read();
    if (c == '\n')
    { Serial.println(InputGSM);
      if ( InputGSM.indexOf("+CMT") >= 0 ){InputGSM = ""; smsread();}
      else if ( InputGSM.indexOf("+CREG: 2") >= 0 ){InputGSM = ""; settinggsm();}
      else {InputGSM = "";};
    }
    else { InputGSM += c;}
  }
  
};

byte CommandGSM(String S, String S1, int t)
{ 
  while(SerialGsm.available()) { delay(2); SerialGsm.read(); }// очищаем буфер
 delay(500); Serial.print (S);delay(500);
  SerialGsm.println(S);delay(t); // шлем команду
    for (int x = 0; x < 10; x ++) 
	{
		while (SerialGsm.available() > 0)//если в буфере что есть -читаем
		{ char c = SerialGsm.read();
		  if (c == '\n') { break;} else { InputGSM += c;}
		}
		if ( InputGSM.indexOf(S1) >= 0 ){result=1; InputGSM = "";Serial.println ("ОК");break; } else {Serial.print ("|");InputGSM = "";};
		if (x == 9) { result=0; Serial.println ("-NO");};
		delay(t);
	};
  return result;
  while(SerialGsm.available()) { delay(2); SerialGsm.read(); }// зачищаем буфер
};

void smsread()
{
	InputGSM = "";
	Serial.println("SMSKA!!!!!!!!");
	delay(100);
	while (SerialGsm.available() > 0)
	{ char c = SerialGsm.read();
		if (c == '\n')
		{
			Serial.print("Text SMS -  ");
			Serial.print(InputGSM);
			Serial.println("**");
			if    (InputGSM.indexOf("fittnes")>= 0 )
				{uint8_t buf[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xE8, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x39}; //SerialGPS.write(buf, sizeof(buf));};}  // данные 1 сек
			//else if(InputGSM.indexOf("beacon")>= 0 ){uint8_t buf[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0x88, 0x13, 0x01, 0x00, 0x01, 0x00, 0xB1, 0x49}; //SerialGPS.write(buf, sizeof(		buf));}  // данные 5 сек
			//else if(InputGSM.indexOf("tracker")>= 0){uint8_t buf[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0x60, 0xEA, 0x01, 0x00, 0x01, 0x00, 0x60, 0x8C}; //SerialGPS.write(buf, sizeof(		buf));}  // данные 60 сек
					}
			else if(InputGSM.indexOf("location")>= 0){SmsSend("https://www.google.ru/maps/place/54\°44\'21.7\"N+56\°00\'50.4\"E", NumberTelefone);}  // смс с оординатами
			else if(InputGSM.indexOf("battery")>= 0){SmsSend(String(A3_Read, DEC), NumberTelefone);}  // смс с оординатами
			else if(InputGSM.indexOf("reset")>= 0){settinggsm();}  // координаты на сайт
			else   {SmsSend(InputGSM, NumberTelefone);};
		}
		else {InputGSM += c;};
		};
};


void SmsSend(String textSMS, String numberSMS){
SerialGsm.println("AT+CMGS=\""+numberSMS+"\"");
delay(1000);
SerialGsm.print(textSMS);  // отправляем текст
SerialGsm.println((char)26);          // символ завершающий передачу
};

void SmsSend2(){
InputUART = InputUART.substring(4);
Serial.println("SMSka");delay(300); 
SerialGsm.println("AT+CMGS=\""+NumberTelefone+"\"");
delay(1000);
SerialGsm.print(InputUART);  // отправляем текст
SerialGsm.print((char)26);          // символ завершающий передачу
Serial.println("OK");
InputUART = "";
};
[свернуть]
Bulatovor вне форума   Ответить с цитированием
Старый 06.02.2019, 21:25   #19
kevolech
Junior Member
 
Регистрация: 31.01.2019
Сообщений: 2
Вес репутации: 0
kevolech is an unknown quantity at this point
По умолчанию

Спасибо за скетч!

Последний раз редактировалось kevolech; 09.02.2019 в 17:53.
kevolech вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:39. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика