SIM800L mini

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

energokom пишет:
Short Circuit пишет:

а не проще время из GSM сети брать?   или нужно ну оочень точное время?

AT+CLTS=1 из сети тоже не берет. Или есть другой способ?

 

 

ао попробуйте дать команду и так оставить на несколько часов.?

есть инфа, что  опсос может не сразу давать новое время, а и через час или более синхронизация происходит.

Хотя я лично - сомневаюсь. Но проверьте при  случае.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.

Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа

+CSQ:

21,0

ОК

нужно взять цифру 21 и положить ее в переменную. 

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а стринг используете?

верно говорят - библиотеки для gsm  модулей - зло...

 

и разве ответ не +CSQ: 21,0 - в одной строке? помоему он в одной приходит.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

dr.lmg пишет:

Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.

Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа

+CSQ:

21,0

ОК

нужно взять цифру 21 и положить ее в переменную. 

 

 

Кусочки кода из моей проги:



 

 // Переменные, хранящие уровень сигнала сотовой сети
int IntSignalLevel = 0;
int IntSignalLevelTemp = 0;
int intNumberLevelFirst = 0;
int intNumberLevelSecond = 0;
int FlagSignal = 0;

int ch = 0;                        // 
String val = "";                   // 
String currStr = "";               // 
String currStrN = "";              // 
char data;                         // 
String dataSms = "";               // 


// Далее пишем в loop

//.......Кусок кода

 if(Serial.available()){     
    mySerial.write(Serial.read()); 
  }
  
  if (mySerial.available()) {          //есть данные от GSM модуля
    currStr = "";                      //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
    currStrN = "";
    dataSms = "";
    val = "";
    while (mySerial.available()) {      //сохраняем входную строку в переменную val
      ch = mySerial.read();  //int
      val += char(ch);      // String
      data = ch;      // char = int
      
      //.......Кусок кода
      
    }
     
// Смотрим данные полученные от модуля +CSQ: 22,0
    if (val.indexOf("+CSQ") > -1) {
      Serial.print("Poluchili sms: ");
      Serial.println(val);
      for (i=0; i<=20; i++){
        if (val[i] == 58) {
          intNumberLevelFirst = val[i+2]-48;
          if (val[i+3] == 44){ intNumberLevelSecond = 0;}
          if (val[i+3] != 44){ intNumberLevelSecond = val[i+3]-48;}
          if (val[i+3] == 44){IntSignalLevel = intNumberLevelFirst;}
          if (val[i+3] != 44){IntSignalLevel = (intNumberLevelFirst*10) + intNumberLevelSecond;}
        }
      }
      Serial.print("Signal level: ");
      Serial.println(IntSignalLevel);
      if (IntSignalLevel == 99 || IntSignalLevel == 0){
        //.......Кусок кода
      }
      if (IntSignalLevel <=10 && IntSignalLevel !=0){
        //.......Кусок кода
      }
      if (IntSignalLevel >= 11 && IntSignalLevel <= 22){
        //.......Кусок кода
      }
      if (IntSignalLevel >= 23 && IntSignalLevel <= 32){
        //.......Кусок кода
      }
    }
    //.......Кусок кода
  }

      

 

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

stambylov, не поясните, что происходит в строках 43-48?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Short Circuit, стринг как gsm библиотеку, или как оператор?

obuhanoe
Offline
Зарегистрирован: 18.05.2016

dr.lmg пишет:

Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.

Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа

+CSQ:

21,0

ОК

нужно взять цифру 21 и положить ее в переменную. 

 

Вам нужно обработать ответ от модуля, правильно тут сказали он должен приходить в одной строке, т.е. Вы получили ответ - +CSQ: 22,0

Тогда берете символы от двоеточия, до первой запятой, удаляя пробелы - это и будет значение.

Операторы indexOf и substring Вам помогут в этом при работе со String.

void read_buffer_SIM800L(){

    /*static*/ boolean isStringMessage = false;
    /*static*/ String currStr = "";
    /*static*/ String currStr_head_at = ""; 
    char currSymb; 
  
    if (!Serial3.available())
       return;

   
  while (Serial3.available()) {
     currSymb = Serial3.read();    
     if ('\r' == currSymb) {
         if (isStringMessage) {
             //если текущая строка - SMS-сообщение или график с сайта,
             //отреагируем на него соответствующим образом
             isStringMessage = false;
             ProcessIncomingBuffer(currStr_head_at, currStr);
			 
         } else {
        
             if (currStr.startsWith("+CMT")) {
                 //если текущая строка начинается с "+CMT",
                 //то следующая строка является сообщением
                 isStringMessage = true;
                 currStr_head_at = currStr;           
                
             } else {
                  if (currStr.startsWith("+SAPBR")) {                       
                       ProcessIncomingBuffer(currStr);
					   
                  } else {
                       if (currStr.startsWith("+HTTPACTION")) {
                          ProcessIncomingBuffer(currStr);
						  
                       } else {
                            if (currStr.startsWith("+CCLK")) {                               
                               ProcessIncomingBuffer(currStr);
							   
                            } else {
                                 if (currStr.startsWith("+HTTPREAD")) {
                                   //если текущая строка начинается с "+HTTPREAD",
                                   //то следующая строка является скаченным графиком с сайта
                                   isStringMessage = true;
                                   currStr_head_at = currStr;                                  
                                 }
                              }
                         }
                    }
               }
           }         
        
       currStr = "";
       
     } else if ('\n' != currSymb) {
         currStr += String(currSymb);
       }
       
   delay(10);
  }    
    
}

void loop() {

// вычитываем буфер 
  read_buffer_SIM800L();

}

В данном случае  -currStr_head_at это есть ответ от модуля общение по АТ командам, в нем и будет ваш ответ

Skvo
Offline
Зарегистрирован: 13.03.2016

[покусано]

извиняюсь, не туда бросил....

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

dr.lmg пишет:
Short Circuit, стринг как gsm библиотеку, или как оператор?

а как хотите, раз библиотека gsm вам не дает требуемое.

Тут в ветке полно примеров как считать значение из АТ команды, честно говоря, не совсем понимаю зачем и спрашивать.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

dr.lmg пишет:
stambylov, не поясните, что происходит в строках 43-48?

Таблица ASCII 

//Начинаем цикл поиска нужного символа по полученным данным (+CSQ: 24,0)
for (i=0; i<=20; i++){
        //Если i-тый символ = ":", то выполняем далее действия в функции if
        if (val[i] == 58) { // 58 - это символ :
          // т.к. сообщение (+CSQ: 24,0), i=:, то нас интересует значение которое находится справа через символ (пробел),
          // т.е. говорим что первый символ уровня сигнала будет равен i+2 (В НАШЕМ СЛУЧАЕ это буде "2")
          intNumberLevelFirst = val[i+2]-48; // т.к. число приходит к нам в десятичном формате, надо отнять 48
                                             // ПРимер: пришло число 2(это мы только видем в порту) (в таблице ASCII это номер 50)
                                             // надо вычесть 50-48 = 2, вот и все
          //идем далее, если следующий символ  равен "," (в таблице ASCII это номер 44), то присваеваем 0, если не равен "," идем далее
          if (val[i+3] == 44){ intNumberLevelSecond = 0;}
          //идем далее, если символ  НЕ равен "," (в таблице ASCII это номер 44), то присваеваем значение (52-48=4)
          if (val[i+3] != 44){ intNumberLevelSecond = val[i+3]-48;}
          //идем далее, если символ  равен ",", присваеваем выходному значению IntSignalLevel, значение которое получили ранее, это 2
          if (val[i+3] == 44){IntSignalLevel = intNumberLevelFirst;}
          //идем далее, если символ  НЕ равен ",", присваеваем выходному значению IntSignalLevel следующее выражение
          // (2*10)+4 = 24, вот мы и получили уровень сигнала
          if (val[i+3] != 44){IntSignalLevel = (intNumberLevelFirst*10) + intNumberLevelSecond;}
        }
      }

 

artemon25
Offline
Зарегистрирован: 25.12.2015

Доброго всем вечера подскажите кто нибудь  пользовался фоторезистором как датчик лазерной сигнализации в связке с sim800l у меня есть полностью рабочий скетч для сигнализации но вот ни как не могу добавить туда фоторезистор. вот скетч для sim800l

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля

int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

а вот скетч для фоторезистора который тоже отлично работает

#define photoPin 8
#define LedPin 11


