SIM800l

Прошу помощи

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#1

Сообщение Njkz » 11.02.2019{, 12:36}

Вторую неделю борюсь с этим блоком. Мозги кипят. Проблема вот в чем. АТ команду видит и исполняет. Загружаю простенький скеч, 1 вкл. светодиод, 2 выкл. молчит сволочь. А что еще обиднее так то,что заливаю чужой с нета - работает. Помогите пожалуйста разобраться в чем причена.

Код: Выделить всё


#include <SoftwareSerial.h>

struct UB_9481458
{
bool ubo_216381972 = 0;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
};
UB_9481458 UB_9481458_Instance1;
bool GSM_In_sms;
String GSM_Phone;
String GSM_text;
bool GSM_Reject_call;
bool GSM_start;
bool GSM_Net;
int GSM_dBm;
bool GSM_Received_SMS;
String GSM_Text_sms;
String GSM_T_Nomer;
bool GSM_Sent_SMS;
bool GSM_Call;
int GSM_Number_calls;
int GSM_Error_Code;
bool GSM_start_N; //Модем прислал сообщение о том, что он стартовал 
bool GSM_final; // закончена обработка запроса
bool GSM_wait; // идет ожидание ответа на команду
bool GSM_past_SMS;
bool GSM_command_SMS;
bool GSM_past_Reject_call;
bool GSM_command_Reject_call;
//bool GSM_Call_P1;
char GSM_ch;	 //символ пришетший в ком порт
byte GSM_errorCounter; // счетчик ошибок
byte GSM_numberRepeats;
//byte GSM_Dial_response_code;
byte GSM_team_room; //номер текущей функции 
byte GSM_count; // счетчик последовальности команд
unsigned long GSM_time; //Время посылки команды
unsigned long GSM_T_millis; //Время посылки команды
unsigned long GSM_time_n; //Время последнего опроса связи с сетью.
String GSM_line; // сообщение от модуля
String GSM_reply; //Ответ модуля на команду
String GSM_Phone_T=""; //Телефон во время подачи команд на звонок или отправку смс
#define Module_Start "Call Ready"

#define GSM_TYPE_SIM800

