Работа сервопривода через GSM-Shield

Тема в разделе "Arduino & Shields", создана пользователем Сталкер77, 20 окт 2012.

  1. Помогите пожалуйста советом!
    Пытаюсь включить отработку программы для сервы через СМСку на GSM-Shield.
    Вот скетч:
    [/CODE]

    После према СМСки серва просто дергается и все.
    Питается серва от отдельного источника 6В
    Мне кажется есть ошибки в коде.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Вы не запостили сам код
     
  3. Код (Text):
    #include <SoftwareSerial.h>
    #include <Servo.h>
     
    Servo myservo;
    SoftwareSerial gprsSerial(0, 1);
     
    int pos = 0;
     
    void setup()
    {
        myservo.attach(9);  // attaches the servo on pin 9 to the servo object
        gprsSerial.begin(9600);
        Serial.begin(9600);
     
        // Настраиваем приём сообщений с других устройств
        // Между командами даём время на их обработку
        gprsSerial.print("AT+CMGF=1\r");
        delay(300);
        gprsSerial.print("AT+IFC=1, 1\r");
        delay(300);
        gprsSerial.print("AT+CPBS=\"SM\"\r");
        delay(300);
        gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
        delay(500);
    }
     
    String currStr = "";
    // Переменная принимает значение True, если текущая строка является сообщением
    boolean isStringMessage = false;
     
    void loop()
    {
        if (!gprsSerial.available())
            return;
     
        char currSymb = gprsSerial.read();  
        if ('\r' == currSymb) {
            if (isStringMessage) {
                //если текущая строка - SMS-сообщение,
                //отреагируем на него соответствующим образом
                if (!currStr.compareTo("Servo")) {
                  Serial.println("Starting servo");
                  for(pos = 0; pos <= 180; pos +=90)
                {                                
                myservo.write(pos);            
                delay(150);                    
                }
                for(pos = 180; pos>=1; pos-=90)
                {                              
                myservo.write(pos);          
                delay(150);              
                }
              }
                isStringMessage = false;
                } else {
                if (currStr.startsWith("+CMT")) {
                    //если текущая строка начинается с "+CMT",
                    //то следующая строка является сообщением
                    isStringMessage = true;
                    Serial.println("String start with +CMT");
                }
            }
            currStr = "";
        } else if ('\n' != currSymb) {
            currStr += String(currSymb);
        }
     
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Код похож на правду.

    Соединены ли земли контура питания сервы и Arduino?
    Работает ли серва без GPRS-шилда, просто с кодом из двух ваших циклов?
     
  5. Земли соединены и серва работает с кодом без GPRS.
    Видимо причина в части кода для обработки СМС.
     
  6. nailxx

    nailxx Официальный Нерд Администратор

    Ещё раз просмотрел код. Вроде бы всё ок. Если серва подёргивается при получении SMS, то дело доходит до `myservo.write`. Если дело до него доходит, значит мы в цикле. Если мы в цикле, всё должно отработать.

    Но не работает. У меня есть подозрение, что в этот момент, по некоторой причине вся ваша конструкция перезагружается.

    Можете попробовать вставить мигание светодиода в setup'е, чтобы подтвердить или опровергнуть теорию. И ещё, пальцем в небо: может попробовать для servo другой pin… на всякий случай, во избежание коллизии с чем-нибудь на GPRS Shield.
     
  7. Спасибо Вам огромное!
    Вы были правы.
    Поменял пин для сервы и поменял порты Tx Rx и все заработало.
     
  8. alspeed

    alspeed Нуб

    Всем добрый день!
    Мне требуется GSM сервопривод для дистанционного управления ручкой котла. Времени на изучение нет. Может кто-нибудь продаст мне уже готовый продукт ? 892О-615-98семь6 Алексей.
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Что такое "GSM сервопривод"? :)
    Можете купить контроллер, GSM-shield и сервопривод. Прошивка будет несложная, поищите тему "управление отоплением в загородном доме", там вроде бы похожая задача решалась.
    Чтобы сервопривод был сразу с управлением по GSM - я о таких чудесах еще не слышал :)