Нестабильная работа Arduino+W5100
- Войдите на сайт для отправки комментариев
Чт, 02/07/2015 - 01:43
Доброго времени суток. Приобрел у китайцев Arduino Mega с W5100. Залил скетч
#include <Ethernet.h> #include <SPI.h> byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }; byte ip[] = { 192, 168, 1, 3 }; byte server[] = { 192, 168, 1, 2 }; // Google 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 /test2.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(;;) ; } }
В некоторый случаях arduino подключается к базе данных и обрабатывает php скрипт, а в некоторых выдает "connection failed".
Собственно вопросы:
1) От чего это может зависить?
2) Как с подобным боросться. Хочется более стабильную работу.
Я бы на месте сервера тоже посылал такого клиента переодически. Ибо какого фига он из себя изображает ddos атаку.
Будьте добры, подскажите, как правильно сделать запрос? Или ссылочкой поделитесь. И если можите подскажите, почему при открытии монитора последовательного порта происходит переподключение arduino к серверу.
Вот вы типа щас поржать? Посмотрите на свой код. Что он делает? 100500 раз в секунду долбит сервер. ЗАЧЕМ?
Я понял, что вы имеете ввиду и добавил задержку.
не помогло.
Попробуйте побольше задержку 10 секунд например. Никто не знает что у вас за сервер и чем он там занят
http://forum.arduino.cc/index.php?topic=146838.15
Так запрос же из Setup() отправляется. В loop() только ответ от сервера слушается. Это не напрягает сервер.
Попробуйте не назначать IP Ардуинке, пусть роутер сам назначает.
А запрос отправляйте в таком виде:
P.S. мервер Гугла повеселил :)
Спасибо за ответ. Может вы посоветуете, что сделать, чтобы "все работало".
есть скрипт
Есть скетч для отладки.
И скрин монитора
Перепробовал различные вариации. Подскажите, как с этим бороться
Проблема может быть в роутере? Перед началом действий я пингую ардуино (ping 192.168.1.3 -n 100), когда непосредственно вызываю монитор порта пропадает соединение секунд на 10. Потом происходит подключение к серверу, ардуино пингуется нормально. Но client.connected ВСЕГДА 0. Сервер на ubuntu. Вчера только переустановил, стоит только LAMP.
А что не работает то?
Не могу получить данные из mysql базы GET запросом. client.connected постоянно возвращает 0
вариантов много. может рутер не пускает, может сервер не принимает, может мак "левый", может айпишник уже занят.
ip для данного мака присваивается в обход DHCP . А у сервера есть какой нибудь родной брендмауэр, который может не пускать.
Откуда нам знать про настройки Вашего сервера?
А вы случайно не подскажите, если client.connect(serv, port) возвращат -5, что это может означать?
А вы случайно не подскажите, если client.connect(serv, port) возвращат -5, что это может означать?
Судя по описанию - так не бывает.
https://www.arduino.cc/en/Reference/ClientConnect
С правами доступа на сервере все в порядке?
Вы уверены, что ваш скрипт работает корректно? Браузеры могут некоторые ошибки прощать...
Вы уверены, что причина не в вашем странном мас-адресе? Может попробуйте обычный...
Gippopotam, если Вас не затруднит, не могли бы вы оставить какие нибудь контакты для связи, чтобы писать Вам напрямую.
Данный пример адекватно работает. Каждый 10 секунд пишет в базу значение.
Gippopotam, если Вас не затруднит, не могли бы вы оставить какие нибудь контакты для связи, чтобы писать Вам напрямую.
StudioGippopotam@gmail.com