модем NEOWAY M590
- Войдите на сайт для отправки комментариев
Сб, 08/10/2016 - 17:07
Здравствуйте уважаемые форумчане. Просьба помочь разобраться с данным модулем, который ну никак не конектится с сервером. Инициализацию и настройки проходит полностью. IP серый получает.
Но на запрос "AT+FTPLOGIN=ip,login,pass" (с этими данными легко конектюсь файлзилой с сервером)
выдает вот это:
OK
+FTPLOGIN:Error TimeOut
+FTPLOGIN:Error Connect Server Fail
Если пытаюсь законектится с народным мониторингом, для отправки DHT, то при рег. нового датчика пишет что данные этот датчик не слал (при вводе MAC этой симки).
NEOWAY M590 REVISION 01.30d
Подскажите пожалуйста в чем проблема?
1. возможно, из-за того, что порт забыл прописать.
2. Проверь баланс.
Не порт IP все как надо, баланс есть. Проблему победил отправкой данных на свой сервер по FTP.
Появилась другая проблема. Скетч работает примерно 15 мин если отправлять данные каждую минуту и примерно два часа если отправлять данные с интервалом 10 мин. Потом молчек. Запускаю монитор порта и ардуинка или модем как бы просыпаются и дальше шлют данные ровно столько же, после чего опять молчек. Это вообще что? И как это решить.
Есть у меня подозрение, что он перегревается. Я во время своих экспериментов тоже замечал, что после долгой работы ему "надо отдохнуть". Но по сути не знаю.
Есть у меня подозрение, что он перегревается.
Может радиатор на него с водянкой :)
Есть у меня подозрение, что он перегревается.
Может радиатор на него с водянкой :)
Может что с кодом не так?
Кстати когда саму ардуину перезагружаешь, данные снова шлются. Может в ней чего то переполняется. Незнаю может буфер какой.
Ну, например, команда flush, по моему мнению, лишняя. А чтобы не переполнялся буфер, надо Serial всё время читать. Я где-то тут уже выкладывал код.
Посмотрите: вот как-то так.
arduino.ru/forum/programmirovanie/kak-zashchitit-bufer-serial1-ot-perepolneniya
Sh0a1m0a0n1 спасибо конечно, пересмотрел тему, и не только эту, тут решения не увидел (kak-zashchitit-bufer-serial1-ot-perepolneniya). Вы создавали еще похожую тему, тоже пролистал. Вы предлагади реализовать защиту от переполнения буфера вот таким образом:
Не совсем понял как это работает, вы пишете "Пихнул её почти после каждого оператора, данные перестали теряться" - что значит " почти после каждого оператора"- операторов всего два setup() и loop().
если переодически подвисает модем М590, то надо установить керамический конденсатор 0.1 мкф между 14 выводом модема и землей
Дык модем то не виснет, я так понимаю ардуина устает. Буфер переполняется сериал. Вот и бьемся тут, пока никак!
ну-ну, бейтесь :)
Воткнуть то не проблема, но на чем основано ваше предположение? В схеме подключения нет такого конденсатора в этом месте.
идут помехи по питанию симки и это тут уже обсуждалось
http://arduino.ru/forum/apparatnye-voprosy/ne-rabotaet-neoway-m590?page=5#comment-205653
После каждой команды, конечно, извините.
А работает проще простого. Читает содержимое буфера, а, значит, очищает его. Заодно заменяет Delay.
Sh0a1m0a0n1 не могли бы вы на примере моего кода это показать, как это будет выглядеть. Буду благодарен.
Ато я чет попробывал ее вставить после некоторых АТ команд, компелятор заругал.
Сделал вот так, правильно?:
Да возьмите мой код, выкиньте лишнее, добавьте своё. У меня всё работало, потом, жаль, деньги на симке кончились.
По краней мере, это компилируется.
Я тут добавил циклы for. В случае дисконнекта, перезагрузки модема или какой другой ошибки они дают возможность вернуться к началу кода, заново подключиться к интернету и серверу. Неплохо бы ещё научить модем проверять баланс.
Это версия с вычитыванием буфера из сериал?
Да. А на что конкретно у Вас ругался компилятор?
Уж точно и не вспомню. Уже переделал. Использовал ваш цикл, спасибо.
Тестирую. Вроде работает. Другая проблема вылезла. Заменил датчик на DHT22 изменил немного скетч, а он мне в сериал какую то фигню шлет. Штатным скетчем проверял, датчик рабочий. Гдето в коде ошибка.
Не вижу, где вы используете мой цикл.
К сожалению, не разбирался с датчиком ещё. Вот придёт мой датчик, буду у Вас учиться)
Ещё раз переписал код. Вставил Ваш код теперь)
Только логин и пароль по фтп поменять не забудьте :)
Nfr jyb nen Dfib)
Ругается на 80 строку
ISO C++ forbids comparison between pointer and integer [-fpermissive]
Это где такое? Не нашёл ничего подобного 80-й строке. Сейчас то уже не ругается?
if (gsm.find("+FTPLOGIN: User logged in."==true))
вот она, говорит что:
Уберите == true. Где-то нормально компилирует, где-то нет. Понял свою ошибку. Не там поставил. Надо вынести за одни скобки.
Убрал в двух местах, спотыкнулся тут: DmxSimple.write(channel, value); ошибка 'DmxSimple' was not declared in this scope
134 строка
А, это лишнее. Это Вам нафиг не сдалось, просто не убрал из своего кода. Вам же не нужна функция gprsget, так снесите её полностью! Извиняюсь, что не отшлифовал всё, крепко занят другим проектом.
Чувствую немного остальсь! Скетчь компелируется, но работает пока не совсем как надо. Попробую описать то что шлется в сериал:
регистрация в сети проходит IP получаем +XIIC: 1, 10.226.55.78
на сервер проходим +FTPLOGIN:User logged in
Извиняюсь, опять моя дурацкая ошибка. После "User Logged in" надо убрать точку.
UPD: Только что-то долго идут пустые строки. В коде установлен "таймер" на 10 секунд.
Как убрать эти пустые строки совсем?
Или может я чего в коде науберал?
А они Вам мешают?
А всё остальное работает?
Попробуйте переделать с этого
на это:
Дык если б в одних строках дело было..... Ведь к сожалению код не отрабатывает. Не обновляет фафл на сервере данными с датчика и все тут. :( В последнем исправлении ругнулся на это if (gsm.length()>2)
заменить length на available. Возможно, вместо 2 поставить 0.
Строки пустые пропали, это хороше, теперь бы его из замкнутого круга вытащить !
Мдя. Тут надо один раз сесть и написать нормальный код.
Меняем тогда код обратно на
и всё.
То чувство, когда сваял нечто, похожее на шедевр, а отладить некогда(((
если переодически подвисает модем М590, то надо установить керамический конденсатор 0.1 мкф между 14 выводом модема и землей
а насчёт модуля WiFi ESP8266 ESP-01 не подскажете?
При включении выдаёт строки инициализации, а потом только иероглифы шлёт вместо эха, а команды не выполняет.
Хочу спросить, Вы вообще с языком программирования знакомы? Скетч--то простейший. Я сам занялся только начинаю. Вы просто посмотрите правила синтаксиса и значения команд. Лучше же самому знать, чем ждать, когда кто-то сделает за тебя. Научитесь, а там глядишь и сами сообществу сможете помочь, да и интереснее будет дальше-то ковыряться.
Sh0a1m0a0n1 вы совершенно правы, лучше самому уметь. Опыта программирования как вы поняли нет. Разобраться надо бы конечно самому, но что то туговато у меня с этим модемом идет. Хотя для контроля и поддержания микроклимата, устройство сварганил. Вот теперь для него и хочу этот модем приспособить. Тут вся проблема то завертелась вокруг переполнения буфера на этом и сел...
Не понимаю наверное сути и тонкости работы в сети. В любом случае вам большое спасибо что уделили время.
По поводу последних исправлений, поменял цикл for на while(!gsm.find("+FTPLOGIN")); Заработало как прежде. Бодро шлет показания но примерно 30 раз. Затем стоп и как говориться - "в каждой строчки только точки" ................................
Я так понимаю проблема переполнения буфера.
С чего бы ему переполняться? Не думаю. Ищите в другом.
Как говорят автомеханика - "Главное выявить проблему, а починить нет проблем!"
По вашему мнению остановка выполнения программы из последнего исправленного скетча вот с этим куском:
не является следствием переполнения буфера хардового сериала?
Повторюсь, симтомы похожи на то что ардуина перестает слать данные, каждый раз после отправки примерно 33-х или 36-ти пакетов данных, после чего в сериал выводятся постоянные точки. После закрытия и вновь открытия програмного монитора ардуина вновь исправно шлет 36 пакетов.
Я изначально думал что вот такое закрытие програмного монитора чистит буфер сериала, поэтому скетч и отрабатывает вновь после перезапуска монитора. Разве не так?
Ну не знаю. Вставьте в начало gprssend этот код:
Перед каждым соединением он будет кидать в serial всё, что находится в буфере.
Нашел интересное решение данной проблемы. Сторожевой таймер!
Поясните, пожалуйста.
Сейчас сам с этим разбираюсь. Вот от куда информация.
http://mypractic.ru/urok-16-povyshenie-nadezhnosti-programm-dlya-arduino-storozhevoj-tajmer.html
Каково ваше мнение? Думаю мне сгодится.
Так же на этом форуме человек проблему поднимал вот тут
Программный Reset
http://arduino.ru/forum/programmirovanie/programmnyi-reset