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 и положить ее в переменную. 

 

 

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

 
01// Переменные, хранящие уровень сигнала сотовой сети
02int IntSignalLevel = 0;
03int IntSignalLevelTemp = 0;
04int intNumberLevelFirst = 0;
05int intNumberLevelSecond = 0;
06int FlagSignal = 0;
07 
08int ch = 0;                        //
09String val = "";                   //
10String currStr = "";               //
11String currStrN = "";              //
12char data;                         //
13String dataSms = "";               //
14 
15 
16// Далее пишем в loop
17 
18//.......Кусок кода
19 
20 if(Serial.available()){    
21    mySerial.write(Serial.read());
22  }
23   
24  if (mySerial.available()) {          //есть данные от GSM модуля
25    currStr = "";                      //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
26    currStrN = "";
27    dataSms = "";
28    val = "";
29    while (mySerial.available()) {      //сохраняем входную строку в переменную val
30      ch = mySerial.read();  //int
31      val += char(ch);      // String
32      data = ch;      // char = int
33       
34      //.......Кусок кода
35       
36    }
37      
38// Смотрим данные полученные от модуля +CSQ: 22,0
39    if (val.indexOf("+CSQ") > -1) {
40      Serial.print("Poluchili sms: ");
41      Serial.println(val);
42      for (i=0; i<=20; i++){
43        if (val[i] == 58) {
44          intNumberLevelFirst = val[i+2]-48;
45          if (val[i+3] == 44){ intNumberLevelSecond = 0;}
46          if (val[i+3] != 44){ intNumberLevelSecond = val[i+3]-48;}
47          if (val[i+3] == 44){IntSignalLevel = intNumberLevelFirst;}
48          if (val[i+3] != 44){IntSignalLevel = (intNumberLevelFirst*10) + intNumberLevelSecond;}
49        }
50      }
51      Serial.print("Signal level: ");
52      Serial.println(IntSignalLevel);
53      if (IntSignalLevel == 99 || IntSignalLevel == 0){
54        //.......Кусок кода
55      }
56      if (IntSignalLevel <=10 && IntSignalLevel !=0){
57        //.......Кусок кода
58      }
59      if (IntSignalLevel >= 11 && IntSignalLevel <= 22){
60        //.......Кусок кода
61      }
62      if (IntSignalLevel >= 23 && IntSignalLevel <= 32){
63        //.......Кусок кода
64      }
65    }
66    //.......Кусок кода
67  }

 

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.

01void read_buffer_SIM800L(){
02 
03    /*static*/ boolean isStringMessage = false;
04    /*static*/ String currStr = "";
05    /*static*/ String currStr_head_at = "";
06    char currSymb;
07   
08    if (!Serial3.available())
09       return;
10 
11    
12  while (Serial3.available()) {
13     currSymb = Serial3.read();   
14     if ('\r' == currSymb) {
15         if (isStringMessage) {
16             //если текущая строка - SMS-сообщение или график с сайта,
17             //отреагируем на него соответствующим образом
18             isStringMessage = false;
19             ProcessIncomingBuffer(currStr_head_at, currStr);
20              
21         } else {
22         
23             if (currStr.startsWith("+CMT")) {
24                 //если текущая строка начинается с "+CMT",
25                 //то следующая строка является сообщением
26                 isStringMessage = true;
27                 currStr_head_at = currStr;          
28                 
29             } else {
30                  if (currStr.startsWith("+SAPBR")) {                      
31                       ProcessIncomingBuffer(currStr);
32                        
33                  } else {
34                       if (currStr.startsWith("+HTTPACTION")) {
35                          ProcessIncomingBuffer(currStr);
36                           
37                       } else {
38                            if (currStr.startsWith("+CCLK")) {                              
39                               ProcessIncomingBuffer(currStr);
40                                
41                            } else {
42                                 if (currStr.startsWith("+HTTPREAD")) {
43                                   //если текущая строка начинается с "+HTTPREAD",
44                                   //то следующая строка является скаченным графиком с сайта
45                                   isStringMessage = true;
46                                   currStr_head_at = currStr;                                 
47                                 }
48                              }
49                         }
50                    }
51               }
52           }        
53         
54       currStr = "";
55        
56     } else if ('\n' != currSymb) {
57         currStr += String(currSymb);
58       }
59        
60   delay(10);
61  }   
62     
63}
64 
65void loop() {
66 
67// вычитываем буфер
68  read_buffer_SIM800L();
69 
70}

