Mega2560 и NEOWAY M590. Не заливается скетч.
- Войдите на сайт для отправки комментариев
Купил 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 , а с ардуино все норм(пока до юникода не дорос). Может эту процедуру опишет кто нибудь подробнее. Оценить возможности (глюки) мне кажется проще с терминала.
Что до этого было залито? Просто пустой шаблон или блинк сейчас можете в нее залить?
Именно этот скетч не заливается. Остальные скетчи все норм. и блинк и отправка смс заливается и работают.
Нельзя объявить для 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 свободных хардверных.
Нельзя объявить для 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. этот скетч нормально компилируется ,только не заливается.
Этот скетч нормально работает.
//#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?
Ответ на первую часть нашлось неожиданно: Странно, но виновник 16 строка три восклицательного знака .Осталось найти ответ на вторую часть вопроса....
три восклицательного знака
а чем ide не устраивает три ! знака?
три восклицательного знака
а чем ide не устраивает три ! знака?
Извините, херню сморозил, на работе настроена uno, загрузил скетч она грит Serial1 не объявлен....
Короче чет я не то сказал.
Но дома MEGA подцеплена, загрузил ваш счетч, все ок грузится
IDE 1.6.5. Откатился с 1.6.7 после того как LCD I2C перестал работать. Тут на форуме было решение что надо LCD I2C библиотеку обновить, обновил мне не помогло. Попробуйте и правда 1.6.5
Модуля NEOWAY M590 у меня нет. Проверить не смогу.