Mega2560 и NEOWAY M590. Не заливается скетч.

fid
Offline
Зарегистрирован: 20.12.2014

Купил NEOWAY M590. Вроде все  работает. В процессе изучения у меня возник 2 вопроса:

1) Не заливается определенный скетч в мегу. А все другие заливаются. (СМС шлет, звонит на определенный номер по событию)Примеры  с этого  сайта. Я их немного изменил, программный порт на аппаратный. Кроме этого скетча все работает. Симптомы: в начале rx и tx бодренько начинают перемиговаться,через секунду начинают мигать синхронно раз 2-3 секунду короткими импульсами. Через сек. 30 IDE пишет:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_command(): failed miserably to execute command 0x13
avrdude: stk500v2_paged_write: write command failed
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.cc/en/Guide/Troubleshooting#upload .

A вот сам скетч:

void setup() {
  Serial.begin(19200);
 Serial1.begin(19200);
  pinMode(13, OUTPUT);    
}

void loop() {
 
    if(Serial1.find("RING")){                    // если нашли RING
      Serial.println("RING!");
      Serial1.println("AT+CLIP=1");              // включаем АОН, 
            
      while(1){                              // в цикле
       if (Serial1.find("+7927000000")){         // ищим номер телефона, если нашли
         digitalWrite(13, !digitalRead(13)); // инвертируем 13 выход
         Serial.println("!!!");
         break;                              // и выходим
       }  
       else{                                 // иначе 
         Serial1.println("AT+CPAS");             // спрашиваем состояние модема   
         delay(100);
         if (Serial1.find("+CPAS: 0")) break;    // и если он в "готовности", выходим из цикла
       }                                     // если звонок в процессе, возвращает +CPAS: 3
      }                                      // и крутимся дальше
       
        Serial1.println("AT+CLIP=0");            // выключаем АОН, 
        delay(100);
        Serial1.println("ATH0");                 // сбрасываем вызов  
   
    }

}

Во время заливки в мегу нечего не подключено.

2) Чтоб не плодить темы решил здесь написать. При отправке СМС с терминальной программы в конце надо нажать Ktrl+z , но ,после этого модем пишет ERROR , а с ардуино все норм(пока до юникода не дорос). Может эту процедуру опишет кто нибудь подробнее. Оценить возможности (глюки) мне кажется проще с терминала.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Что до этого было залито? Просто пустой шаблон или блинк сейчас можете в нее залить?

fid
Offline
Зарегистрирован: 20.12.2014

Именно этот скетч не заливается. Остальные скетчи все норм. и блинк и отправка смс заливается и работают.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Нельзя объявить для MEGA Serial1! это хардверный порт!!!

Поменяйте название софтверного например на MySerial
Например так

#include <SoftwareSerial.h>

const byte rxPin = 2;
const byte txPin = 3;

// set up a new serial object
SoftwareSerial mySerial (rxPin, txPin);

void setup() {
  Serial.begin(19200);
  Serial1.begin(19200);
  pinMode(13, OUTPUT);
}

void loop() {

  if (mySerial.find("RING")) {                  // если нашли RING
    Serial.println("RING!");
    mySerial.println("AT+CLIP=1");              // включаем АОН,

    while (1) {                            // в цикле
      if (mySerial.find("+7927000000")) {        // ищим номер телефона, если нашли
        digitalWrite(13, !digitalRead(13)); // инвертируем 13 выход
        Serial.println("!!!");
        break;                              // и выходим
      }
      else {                                // иначе
        mySerial.println("AT+CPAS");             // спрашиваем состояние модема
        delay(100);
        if (mySerial.find("+CPAS: 0")) break;    // и если он в "готовности", выходим из цикла
      }                                     // если звонок в процессе, возвращает +CPAS: 3
    }                                      // и крутимся дальше

    mySerial.println("AT+CLIP=0");            // выключаем АОН,
    delay(100);
    mySerial.println("ATH0");                 // сбрасываем вызов

  }

}

И убедитесть что в IDE указана именно MEGA  а не UNO или еще что, когда счетч заливаете.
Потому как MEGA должна ругнуться вам при компиляции на Serial1 

И потом если не секрет, зачем использовать софтверный порт на меге? У неё 3 свободных хардверных.

fid
Offline
Зарегистрирован: 20.12.2014