void setup() {

  Serial.begin(9600);
  pinMode(photoPin, INPUT);
  pinMode(LedPin, OUTPUT);
  
}

void loop(){
  int photoVal = digitalRead(photoPin);

  //Если обнаружили движение
  if (photoPin == LOW) 
    digitalWrite(LedPin, LOW);
    Serial.print("0");
   
    delay(5000);
  }
  else
  {
    Serial.print("1");
    digitalWrite(LedPin, HIGH);
     
    delay(2000);
  }

но при сливание скетчев почему то у меня фоторезистор срабатывает сразу. 

Вообщем нужен совет по добавлению фоторезистора в готовый скетч. Заранее спасибо всем

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Во-первых, скетч я думаю не вами написан.

Во-вторых, фоторезистор подключается к аналоговому входу и он измеряет в 1024 градации, видеоурок

В-третьих, второй ваш скетч, не для фоторезистора, а для датчика движения(объемника)

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

Доброго всем вечера подскажите кто нибудь  пользовался фоторезистором как датчик лазерной сигнализации в связке с sim800l у меня есть полностью рабочий скетч для сигнализации но вот ни как не могу добавить туда фоторезистор. вот скетч для sim800l

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля

int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

а вот скетч для фоторезистора который тоже отлично работает

#define photoPin 8
#define LedPin 11


void setup() {

  Serial.begin(9600);
  pinMode(photoPin, INPUT);
  pinMode(LedPin, OUTPUT);
  
}

void loop(){
  int photoVal = digitalRead(photoPin);

  //Если обнаружили движение
  if (photoPin == LOW) 
    digitalWrite(LedPin, LOW);
    Serial.print("0");
   
    delay(5000);
  }
  else
  {
    Serial.print("1");
    digitalWrite(LedPin, HIGH);
     
    delay(2000);
  }

но при сливание скетчев почему то у меня фоторезистор срабатывает сразу. 

Вообщем нужен совет по добавлению фоторезистора в готовый скетч. Заранее спасибо всем

Во-первых, скетч я думаю не вами написан.

Во-вторых, фоторезистор подключается к аналоговому входу и он измеряет в 1024 градации, видеоурок

В-третьих, второй ваш скетч, не для фоторезистора, а для датчика движения(объемника)

artemon25
Offline
Зарегистрирован: 25.12.2015

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

artemon25
Offline
Зарегистрирован: 25.12.2015

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light-module-detects-photosensitive-photosensitive-resistor-module-for-arduino/32320804812.html?spm=2114.13010608.0.0.cj7poI) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

вот смотри:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля
int fotorezistor = A2;
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {
//**************Фоторезистор
  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
    //действия
  }
//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

artemon25
Offline
Зарегистрирован: 25.12.2015

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light-module-detects-photosensitive-photosensitive-resistor-module-for-arduino/32320804812.html?spm=2114.13010608.0.0.cj7poI) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

вот смотри:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля
int fotorezistor = A2;
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {
//**************Фоторезистор
  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
    //действия
  }
//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light-module-detects-photosensitive-photosensitive-resistor-module-for-arduino/32320804812.html?spm=2114.13010608.0.0.cj7poI) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

вот смотри:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля
int fotorezistor = A2;
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {
//**************Фоторезистор
  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
    //действия
  }
//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать

Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в

 

Все верно 

artemon25
Offline
Зарегистрирован: 25.12.2015

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light-module-detects-photosensitive-photosensitive-resistor-module-for-arduino/32320804812.html?spm=2114.13010608.0.0.cj7poI) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

вот смотри:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля
int fotorezistor = A2;
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {
//**************Фоторезистор
  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
    //действия
  }
//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать

Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в

 

Все верно 

у меня фоторезистор на плате как датчик я так понимаю что там не нужны резисторы

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

stambylov пишет:

artemon25 пишет:

всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий

                        во вторых мне сказали что  вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light-module-detects-photosensitive-photosensitive-resistor-module-for-arduino/32320804812.html?spm=2114.13010608.0.0.cj7poI) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0 

                      и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.

и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен

Вот урок по подключению фоторезистора УРОК

я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя

вот смотри:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля
int fotorezistor = A2;
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79170417032";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);
  pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {
//**************Фоторезистор
  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
    //действия
  }