В данном случае  -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 

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

 

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

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

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10 
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44 
45//===========================Первое срабатывание датчика движения
46  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
47    n1.toCharArray(n,20);
48    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
49    sms.DeleteSMS(1);memset(n,0,20);
50    char smsbuffer[160]="";
51    flag1++;
52    delay(5000); // Ждем 5 секунд
53  }
54//===========================Повторное срабатывание датчика движения
55  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
56    n1.toCharArray(n,20);
57    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
58    sms.DeleteSMS(1);memset(n,0,20);
59    char smsbuffer[160]="";
60    flag1++;
61  }
62 
63  if (flag1>=2){
64    tone(10, 2780, 200); // Сирена
65  }
66 
67 
68pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
69      if (pos) {                    // Если непрочитанные СМС есть, то...
70         
71getsms(); // получаем непрочитанную СМС
72 
73     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" - снять с охраны
74     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
75      
76     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" - Поставить на охрану
77     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
78         
79        sms.DeleteSMS(pos); // удаляем СМС  из симки
80      }
81}
82void getsms()
83{
84sms.GetSMS(1,n,20,smsbuffer,160);
85input_string =String(smsbuffer);
86          }

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

01#define photoPin 8
02#define LedPin 11
03 
04 
05void setup() {
06 
07  Serial.begin(9600);
08  pinMode(photoPin, INPUT);
09  pinMode(LedPin, OUTPUT);
10   
11}
12 
13void loop(){
14  int photoVal = digitalRead(photoPin);
15 
16  //Если обнаружили движение
17  if (photoPin == LOW)
18    digitalWrite(LedPin, LOW);
19    Serial.print("0");
20    
21    delay(5000);
22  }
23  else
24  {
25    Serial.print("1");
26    digitalWrite(LedPin, HIGH);
27      
28    delay(2000);
29  }

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

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

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

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

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

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

 

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

artemon25 пишет:

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

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10 
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44 
45//===========================Первое срабатывание датчика движения
46  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
47    n1.toCharArray(n,20);
48    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
49    sms.DeleteSMS(1);memset(n,0,20);
50    char smsbuffer[160]="";
51    flag1++;
52    delay(5000); // Ждем 5 секунд
53  }
54//===========================Повторное срабатывание датчика движения
55  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
56    n1.toCharArray(n,20);
57    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
58    sms.DeleteSMS(1);memset(n,0,20);
59    char smsbuffer[160]="";
60    flag1++;
61  }
62 
63  if (flag1>=2){
64    tone(10, 2780, 200); // Сирена
65  }
66 
67 
68pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
69      if (pos) {                    // Если непрочитанные СМС есть, то...
70         
71getsms(); // получаем непрочитанную СМС
72 
73     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" - снять с охраны
74     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
75      
76     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" - Поставить на охрану
77     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
78         
79        sms.DeleteSMS(pos); // удаляем СМС  из симки
80      }
81}
82void getsms()
83{
84sms.GetSMS(1,n,20,smsbuffer,160);
85input_string =String(smsbuffer);
86          }

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

01#define photoPin 8
02#define LedPin 11
03 
04 
05void setup() {
06 
07  Serial.begin(9600);
08  pinMode(photoPin, INPUT);
09  pinMode(LedPin, OUTPUT);
10   
11}
12 
13void loop(){
14  int photoVal = digitalRead(photoPin);
15 
16  //Если обнаружили движение
17  if (photoPin == LOW)
18    digitalWrite(LedPin, LOW);
19    Serial.print("0");
20    
21    delay(5000);
22  }
23  else
24  {
25    Serial.print("1");
26    digitalWrite(LedPin, HIGH);
27      
28    delay(2000);
29  }

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

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

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

Во-вторых, фоторезистор подключается к аналоговому входу и он измеряет в 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 буду признателен

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

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

вот смотри:

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10int fotorezistor = A2;
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44//**************Фоторезистор
45  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
46    //действия
47  }
48//===========================Первое срабатывание датчика движения
49  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
50    n1.toCharArray(n,20);
51    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
52    sms.DeleteSMS(1);memset(n,0,20);
53    char smsbuffer[160]="";
54    flag1++;
55    delay(5000); // Ждем 5 секунд
56  }
57//===========================Повторное срабатывание датчика движения
58  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
59    n1.toCharArray(n,20);
60    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
61    sms.DeleteSMS(1);memset(n,0,20);
62    char smsbuffer[160]="";
63    flag1++;
64  }
65 
66  if (flag1>=2){
67    tone(10, 2780, 200); // Сирена
68  }
69 
70 
71pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
72      if (pos) {                    // Если непрочитанные СМС есть, то...
73         
74getsms(); // получаем непрочитанную СМС
75 
76     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" - снять с охраны
77     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
78      
79     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" - Поставить на охрану
80     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
81         
82        sms.DeleteSMS(pos); // удаляем СМС  из симки
83      }
84}
85void getsms()
86{
87sms.GetSMS(1,n,20,smsbuffer,160);
88input_string =String(smsbuffer);
89          }

 

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 буду признателен

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

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