SoftwareSerial Serial_S( 2 ,  3 ); 
bool _trgr1 = 0;
void setup()
{
pinMode(10, OUTPUT); 
pinMode(13, OUTPUT); 
pinMode(7, OUTPUT); 

Serial_S.begin( 9600 );






}
void loop()
{




//Плата:1
//Наименование:SIM800L


_func_UB_9481458(&UB_9481458_Instance1);
digitalWrite(7, UB_9481458_Instance1.ubo_216381972);
GSM_In_sms = 0;
GSM_Phone = String("");
GSM_text = String("");
GSM_Reject_call = 0;
GSM_Received_SMS =0; //Сброс статутса СМС Принята
GSM_Sent_SMS =0; //Сброс статуса СМС Отправлена

if ( 1 ){
	if ( GSM_team_room==3 ){
		GSM_Number_calls =0;
		GSM_Text_sms="";
		GSM_T_Nomer =""; 
	}
}

GSM_T_millis =millis();

		while(Serial_S.available()) //Получаем данные с модема
			{GSM_ch = Serial_S.read();			
			if(GSM_ch == '\r') continue;
			if(GSM_ch == '\n') { GSM_GotLineFromNeoway(); GSM_line = ""; }
			else  GSM_line += GSM_ch;}

if (GSM_wait)//ожиание ответа на команду
	{	
	if(GSM_line.length()>0){
		if(GSM_line==F("> ")) {GSM_count++; GSM_wait=0;GSM_line = "";} }
	if(GSM_T_millis>GSM_time)	{GSM_err (2,0);}
	}

if (GSM_Call&&(GSM_team_room!=1)  ) 
	{	
	GSM_team_room=1; 	
	GSM_Number_calls=1; //сброс числа гудков
	// GSM_resetExpectations() ;	
	 }

if (GSM_start_N){if (!GSM_wait){if ( GSM_setup_comand() ){GSM_start_N=0; GSM_start =1; }}}// Инициализация

if (GSM_start)//Не работать пока не старт
	{
//______Проверка статуса сети
		if ((30000 >0)&&(GSM_team_room==0)) //проверять ли статутс сети
			{
			if((GSM_T_millis-GSM_time_n) > 30000){ GSM_team_room=3;}
			}
//______Конец Проверка статуса сети

//______Отправка СМС
	if (  GSM_In_sms  && !GSM_past_SMS  ) {  if ( GSM_number_search()) GSM_command_SMS =1; 	}	// поступление команды на отправу СМС. Проверка корректности номера
	GSM_past_SMS= GSM_In_sms;
	if ( GSM_command_SMS && (GSM_team_room==0) ) {GSM_team_room=2;  GSM_command_SMS =0;}  // начинать отправу СМС
//______Конец Отправка СМС		

//______Команда сброс вызова или разрыв разговора	
	if (  GSM_Reject_call  && !GSM_past_Reject_call  ) { GSM_command_Reject_call =1; }
	GSM_past_Reject_call=GSM_Reject_call;
//______Конец Команда сброс вызова или разрыв разговора	

	
#ifdef GSM_INCLUSION_USSD // Обработка вызова USSD запросов 
	GSM_causeProcessingUSSD();
#endif

#ifdef GSM_INCLUSION_DATA_TIME //Обработка времени, даты, оператора
	GSM_causeProcessingDataTime();
#endif

#ifdef GSM_INCLUSION_CALLS // исходящий вызов 
	if (GSM_causeProcessingCall()) {
		if( GSM_number_search()){
			GSM_wait=1; // ожитать
			GSM_time =millis() + 20000; // время ожидания			
			Serial_S.println( "ATD"+ GSM_Phone_T+";" );
			GSM_team_room=5;
	#ifdef GSM_DEBUG // отладка		
		Serial.println("Command: ATD"+ GSM_Phone_T+";" );	
	#endif
		}
	}
#endif
//________ Обработка разных процессов
	switch ( GSM_team_room ) {
	case 0:
			break;
	case 1: //Обработка входящих  вызовов 
		if (!GSM_wait){
			if ( GSM_command_Reject_call ) {
				if (  GSM_singleCommand(F("ATH0"), 10) )  {GSM_command_Reject_call=0; GSM_Call=0; GSM_count=0; GSM_final=1;}
				}	
#ifdef GSM_INCLUSION_CALLS
#ifndef GSM_TYPE_M590
		if (GSM_causeProcessingTake()){ GSM_Connect=1; GSM_team_room=5;}	
#endif	
#endif	
		}				
		if (!GSM_Call){ GSM_final =1;  GSM_T_Nomer ="";}
		break;
	case 2:	
		if (!GSM_wait){  GSM_final=GSM_sms_sent();} // отправка сообщения
		break;
	case 3:	
		if (!GSM_wait){ GSM_final=GSM_net_status();}// проверка связи с сетью
		break;
	case 4:	//приход смс
		//if (!GSM_wait){ GSM_final=1; GSM_count=0; GSM_Error_Code =0;   }// 
		break;
#ifdef GSM_INCLUSION_CALLS
	case 5:	//разговор 
		if (!GSM_wait) {	
			if ( GSM_command_Reject_call ) {
				if ( GSM_singleCommand(F("ATH0"), 10))  {GSM_command_Reject_call=0; GSM_Call=0;  GSM_count=0; GSM_Connect=0; GSM_final=1;}
			}
			GSM_count=0;			
		}
		break;
#endif
#ifdef GSM_INCLUSION_DATA_TIME
	case 6:	// дата время 
		if (!GSM_wait){if ( GSM_DataTime() ){ GSM_final =1;}}// запрос баланса
		break;
#endif
#ifdef GSM_INCLUSION_USSD
	case 7:	// USSD 
		if (!GSM_wait){ GSM_final=GSM_USSD();}// запрос баланса
		break;
#endif
	}
//________ Конец Обработка разных процессов

	if (GSM_final){GSM_team_room=0; GSM_final=0;} //должно быть последним
}

if((((GSM_Text_sms).compareTo(String("2")))>0)) _trgr1 = 0;
if((((GSM_Text_sms).compareTo(String("1")))>0)) _trgr1 = 1;
digitalWrite(10, _trgr1);
digitalWrite(13, GSM_Net);




}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
void GSM_GotLineFromNeoway()
{
bool flag_=0; //Анализ телефонной книги
static bool isStringMessage;
#ifdef GSM_DEBUG
Serial.print("Message module: ");//Тест
Serial.println(GSM_line); //Тест
Serial.print("GSM_team_room: ");//Тест
Serial.println(GSM_team_room); //Тест
#endif

if (GSM_line.length()>0)
	{	

//Обработка входящих СМС
		if (isStringMessage){
		 	GSM_Text_sms  =  GSM_line ; //выводим текст сообщения 
			GSM_Received_SMS  =true; // Импульс приход сообщения
			isStringMessage=0;			
			return;
		}
	if (GSM_line.startsWith("+CMT")) // пришло СМС 
		{
		flag_=1; 
		GSM_resetExpectations();		 
		isStringMessage=1;	
		GSM_reply="";
		} 
//Конец Обработка входящих СМС

// Обработка входящих вызовов
	
	if (GSM_Call)
		{
		if (GSM_line.startsWith(F("+CLIP"))) {flag_=1;GSM_reply="";}
		else if (GSM_line == F("NO CARRIER")) { GSM_Call=0; }		
		}
	if (GSM_line == F("RING")){ //Входящий звонок 
				if(!GSM_Call)GSM_resetExpectations();
				GSM_Call=1; 
				GSM_Number_calls ++;				
				}
// ____ Обработка USSD sim800
#ifdef GSM_TYPE_SIM800
#ifdef GSM_INCLUSION_USSD
if (GSM_line.startsWith("+CUSD")) // пришел ответ по USSD
		{
		GSM_wait=0;
		GSM_count++;
		GSM_USSD_return  =   GSM_substring_commas(GSM_line,5) ;
		} 
#endif
#endif
//_______Конец обработки USSD SIM800


#ifdef GSM_INCLUSION_CALLS //Если добавлен блок работы со звонками
#ifdef GSM_INCLUSION_DTMF // Если добвален блок DTMF
	if ( GSM_Connect ){	if (GSM_line.startsWith(F("+DTMF"))) {GSM_ID_DTMF(GSM_line);}	}
#endif
	if (GSM_team_room==5)
		{
		if (GSM_line == F("CONNECT"))GSM_Connect=1;
		else if (GSM_line == F("BUSY")) GSM_err (505,2);
		else if (GSM_line == F("NO ANSWER")) GSM_err (506,2);
		else if (GSM_line == F("NO CARRIER")) {
				if (GSM_Connect){GSM_Connect=0; GSM_team_room=0;} 
				else GSM_err (507,2);
			}
		}
#endif
// Конец Обработка входящих вызовов
	
	
	if(GSM_line == F("ERROR")) GSM_err (1, 0);
	else if(GSM_line == F("OK")){  GSM_wait=0; GSM_count++; GSM_errorCounter=0; }
	else {
		GSM_reply+=GSM_line; 		
		}
	if (GSM_reply.length()>  160  ){GSM_reply=""; GSM_err (10100,2);}//Защита от переполнения строки


if (GSM_line == Module_Start){ GSM_start_N=1;  GSM_start=0;  GSM_err (0 , 2);  }//Сообщение от модуля о том, закончил загрузку 

if (flag_) //Получение номер телефона отправителя/звонящего
		{
		 GSM_T_Nomer =  GSM_substring_commas( GSM_line, 4) ;	
		if( GSM_T_Nomer.indexOf("+")==-1)  GSM_T_Nomer=(String( "+" ))+ GSM_T_Nomer;	
#ifdef TELEFONNAYA_BOOK // если используется телефооная книга
		int  GSM_ind_arr= GSM_StringArray( GSM_Telefon,  GSM_T_Nomer );
		if ( GSM_ind_arr>-1)  GSM_T_Nomer = GSM_Contact [  GSM_ind_arr ];
#endif
		flag_=0;
		}
#ifdef TELEFONNAYA_BOOK // если используется телефооная книга
	if (!GSM_start){
		if ( GSM_line.startsWith("+CPBF")) // пришла запись телефонной книги
			{if( GSM_index_array< GSM_Number_Contacts ){
				GSM_Telefon[  GSM_index_array ] =  GSM_substring_commas(  GSM_line, 5);
				GSM_Contact[  GSM_index_array ]=  GSM_substring_commas(  GSM_line, ( GSM_line.lastIndexOf(","))) ;
 				 GSM_index_array ++;}
			}
	}
#endif
}
// Получили строку ответа от Neoway. Любые ответы приходят в виде
// либо одной, либо нескольких строк, так что единица, которой мы должны
// оперировать - именно строка
// F("") -Хранить строку в Флеш памяти


}
void GSM_AT_Command(const __FlashStringHelper* str, String str2, byte _numRep)
{
 GSM_numberRepeats=_numRep;
 GSM_reply="";//Сброс содержимого прошлого ответа модуля
 GSM_wait=1; // ожитать
 GSM_time =millis() + 20000; // время ожидания
Serial_S.write("AT+");
Serial_S.print(str);
Serial_S.print(str2);
Serial_S.write("\"\r\n");



#ifdef GSM_DEBUG // отладка
	Serial.write("Command: AT+");
	Serial.print(str);
	Serial.print(str2);
	Serial.write("\"\r\n");	
#endif




}
bool GSM_net_status()
{
switch (  GSM_count ) {
case 0:	
	 GSM_count ++;	
	break;
case 1:	
	 GSM_AT_Command(F("CREG?") , 5);	//Проверка регистрации в сети		
	break;
case 2:	
	if ( GSM_analysisResponse(F("+CREG") )){ 
		if( ( GSM_reply.endsWith("1")) || ( GSM_reply.endsWith("5"))) { GSM_Net =1;} // 1-В домашней сети, 5- в роуминге
		else { GSM_Net =0;}
		}	
	break;		
case 3: // Проверка уровня сигнала 
	 GSM_AT_Command(F("CSQ") , 5 ) ;	
	break;
case 4:		
	if ( GSM_analysisResponse(F("+CSQ") )){				// 
		int t1= GSM_reply.indexOf(": ");
		if(t1>-1)    GSM_dBm  =(( ( ( GSM_reply.substring(t1+2,t1+4) ).toInt())*(2) )-(113));			
		if(  GSM_dBm >0)   GSM_dBm =-120; //нет сети		
		}		
	break;
case 5:	
	 GSM_count=0;
	 GSM_time_n=millis();// время последнего опроса	
	 GSM_Error_Code =0; //Сброc ошибки
	return 1;
	break;
}
return 0;
}
bool GSM_sms_sent()
{
switch (  GSM_count ) {
case 0:	
	 GSM_count ++;	
	break;
case 1:	
	 GSM_AT_Command(F("CMGF=1"),1);		// Перевод сообщенй в текстовый режим	
	break;
case 2:	
	 GSM_AT_Command(F("CMGS=\""),  GSM_Phone_T ,1 ); // Отправка команды на начальный этап  отправки СМС
	break;
case 3: // передача текста СМС и отправка сообщения
	if (  GSM_errorCounter ){  GSM_err( (200+ GSM_count) , 2);  break; }// выход из посылки команд если достигнуто придельное колличество ошибок
	Serial_S.println( GSM_text +String( (char)26 ));		
	 GSM_wait=1; // ожитать
	 GSM_time =millis() + 20000; // время ожидания
#ifdef GSM_DEBUG // отладка
	Serial.println( GSM_text +String( (char)26 ));		
#endif
	break;
case 4:	
	 GSM_count=0;	
	 GSM_Sent_SMS =1;
	 GSM_Error_Code =0; //Сброc ошибки
	return 1;	
	break;	
}
return 0;
}
String GSM_substring_commas(String text_analyze, int position)
{
int t1=text_analyze.indexOf("\"", position);
int t2=text_analyze.indexOf("\"",(t1+1));
if(t1>-1){
	if(t2>-1)  return text_analyze.substring(t1+1,t2);
	else return text_analyze.substring(t1+1);}	
return "";
}
bool GSM_number_search()
{
if ( GSM_Phone.length() <4) {GSM_Error_Code =10005; return 0;}
GSM_Phone_T = GSM_Phone ;

#ifdef TELEFONNAYA_BOOK
int ind_arr;
ind_arr= GSM_StringArray( GSM_Contact ,  GSM_Phone  );
if (ind_arr>-1)  GSM_Phone_T = GSM_Telefon [ ind_arr ];
else if(GSM_White_list ) {GSM_Error_Code =10006; return 0;}	
#endif
	
return 1;
}
void GSM_resetExpectations()
{
//сброс текущей операции 
GSM_wait=0; //сброс ожидания ответа
GSM_count=0; //Сброс состояний обработки других функций
GSM_time_n=GSM_T_millis;//отсрочка проверки статуса сети
GSM_team_room=0; 

}
void GSM_err(int error, byte _ret)
{
GSM_errorCounter++ ;
GSM_reply=""; //Сброс содержимого прошлого ответа модуля
GSM_wait =0;
if (_ret==0){
	if ( GSM_errorCounter >GSM_numberRepeats){ 
		error = GSM_team_room*100+ GSM_count;
		_ret=2;}
	else return;
}
if ( _ret==1)  GSM_count--;
else if (_ret==2 ){
	GSM_errorCounter=0;
	GSM_Error_Code =error;
	if (GSM_team_room==3){GSM_Net =0;GSM_dBm =-120;}
	GSM_resetExpectations();	
}

}
void GSM_AT_Command(const __FlashStringHelper* str, byte _numRep)
{
#ifdef GSM_DEBUG // отладка	
	Serial.write("AT+ _ ");	
#endif
Serial_S.write("AT+");
 GSM_Command( str,_numRep  ) ;


}
bool GSM_analysisResponse(const __FlashStringHelper* response)
{
#ifdef GSM_DEBUG
Serial.print("Expected Answer: ");//Тест
Serial.println(response); //Тест
Serial.print("Real  Answer: ");//Тест
Serial.println(GSM_reply); //Тест
#endif

if (GSM_reply.startsWith(response)){GSM_count++; return 1; }
GSM_err(0,1);
return 0;	
}
bool GSM_singleCommand(const __FlashStringHelper* str, byte _numRep)
{
switch ( GSM_count ) {
case 0:	
	GSM_Command(str, _numRep) ;
	break;
case 1:	
	GSM_count=0;	
	GSM_Error_Code =0; //Сброc ошибки
	return 1;	
	break;
}
return 0;
}
void GSM_Command(const __FlashStringHelper* str, byte _numRep)
{
GSM_reply=""; //Сброс содержимого прошлого ответа модуля
GSM_numberRepeats=_numRep;
GSM_wait=1; // ожитать
GSM_time =millis() + 20000; // время ожидания
Serial_S.println(str);


#ifdef GSM_DEBUG // отладка
	Serial.write("Command: ");	
	Serial.println(str);
#endif

}
bool GSM_setup_comand()
{
switch (  GSM_count ) {
case 0:	
	 GSM_count ++;	
	break;
case 1:
	 GSM_Command(F("ATE0") ,2 ) ; //отключение эхо ответа
	break;
case 2:		
	 GSM_AT_Command(F("CPAS"),4);			// проверка готовности модуля к работе 
	break;
case 3:	
	 GSM_analysisResponse(F("+CPAS: 0") );		
	break;
case 4:	
	 GSM_AT_Command(F("CREG?"),10);	//Проверка регистрации в сети		
	break;
case 5:	
	if ( GSM_analysisResponse(F("+CREG") )){ 
		if( ( GSM_reply.endsWith("1")) || ( GSM_reply.endsWith("5"))) { GSM_Net =1;} // 1-В домашней сети, 5- в роуминге
		else { GSM_err(0,1);  GSM_count--; }			
		}	
	break;
case 6:	
	 GSM_AT_Command(F("CSCB=1") ,2 ) ;	 	// Отключение приема широковещательных сообщений 
	break;	
case 7:	
	 GSM_AT_Command(F("CLIP=1") ,2 ) ;	 	// настройки автоматического определения номера
	break;
case 8:
	 GSM_AT_Command(F("CMGF=1") ,2 ) ; //настройки формата SMS сообщений, текстовый
	break;
case 9:	
	 GSM_AT_Command(F("CSCS=\"GSM\"") ,2 ) ; 	// выбора кодировки текста, кодировка ASCII
	break;
case 10:
	 GSM_AT_Command(F("CNMI=2,2,0,0,0") ,2 ) ; //выдовать смс в терминал и не сохранять в память
	break;
case 11:
#ifdef GSM_INCLUSION_DTMF // Если добвален блок DTMF
	GSM_AT_Command(F("DDET=1") ,5 ); // Включение работы с DTMF
#else
	GSM_count ++;
#endif	 
	break; 
#ifdef TELEFONNAYA_BOOK // Если использовать телефонну книгу
case 12:
	 GSM_AT_Command(F("CPBS?"),2);			
	break;
case 13:
	 GSM_analysisResponse(F("+CPBS: \"SM\"") );			
	break;	
case 14:
	 GSM_AT_Command(F("CPBF=\""), GSM_Name_Contact , 2 ) ;
	 GSM_index_array =0;
	break;
case 15:
#else //Если не использовать телефонную книгу
case 12:
#endif //Окнчание выбора по телефонной книге	
	 GSM_count=0;	
	 GSM_Error_Code =0; //Сброc ошибки	
	return 1;
	break;
}
return 0;
}
void _func_UB_9481458(struct UB_9481458 *_ubInstans)
{
bool ubo_216381972 = _ubInstans->ubo_216381972;
bool _trgrt1 = _ubInstans->_trgrt1;
bool _trgrt1I = _ubInstans->_trgrt1I;
bool _tim1I = _ubInstans->_tim1I;
bool _tim1O = _ubInstans->_tim1O;
unsigned long _tim1P = _ubInstans->_tim1P;
if (!(0))
{ if (_tim1I) { if (_isTimer(_tim1P, 20)) {_tim1O = 1;}} else {_tim1I =1; _tim1P = millis();}} else {_tim1O = 0; _tim1I = 0;}
if (_tim1O) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;}; 
 ubo_216381972 = !(_trgrt1);