//===========================Первое срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать

Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в

 

Все верно 

у меня фоторезистор на плате как датчик я так понимаю что там не нужны резисторы

Да, увидел,  проподкподключаешь к gnd, +5v, и к А2

artemon25
Offline
Зарегистрирован: 25.12.2015

спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь

//**************Фоторезистор
  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

artemon25 пишет:

спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь

//**************Фоторезистор
  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }

 

А теперь вопрос,  а зачем тебе знать освещенность в помещении? 

Если при солнечной погоде у тебя будут одни значения,  а ночью будет другие.

Кстати значение,которое тебе нужно,  надо эксперементально определять,  для определения выводи значения с датчика в сериал порт. 

Для охраны, я бы взял обычный геркон,  для обнаружения открытия двери,  или еще один д. Объема 

artemon25
Offline
Зарегистрирован: 25.12.2015

stambylov пишет:

artemon25 пишет:

спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь

//**************Фоторезистор
  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
// если значение фоторезистора б.1023, то выполняем следующие дествия
   n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }

 

А теперь вопрос,  а зачем тебе знать освещенность в помещении? 

Если при солнечной погоде у тебя будут одни значения,  а ночью будет другие.

Кстати значение,которое тебе нужно,  надо эксперементально определять,  для определения выводи значения с датчика в сериал порт. 

Для охраны, я бы взял обычный геркон,  для обнаружения открытия двери,  или еще один д. Объема 

 

будет и геркон и датчик движения и крометого лазер будет светить в фоторезистор и при прерыванеие луча должен срабатывать датчик и сообщать мне посредствам смс и кроме того я собрал вот такой (http://arduino.ru/forum/apparatnye-voprosy/nuzhno-otslezhivat-nalichie-2...) пост 23 датчик который должен оповещать о пропадание 220 вольт и наоборот так что может быть мне понадобится помощь и при вписывание этого датчика в скетч, может есть мысли как это сделать

artemon25
Offline
Зарегистрирован: 25.12.2015

пробовал сегодня скетч с фоторезистором в принципе работает только вот найти и выставить нужное значение пришлось помучаться теперь осталось подключить датчик 220 вольт. Спасибо stambylov

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

obuhanoe пишет:

Можно ли использовать данный макрос следующим образом:

String str="123";
Serial.println(F(str));
//или
Serial.println(F(str + "qwerty"));

У меня получилось только так - 

Serial.println(F("123"));

кстати, Serial.println(F(str + "qwerty"));  - именно 328 не умеет, может быть другая платформа умеет, можем стм ??  как то так должно быть: Serial.println ((str)+(F("qwerty")));   

переменную писать во флеш через сериал точно не получится - ругается. Может быть существуют другие макросы для организации в зоне флеш - писать переменные, хранить номера телефонов..

Еще вопрос: а скоько телефонов можно хранить на 10кб флеша например?

если внешнюю память то какую? Ктонибудь решал подобное? Хочу изучить как это сделать, к примеру как хранить 3000 номеров на флеш и  сравнивать с тем кто звонит -  он в черном списке или в белом?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. Прежде, чем рассуждать, умеет или нет, постарайтесь четко сформулировать, какого именно умения Вы хотите добиться. Может оказаться, что это принципиально невозможно.

2. Считайте, что flash - это ROM. Если нужно куда-то сохранять информацию так, чтобы она не терялась при перезагрузке - специально для этого есть EEPROM. Если ее объема недостаточно, то CD-card. Есть и "промежуточный" вариант - внешняя EEPROM, подключаемая до I2C.

3. Чтобы узнать, сколько элементов XXX можно хранить в памяти объемом YYY, нужно YYY поделить на длину XXX.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

 хорошо, к примеру +480871234567 - это 13 байт? значит 1000 номеров - это примерно  13кб ?

что быстрее будет работать  CD-card или  внешняя EEPROM, подключаемая к I2C ?

Реально за доли секунды отыскать номер +480871234567 среди одной-двух тысяч подобных записаных в епром или сдкард ?

заранее спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я бы сказал, что +480871234567 - это не более 6 байт.

Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).

По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

У кого-нибудь с Теле2 и Мотивом этот модуль завелся?

