Страница 34 из 44 ПерваяПервая ... 2428293031323334353637383940 ... ПоследняяПоследняя
Показано с 331 по 340 из 435
  1. #331
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    metaforos Если не трудно погляди что у меня неправильно
    пробовал разные варианты. По экрану телефона вижу что ардуина считывает смс из памяти, но обработать и включить пин 5 не выходит, ну и соответственно стирать тоже не хочет смс из памяти. Скорее всего адреса строк пишу неправильно, но как правильно то???

    PHP код:
    #include <NewSoftSerial.h> //////////// поставить библиотеку сериал
    NewSoftSerial mySerial(2,3);
    int i=1;
    char strok[61]="";
    int ledpin 5;                 //////////// изменить ледпин на другой
    long previousMillis 0;
    long interval 5000;

    void setup() 

    pinMode(ledpinOUTPUT);
    //Serial1.begin(9600);           /////// изменить на другой сериал
    mySerial.begin(9600);
    Serial.begin(9600);
    //Serial1.flush();               /////// изменить ?????????
    mySerial.flush(); 
    delay(5000);
    //Serial1.println("AT+CPMS ='MT'\r" );   /////// ИЗМЕНИТЬ 
    mySerial.println("AT+CPMS ='MT'\r" );
    delay(1000);
    //Serial1.println("AT+CNMI=1,1\r");      ////// изменить 
    mySerial.println("AT+CNMI=1,1\r");
    delay(1000);
    }

    void loop() 

    unsigned long currentMillis millis();
    if(
    currentMillis previousMillis interval)


    previousMillis currentMillis;
    //Serial1.println("AT+CMGL=4\r");   ///////// изменить 
    mySerial.println("AT+CMGL=4\r");
    delay(100); 


    //if(Serial1.read()=='0' &&Serial1.read()=='7' &&Serial1.read()=='9') /////ИЗМЕНИТЬ .....только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
    if(mySerial.read()=='0' &&mySerial.read()=='7' &&mySerial.read()=='9')
    {
    //for (i=1; i<58; i++) strok[i] = Serial1.read();      ////// ИЗМЕНИТЬ 
    //for (i=1; i<58; i++) strok[i] = mySerial.read();
    for (i=1i<60i++) strok[i] = mySerial.read();
    // ВКЛЮЧЕНИЕ - отправляю СМС  -   #a1
    //if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
    //if(strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
    if(strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '7' &&strok[58] == '0')
    {
    digitalWrite (ledpinHIGH);
    delay(1000);
    //Serial1.println("AT+CMGD=1");   /////// ИЗМЕНИТЬ 
    mySerial.println("AT+CMGD=1");
    }
    // ВЫКЛЮЧЕНИЕ - отправляю СМС  -   #a0
    //if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '3' &&strok[55] == '0')
    //if(strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '3' &&strok[55] == '0')
    if(strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '3' &&strok[58] == '0')
    {
    digitalWrite (ledpinLOW);
    delay(1000);
    //Serial1.println("AT+CMGD=1");  /////// ИЗМЕНИТЬ
    mySerial.println("AT+CMGD=1");
    }

    }
    delay(100); 

    }  
    //0  7  9  1  9  7  6  1  9  8  9  9  0  1  F  0  2  4  0  B  9  1  9  7  6  1  4  6  4  3  3  9  F  2  0  0  0  0  2  1  4  0  5  0  7  1  9  4  6  1  6  1  0  3  A  3  7  0  0  C      -    #a1
    //1  2  3  4  5  6  7  8  9 10             15             20              25             30            35             40              45            50             55             60        
    //0  7  9  1  9  7  6  1  9  8  9  9  0  1  F  0  2  4  0  B  9  1  9  7  6  1  4  6  4  3  3  9  F  2  0  0  0  0  2  1  4  0  5  0  8  1  0  2  4  1  6  1  0  3  A  3  3  0  0  C       -   #a0
    //                                                                                                                                    -     -  -  -                       - 
    Поставил строку Serial.println(strok[52]); чтоб понять значение strok[52] ...но значение выводится закорючкой!!!!
    Последний раз редактировалось igvv; 05.04.2012 в 21:33.

  2. #332
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Я не пойму, зачем ты менял мои

    PHP код:
    for (i=1i<60i++) strok[i] = mySerial.read(); 
    и

    PHP код:
    if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0'
    Они одинаково будут работать для любого оператора и номера телефона. Я ведь присваиваю не с 1-го символа (0), а с 4-го (1), а ты все перепутал.

    Здесь -
    PHP код:
    char strok[61]=""
    - я взял 61 для "надежности", т.к. приходит 60 символов.
    Последний раз редактировалось metaforos; 05.04.2012 в 22:56.
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  3. #333
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    У меня в конце скетча примеры приходящих смс, там так
    6 1 0 3 A 3 7 0 ... единица по счету 52-я и начало не на 2 а на 6!

    Сейчас еще раз проверю все сначала.

  4. #334
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Попробовал по всякому ...ни выходит
    for (i=1; i<58; i++) strok[i] = mySerial.read();

    if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
    и
    if(strok[48] == '6' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
    и
    if(strok[51] == '6' &&strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '7' &&strok[58] == '0')

    Посмотри мою строчку #a1 приходящую
    //0 7 9 1 9 7 6 1 9 8 9 9 0 1 F 0 2 4 0 B 9 1 9 7 6 1 4 6 4 3 3 9 F 2 0 0 0 0 2 1 4 0 5 0 7 1 9 4 6 1 6 1 0 3 A 3 7 0 0 C

    Цитата Сообщение от metaforos Посмотреть сообщение
    PHP код:
    if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0'
    Они одинаково будут работать для любого оператора и номера телефона. Я ведь присваиваю не с 1-го символа (0), а с 4-го (1), а ты все перепутал.
    Я не врублюсь где в скетче сдвиг на 4 происходит ... я уже и со сдвигом попробовал и без, даже и не знаю что теперь делать
    metaforos попробуй скетч с библиотекой NewSoftSerial может это уже действительно из-за неё
    Последний раз редактировалось igvv; 06.04.2012 в 00:34.

  5. #335
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Тогда вместо 2 в :
    PHP код:
    if(strok[48] == [COLOR="red"]'2'[/COLOR] &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0'
    поставь свою 6
    PHP код:
    if(strok[48] == [COLOR="Red"]'6'[/COLOR] &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0'
    А здвиг вот как происходит - Нам приходит 60 символов:
    07919761989901F0240B919761464339F20000214050714616103A 3700C

    В таком виде, твоя 6-ка, будет strok[51]. Но! Первые 3 символа (079), мы используем в
    PHP код:
    if(Serial1.read()=='0' &&Serial1.read()=='7' &&Serial1.read()=='9'// только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д. 
    Теперь у нас для чтения, остается только 57 символов и 1-м символом идет 1, тогда твоя 6-ка, это уже 51-3=48 и т.д. до 55 символа.

    А по поводу NewSoftSerial, пробовать даже не буду. Она у меня не работает. Попробуй подключи на 0 и 1 и просто напиши Serial.
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  6. #336
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    я уже пробовал так, выше постом писал!
    if(strok[48] == '6' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')

    Поправь свой предыдущий скетч пожалуйста там где фигурные скобки надо было подправить... я сейчас с ним играюсь
    PHP код:
     #include <NewSoftSerial.h>
     
    NewSoftSerial mySerial(2,3); 
     
    int i=1;
     
    char strok[61]="";
     
    int ledpin 5;
     
    long previousMillis 0;
     
    long interval 5000;
     
    void setup() 
     { 
     
    pinMode(ledpinOUTPUT);
     
    mySerial.begin(9600);
     
    Serial.begin(9600);
     
    mySerial.flush();
     
    delay(5000);
     
    mySerial.println("AT+CPMS ='MT'\r" );
     
    delay(1000);
     
    mySerial.println("AT+CNMI=1,1\r");
     
    delay(1000);
     }

     
    void loop() 

    unsigned long currentMillis millis();
    if(
    currentMillis previousMillis interval)


    previousMillis currentMillis;
    mySerial.println("AT+CMGL=4\r");
    delay(100); 
    }

     
    // отправляю СМС  -   #a1

    if(mySerial.read()=='0' &&mySerial.read()=='7'&&mySerial.read()=='9'//только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
    {
    for (
    i=1i<58i++) strok [i] = mySerial.read();
     
    Serial.print(strok[48]); // 2
    Serial.println(strok[49]); // 1
    //Serial.println(strok[50]); // 0
    //Serial.print(strok[51]); // 3
    //Serial.print(strok[52]); // A
    //Serial.print(strok[53]); // 3
    //Serial.print(strok[54]); // 7
    //Serial.print(strok[55]); // 0
    digitalWrite (ledpinHIGH);
    delay(3000); 
    digitalWrite (ledpinLOW);
    delay(10000); 
    }

    Выходат так:
    A3
    **
    **
    **
    A3
    **
    *
    **
    Вместо * закарючка
    Цитата Сообщение от metaforos Посмотреть сообщение
    Попробуй подключи на 0 и 1 и просто напиши Serial.
    У меня к сожалению через Serial на 0 и 1 не пошло ничего, телефон теряет сеть и все(ПРАВДА СМСку успевает прочесть-в прочитанные в телефоне уходит) ... если так не разберусь то тогда буду пробовать.

    Завтра LCD экран подключу ...посмотрю что strok[48] - [55] у меня выводит.
    Последний раз редактировалось igvv; 06.04.2012 в 03:11.

  7. #337
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Перепроверил скетч - http://www.compcar.ru/forum/showpost...&postcount=329

    Пробовал на разных операторах. Все исправно работает. В твоем случае, нужно только поменять 2 на 6. В чем может быть проблема, не понимаю. Попробуй

    PHP код:
    Serial.print(strok[48]); 
    Serial.print(strok[49]); 
    Serial.print(strok[50]);  
    Serial.print(strok[51]);  
    Serial.print(strok[52]);  
    Serial.print(strok[53]);  
    Serial.print(strok[54]);  
    Serial.print(strok[55]); 
    и посмотри, что приходит. Потом, просто впиши в

    PHP код:
    if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0'
    Но вот если тебе придут иероглифы, квадратики и т.д., то как победить это, я не знаю. Я просто переставил скобки и все заработало. Причем расставлял, практически "наугад", пока не заработало.
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  8. #338
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Проблема из-за закорючек
    попробовал вывести на LCD 16х2

    lcd.setCursor(0, 1);
    lcd.print(strok[48]); закорючка
    lcd.print(strok[49]); закорючка
    lcd.print(strok[50]); закорючка
    lcd.print(strok[51]); закорючка
    lcd.print(strok[52]); закорючка
    lcd.print(strok[53]); закорючка
    lcd.print(strok[54]); закорючка
    lcd.print(strok[55]); закорючка

    что дальше делать пока не знаю.

  9. #339
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Вот-вот... Я тоже не пойму в чем дело. Хотя тут, возможно из-за телефона. Может действительно с делителем напряжения эксперементировать?
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  10. #340
    Пользователь
    Регистрация
    08.12.2011
    Сообщений
    84
    Вес репутации
    169

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    делитель напряжения не стоит трогать через терминал все знаки приходят как надо или нет и скорость порта на телефоне точно 9600 и как вариант попробуй 19200 из моих сименсов на 9600 никто не работал по умолчанию обычно 19200 идет скорость порта и еще попробуй паузу вствить при чтении в массив были подобные случаи что без паузы плохо читало
    for (i=1; i<58; i++) :strok [i] = mySerial.read();delay(100);} примерно так
    Последний раз редактировалось andrei2882; 06.04.2012 в 23:52.

Страница 34 из 44 ПерваяПервая ... 2428293031323334353637383940 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •