Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.
Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа
Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса 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){
//.......Кусок кода
}
}
//.......Кусок кода
}
Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса 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 это есть ответ от модуля общение по АТ командам, в нем и будет ваш ответ
//Начинаем цикл поиска нужного символа по полученным данным (+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;}
}
}
Доброго всем вечера подскажите кто нибудь пользовался фоторезистором как датчик лазерной сигнализации в связке с 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);
}
а вот скетч для фоторезистора который тоже отлично работает
Доброго всем вечера подскажите кто нибудь пользовался фоторезистором как датчик лазерной сигнализации в связке с 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);
}
а вот скетч для фоторезистора который тоже отлично работает
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
//**************Фоторезистор
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); // Сирена
}
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
//**************Фоторезистор
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); // Сирена
}
А теперь вопрос, а зачем тебе знать освещенность в помещении?
Если при солнечной погоде у тебя будут одни значения, а ночью будет другие.
Кстати значение,которое тебе нужно, надо эксперементально определять, для определения выводи значения с датчика в сериал порт.
Для охраны, я бы взял обычный геркон, для обнаружения открытия двери, или еще один д. Объема
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
//**************Фоторезистор
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 вольт и наоборот так что может быть мне понадобится помощь и при вписывание этого датчика в скетч, может есть мысли как это сделать
пробовал сегодня скетч с фоторезистором в принципе работает только вот найти и выставить нужное значение пришлось помучаться теперь осталось подключить датчик 220 вольт. Спасибо stambylov
кстати, Serial.println(F(str + "qwerty")); - именно 328 не умеет, может быть другая платформа умеет, можем стм ?? как то так должно быть: Serial.println ((str)+(F("qwerty")));
переменную писать во флеш через сериал точно не получится - ругается. Может быть существуют другие макросы для организации в зоне флеш - писать переменные, хранить номера телефонов..
Еще вопрос: а скоько телефонов можно хранить на 10кб флеша например?
если внешнюю память то какую? Ктонибудь решал подобное? Хочу изучить как это сделать, к примеру как хранить 3000 номеров на флеш и сравнивать с тем кто звонит - он в черном списке или в белом?
1. Прежде, чем рассуждать, умеет или нет, постарайтесь четко сформулировать, какого именно умения Вы хотите добиться. Может оказаться, что это принципиально невозможно.
2. Считайте, что flash - это ROM. Если нужно куда-то сохранять информацию так, чтобы она не терялась при перезагрузке - специально для этого есть EEPROM. Если ее объема недостаточно, то CD-card. Есть и "промежуточный" вариант - внешняя EEPROM, подключаемая до I2C.
3. Чтобы узнать, сколько элементов XXX можно хранить в памяти объемом YYY, нужно YYY поделить на длину XXX.
Я бы сказал, что +480871234567 - это не более 6 байт.
Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).
По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.
Я бы сказал, что +480871234567 - это не более 6 байт.
Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).
По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.
сортировка там не получится, номера добавляться будут по мере появления, не все сразу.
А как данный модуль по GPRS работает? Как часто происходят разрывы соединения с сервером по инету?
Узаю в приложении BLYNKa , не могу добиться устойчивой связи с серваком Blynka
на мегафоне и ростелекоме юзаю gprs - на мегафоне деактивация соединения присходит не чаще чем через пару часов, на ростелекоме ровно через 30 мин бездействия. В остальном полный норм.
Понижаю до 9в, которые подаю на Vin уны и на еще одну такую же понижайку с которой беру 4В и подаю на sim800l. Согласовал уровни через делитель напрядения на резисторах. Звонки проходят, смс ки принимаются, но ... Скажем, подаю питание, на модеме сначала происходят частые мигания, потом редкие - зарегистрировался. Если я звоню на модем секунд через 30, приблизительно, звонок проходит, отправляю смс, смска приходит. Проходит скажем пару минут, звоню - обонент не обонент, второй звонок проходит. Опять небольшой интервал времени, отправляю смс ... тишина ... звоню, абонент не абонент, еще раз звоню, абонент в сети, приходит смс ...
Я было подумал - засыпает. Даю ему: AT+CFUN=1,1 в ответ ок, но ничего не меняется, поведение такое же ...
+CSQ: 14,0
+CBC: 0,69,3955
Сигнал, я так понимаю, уверенный, питания хватает ...
В общем, что может быть причиной, и какую емкость на входе по питанию ставить на модем ...
Понижаю до 9в, которые подаю на Vin уны и на еще одну такую же понижайку с которой беру 4В и подаю на sim800l. Согласовал уровни через делитель напрядения на резисторах. Звонки проходят, смс ки принимаются, но ... Скажем, подаю питание, на модеме сначала происходят частые мигания, потом редкие - зарегистрировался. Если я звоню на модем секунд через 30, приблизительно, звонок проходит, отправляю смс, смска приходит. Проходит скажем пару минут, звоню - обонент не обонент, второй звонок проходит. Опять небольшой интервал времени, отправляю смс ... тишина ... звоню, абонент не абонент, еще раз звоню, абонент в сети, приходит смс ...
Я было подумал - засыпает. Даю ему: AT+CFUN=1,1 в ответ ок, но ничего не меняется, поведение такое же ...
+CSQ: 14,0
+CBC: 0,69,3955
Сигнал, я так понимаю, уверенный, питания хватает ...
В общем, что может быть причиной, и какую емкость на входе по питанию ставить на модем ...
попробуйте произвести теже действия только через UART TTL и понаблюдайте за состоянием модуля в терминальной программе.
у меня со всех модулей в терминалке честно все команды работают, в том числе и эта.
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
На питание не матерится, лампочка моргает редко (зарегестрирован), но периодически абонент не абонент...
прочитайте всю ветку. 100 раз уже писали что симку надо правильно ставить, если симка 4G то не получится запустить на 800 нужен 808, ну и питание проверяйте - очень требователен...
а не проще время из GSM сети брать? или нужно ну оочень точное время?
ао попробуйте дать команду и так оставить на несколько часов.?
есть инфа, что опсос может не сразу давать новое время, а и через час или более синхронизация происходит.
Хотя я лично - сомневаюсь. Но проверьте при случае.
Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.
Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа
+CSQ:
21,0
ОК
нужно взять цифру 21 и положить ее в переменную.
а стринг используете?
верно говорят - библиотеки для gsm модулей - зло...
и разве ответ не +CSQ: 21,0 - в одной строке? помоему он в одной приходит.
Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.
Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа
+CSQ:
21,0
ОК
нужно взять цифру 21 и положить ее в переменную.
Кусочки кода из моей проги:
stambylov, не поясните, что происходит в строках 43-48?
Short Circuit, стринг как gsm библиотеку, или как оператор?
Коллеги, подскажите. Перерыл весь форум, не нашел. Подвис на задачке: нужно получить от модуля значение зпароса AT+CSQ (уровень сигнала) и сохранить первую цифру (до запятой которая) в переменную.
Пользую модуль SIM900. В монитор порта данные модуль выводит, а вот как их поймать без монитора и в переменную сохранить - никак не пойму. Т.е. из полученного ответа
+CSQ:
21,0
ОК
нужно взять цифру 21 и положить ее в переменную.
Вам нужно обработать ответ от модуля, правильно тут сказали он должен приходить в одной строке, т.е. Вы получили ответ - +CSQ: 22,0
Тогда берете символы от двоеточия, до первой запятой, удаляя пробелы - это и будет значение.
Операторы indexOf и substring Вам помогут в этом при работе со String.
В данном случае -currStr_head_at это есть ответ от модуля общение по АТ командам, в нем и будет ваш ответ
[покусано]
извиняюсь, не туда бросил....
а как хотите, раз библиотека gsm вам не дает требуемое.
Тут в ветке полно примеров как считать значение из АТ команды, честно говоря, не совсем понимаю зачем и спрашивать.
Таблица ASCII
Доброго всем вечера подскажите кто нибудь пользовался фоторезистором как датчик лазерной сигнализации в связке с sim800l у меня есть полностью рабочий скетч для сигнализации но вот ни как не могу добавить туда фоторезистор. вот скетч для sim800l
а вот скетч для фоторезистора который тоже отлично работает
но при сливание скетчев почему то у меня фоторезистор срабатывает сразу.
Вообщем нужен совет по добавлению фоторезистора в готовый скетч. Заранее спасибо всем
Во-первых, скетч я думаю не вами написан.
Во-вторых, фоторезистор подключается к аналоговому входу и он измеряет в 1024 градации, видеоурок
В-третьих, второй ваш скетч, не для фоторезистора, а для датчика движения(объемника)
Доброго всем вечера подскажите кто нибудь пользовался фоторезистором как датчик лазерной сигнализации в связке с sim800l у меня есть полностью рабочий скетч для сигнализации но вот ни как не могу добавить туда фоторезистор. вот скетч для sim800l
а вот скетч для фоторезистора который тоже отлично работает
но при сливание скетчев почему то у меня фоторезистор срабатывает сразу.
Вообщем нужен совет по добавлению фоторезистора в готовый скетч. Заранее спасибо всем
Во-первых, скетч я думаю не вами написан.
Во-вторых, фоторезистор подключается к аналоговому входу и он измеряет в 1024 градации, видеоурок
В-третьих, второй ваш скетч, не для фоторезистора, а для датчика движения(объемника)
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
Вот урок по подключению фоторезистора УРОК
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (https://ru.aliexpress.com/item/KY-018-photosensitive-sensor-module-light...) можно подключить и к цифрому пину и я при подключение получаю в монитре порта 1 или 0
и в третьих да действительно тот скетч для пир датчика но при проверке при подключение фоторезистора он работает как надо.
и последнее спасибо конечно за то что откликнулись но если у вас есть решение для подключения фоторезистора будь то к цифре или к аналогу и сливания с со скетчем sim800l буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (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 буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
вот смотри:
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (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 буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
вот смотри:
спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (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 буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
вот смотри:
спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать
Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в
Все верно
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (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 буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
вот смотри:
спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать
Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в
Все верно
у меня фоторезистор на плате как датчик я так понимаю что там не нужны резисторы
всё правильно во первых я и не говорил что это мой скетч я говорил что он рабочий
во вторых мне сказали что вот такой датчик (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 буду признателен
Вот урок по подключению фоторезистора УРОК
я этот урок видел и подключал и всё у меня получается но вот слить эти скетчи вот в чём проблема моя
вот смотри:
спасибо за подсказку к сожалению сейчас не могу проверить я так понимаю что после 46 строки надо добавить что иммено надо сделать
Фоторезистор подключается к аналоговому пину 2 через подтягивающий резистор к 5в
Все верно
у меня фоторезистор на плате как датчик я так понимаю что там не нужны резисторы
Да, увидел, проподкподключаешь к gnd, +5v, и к А2
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
А теперь вопрос, а зачем тебе знать освещенность в помещении?
Если при солнечной погоде у тебя будут одни значения, а ночью будет другие.
Кстати значение,которое тебе нужно, надо эксперементально определять, для определения выводи значения с датчика в сериал порт.
Для охраны, я бы взял обычный геркон, для обнаружения открытия двери, или еще один д. Объема
спасибо накидал сработку получается во так по идее должен работать как надо завтра проверю и отпишусь
А теперь вопрос, а зачем тебе знать освещенность в помещении?
Если при солнечной погоде у тебя будут одни значения, а ночью будет другие.
Кстати значение,которое тебе нужно, надо эксперементально определять, для определения выводи значения с датчика в сериал порт.
Для охраны, я бы взял обычный геркон, для обнаружения открытия двери, или еще один д. Объема
будет и геркон и датчик движения и крометого лазер будет светить в фоторезистор и при прерыванеие луча должен срабатывать датчик и сообщать мне посредствам смс и кроме того я собрал вот такой (http://arduino.ru/forum/apparatnye-voprosy/nuzhno-otslezhivat-nalichie-2...) пост 23 датчик который должен оповещать о пропадание 220 вольт и наоборот так что может быть мне понадобится помощь и при вписывание этого датчика в скетч, может есть мысли как это сделать
пробовал сегодня скетч с фоторезистором в принципе работает только вот найти и выставить нужное значение пришлось помучаться теперь осталось подключить датчик 220 вольт. Спасибо stambylov
Можно ли использовать данный макрос следующим образом:
У меня получилось только так -
кстати, Serial.println(F(str + "qwerty")); - именно 328 не умеет, может быть другая платформа умеет, можем стм ?? как то так должно быть: Serial.println ((str)+(F("qwerty")));
переменную писать во флеш через сериал точно не получится - ругается. Может быть существуют другие макросы для организации в зоне флеш - писать переменные, хранить номера телефонов..
Еще вопрос: а скоько телефонов можно хранить на 10кб флеша например?
если внешнюю память то какую? Ктонибудь решал подобное? Хочу изучить как это сделать, к примеру как хранить 3000 номеров на флеш и сравнивать с тем кто звонит - он в черном списке или в белом?
1. Прежде, чем рассуждать, умеет или нет, постарайтесь четко сформулировать, какого именно умения Вы хотите добиться. Может оказаться, что это принципиально невозможно.
2. Считайте, что flash - это ROM. Если нужно куда-то сохранять информацию так, чтобы она не терялась при перезагрузке - специально для этого есть EEPROM. Если ее объема недостаточно, то CD-card. Есть и "промежуточный" вариант - внешняя EEPROM, подключаемая до I2C.
3. Чтобы узнать, сколько элементов XXX можно хранить в памяти объемом YYY, нужно YYY поделить на длину XXX.
хорошо, к примеру +480871234567 - это 13 байт? значит 1000 номеров - это примерно 13кб ?
что быстрее будет работать CD-card или внешняя EEPROM, подключаемая к I2C ?
Реально за доли секунды отыскать номер +480871234567 среди одной-двух тысяч подобных записаных в епром или сдкард ?
заранее спасибо.
Я бы сказал, что +480871234567 - это не более 6 байт.
Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).
По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.
У кого-нибудь с Теле2 и Мотивом этот модуль завелся?
У кого-нибудь с Теле2 и Мотивом этот модуль завелся?
С Мотивом не пробовал, а вот с Теле2 и МТС у меня без проблем работает.
У кого-нибудь с Теле2 и Мотивом этот модуль завелся?
С Мотивом не пробовал, а вот с Теле2 и МТС у меня без проблем работает.
Вчера пробовал с Теле2-нивкакую.Даже на запрос оператора не пишет.Мотив тоже тишина.Пробовал с мегафоном-нормально.
Еще одна проблема-при подсоединении к компу через адаптер на pl2303-модуль шлет мусор в порт,не дает вводить ат команды
Еще одна проблема-при подсоединении к компу через адаптер на pl2303-модуль шлет мусор в порт,не дает вводить ат команды
то не модуль, не наговаривайте, то ваше соединение так себя ведет. это раз.
ну и прежде чем вставлять разные симкарты - не узнавали какой стандарт связи оператор поддерживает?
он может не поддерживать gsm например... может там CDMA ?.
Я бы сказал, что +480871234567 - это не более 6 байт.
Теоретически SPI, по которому подключена SD карта существенно быстрее I2C. Но карта памяти - устройство блочное, а EEPROM - устройство прямого доступа. Лично я бы выбрал EEPROM на 256 кбит (32 кбайт).
По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.
сортировка там не получится, номера добавляться будут по мере появления, не все сразу.
Что мотив,что теле2-стандарт GSM.При воткнул в модуль м590-нормально заработала симка теле2.На ат команды отвечает
По скорости - сильно зависит от организации, в частности от того, отсортирован предварительно массив или нет.
сортировка там не получится, номера добавляться будут по мере появления, не все сразу.
И почему же не получится сортировка?
А как данный модуль по GPRS работает? Как часто происходят разрывы соединения с сервером по инету?
Узаю в приложении BLYNKa , не могу добиться устойчивой связи с серваком Blynka
А как данный модуль по GPRS работает? Как часто происходят разрывы соединения с сервером по инету?
Узаю в приложении BLYNKa , не могу добиться устойчивой связи с серваком Blynka
на мегафоне и ростелекоме юзаю gprs - на мегафоне деактивация соединения присходит не чаще чем через пару часов, на ростелекоме ровно через 30 мин бездействия. В остальном полный норм.
Народ, посоветуйте ...
Уна + 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
Сигнал, я так понимаю, уверенный, питания хватает ...
В общем, что может быть причиной, и какую емкость на входе по питанию ставить на модем ...
Народ, посоветуйте ...
Уна + 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 и понаблюдайте за состоянием модуля в терминальной программе.
Вы имеете в виду монитор порта ардуино иде или через usb-ttl к пк?
Вы имеете в виду монитор порта ардуино иде или через usb-ttl к пк?
через usb-ttl к пк!
Еще не приобрел ... попробую ...
Еще не приобрел ... попробую ...
Арудина сама может выступить как UART TTL
http://www.2150692.ru/faq/34-arduino-v-kachestve-usb-to-serial-ttl-konvertora
Арудина сама может выступить как UART TTL
http://www.2150692.ru/faq/34-arduino-v-kachestve-usb-to-serial-ttl-konvertora
А в этом случае как уровни согласовывать, что то не соображу ...
если с терминалки не удалет - то очень странно.
у меня со всех модулей в терминалке честно все команды работают, в том числе и эта.
Удивителен еще вот какой факт: получаешь значит цифиру (например +GMGS: 30) и думаешь, что в памяти симки сохраняются 30 смс-ок. Делаешь DEL ALL или DEL SENT, получаешь положительный ответ, пытаешься (для контроля) прочитать группы смс-ок, в ответ пусто. Думаешь: Всё, работает. Модуль шлет смс-ку и в ответ: +GMGS: 31. Может все таки просто счетчик?
Так, что в итоге? Счетчик? У меня аналогично, не удаляет ...
И еще вопрос: на AT+CREG? отдает +CREG: 0,1 Первая цифра это: "нет кода регистрации", а вторая: "зарегистрирован, домашняя сеть". Что за код регистрации? Это печально, что его нету или так и должно быть.
По подключению к консоли: все рэади
+CPIN: READY
Call Ready
SMS Ready
+CMGS: 54
OK
На питание не матерится, лампочка моргает редко (зарегестрирован), но периодически абонент не абонент...
даташит посмотрите.. там все ответы на ваши вопросы.....
Тоже вот решил попробовать на sim800L, цена привлекательна. Модуль не видит сим-карту, при включении выдает +CPIN: NOT INSERTED
прочитайте всю ветку. 100 раз уже писали что симку надо правильно ставить, если симка 4G то не получится запустить на 800 нужен 808, ну и питание проверяйте - очень требователен...