DenBak
Offline
Зарегистрирован: 30.01.2017

fly245 пишет:

У кого-нибудь с Теле2 и Мотивом этот модуль завелся?

С Мотивом не пробовал, а вот с Теле2 и МТС у меня без проблем работает.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

DenBak пишет:

fly245 пишет:

У кого-нибудь с Теле2 и Мотивом этот модуль завелся?

С Мотивом не пробовал, а вот с Теле2 и МТС у меня без проблем работает.

Вчера пробовал с Теле2-нивкакую.Даже на запрос оператора не пишет.Мотив тоже тишина.Пробовал с мегафоном-нормально.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Еще одна проблема-при подсоединении к компу через адаптер на pl2303-модуль шлет мусор в порт,не дает вводить ат команды

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

fly245 пишет:

Еще одна проблема-при подсоединении к компу через адаптер на pl2303-модуль шлет мусор в порт,не дает вводить ат команды

то не модуль, не наговаривайте, то ваше соединение  так себя ведет. это раз.

ну  и прежде чем вставлять разные симкарты - не узнавали какой стандарт связи оператор поддерживает?

он может не поддерживать gsm например... может там CDMA ?.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

andriano пишет:

Я бы сказал, что +480871234567 - это не более 6 байт.

Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).

По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.

сортировка там не получится, номера добавляться будут по мере появления, не все сразу.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Что мотив,что теле2-стандарт GSM.При воткнул в модуль м590-нормально заработала симка теле2.На ат команды отвечает

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Short Circuit пишет:

andriano пишет:

По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.

сортировка там не получится, номера добавляться будут по мере появления, не все сразу.

И почему же не получится сортировка?

russo
Offline
Зарегистрирован: 20.11.2014

А как данный модуль по GPRS работает? Как часто происходят разрывы соединения с сервером по инету?

Узаю в приложении BLYNKa , не могу добиться устойчивой связи с серваком Blynka

 

obuhanoe
Offline
Зарегистрирован: 18.05.2016

russo пишет:

А как данный модуль по GPRS работает? Как часто происходят разрывы соединения с сервером по инету?

Узаю в приложении BLYNKa , не могу добиться устойчивой связи с серваком Blynka

на мегафоне и ростелекоме юзаю gprs - на мегафоне деактивация соединения присходит не чаще чем через пару часов, на ростелекоме ровно через 30 мин бездействия. В остальном полный норм.

malic
Offline
Зарегистрирован: 25.02.2017

Народ, посоветуйте ...

Уна + sim800l, как тут пишут красненькая. Все питаю от ноутбучного бп у которого на выходе 19в и больше 4,5А. Затем dc-dc понижайка: https://ru.aliexpress.com/item/5-pcs-Ultra-Small-Size-DC-DC-Step-Down-Power-Supply-Module-3A-Adjustable-Buck-Converter/32261885063.html?spm=2114.13010608.0.0.6nNoEL

Понижайку проверял, на 4в тянет 2,5А ...

Понижаю до 9в, которые подаю на Vin уны и на еще одну такую же понижайку с которой беру 4В и подаю на sim800l. Согласовал уровни через делитель напрядения на резисторах. Звонки проходят, смс ки принимаются, но ... Скажем, подаю питание, на модеме сначала происходят частые мигания, потом редкие - зарегистрировался. Если я звоню на модем секунд через 30, приблизительно, звонок проходит, отправляю смс, смска приходит. Проходит скажем пару минут, звоню - обонент не обонент, второй звонок проходит. Опять небольшой интервал времени, отправляю смс ... тишина ... звоню, абонент не абонент, еще раз звоню, абонент в сети, приходит смс ...

Я было подумал - засыпает. Даю ему: AT+CFUN=1,1 в ответ ок, но ничего не меняется, поведение такое же ...

+CSQ: 14,0

+CBC: 0,69,3955

Сигнал, я так понимаю, уверенный, питания хватает ...

В общем, что может быть причиной, и какую емкость на входе по питанию ставить на модем ...

obuhanoe
Offline
Зарегистрирован: 18.05.2016

malic пишет:

Народ, посоветуйте ...

Уна + sim800l, как тут пишут красненькая. Все питаю от ноутбучного бп у которого на выходе 19в и больше 4,5А. Затем dc-dc понижайка: https://ru.aliexpress.com/item/5-pcs-Ultra-Small-Size-DC-DC-Step-Down-Power-Supply-Module-3A-Adjustable-Buck-Converter/32261885063.html?spm=2114.13010608.0.0.6nNoEL

Понижайку проверял, на 4в тянет 2,5А ...

Понижаю до 9в, которые подаю на Vin уны и на еще одну такую же понижайку с которой беру 4В и подаю на sim800l. Согласовал уровни через делитель напрядения на резисторах. Звонки проходят, смс ки принимаются, но ... Скажем, подаю питание, на модеме сначала происходят частые мигания, потом редкие - зарегистрировался. Если я звоню на модем секунд через 30, приблизительно, звонок проходит, отправляю смс, смска приходит. Проходит скажем пару минут, звоню - обонент не обонент, второй звонок проходит. Опять небольшой интервал времени, отправляю смс ... тишина ... звоню, абонент не абонент, еще раз звоню, абонент в сети, приходит смс ...

Я было подумал - засыпает. Даю ему: AT+CFUN=1,1 в ответ ок, но ничего не меняется, поведение такое же ...

+CSQ: 14,0

+CBC: 0,69,3955

Сигнал, я так понимаю, уверенный, питания хватает ...

В общем, что может быть причиной, и какую емкость на входе по питанию ставить на модем ...

попробуйте произвести теже действия только через UART TTL и понаблюдайте за состоянием модуля в терминальной программе.

malic
Offline
Зарегистрирован: 25.02.2017

Вы имеете в виду монитор порта ардуино иде или через usb-ttl к пк?

obuhanoe
Offline
Зарегистрирован: 18.05.2016

malic пишет:

Вы имеете в виду монитор порта ардуино иде или через usb-ttl к пк?

через usb-ttl к пк!

malic
Offline
Зарегистрирован: 25.02.2017

Еще не приобрел ... попробую ...

obuhanoe
Offline
Зарегистрирован: 18.05.2016

malic пишет:

Еще не приобрел ... попробую ...

Арудина сама может выступить как UART TTL 

http://www.2150692.ru/faq/34-arduino-v-kachestve-usb-to-serial-ttl-konvertora

malic
Offline
Зарегистрирован: 25.02.2017

obuhanoe пишет:

Арудина сама может выступить как UART TTL 

http://www.2150692.ru/faq/34-arduino-v-kachestve-usb-to-serial-ttl-konvertora

А в этом случае как уровни согласовывать, что то не соображу ...

 

malic
Offline
Зарегистрирован: 25.02.2017

Short Circuit пишет:

если с терминалки не удалет - то очень странно.

 у меня со всех модулей в терминалке честно все команды работают, в том числе и эта.

V-max VL пишет:

Удивителен еще вот какой факт: получаешь значит цифиру (например +GMGS: 30) и думаешь, что в памяти симки сохраняются 30 смс-ок. Делаешь DEL ALL или DEL SENT, получаешь положительный ответ, пытаешься (для контроля) прочитать группы смс-ок, в ответ пусто. Думаешь: Всё, работает. Модуль шлет смс-ку и в ответ: +GMGS: 31. Может все таки просто счетчик?

Так, что в итоге? Счетчик? У меня аналогично, не удаляет ...

И еще вопрос: на AT+CREG? отдает +CREG: 0,1 Первая цифра это: "нет кода регистрации", а вторая: "зарегистрирован, домашняя сеть". Что за код регистрации? Это печально, что его нету или так и должно быть.

По подключению  к консоли: все рэади

Цитата:
 
+CPIN: READY
Call Ready
SMS Ready
+CMGS: 54
OK

На питание не матерится, лампочка моргает редко (зарегестрирован), но периодически абонент не абонент...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

даташит посмотрите.. там все ответы на ваши вопросы.....

EvgeniS
Offline
Зарегистрирован: 15.04.2017

Тоже вот решил попробовать на sim800L, цена привлекательна. Модуль не видит сим-карту, при включении выдает +CPIN: NOT INSERTED

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

 прочитайте всю ветку. 100 раз уже писали что симку надо правильно ставить, если симка 4G то не получится запустить на 800 нужен 808, ну и питание проверяйте - очень требователен...