_ubInstans->ubo_216381972 = ubo_216381972;
_ubInstans->_trgrt1 = _trgrt1;
_ubInstans->_trgrt1I = _trgrt1I;
_ubInstans->_tim1I = _tim1I;
_ubInstans->_tim1O = _tim1O;
_ubInstans->_tim1P = _tim1P;

}

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

SIM800l

#2

Сообщение Ingwar » 11.02.2019{, 12:46}

Нормальная такая простыня...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

SIM800l

#3

Сообщение Golan » 11.02.2019{, 13:12}

Что это было? :smile37:
Добро не ценится в современном мире, люди от него наглеют!

Аватара пользователя
grin-mpx
Лейтенант
Сообщения: 477
Зарегистрирован: 17.07.2017{, 18:39}
Репутация: 55
Откуда: Днепр. UA
Имя: Григорий

SIM800l

#4

Сообщение grin-mpx » 11.02.2019{, 13:42}

Njkz, Выложите проект из flprog, код выкладывать не нужно.

pasha71
Лейтенант
Сообщения: 454
Зарегистрирован: 26.08.2017{, 23:44}
Репутация: 34

SIM800l

#5

Сообщение pasha71 » 11.02.2019{, 13:50}

Njkz,Добрый день,прежде чем залазить в дебри,Вы по питанию проверьте все досконально и внимательно.90% беды это не достаточное питание (по току).и по соединениям тоже.У меня именно в этом и была беда.И как то на простенький скетч не похоже то что Вы показали.

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#6

