отваливается отправка данных
- Войдите на сайт для отправки комментариев
Втр, 04/06/2019 - 18:33
Доброго времени суток есть код, который отправляет get запрос на web сервер и дергает файл php, файл php отправляет обратно клиенту т.е ардуино число 1 если все хорошо но проблема в том, что если смотреть монитор, то отправка происходит не всегда, на 5 или 10 раз т.е открыл монитор посмотрел, пришла единица или нет, если нет закрыл и т.д скажите пожалуйста в чем причина ? что так происходит ведь ответ должен приходить всегда или я ошибаюсь
сам код на ардуино
#include <UIPEthernet.h> #include <SPI.h> byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; byte ip[] = {192, 168, 1, 30}; byte server[] = {192, 168, 1, 6}; EthernetClient client; void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); delay(1000); Serial.println("connecting..."); if (client.connect(server, 80)) { Serial.println("connected"); client.println("GET /test.php"); client.println(); } else { Serial.println("connection failed"); } } void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); for(;;) ; } }
код php файла
<?php echo 1; ?>
заранее спасибо за ответ
Если в системе больше одного устройства, никогда не следует думать, что проблема может быть только в одном из них.
А так, конечно, и в UIPEthernet есть проблемы и ENC28J60 сама по себе капризная - ловить с ней баг можно долго. Плавали, знаем.
Скетч странный, но криминала в нём я не вижу. Нужно моделировать ситуацию на железе...
Значит в мониторе видите connecting... затем connected и совсем редко появляется единица, это так?
Судя по адресу сервера, пых-пых где-то рядом, там-то что происходит?
Есть ли соединения от клиента? Приходят ли запросы и в каком виде?
Значит в мониторе видите connecting... затем connected и совсем редко появляется единица, это так?
Судя по адресу сервера, пых-пых где-то рядом, там-то что происходит?
Есть ли соединения от клиента? Приходят ли запросы и в каком виде?
Значит в мониторе видите connecting... затем connected и совсем редко появляется единица, это так?
да, это так, но методом научного тыка выяснил, что если смотреть монитор один раз в 2 минуты, то все нормально единица приходит, а вот если чаще смотреть монитор т.е один раз в минуту, то единица не приходит
Судя по адресу сервера, пых-пых где-то рядом, там-то что происходит?
сервер это просто нуот, на котором установлен денвер, веб сервер апач и БД sql, суть такова что с ардуино идет отправка данных и эти данные пишутся в БД, а единицу я хочу возвращать на ардуино для того, что бы быть уверенным, что запись прошла корректно
Есть ли соединения от клиента? Приходят ли запросы и в каком виде?
вот это не знаю как посмотреть или сделать, подскажите пожалуйста
заранее спасибо за ваш ответ
Если в системе больше одного устройства, никогда не следует думать, что проблема может быть только в одном из них.
А так, конечно, и в UIPEthernet есть проблемы и ENC28J60 сама по себе капризная - ловить с ней баг можно долго. Плавали, знаем.
Скетч странный, но криминала в нём я не вижу. Нужно моделировать ситуацию на железе...
А так, конечно, и в UIPEthernet есть проблемы и ENC28J60 сама по себе капризная - ловить с ней баг можно долго. Плавали, знаем.
подскажите пожалуйста на, что можно заменить ENC28J60, что бы не ловить баг
заранее спасибо за ваш ответ
Для простого ардуинщика выбор невелик - или ENC28J60 или что-то из Wiznet.
вот это не знаю как посмотреть или сделать
Что происходит на сетевой карте можно смотреть брутальным tcpdump-ом или оконным wireshark-ом, по мне они оба хороши.
tcpdump не требует окон, удобен для захвата пакетов на устройствах с ограниченными ресурсами, например на wifi роутерах.
wireshark прост в управлении, есть примеры фильтров и возможность их сохранения.
Если соединения всё-же устанавливаются, то запросы должны (могут) как-то логироваться вашим сервером, вам виднее.
Если сервер "БД sql" это MySQL, для ардуины есть клиент MySQL_Connector_Arduino.
Для сохранения данных в БД заход через web не самый близкий однако.
Просто предположение.
Езернет шилд подключен к ардуине через spi(четыре линии) и питание(две линии), ресет на шилде видимо не задействован.
Каждый раз запуская монитор, этот монитор ресетит ардуину, а шилд не ресетится, возможно из за этого поведение его не предсказуемо.
Практическое применение перезагрузки ардуины каждую минуту(и чаще) мне не понятно.
Езернет шилд подключен к ардуине через spi(четыре линии) и питание(две линии), ресет на шилде видимо не задействован.
Каждый раз запуская монитор, этот монитор ресетит ардуину, а шилд не ресетится, возможно из за этого поведение его не предсказуемо.
Ethernet.begin() всё делает, что нужно: init(mac); configure(ip,dns,gateway,subnet);, а в ините делается softreset. Так что тут проблем не должно быть.
Езернет шилд подключен к ардуине через spi(четыре линии) и питание(две линии), ресет на шилде видимо не задействован.
Каждый раз запуская монитор, этот монитор ресетит ардуину, а шилд не ресетится, возможно из за этого поведение его не предсказуемо.
Практическое применение перезагрузки ардуины каждую минуту(и чаще) мне не понятно.
у меня подключение организовано так
подскажите пожалуйста, что нужно сделать что бы это заработало нормально, если поменять железо, то могу поменять, если услуга, то готов обсудить цену
мне нужно сделать что бы работало
заранее спасибо за ваш ответ
RES не надо подключать. А вот то, что питаете с 3.3V ардуины - это может оказаться проблемой. Я у себя драйвер ENC28J60 рихтовал, чтобы отслеживать ошибки. А иначе да - может брякнуться в самый неожиданный и непонятный пользователю момент.
RES не надо подключать. А вот то, что питаете с 3.3V ардуины - это может оказаться проблемой. Я у себя драйвер ENC28J60 рихтовал, чтобы отслеживать ошибки. А иначе да - может брякнуться в самый неожиданный и непонятный пользователю момент.
А вот то, что питаете с 3.3V ардуины - это может оказаться проблемой.
получается нужно запитать отдельно от ардуины ?
На ардуине может стоять слабый стабилизатор. А на ENC может свой ещё стоять. Вобщем, надо посмотреть на оба девайса.
На официальной уне 3.3В мах ток 150 мА. ENC28 по мануалу 250мА. Народ расказывает что в пике может и за 300мА забрать. Однако питать ENC надо от отдельного источника на 3.3В. Если конечно стабилизатора на плате ENCа нет.
получается, проблема только в том, что нужно запитать отдельно ENC28J60 , получается так ?
заранее спасибо за ответ
Неверный вывод. Это одна из вероятных проблем.
Чтобы найти действительную - нужно посидеть, башку почесать. Могу предоставить свой наработанный опыт на взаимовыгодной основе.
Неверный вывод. Это одна из вероятных проблем.
Чтобы найти действительную - нужно посидеть, башку почесать. Могу предоставить свой наработанный опыт на взаимовыгодной основе.
готов обсудить
Ну, давайте обсудим. Напишите на wrk.sadman@gmail.com
получается нужно запитать отдельно от ардуины ?
Померь тестером, если есть просадка на 3.3V, то однозначно требуется внешнее питание.