Andrey12 пишет:

Нельзя объявить для MEGA Serial1! это хардверный порт!!!

Поменяйте название софтверного например на MySerial
Например так

#include <SoftwareSerial.h>

const byte rxPin = 2;
const byte txPin = 3;

// set up a new serial object
SoftwareSerial mySerial (rxPin, txPin);

void setup() {
  Serial.begin(19200);
  Serial1.begin(19200);
  pinMode(13, OUTPUT);
}

void loop() {

  if (mySerial.find("RING")) {                  // если нашли RING
    Serial.println("RING!");
    mySerial.println("AT+CLIP=1");              // включаем АОН,

    while (1) {                            // в цикле
      if (mySerial.find("+7927000000")) {        // ищим номер телефона, если нашли
        digitalWrite(13, !digitalRead(13)); // инвертируем 13 выход
        Serial.println("!!!");
        break;                              // и выходим
      }
      else {                                // иначе
        mySerial.println("AT+CPAS");             // спрашиваем состояние модема
        delay(100);
        if (mySerial.find("+CPAS: 0")) break;    // и если он в "готовности", выходим из цикла
      }                                     // если звонок в процессе, возвращает +CPAS: 3
    }                                      // и крутимся дальше

    mySerial.println("AT+CLIP=0");            // выключаем АОН,
    delay(100);
    mySerial.println("ATH0");                 // сбрасываем вызов

  }

}

И убедитесть что в IDE указана именно MEGA  а не UNO или еще что, когда счетч заливаете.
Потому как MEGA должна ругнуться вам при компиляции на Serial1 

И потом если не секрет, зачем использовать софтверный порт на меге? У неё 3 свободных хардверных.

serial1 это и есть аппаратный serial port. этот скетч нормально компилируется ,только не заливается.

 

fid
Offline
Зарегистрирован: 20.12.2014

Этот скетч нормально работает.

//#include <SoftwareSerial.h>

//SoftwareSerial gsm(7, 8); // RX, TX

void setup() {
  Serial.begin(19200);  
  Serial1.begin(19200);
  pinMode(6, INPUT_PULLUP); 
 Serial1.println("AT+CMGF=1");
  delay(100);
  Serial1.println("AT+CSCS=\"GSM\"");
  delay(100);

}

void loop() {
   if(!digitalRead(6)){     // если нажали кнопку
      while(1){             // проверяем готовность модема
        Serial1.println("AT+CPAS");
        if (Serial1.find("0")) break;
        delay(100);  
      }
      Serial1.println("AT+CMGS=\"792700000\""); // даем команду на отправку смс
      delay(100);
     Serial1.print("analogPing A0:");  // отправляем текст
      Serial1.print(analogRead(A0));    // и переменную со значением
      Serial1.print((char)26);          // символ завершающий передачу
       Serial.println("ok");
    }
    
     while (Serial1.available() > 0) {  // останавливаем программу и смотрим что ответили
    Serial.write(Serial1.read()); 
  }

}

Andrey12 на твой вопрос зачем использовать софтверный порт на меге? У неё 3 свободных хардверных.  

Где ты видишь софтверный UART?

fid
Offline
Зарегистрирован: 20.12.2014

Ответ на первую часть нашлось неожиданно: Странно, но виновник 16 строка три восклицательного знака .Осталось найти ответ на вторую часть вопроса....

MacSim
Offline
Зарегистрирован: 28.11.2012

fid пишет:

три восклицательного знака

а чем ide не устраивает три ! знака?

fid
Offline
Зарегистрирован: 20.12.2014

MacSim пишет:

fid пишет:

три восклицательного знака

а чем ide не устраивает три ! знака?

A хрен его знает, убираеш 16 строку или только !!! -все норм, Может баг какой то. IDE 1.6.6

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Извините, херню сморозил, на работе настроена uno, загрузил скетч она грит Serial1 не объявлен....
Короче чет я не то сказал.

Но дома MEGA подцеплена, загрузил ваш счетч, все ок грузится
IDE 1.6.5. Откатился с 1.6.7 после того как LCD I2C перестал работать. Тут на форуме было решение что надо LCD I2C библиотеку обновить, обновил мне не помогло. Попробуйте и правда 1.6.5

Модуля NEOWAY M590 у меня нет. Проверить не смогу.