вот смотри:

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10int fotorezistor = A2;
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44//**************Фоторезистор
45  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
46    //действия
47  }
48//===========================Первое срабатывание датчика движения
49  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
50    n1.toCharArray(n,20);
51    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
52    sms.DeleteSMS(1);memset(n,0,20);
53    char smsbuffer[160]="";
54    flag1++;
55    delay(5000); // Ждем 5 секунд
56  }
57//===========================Повторное срабатывание датчика движения
58  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
59    n1.toCharArray(n,20);
60    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
61    sms.DeleteSMS(1);memset(n,0,20);
62    char smsbuffer[160]="";
63    flag1++;
64  }
65 
66  if (flag1>=2){
67    tone(10, 2780, 200); // Сирена
68  }
69 
70 
71pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
72      if (pos) {                    // Если непрочитанные СМС есть, то...
73         
74getsms(); // получаем непрочитанную СМС
75 
76     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" - снять с охраны
77     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
78      
79     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" - Поставить на охрану
80     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
81         
82        sms.DeleteSMS(pos); // удаляем СМС  из симки
83      }
84}
85void getsms()
86{
87sms.GetSMS(1,n,20,smsbuffer,160);
88input_string =String(smsbuffer);
89          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 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 буду признателен

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

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

вот смотри:

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10int fotorezistor = A2;
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44//**************Фоторезистор
45  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
46    //действия
47  }
48//===========================Первое срабатывание датчика движения
49  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
50    n1.toCharArray(n,20);
51    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
52    sms.DeleteSMS(1);memset(n,0,20);
53    char smsbuffer[160]="";
54    flag1++;
55    delay(5000); // Ждем 5 секунд
56  }
57//===========================Повторное срабатывание датчика движения
58  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
59    n1.toCharArray(n,20);
60    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
61    sms.DeleteSMS(1);memset(n,0,20);
62    char smsbuffer[160]="";
63    flag1++;
64  }
65 
66  if (flag1>=2){
67    tone(10, 2780, 200); // Сирена
68  }
69 
70 
71pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
72      if (pos) {                    // Если непрочитанные СМС есть, то...
73         
74getsms(); // получаем непрочитанную СМС
75 
76     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" - снять с охраны
77     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
78      
79     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" - Поставить на охрану
80     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
81         
82        sms.DeleteSMS(pos); // удаляем СМС  из симки
83      }
84}
85void getsms()
86{
87sms.GetSMS(1,n,20,smsbuffer,160);
88input_string =String(smsbuffer);
89          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 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 буду признателен

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

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

вот смотри:

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10int fotorezistor = A2;
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44//**************Фоторезистор
45  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
46    //действия
47  }
48//===========================Первое срабатывание датчика движения
49  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
50    n1.toCharArray(n,20);
51    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
52    sms.DeleteSMS(1);memset(n,0,20);
53    char smsbuffer[160]="";
54    flag1++;
55    delay(5000); // Ждем 5 секунд
56  }
57//===========================Повторное срабатывание датчика движения
58  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
59    n1.toCharArray(n,20);
60    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
61    sms.DeleteSMS(1);memset(n,0,20);
62    char smsbuffer[160]="";
63    flag1++;
64  }
65 
66  if (flag1>=2){
67    tone(10, 2780, 200); // Сирена
68  }
69 
70 
71pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
72      if (pos) {                    // Если непрочитанные СМС есть, то...
73         
74getsms(); // получаем непрочитанную СМС
75 
76     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" - снять с охраны
77     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
78      
79     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" - Поставить на охрану
80     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
81         
82        sms.DeleteSMS(pos); // удаляем СМС  из симки
83      }
84}
85void getsms()
86{
87sms.GetSMS(1,n,20,smsbuffer,160);
88input_string =String(smsbuffer);
89          }

 

спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 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 буду признателен

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

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

вот смотри:

