-
Re: Управление внешними устройствами с Arduino при помощи СМС
Вот кусок. Работает реально через раз.... Один раз загрузил - ок, второй не работает.
Когда работает, может прогнать цикл либо 4, либо 2 либо 5 раз - как ей захочится - например:
Код:
+CMTI: "SM",1
AT+CMGR=0
+CMGR: "REC UNREAD" +7114160385",,"12/09/10,16:34:47+24"
Start
OK
AT+CMGR=1
+CMGR: "REC READ","+7912616038 $ AxÊzb²Ò¢Ò¢ºZ¢j
Start
OK
AT)C
CB91
#CMGR: "REC READ","+79126160385",,"12/09/10,16:34:47+24"
Start
OK
AT+CMGR=1
+CMGR: "REC READ","+79126160385",,"12/09/10,16:34:47+24"
Start
OK
AT+CMGD=1
OK
А если не работает, то пишет
Код:
OK
AT+CMGD=1
OK
+CMTI: "SM",1
+CMTI: "SM",2
Код:
abc=strstr(bgsm,"+CMTI");
myGLCD.print(abc, 0, 150);
if(abc!=0)
{
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
Serial1.println("AT+CMGR=1");
delay(1000);
rsms=1;
}
ok=strstr(bgsm,"OK");
if(rsms==1 && ok!=0)
{
myGLCD.printNumI(rsms, 50, 180);
start=strstr(bgsm,"Start");
myGLCD.print(start, 50, 150);
if(start!=0)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Start", 25, 225);
myGLCD.setFont(BigFont);
pauto=1;
rsms=0;
Serial1.println("AT+CMGD=1");
delay(1000);
memset(bgsm, 0, sizeof(bgsm));
}
off=strstr(bgsm,"Stop");
myGLCD.print(off, 100, 150);
if(off!=0)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Stop", 25, 225);
myGLCD.setFont(BigFont);
pauto=0;
rsms=0;
Serial1.println("AT+CMGD=1");
delay(1000);
memset(bgsm, 0, sizeof(bgsm));
}
}
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Привет. Подскажите, как вам удалось откомпилировать #include <NewSoftSerial.h>
Скачивал с разных сайтов. Выдаёт постоянно кучу ошибок о неопознанных типах и функциях.
Подключение через 220Ом резисторы работает или надо по другому?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
paul_dem
Привет. Подскажите, как вам удалось откомпилировать #include <NewSoftSerial.h>
Скачивал с разных сайтов. Выдаёт постоянно кучу ошибок о неопознанных типах и функциях.
Подключение через 220Ом резисторы работает или надо по другому?
Скорее всего не та версия языка
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
andrey1980
Скорее всего не та версия языка
Спасибо за ответ. А можете подсказать где для Arduino компилятора можно взять.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
paul_dem
Спасибо за ответ. А можете подсказать где для Arduino компилятора можно взять.
arduino.cc - там все версии компиляторов
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
andrey1980
arduino.cc - там все версии компиляторов
Это наверное пазл какой-то. :)
А точно можно сказать какой компилятор с какой NewSoftSerial.h для arduino работает(можно ссылки в личку).
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
paul_dem
Это наверное пазл какой-то. :)
А точно можно сказать какой компилятор с какой NewSoftSerial.h для arduino работает(можно ссылки в личку).
С NewSoftSerial нормально работает 0023. И опять же, какая у тебя плата?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Ребята доброго дня. Провалялась почти год такая платка - SIM900 GSM/GPRS shield for Arduino - IComSat v1.1. Вот наконец решил ее включить. Устанавливаю на плату Mega 2560, подключаю Ардуину к USB. На шилде загорается светодиод PWR, больше ничего не горит, нажатие кнопок на шилде ни к чему не приводит. Перемычки шилда сконфигурированы как на фигуре 5 (по даташиту на шилд). Переключатель стоит на UART-port. К контактам порта UART (на шилде) №1,7,8 соответственно подключен преобразователь TTL to RS232 вот такой - http://www.buyincoins.com/new_en/det...uct-10172.html . Ну и преобразователь подключен соответственно к COM1. Скорость выставлена 9600. На отправку АТ комманд шилд не реагирует. Может такое быть, что не хватает питания по USB?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
странное поведение шилда. Подключил шилд на работе и к тому же другим кабелем ЮСБ. На шилде моргают лампочки, типа сеть не обнаружена. Но законнектится через USART не получается
-
Re: Управление внешними устройствами с Arduino при помощи СМС
А зачем преобразователь, тем более, если это шилд? У меня точно такой-же. Так я его подключаю по UART (Rx/Tx) и +5В и GND. Даже в мегу не вставляю. И все работает.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
ну в мегу я вставляю, чтобы получить питание от ЮСБ. А преобразователь нужен, чтобы согласовать уровни порта RS-232 и USART. Или вы USART прямо к RS-232 подключаете ?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
PC (USB) -> MEGA (Rx, Tx, +5V, GND -> Sim 900 (Tx, Rx, +5V, GND)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
metaforos
PC (USB) -> MEGA (Rx, Tx, +5V, GND -> Sim 900 (Tx, Rx, +5V, GND)
ребята, я может что-то не понимаю. Но я хочу пока поработать с модулем, минуя ардуину, подключить модуль к порту RS-232. Для этого нужно согласовать уровни сигналов между модулем и PC.
Насколько я понимаю, если модуль вставлен в мегу, то и работа с модулем производится через порты меги. Т.е напрямую с терминальной программы установленной на РС я не смогоу отправлять команды модулю.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Извини, это я не понял, что ты хочешь работать с модулем без Ардуины. А вот если модуль подключен к Ардуине, в PUTTY я выбираю сом3 и АТ командами управляю модулем используя в Ардуине такой скетч :
PHP код:
char incoming_char=0;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600); //Ардуина на Serial1
}
void loop() {
if(Serial1.available() >0){
incoming_char=Serial1.read();
Serial.print(incoming_char);
}
if(Serial.available() >0){
incoming_char=Serial.read();
Serial.print(incoming_char);
Serial1.print(incoming_char);
}
}
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
metaforos
Извини, это я не понял, что ты хочешь работать с модулем без Ардуины. А вот если модуль подключен к Ардуине, в PUTTY я выбираю сом3 и АТ командами управляю модулем используя в Ардуине такой скетч :
PHP код:
char incoming_char=0;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600); //Ардуина на Serial1
}
void loop() {
if(Serial1.available() >0){
incoming_char=Serial1.read();
Serial.print(incoming_char);
}
if(Serial.available() >0){
incoming_char=Serial.read();
Serial.print(incoming_char);
Serial1.print(incoming_char);
}
}
Просто мегаогромное спасибо за совет. Я и сам начал размышлять о перебросе данных между портами, а вы меня опередили!
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Кто что скажет по поводу такой реализации шилда? Можно такой брать или на чтото более достойное посмотреть ?
http://www.geeetech.com/wiki/index.p...no_GPRS_Shield
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Чип - SIM 900. По поводу качества сборки - ничего сказать не могу. Я использую icomsat v.1.1 на том-же SIM 900 - http://imall.iteadstudio.com/im120417009.html
Сейчас наверное уже есть что-то новее... Поищи. Единственное что могу сказать, что SIM 900 довольно хороший модуль и зарекомендовал себя положительно.
-
Вложений: 2
Re: Управление внешними устройствами с Arduino при помощи СМС
Народ, добрый день всем,
если кому интересно - я решил проблему работу с сименс телефонами и глючным приемом. Хочу сказать спасибо прежде всего metaforos и igvv, так как шел по вашему пути.
Итак вкратце: у меня точно так же нестабильно читались сообщения, иногда лучше, иногда хуже, один в один как у igvv. Поскольку у меня старых сименсов аж 2 (ме75 и еще ме45 лежит), а шилд покупать жабодушительно, пошел на принцип и возился со всеми вариантами скетчев здесь. И вот что подтвердилось -
как и правильно заметил igvv, единственно что нормально работало - скетч-терминал - пост.414
Пошел от этого, стал на терминальный скетч навешивать операции и смотреть, где пойдет сбой. Так вот - как только добавлялись операции сравнения, обработки вместе с приемом - начинался нестабильный прием, пропускались символы или вообще прекращалось чтение
Поэтому решил сделать так: сначала все забивается в строку, с минимальной загрузкой процессора, и лишь потом анализируется. Дело сдвинулось - процентов 80% уже читалось нормально (уже можно было жить, я даже написал скетч который проверял четко длину сообщения считанного и только при совпадении действовал - получил уже на этом этапе результат)
Далее - захотелось еще подвинуться, тк стало ясно проблема в ардуинке. Стал рыть инет в двух направлениях: 1) как разогнать ардуино (меняется кварц) - решил что это крайний случай и 2)как максимально разгрузить процессор
Во втором случае удачно наткнулся на описание проблем с кодом ардуино, прерываниями, пропусками чтения и тд., и самое главное, нашел пряник - альтернативную библиотеру программного серийного порта - AltSoftSerial - Описание тут. http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
Заменил библиотеку SoftwareSerial на эту (кстати, NewSoftSerial старая так же не давала результат, так что они обе нехороши), поменял пины (на Уно - Тх 9 , Rx 8), эта библиотека работает только с ними, и процент ошибок теперь ноль. Я не утверждаю что все у всех пойдет, но явно ардуинке стало легче и главное она справляется даже с очень длинными сообщениями - стабильно считывает все. Код свой пока не чистил, но выкладываю сейчас, тк сам не особо асс в программировании, надеюсь вместе доведем.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Дело в том, что с Мегой, NewSoftSerial и подобные ей библиотеки, которые вешают uart на "виртуал" - работают очень коряво. Я где-то писал об этом. Жабодушиловка у меня тоже была по поводу приобретения шилда с sim-900, но сейчас не жалею. А вот в машине, в качестве дополнения к сигнализации, у меня так и работает Ардуина и Сименс S55 (только он не принимает данные ;) )
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Бауманец молочина!!!
Если все работает, то теперь на шилды тратиться уже нету смысла.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
перечитал все помогите разобратся со следующей ситуацией,проверяются датчики 1-wire,в мониторе все пишется как надо,нужно что бы по определенному(в данном случае "#") символу во входящей смс,отреагировал ответным смс с температурами.в моем случае,запускается,ждем 20сек,начинают циклировать данные в мониторе,и через 5 сек после этого мне приходит смс "-127.00"
Код:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress domC = { 0x28, 0xF7, 0x72, 0x46, 0x05, 0x00, 0x00, 0xDB };
DeviceAddress ulicaC = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress kotelC = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };
char inchar;
float tempC;
void setup(void)
{
Serial.begin(9600);
Serial1.begin(9600);
Serial1.print("AT+CMGF=1\r");
delay(1000);
Serial1.println("AT+CNMI=3,0,0,0\r");
delay(1000);
sensors.begin();
sensors.setResolution(domC, 10);
sensors.setResolution(ulicaC, 10);
sensors.setResolution(kotelC, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
Serial.print(" F: ");
Serial.print(DallasTemperature::toFahrenheit(tempC));
}
}
void loop(void)
{
delay(20000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Doma: ");
printTemperature(domC);
Serial.print("\n\r");
Serial.print("Ha ylice: ");
printTemperature(ulicaC);
Serial.print("\n\r");
Serial.print("Kotel: ");
printTemperature(kotelC);
Serial.print("\n\r\n\r");
if(Serial1.available() >0) // насколько я понял считывает смс,возможно в этом проблема
{
inchar=Serial1.read();
if (inchar=='#')
{
sendSMS();
}
}
}
void sendSMS()
{
Serial1.println("AT+CMGS=\"+380660830000\"\r");
delay(1000);
Serial1.println(tempC);
delay(1000);
Serial1.println((char)26);
delay(1000);
Serial1.println("AT+CMGD=1,4\r");
Serial1.flush();
}
и как считывать\разбирать пришедшее смс,как лучше?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Какое GSM устройство используете?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
прошу прощения что задержался с ответом и не указал этого в сообщении.использую arduino mega+gsm shield sim900+ds18b20.подскажите как до ума довести этот скетч.хотелось как проще,но не работает и я попробовал чуть модифицировать код.уже с разбором входящего сообщения.но тоже неработает.вот собственно код,вроде расписал как попонятнее
Код:
#include <OneWire.h>
#include <DallasTemperature.h>
// ***************Настройка Serial**********************
#define GPRS_TO_DBG // закоментируйте эту строчку если нужно использовать настоящий gprs
#ifdef GPRS_TO_DBG
#define GPRS Serial // gprs руками в Serial мониторе эмулируем
#else
#define GPRS Serial1 // используем настоящий шилд
#endif
// *************** /Настройка Serial**********************
#define ONE_WIRE_BUS 3 // датчики на 3 пин
#define INPUT_BUF_SIZE 30 // размер входного буфера
char input_buff[INPUT_BUF_SIZE+1]; // место под хранение входящих из GPRS данных
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress domC = { 0x28, 0xF7, 0x72, 0x46, 0x05, 0x00, 0x00, 0xDB };
DeviceAddress ulicaC = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress kotelC = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };
//******** ДАННЫЕ *************
#define LIMIT_SMS 4 //лимит сообщений
byte countSMS=0; //счетчик сообщений
long interval = 25000; //интервал обнуления счетчика смс
char NUM_TEL[]="+380660830003";
float tempC;
char sms;
//******** ДАННЫЕ *************
//************* Константы для принятых SMS команд ************************
char* cmd_prefix="+cmt";
char* cmd_numTel="+380660830003"; //Номер телефона на который реагируем
char* cmd_control="cont";
//************* /Константы для принятых SMS команд ***********************
void setup()
{
initGPRS();
sensors.begin();
sensors.setResolution(domC, 10);
sensors.setResolution(ulicaC, 10);
sensors.setResolution(kotelC, 10);
}
void loop(){
tempSerial();
waitAndExecuteCommand();
trySendSMS(tempC);
timeLimitSMS();
}
void initGPRS(){ // функция инициализации GPRS
//shield_ON();
GPRS.begin(9600);
gprsCmdAndWaitln("AT+IFC=1, 1");//data flow controll(1, Программный режим (XON/XOFF)).
gprsCmdAndWaitln("AT+CPBS=\"SM\"");//выбрать как основную память сим-карту.
gprsCmdAndWaitln("AT+CNMI=1,2,2,1,0"); //формат информирование о новом смс
gprsCmdAndWaitln("AT+CMGF=1"); //выбор режима sms: 1-текстовый,0-цифровой)
}
void shield_ON(){
digitalWrite(8, HIGH);
delay(1200);
digitalWrite(8, LOW);
delay(10000);
}
void printTemperature(DeviceAddress deviceAddress){
tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
GPRS.print("error");
} else {
GPRS.print("C: ");
GPRS.print(tempC);
GPRS.print("F: ");
GPRS.print(DallasTemperature::toFahrenheit(tempC));
}
}
void waitAndExecuteCommand(){
static bool nextLineWillCommand = false;
if(isLineReady()){
strlwr(input_buff); //Когда есть готовая строка, переводим символы в нижний регистр.
if(!nextLineWillCommand && startsWith(input_buff,cmd_prefix) && strstr(input_buff,cmd_numTel)){ //добавил strstr(input_buff,cmd_numTel) для проверки номера.
nextLineWillCommand = true;
return; // сразу выходим
}
if(nextLineWillCommand){
executeCommand(input_buff);
deleteAllSms();
nextLineWillCommand = false;
}
}
}
bool isLineReady(){ //забираем строку из сериал буфера
static byte inputBuffIndex=0;
if (GPRS.available()){
byte t = GPRS.read();
switch(t){
case '\n':
input_buff[inputBuffIndex] = 0;
inputBuffIndex=0;
return true;
break;
case '\r':
break;
default:
if (inputBuffIndex < INPUT_BUF_SIZE){
input_buff[inputBuffIndex] = t;
inputBuffIndex++;
}
}
}
return false;
}
bool startsWith (char* inputString, char* prefix) {
return (strstr(inputString, prefix) - inputString) == 0;
}
void executeCommand(char* command){
if(strstr(command, cmd_control)){
actionSendSMS();
}
}
void actionSendSMS(char* sms){ // Функция отправки SMS
GPRS.print("AT+CMGS=\"");
GPRS.print(NUM_TEL);
gprsCmdAndWaitln("\"");
GPRS.print(sms);
gprsCmdAndWaitln("\x1A");
}
void trySendSMS(char* sms){ //проверяем на лимит и добавляем +1
if (countSMS < LIMIT_SMS){
actionSendSMS(sms);
countSMS++;
}
}
void deleteAllSms(){
GPRS.println("AT+CMGD=1,4"); //Удаление всех входящих сообщений.
}
void tempSerial(){ // температура на монитор
GPRS.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
GPRS.print("Doma: ");
printTemperature(domC);
GPRS.print("\n\r");
GPRS.print("Ha ylice: ");
printTemperature(ulicaC);
GPRS.print("\n\r");
GPRS.print("Kotel: ");
printTemperature(kotelC);
GPRS.print("\n\r\n\r");
delay(5000);
}
void gprsCmdAndWaitln(char* commandText){ //отправка в serial с переводом строки
GPRS.println(commandText);
delay(1000);
}
void timeLimitSMS(){
unsigned long currentMillis;
long previousMillis = 0;
currentMillis = millis();
if (currentMillis - previousMillis > interval)
{
countSMS = 0;
previousMillis = currentMillis;
}
}
в таком виде он не компилится,загвоздка в районе "actionSendSMS"и"trySendSMS".вобщем,пришла смс-обработали-увидел кодовое слово-выполнил действие(ответное смс с данными).сейчас хотябы чтобы ответил одной температурой,но в идеале - domC:20.00;ulicaC:15.00;kotelC:50.00; но вообще в идеале думаю былобы вообще шикарно сделать все это на управлении DTMF.если у вас есть какие идеи, может и для своей работы,давайте помозгуем над этим
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Код, который при получении сообщения ВКЛЮЧАЕТ или ВЫКЛЮЧАЕТ или ОТПРАВЛЯЕТ СТАТУС пина. Отправка на модуль сообщения в виде - #a - и т.д. Немного корявенький, но 100% рабочий (именно для SIM900):
PHP код:
#define led1 30
#define led2 31
#define led3 32
#define led4 33
#define led5 34
#define led6 35
#define led7 36
#define led8 37
int stat1 = 0;
int stat2 = 0;
int stat3 = 0;
int stat4 = 0;
int stat5 = 0;
int stat6 = 0;
int stat7 = 0;
int stat8 = 0;
char device,on_off;
void setup()
{
Serial.begin(9600);
for(byte i=30; i<38; i++) pinMode(i, OUTPUT);
Serial1.begin(9600);
delay(30000);
Serial1.println("AT+CMGF=1\r");
delay(200);
Serial1.println("AT+CNMI=3,0,0,0\r");
delay(200);
}
void loop()
{
sms_read();
}
void sms_read()
{
if(Serial1.available()>2)
{
if(Serial1.read()=='#')
{
device=Serial1.read();
on_off=Serial1.read();
switch (device)
{
case 'a': digitalWrite(led1, on_off-48);
break;
case 'b': digitalWrite(led2, on_off-48);
break;
case 'c': digitalWrite(led3, on_off-48);
break;
case 'd': digitalWrite(led4, on_off-48);
break;
case 'e': digitalWrite(led5, on_off-48);
break;
case 'f': digitalWrite(led6, on_off-48);
break;
case 'j': digitalWrite(led7, on_off-48);
break;
case 'h': digitalWrite(led8, on_off-48);
break;
case 's':
stat1 = digitalRead(led1);
stat2 = digitalRead(led2);
stat3 = digitalRead(led3);
stat4 = digitalRead(led4);
stat5 = digitalRead(led5);
stat6 = digitalRead(led6);
stat7 = digitalRead(led7);
stat8 = digitalRead(led8);
Serial1.println("AT+CMGF=1\r");
delay(1000);
Serial1.println("AT+CMGS=\"+380675678366\"\r");
delay(1000);
//**************************************************************
Serial1.println("Device 1 is: ");
{
if (stat1 == 1)
{
Serial1.println("ON");
}
else
if (stat1 == 0)
{
Serial1.println("OFF");
}
}
//**************************************************************
Serial1.println("Device 2 is: ");
{
if (stat2 == 1)
{
Serial1.println("ON");
}
else
if (stat2 == 0)
{
Serial1.println("OFF");
}
}
//**************************************************************
Serial1.println("Device 3 is: ");
{
if (stat3 == 1)
{
Serial1.println("ON");
}
else
if (stat3 == 0)
{
Serial1.println("OFF");
}
}
//**************************************************************
Serial1.println("Device 4 is: ");
{
if (stat4 == 1)
{
Serial1.println("ON");
}
else
if (stat4 == 0)
{
Serial1.println("OFF");
}
}
//**************************************************************
delay(1000);
Serial1.println(26,BYTE);
delay(3000);
break;
}
Serial1.println("AT+CMGD=1,4\r");
Serial1.flush();
}
}
}
А вообще,с учетом того, что SIM900 отлично дружит с TCP и GPRS, то имея довольно маленькие тарифы на мобильный интернет, лучше наверное уйти в сторону от СМС.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
код несомненно полезный, вот если бы к нему добавить отправку температур с датчиков 1-wire ,вычисление которых уже есть в моем коде (tempC)...
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Так а в чем проблема? Считывайте показания, и например вместо статуса пинов, отправляйте значения показаний датчиков - Serial1.println(tempC);. У меня к сожалению сейчас шилда нет. В гараже стоит. Так бы попробовал Вам помочь более "наглядно". :)
-
Re: Управление внешними устройствами с Arduino при помощи СМС
все получилось, благодарю! есть еще идея осуществить управление посредством DTMF.как можно это осуществить? при DTMF в терминал информация приходит следующим образом
RING
+CLIP:"0669837458"...
RING
после второго ринга происходит автоподнятие и модуль ждет нажатия клавиши 1-9,*,#. и при нажатии 1 терминал выглядит так
RING
+CLIP:"0994543857"...
RING
+DTMF:1
КАК можно написать код чтобы он читал команду после второго ринга,а до этого сравнил номер с разрешенным ?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Не подскажу.С DTMF я не работал.
-
Re: Управление внешними устройствами с Arduino при помощи СМС
все равно спасибо большое! буду разбиратся
-
Re: Управление внешними устройствами с Arduino при помощи СМС
разобрался.спасибо за оказанное внимание
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Столкнулся со следующей проблемой. Модуль sim908. Включатся, регистрируется в сети, шлет в терминал сообщения при входящем звонке, выключении и т.д. В ответ на команды идет только эхо, никакого ответа нет. DTR на земле. Развязка уровней по RX через диод по следующей схеме:
http://manu245.users.photofile.ru/ph.../179432918.jpg
что я делаю неправильно? подскажите пожалуйста
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Диод какой? Какое у него падение напряжения?
-
Re: Управление внешними устройствами с Arduino при помощи СМС
идею понял. изначально был dl4448. низкий уровень на ноге rx 0,48В. много - по даташиту меньше 0,4 должно быть. заменил на шоттки 1n5817. при низком уровне на ноге rx 0,15В. но все равно нет ответа. только эхо
update. Подключил напрямую к ft232rl, запитав ее iovcc от 2,8В. Ответ идет только на команду A/ сразу после включения. похоже глюк программный...
-
Re: Управление внешними устройствами с Arduino при помощи СМС
Спасибо. Все завелось. Оказалось, дело не в железе.
-
Re: Управление внешними устройствами с Arduino при помощи СМС