Страница 39 из 43 ПерваяПервая ... 293334353637383940414243 ПоследняяПоследняя
Показано с 381 по 390 из 435

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    27.08.2012
    Возраст
    45
    Сообщений
    15
    Вес репутации
    164

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

    Ребята, огромное спасибо за ветку, помогла много в чем разобраться.
    Купил Arduino Uno i Siemens TC35 board.
    Посылать СМСки получается без проблем, звонить - тоже.
    Но столкнулся с проблемой при чтении СМС.
    Перед чтением СМС набираю команду
    AT+CMGF=1 (переход в текстовый режим)

    В терминле все работает прекрасно, но когда начинаю считывать
    строку с помощью read появляются проблемы.
    Сначала текст идет правильно , показывает телефон, дату время, а затем идут значки ÿÿÿÿÿÿÿÿ&# 255;.
    Я читал что сталкивались с такой проблемой.
    Может расскажете почему она возникает?
    Из-за того что в буфер не влазит или?
    Спасибо

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

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

    Я так и не разобрался с этой проблемой. То она есть, то ее нет. Природа причины тоже не понятна.
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  3. #3
    Новичок
    Регистрация
    27.08.2012
    Возраст
    45
    Сообщений
    15
    Вес репутации
    164

    По умолчанию 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 (ledPinOUTPUT);
      
    Status=LOW;
      
    //Initialize serial ports for communication.
      
    Serial.begin(9600);
      
    gsmSerial.begin(2400);
      
     for (
    i=1i<90i++) 
        { 
         
          
    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=1i<32i++) 
        { 
         
          
    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(ledPinHIGH);
          
    StatusHIGH
          
          
    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(ledPinLOW);
          
    Status LOW;
          
          
    gsmSerial.print("AT+CMGS=+380501234567\r"); 
         
    delay(100);
          
    gsmSerial.print(" Off"); 
          
    delay(10);
          
    gsmSerial.print("\x1A");
         }

       
    // Чистка буфера
       
    for (i=1i<80i++) 
        { 
          
          
    strok [i] = gsmSerial.read();  
          
    Serial.print(strok[i]);
          
         
          
        }
        
    delay(2000);

      }

    Попробуйте кто-нибудь на телефоне, интересно, работает или нет
    Последний раз редактировалось andrey1980; 29.08.2012 в 20:05.

  4. #4
    Местный
    Регистрация
    30.07.2011
    Возраст
    36
    Сообщений
    126
    Вес репутации
    200

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

    Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...

  5. #5
    Новичок
    Регистрация
    27.08.2012
    Возраст
    45
    Сообщений
    15
    Вес репутации
    164

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

    Цитата Сообщение от alekseykok Посмотреть сообщение
    Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...
    AT+CNMI=1,1

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


    Я пытался делать по другому. Пускать программу с командой
    AT+CMGR=1
    после этого считывать и обрабатывать СМС, а затем
    AT+CMGD=1
    удалять, потому что очень часто приходят сервисные СМС, которые нам не нужны.
    Команды работают прекрасно, а вот с текстом СМС постоянные проблемы - библиотека ардуины к ним мало приспособлена, во всяком случае к работе с ТС35

  6. #6
    Местный
    Регистрация
    30.07.2011
    Возраст
    36
    Сообщений
    126
    Вес репутации
    200

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

    у меня 1,1 не работало

  7. #7
    Местный
    Регистрация
    30.07.2011
    Возраст
    36
    Сообщений
    126
    Вес репутации
    200

    По умолчанию 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

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

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

    Мне кажется, что нужно просто изучить АТ команды к ТС35. Я до сих пор никак не могу со своим sim900 разобраться...
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  9. #9
    Местный
    Регистрация
    30.07.2011
    Возраст
    36
    Сообщений
    126
    Вес репутации
    200

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

  10. #10
    Местный
    Регистрация
    30.07.2011
    Возраст
    36
    Сообщений
    126
    Вес репутации
    200

    По умолчанию 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"); - ПЕРЕСТАЕТ РАБОТАТЬ!!!! АААА

    Код:
      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");
      }

Страница 39 из 43 ПерваяПервая ... 293334353637383940414243 ПоследняяПоследняя

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

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

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

Ваши права

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