01#include "SIM900.h"
02#include <SoftwareSerial.h>
03 
04#include "sms.h"
05#include "call.h"
06SMSGSM sms;
07CallGSM call;
08 
09//=================Пины 2 и 3 для Подключения GSM модуля
10int fotorezistor = A2;
11int sensor1=0;
12int flag1=0;
13boolean started=false;
14char smsbuffer[160];
15char n[20];
16String n1 = "+79170417032";
17String input_string = "";
18String smsContent = "";
19char sirena[] = "Sirena  vkluchena!";
20char PowerOFF[] = "Snyato s ohrani";
21char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
22char smsW[] ="Postanovka na ohranu!";
23char pos;
24char sendsms[160];
25 
26void setup() {
27  
28 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
29 pinMode(7, OUTPUT);
30 
31Serial.begin(9600);
32  pinMode(4, INPUT); // датчик движения
33//  digitalWrite(4, HIGH);
34  pinMode(5, INPUT); // еще какой-нибудь датчик
35//  digitalWrite(5, HIGH);
36 
37       if (gsm.begin(4800)) {
38          Serial.println("\nstatus=READY");
39          started=true;
40     } else Serial.println("\nstatus=IDLE");
41 
42}
43void loop() {
44//**************Фоторезистор
45  if (analogRead(fotorezistor) >= 1023){ // если значение фоторезистора б.1023, то выполняем следующие дествия
46    //действия
47  }
48//===========================Первое срабатывание датчика движения
49  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
50    n1.toCharArray(n,20);
51    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
52    sms.DeleteSMS(1);memset(n,0,20);
53    char smsbuffer[160]="";
54    flag1++;
55    delay(5000); // Ждем 5 секунд
56  }
57//===========================Повторное срабатывание датчика движения
58  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
59    n1.toCharArray(n,20);
60    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
61    sms.DeleteSMS(1);memset(n,0,20);
62    char smsbuffer[160]="";
63    flag1++;
64  }
65 
66  if (flag1>=2){
67    tone(10, 2780, 200); // Сирена
68  }
69 
70 
71pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
72      if (pos) {                    // Если непрочитанные СМС есть, то...
73         
74getsms(); // получаем непрочитанную СМС
75 
76     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" - снять с охраны
77     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
78      
79     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" - Поставить на охрану
80     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
81         
82        sms.DeleteSMS(pos); // удаляем СМС  из симки
83      }
84}
85void getsms()
86{
87sms.GetSMS(1,n,20,smsbuffer,160);
88input_string =String(smsbuffer);
89          }

 

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

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

 

Все верно 

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

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

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

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

01//**************Фоторезистор
02  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
03// если значение фоторезистора б.1023, то выполняем следующие дествия
04   n1.toCharArray(n,20);
05    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
06    sms.DeleteSMS(1);memset(n,0,20);
07    char smsbuffer[160]="";
08    flag1++;
09    delay(5000); // Ждем 5 секунд
10  }
11   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
12// если значение фоторезистора б.1023, то выполняем следующие дествия
13   n1.toCharArray(n,20);
14    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
15    sms.DeleteSMS(1);memset(n,0,20);
16    char smsbuffer[160]="";
17    flag1++;
18    }
19 
20  if (flag1>=2){
21    tone(10, 2780, 200); // Сирена
22  }

 

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

artemon25 пишет:

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

01//**************Фоторезистор
02  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
03// если значение фоторезистора б.1023, то выполняем следующие дествия
04   n1.toCharArray(n,20);
05    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
06    sms.DeleteSMS(1);memset(n,0,20);
07    char smsbuffer[160]="";
08    flag1++;
09    delay(5000); // Ждем 5 секунд
10  }
11   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
12// если значение фоторезистора б.1023, то выполняем следующие дествия
13   n1.toCharArray(n,20);
14    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
15    sms.DeleteSMS(1);memset(n,0,20);
16    char smsbuffer[160]="";
17    flag1++;
18    }
19 
20  if (flag1>=2){
21    tone(10, 2780, 200); // Сирена
22  }

 

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

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

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

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

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

stambylov пишет:

artemon25 пишет:

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

01//**************Фоторезистор
02  if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==0){
03// если значение фоторезистора б.1023, то выполняем следующие дествия
04   n1.toCharArray(n,20);
05    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
06    sms.DeleteSMS(1);memset(n,0,20);
07    char smsbuffer[160]="";
08    flag1++;
09    delay(5000); // Ждем 5 секунд
10  }
11   if ((analogRead(fotorezistor) >= 1023)&& sensor1==1 && flag1==1){
12// если значение фоторезистора б.1023, то выполняем следующие дествия
13   n1.toCharArray(n,20);
14    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
15    sms.DeleteSMS(1);memset(n,0,20);
16    char smsbuffer[160]="";
17    flag1++;
18    }
19 
20  if (flag1>=2){
21    tone(10, 2780, 200); // Сирена
22  }

 

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

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

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

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

 

будет и геркон и датчик движения и крометого лазер будет светить в фоторезистор и при прерыванеие луча должен срабатывать датчик и сообщать мне посредствам смс и кроме того я собрал вот такой (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 пишет:

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

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

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

1Serial.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, ну и питание проверяйте - очень требователен...