Сообщение Njkz » 11.02.2019{, 17:12}

Большое спасибо за оперативный ответ. По питанию 3.9v, запитка через понижающий DC-DC на LM2596 (3A), АКБ от ноубука.
скрин.JPG

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#7

Сообщение Njkz » 13.02.2019{, 14:29}

АУ!!!!! Кто нибудь сможет помочь. Погибаю, но не сдаюсь.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

SIM800l

#8

Сообщение pan » 13.02.2019{, 14:41}

Njkz, вас просили выложить файл проекта флпрог, а не скриншот.

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#9

Сообщение Njkz » 14.02.2019{, 08:55}

Добавил файл.
проект.flp
(699.17 КБ) 88 скачиваний

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

SIM800l

#10

Сообщение pan » 14.02.2019{, 09:19}

Njkz, так же как и скриншоты.

сохраните проект
17-48.png
17-48.png (33.96 КБ) 1250 просмотров
и прикрепите к сообщению

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#11

Сообщение Njkz » 14.02.2019{, 14:49}

Большое спасибо за подсказку!!!! Уже выложил. С утра что то затупил. Бывает.

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

SIM800l

#12

Сообщение Golan » 17.02.2019{, 09:42}

Вы повесьте на выходы блоков сравнения дисплейчик и отслеживайте что там происходит, я так до сих пор делаю.
Проверяйте
Вложения
проект.flp
(693.93 КБ) 75 скачиваний
Добро не ценится в современном мире, люди от него наглеют!

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#13

