-
Re: Управление внешними устройствами с Arduino при помощи СМС
Может быть даже и в плате проблема. У меня Ардуина тоже иногда глючит... Пишу скетч простого вывода фразы, например Serial.println ("Hello World!!!"), а в терминале белеберда всякая, потом просыпается и нормально пишет... Не пойму. Где-то, что-то мы наверное не совсем корректно делаем. А где и что, не знаю.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Я попробовал вот по этой схеме подключить свой МЕ45
http://lukjanow.ru/2012/04/send-sms-...o-siemens-s45/
Только без плюса естественно.
Пока точно не скажу, так как пробовал на экране 16х2
Но первые 3 раза отработало без ошибок ...я уж обрадовался...а потом опять началось...но уже стабильнее видно 103a37 . Вобшем гораздо лучше. Но не идеально.
Да и телефон сеть терять начал.
Потом пробовал второй делитель ставить. Много тестил счас уже не вспомню...но тел. перестал терять сеть. Но и работать ...гдето начал, гдето перестал.
Попробую на RX тел. не 220Ом а побольше дать резюк.
И появилось два новых-старых m55 и s55 и один самсунг на пробы...разъемов к ним только нет.:)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
У меня проблема на стадии приема информации от телефона к ардуине с библиотекой NewSoftSerial на 2и 3 пине. Идут ошибки с определенного места.
На Serial и пинах 0 и 1 удалось со вторым делителем работать только на отправку сообщений телефону... Тел перестал терять сеть но и передавать в ардумну ничего не получается вообще. Либо просто как раньше сеть теряет и все, либо с делителем сеть не теряет но и не передает в ардуину.
А так чисто с терминалом проблем нету и не было.
Но при всем при этом удивляет то как идеально работают скетчи "мосты" на 2 и 3, 0 и 1 при техже вообщемто схемах подключения телефона.
Вот что для меня большая загадка :confused:
-
Re: Управление внешними устройствами с Arduino при помощи СМС
:(
На s55 таже картина, что и на ме45, но уже выводит стабильно скажем не 30 символов, а 40символов.
Скетч "мост" выводит строку идеально! ! ! ! !
На м55 картина почти один в один с ме45, и срабатывает в скетче только один раз, тоесть в терминал только один раз выведит строку и все...
Скетч "мост" выводит строку идеально! ! ! ! !
Скорости пробовал менять ...лучше всего на 9600 работает.
Пробовал ATmega168 менять.
Подключал по разному ... можно вместо делителя просто 22кОм ставить и все...работает и так.
Что еще можно попробовать сделать?
Видимо надо более древний сименс искать...там вроде все на симке хранится.
+ + + +
Добавлю вот ссылочка на скетч поглядите-разберите может чего толкового там есть, сам я там методом тыка не разберусь. http://code.google.com/p/arduinoread...S.pde&can=2&q=
-
Re: Управление внешними устройствами с Arduino при помощи СМС
К сожалению, я ничем не могу помоч. У меня все работает без сбоев. Вот дождусь С45, попробую с ним.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Урраа. На этот раз уж точно!!!
Прям праздник у меня товарищииииии...допер где косяк был
На s55 полет ОТЛИЧНЫЙ!!! ошибок нету совсем!!!
PHP код:
if(mySerial.read()=='0'&&mySerial.read()=='7'&&mySerial.read()=='9')
{
for (i=1; i<58; i++)
{
strok [i] = mySerial.read();
delay(100); // дошло таки до меня как написать-считывать с задержкой
}
. . .
Мелочи это конечно :D :D :D но приятно.
Ну если все будет так шоколадно, можно приступать к проекту(простенькому):rolleyes:
-
Re: Управление внешними устройствами с Arduino при помощи СМС
чтож поздравляю тебя а мой проект переезжает на модуль SIM 900D в сигнализацию
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Спасибки!
A GPS шильдика там никакого не планируешь добавлять случайно?
Мне вот хотелось бы с ним замутить, но на atmega168 проблемотично, хотя и можно будет. А вот с софтом у меня тудновато :D потому пока решил без него попроще делать.
Думаю с АТ командами еще скоро посоветоваться приду сюда :D
-
Re: Управление внешними устройствами с Arduino при помощи СМС
по ат командам справочники есть хорошие в интернете а на счет GPS пока выводов не хватает а так интнресно подумать только думаю незачем он тут
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
igvv
На s55 полет ОТЛИЧНЫЙ!!! ошибок нету совсем!!!
Вот и у меня на S55 все работает. Значит будем именно их использовать.
Цитата:
Сообщение от
andrei2882
а мой проект переезжает на модуль SIM 900D в сигнализацию
Давно пора. Вот только дороговато...
Цитата:
Сообщение от
igvv
A GPS шильдика там никакого не планируешь добавлять случайно?
Я вот думаю об этом, и еще о некоторых вещах... :) Когда дойду до этого, напишу.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Напиши обязательно если что получится!!!
Вообще связка GPS, МК, телефон может здорово помочь.
Ну например у поста ДПС вырубить зажигание у авто или мото, включить сирену ...ну или еще какой сюрприз устроить. Главное контроль и местоположение над техникой останется у владельца.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
перечитал всю ветку!
.....очень рад вашим успехам!!!!
собрал готовое устройство GSM-sheld + Arduino + Ds18b20
отправляет температуру по смс по дозвону
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Да, GSM shield, самый лучший вариант, но дороговато. Телефоны Siemens, это для "удешевления" конструкции. Но проблемно. Я в машину поставил на сигнализацию, через неделю GSM shield установил. Телефоны уже все старый и глючнутые... Не надежно.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
тогда если есть желание пайкой заниматься то можно купить модуль sim 900d d и собрать самому
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
andrei2882
тогда если есть желание пайкой заниматься то можно купить модуль sim 900d d и собрать самому
Тогда и Ардуину спаять можно.. :) Хотя, на самом-то деле, та же Ардуина, является ОТЛАДОЧНОЙ платой, а уже на основе отлаженной конструкции, собирается (спаивается) схема на основе микроконтроллера и различеых модулей (gsm, gps, реле и т.д.). Но это не для меня. :)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
....на данный момент с помощью шелда
смс-кой "1" включаю светодиод, "0" выключаю
if(strSMS == "1") {
digitalWrite(13, HIGH);
}
if(strSMS == "0") {
digitalWrite(13, LOW);
}
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Парни, очень впечатлен результатом!
Тоже купил
SIM900 GSM/GPRS shield for Arduino - IComSat v1.1. Сначала "как настоящий джедай" помучался с управлением AT командами, принимал/отправлял звонки :)
Но для SMS скачал библиотеки для GSM шилда - GSM_GPRS_IDE100_v309.zip. Там все намного проще, например для отправки SMS есть функция SendSMS:
Код:
char SendSMS(char *number_str, char *message_str)
sends SMS to the specific phone number
parameters and return values:
number_str: pointer to the phone number string
message_str: pointer to the SMS text string
return:
ERROR ret. val:
---------------
-1 - comm. line to the GSM module is not free
-2 - GSM module didn’t answer in timeout
-3 - GSM module has answered "ERROR" string
OK ret val:
-----------
0 - SMS was not sent
1 - SMS was sent 9/15
example of use:
gsm.SendSMS("00XXXYYYYYYYYY", "SMS text");
Запустил несколько примеров - по звонку, отправлять SMS. Работают.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
У меня есть вопрос, к владельцам GSM/GPRS shield IComSat v1.1. Производителем заявлена функция включения его программно. Но у меня она не работает. Код простой. Пробовал 8-й и 9-й пин, смотрел схему http://iteadstudio.com/store/images/...omsat-v1.1.pdf, не включается.
У кого нибудь работает эта функция, включается IComSat v1.1 программно?
Код:
#define GSM_ON = 8;
digitalWrite(GSM_ON, HIGH);
delay(1000); /* spec says 200 should suffice */
digitalWrite(GSM_ON, LOW);
Сейчас после включения Arduino, на Shield нужно вручную нажать кнопку. Для макета конечно не проблема, но в реальной жизни неудобно.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
у меня включается ресет ардуины и ресет GSM прогромно
вазможно кривая библиотека
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
wer1wer22
у меня включается ресет ардуины и ресет GSM прогромно
вазможно кривая библиотека
wer1wer22,
Какая у тебя библиотека?
Покупал тоже на http://iteadstudio.com/ ?
Еще можешь проверить код у себя - будет включаться?
Код:
#include <SoftwareSerial.h>
#define GSM_ON 9
SoftwareSerial phone(2, 3); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// generate turn on pulse
digitalWrite(GSM_ON, HIGH);
delay(1000);
digitalWrite(GSM_ON, LOW);
delay(3000);
phone.begin(9600);
}
void loop() // run over and over
{
if (phone.available())
Serial.write(phone.read());
if (Serial.available())
phone.write(Serial.read());
}
-
Re: Управление внешними устройствами с Arduino при помощи СМС
А сконфигурировать, работу пина D9 на выход не нужно?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Все разобрался!
Добавил "pinMode(GSM_ON, OUTPUT);"
Стал включаться GSM Shield IComSat v1.1 вместе с включением Arduino. Рабочий код такой:
Код:
#include <SoftwareSerial.h>
#define GSM_ON 9
SoftwareSerial phone(2, 3); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// generate turn on pulse
pinMode(GSM_ON, OUTPUT);
digitalWrite(GSM_ON, HIGH);
delay(1200);
digitalWrite(GSM_ON, LOW);
delay(5000);
phone.begin(9600);
Serial.println("Setup end");
}
void loop() // run over and over
{
if (phone.available())
Serial.write(phone.read());
if (Serial.available())
phone.write(Serial.read());
}
Chip, спасибо!
Как раз сам тоже дошел до этого, в библиотеке кстати этого нет, добавить нужно вручную.
PS
Полезно светодиод иногда подключить для отладки.
"Great minds think alike" (c)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Добрый день!
Заинтересовался вопросом сопряжения Arduino и сотового телефона. Набросал примеры в протеусе, смс отсылать удается (с телефона подключенного к компьютеру по mini-usb). Встал вопрос в выборе телефона. С последовательным портом телефоны практически канули в лету, большинство с интерфейсом mini-usb.
Можно-ли, каким нибудь образом телефон с mini-usb подключить к Arduino?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
vseleznev
Все разобрался!
Добавил "pinMode(GSM_ON, OUTPUT);"
Стал включаться GSM Shield IComSat v1.1 вместе с включением Arduino. Рабочий код такой:
Код:
#include <SoftwareSerial.h>
#define GSM_ON 9
SoftwareSerial phone(2, 3); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// generate turn on pulse
pinMode(GSM_ON, OUTPUT);
digitalWrite(GSM_ON, HIGH);
delay(1200);
digitalWrite(GSM_ON, LOW);
delay(5000);
phone.begin(9600);
Serial.println("Setup end");
}
void loop() // run over and over
{
if (phone.available())
Serial.write(phone.read());
if (Serial.available())
phone.write(Serial.read());
}
Chip, спасибо!
Как раз сам тоже дошел до этого, в библиотеке кстати этого нет, добавить нужно вручную.
PS
Полезно светодиод иногда подключить для отладки.
"Great minds think alike" (c)
Этот код нужно вставлять в каждый скетч для работы с сим900?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
t4100
Добрый день!
Заинтересовался вопросом сопряжения Arduino и сотового телефона. Набросал примеры в протеусе, смс отсылать удается (с телефона подключенного к компьютеру по mini-usb). Встал вопрос в выборе телефона. С последовательным портом телефоны практически канули в лету, большинство с интерфейсом mini-usb.
Можно-ли, каким нибудь образом телефон с mini-usb подключить к Arduino?
В принципе, можно. Если на плате найти Rx & Tx. В современных телефонах (на некоторых моделях) есть "инженерный (сервисный) разъем, так вот на таком разъеме иногда бывает. Нужно искать телефон с такими характеристиками, но это не легко. Наверное легче все-таки найти старенький телефон... :)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Ребята, огромное спасибо за ветку, помогла много в чем разобраться.
Купил Arduino Uno i Siemens TC35 board.
Посылать СМСки получается без проблем, звонить - тоже.
Но столкнулся с проблемой при чтении СМС.
Перед чтением СМС набираю команду
AT+CMGF=1 (переход в текстовый режим)
В терминле все работает прекрасно, но когда начинаю считывать
строку с помощью read появляются проблемы.
Сначала текст идет правильно , показывает телефон, дату время, а затем идут значки ÿÿÿÿÿÿÿÿ&# 255;.
Я читал что сталкивались с такой проблемой.
Может расскажете почему она возникает?
Из-за того что в буфер не влазит или?
Спасибо
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Я так и не разобрался с этой проблемой. То она есть, то ее нет. Природа причины тоже не понятна.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Вобщем помучался я хорошо, но кое-что из ТС35 удалось выжать
Вот скетч для того чтобы включать и выключать звонком
PHP код:
#include <SoftwareSerial.h>
char gsm_char=0;
char d;//Stores character from the gsmSerial
int i=1;
int ledPin = 13;
boolean Status;
char strok[91]="";
long previousMillis = 0;
long interval = 5000;
SoftwareSerial gsmSerial(2,3);
void setup()
{
pinMode (ledPin, OUTPUT);
Status=LOW;
//Initialize serial ports for communication.
Serial.begin(9600);
gsmSerial.begin(2400);
for (i=1; i<90; i++)
{
strok [i] = gsmSerial.read();
Serial.println(strok[i]);
}}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
gsmSerial.println("AT+CMGF=1\r");
delay(5);
for (i=1; i<32; i++)
{
strok [i] = gsmSerial.read();
Serial.println(strok[i]);
}
if ((strok[25] == '1') &&
(strok[26]=='2') &&
(strok[27]=='3') &&
(strok[28]=='4')&&
(strok[29]=='5')&&
(strok[30]=='6')&&
(strok[31]=='7')&&
(Status == LOW))
{
gsmSerial.print("ATH\r");
delay(2000);
Serial.println("ON");
digitalWrite(ledPin, HIGH);
Status= HIGH;
gsmSerial.print("AT+CMGS=+380501234567\r");
delay(100);
gsmSerial.print(" On");
delay(10);
gsmSerial.print("\x1A");
}
else
if ((strok[25] == '1') &&
(strok[26]=='2') &&
(strok[27]=='3') &&
(strok[28]=='4')&&
(strok[29]=='5')&&
(strok[30]=='6')&&
(strok[31]=='7')&&
(Status == HIGH))
{gsmSerial.print("ATH\r");
delay(2000);
Serial.println("OFF");
digitalWrite(ledPin, LOW);
Status = LOW;
gsmSerial.print("AT+CMGS=+380501234567\r");
delay(100);
gsmSerial.print(" Off");
delay(10);
gsmSerial.print("\x1A");
}
// Чистка буфера
for (i=1; i<80; i++)
{
strok [i] = gsmSerial.read();
Serial.print(strok[i]);
}
delay(2000);
}
}
Попробуйте кто-нибудь на телефоне, интересно, работает или нет
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
alekseykok
Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...
AT+CNMI=1,1
Но вопрос при работе с ардуино другой. В терминале все показывает прекрасно. А вот ардуина считывает и записывает в буфер закорлючки.
Я пытался делать по другому. Пускать программу с командой
AT+CMGR=1
после этого считывать и обрабатывать СМС, а затем
AT+CMGD=1
удалять, потому что очень часто приходят сервисные СМС, которые нам не нужны.
Команды работают прекрасно, а вот с текстом СМС постоянные проблемы - библиотека ардуины к ним мало приспособлена, во всяком случае к работе с ТС35
-
Re: Управление внешними устройствами с Arduino при помощи СМС
-
Re: Управление внешними устройствами с Arduino при помощи СМС
хеее... вот че у меня Putty начала вытворять((
OK
aЪt
OK
Ъat
OK
ЪatШ
OK
at
OK
aЪtЪ
OK
ЪatЩ
OK
ЪatЪ
OK
atЪ
OK
aВt
OK
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Мне кажется, что нужно просто изучить АТ команды к ТС35. Я до сих пор никак не могу со своим sim900 разобраться... :)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Код:
while (Serial1.available())
{
tgsm[tsm]=bgsm[bsm]=Serial1.read();
Serial.print(tgsm[tsm]);
if (tgsm[tsm]=='S')
{
s=tsm;
s++;
}
if (tsm==s)
{
if (tgsm[tsm]=='M')
{
Serial1.println("AT+CMGR=1");
delay(1000);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
rsms=1;
}
}
tsm++;
bsm++;
if (tsm>=37)
{
tsm=0;
}
if (bsm>=199)
{
bsm=0;
}
}
abc=strstr(bgsm, "OK");
if(abc!=NULL && rsms==1)
{
abc=strstr(bgsm, "Start");
if(abc!=NULL)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Start", 30, 225);
myGLCD.setFont(BigFont);
Serial1.println("AT+CMGD=1");
pauto=1;
rsms=0;
memset(bgsm, 0, sizeof(bgsm));
}
abc=strstr(bgsm, "Off");
if(abc!=NULL)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Off", 30, 225);
myGLCD.setFont(BigFont);
Serial1.println("AT+CMGD=1");
pauto=0;
rsms=0;
memset(bgsm, 0, sizeof(bgsm));
}
}
}
Срабатывает только когда отправишь 2-3 одинаковые СМСки..... О том что приходит говорит, а читать не хочет. Всю голову чломал, не могу понять в чем проблема:(
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Вообще бред какой-то!!!!!! Вот так работает:
Код:
while (Serial1.available())
{
bgsm[bsm]=Serial1.read();
Serial.print(bgsm[bsm]);
bsm++;
if (bsm>=199)
bsm=0;
}
if(strstr(bgsm,"SM")!=NULL)
{
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
}
А добавляю Serial1.println("AT+CMGR=1"); - ПЕРЕСТАЕТ РАБОТАТЬ!!!! АААА:mad::mad::mad::mad:
Код:
while (Serial1.available())
{
bgsm[bsm]=Serial1.read();
Serial.print(bgsm[bsm]);
bsm++;
if (bsm>=199)
bsm=0;
}
if(strstr(bgsm,"SM")!=NULL)
{
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
Serial1.println("AT+CMGR=1");
}
-
Re: Управление внешними устройствами с Arduino при помощи СМС
А зачем ты два раз один и тот же СМС считываешь?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Почему 2??? команда на открытие 1, потом загоняем все в буфер, далее смотрим если "шаблоны", по которым мы будем выполнять действия
-
Re: Управление внешними устройствами с Arduino при помощи СМС
PHP код:
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
Serial1.println("AT+CMGR=1");
Первой командой ты считываешь СМС под номером 1, а в конце ты опять его считываешь
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Очепятка:):):)
AT+CMGD=1
Исправил давно...