Сообщение Njkz » 18.02.2019{, 08:32}

Я вместо дисплея пытался выводить данные в UART. Пусто.

Отправлено спустя 8 часов 53 минуты 54 секунды:
подскажите еще пож. Может нужно сначала настроить SIM800, а потом уже подключать. Ну не как не хочет работать с ардуинкой. АТ команды принимает. А с ардуинкой никак. ПОЖАЛУЙСТА кто подскажет?

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

SIM800l

#14

Сообщение rw6cm » 18.02.2019{, 18:24}

Njkz писал(а):
11.02.2019{, 12:36}
А что еще обиднее так то,что заливаю чужой с нета - работает.
какой заливаете можно глянуть?
Win10-64, FLProg (portable)

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#15

Сообщение Njkz » 19.02.2019{, 08:43}

конечно можно. Даже нужно. Буду очень благодарен.
проект.flp
(654.89 КБ) 77 скачиваний

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

SIM800l

#16

Сообщение rw6cm » 19.02.2019{, 08:58}

Njkz писал(а):
19.02.2019{, 08:43}
конечно можно.
Этот у вас работает???
Здесь кроме смены пинов rx tx с 2,3 на 10, 11 особой разницы не вижу.

Да интересно, (как написал оппонент ниже), как вы включаете в один пин и нагрузку и ТХ?
Последний раз редактировалось rw6cm 19.02.2019{, 09:32}, всего редактировалось 1 раз.
Причина: дополнено
Win10-64, FLProg (portable)

Аватара пользователя
garry
Рядовой
Сообщения: 99
Зарегистрирован: 22.01.2016{, 11:20}
Репутация: 7

SIM800l

#17

Сообщение garry » 19.02.2019{, 09:03}

В вашем проекте Pin10 в блоке GSM_SoftwareSerial указан как TX и он же указан выходом нагрузки в разделе Tags.

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#18

Сообщение Njkz » 19.02.2019{, 11:09}

Я по быструхе набросал проект и не посмотерел, что на один и тот же пин вывел нагрузку и порт. Проблема в том, что SIM АТ команды выполняет, и даже выполняет команду ATD. А вот через нану нечего не получается.
проект.flp
(655.01 КБ) 66 скачиваний

Аватара пользователя
garry
Рядовой
Сообщения: 99
Зарегистрирован: 22.01.2016{, 11:20}
Репутация: 7

SIM800l

#19

Сообщение garry » 19.02.2019{, 14:13}

RX TX не попутали местами, в последнем сообщении пины 2 и 3 указаны. Проект с нэта у Вас работает с НАНО? Как АТ- команды подаете?

Njkz
Рядовой
Сообщения: 26
Зарегистрирован: 12.01.2018{, 07:04}
Репутация: 0

SIM800l

#20

Сообщение Njkz » 19.02.2019{, 15:47}

через нану. RESET на землю сажаю, а еще через скеч.
pr1.ino
(845 байт) 73 скачивания
. Пробовал брать проект с нэта, работает. А с FLprog, ни в какую. Просто беда.

Ответить

Вернуться в «Спросить у знатоков»