arduino mega+ethernet shield w5100 - не пингуется
- Войдите на сайт для отправки комментариев
Пт, 04/04/2014 - 08:22
Привет всем!
наконец-то приехал шилд, "работающий" на ардуино мега)
установил, залил программку:
#include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte gateway[] = { 192, 168, 2, 1 }; byte subnet[] = { 255, 255, 255, 0 }; //IPAddress ip(192, 168, 2, 245); // IP по которому мы будем обращаться к этой странице byte ip[]={192, 168, 2, 245}; // IP по которому мы будем обращаться к этой странице EthernetServer server(80); // порт 80 void setup() { //Ethernet.begin(mac, ip); // запускаем Ethernet шилд Ethernet.begin(mac, ip, gateway, subnet); server.begin(); // запуск web сервера Serial.begin(9600); Serial.println("Programm RUN!"); } // the loop routine runs over and over again forever: void loop() { Serial.println("test"); EthernetClient client = server.available(); // опрашиваем канал в поисках клиента //////////////////////// if (client) { // если клиент найден boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { // если клиент доступен для чтения Serial.println("client connected..."); char c = client.read(); // читаем 1 бит полученный от клиента Serial.println(c); // <span style="font-size: 9pt; font-family: Consolas;">последняя строка запроса является пустой и заканчивается </span> \n // реагировать на клиента только после полного прочтения if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); // send web page client.println("<!DOCTYPE html>"); client.println("<html>"); client.println("<head>"); client.println("<title>Arduino Web Page</title>"); client.println("</head>"); client.println("<body>"); client.println("<h1>Привет от Arduino!</h1>"); client.println("<p>Эта страница с WEB сервера Arduino </p>"); client.println("</body>"); client.println("</html>"); break; } //каждая строка полученная от клиента заканчивается \r\n if (c == '\n') { // последний символ принятого запроса // начало новой строки для чтения currentLineIsBlank = true; } else if (c != '\r') { // получение текстового символа от клиента currentLineIsBlank = false; } } // end if (client.available()) } // end while (client.connected()) delay(1); // даем время для браузера получить данные client.stop(); // закрываем соединение } //////////////////////// delay(30000); // delay in between reads for stability }
но не могу пингануть плату.
нахожусь с ней в одной подсети. вообще у меня dhcp поднят, назначил свободный IP.
C:\Users\bdm>ipconfig Настройка протокола IP для Windows Ethernet adapter Подключение по локальной сети 2: DNS-суффикс подключения . . . . . : IPv4-адрес. . . . . . . . . . . . : 192.168.2.237 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз. . . . . . . . . : 192.168.2.4 Туннельный адаптер isatap.{7B8719DF-7827-4877-8548-36E60704651C}: Состояние среды. . . . . . . . : Среда передачи недоступна. DNS-суффикс подключения . . . . . :
C:\Users\bdm>ping 192.168.2.245 Обмен пакетами с 192.168.2.245 по с 32 байтами данных: Ответ от 192.168.2.237: Заданный узел недоступен. Ответ от 192.168.2.237: Заданный узел недоступен. Ответ от 192.168.2.237: Заданный узел недоступен. Ответ от 192.168.2.237: Заданный узел недоступен. Статистика Ping для 192.168.2.245: Пакетов: отправлено = 4, получено = 4, потеряно = 0
byte
gateway[] = { 192, 168, 2, 1 };
поставил
byte
gateway[] = { 192, 168, 2, 4 };
тоже самое...
на Шилде мигает красным LINK, RX горит красным, иногда мигает красным TX
шилд подключил обычным пачкордом (бо о бз с бс з бк к), др конец в свиче.
Если подключаю этот пачкорд в системник - пингую его (второй комп).
плата не висит - выдает периодически TEST в монитор порта. Питание пока берез по USB.
ваш скетч это вебсервер? Работает как вебсервер? Вероятно, он не обязан (не запрограммирован) отвечать на пинги.
я ещё посмотрите на "бренндмауэр виндовс". Может он режет.
не даст вам пинговать его. Потому что когда вы пингуете яндекс и у вас 80мс - это плохо, а у вас вообще 30000мс.
А в самой библиотеке есть обработка пингов - происходит во время обработки наличия подключения - "server.available();".
Плата у вас висит! - но когда отвисае выдает тест - но похоже время отвисания с приходом пинга не пересекается)))
что-то мне не нравится, как вы рассуждаете)))
если у устройства есть ip-адрес и он в сети, он должен быть доступен и пинговаться, не факт, что будет все отрабатывать из скейтча, но железо отвечать должно)
Уберите delay(30000);
поставил delay(10);
пинга нет)
на Шилде мигает красным LINK, RX горит красным, иногда мигает красным TX
зеленый ON и 100М зеленый)
Тут delay вообще не должно быть -оно тормозит веб сервер .Поищите более нормальные примеры для данной библиотеке
Значит у вас проблемы не с програмной частью.
не с аппаратной?
при заливке скетча ошибок не вываливается.
Я далеко не гуру, но обработки пинга не вижу... через веб заходить пробовали с последним скетчем?
%) а что такое пинг по-вашему?
как же я зайду по вэбу, если узел IP недоступен?)
Я занимаюсь схожей ерундой, только с ENC28J60. И именно так, что у меня девайс НЕ пингуется, но при этом через браузер страница открывается.
Если обычной PCI-сетевой карте подать питание - она не будет отвечать на пинги. Этим занимается софтовая часть - всякие ОС и бут-ромы
спасибо за инф)
попробую черех хаб в сетевуху, без участия домена)
%) а что такое пинг по-вашему?
А по вашему? Вы хотя-бы в википедию загляните ping — Википедия.
А вообще со всеми этими шилдами в перваую очередь нужно проверять тестером питание.
Потом проверяете IP-шники. Вот это "192, 168, 2, 1" - вы откудато-то скопировали или сознательно написали?
Далее, проверяете подключение шилда. Открою вам тайну: ЛЮБОЙ шилд является "работающим с мегой" (из тех что работают с Uno/Nano и т.п.). Разница может быть только в том "можно просто нахлобучить" или "нужно подключать проводками".
Поэтому заверения продавца, особенно китайских, "совместимо с Mega" - не означает ничего. Это может означать как и "его просто нахлобучивать", так и "в принципе можно подключить". Так что берите схематику своего шилда и смотрите какие пины он использует де факто. Особенно если не видите у него снизу "мамы" для ICSP разъема у него на брюхе. Если "мамы нет" и при этом шилд короче самой меги - 99% что его нужно проводками подключать.
Так же, убедитесь, что пока шилд не заработал у вас к меге не подключено больше НИЧЕГО. Только шилд и сама мега. Ни единого лишнего проводка, резистора, модуля экрана, температурного датчика и т.д. и т.п.
P.S. А еще, рекомендую когда мучаетесь с какой-то железкой давать на нее ссылку. Особенно если "железка", не является официальным оригиналом от arduino.cc
я сознательно ввел)
у нас dhcp, dns на 192,168,2,1.
http://www.aliexpress.com/snapshot/6025022992.html
вот само устройства с описанием продавца
Ну вроде с подключением там проблемм быть не должно. На блюхе, хоть и плохо, он просматривается "мама". Хотя - учитывая что "это китайцы", было-бы неплохо прозвонить, Убедится что этот разъем разведен на пины 10,11,12,13 . А то ж китайцы могли поставить разъем и никуда его не развести :(
Больше ничего не подключено?
В роутере никаких фильтраций по маку не включено?
В админке самого роутера видно клиента с маком 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ? (не во всех, но в некоторых видно)
На роутере загорается лампочка порта куда шилд подключаете?
Сам роутер, с компа пингуется?
C пачкордом тоже может быть проблема. Они бывают двух типов. У одного RX<--->RX, TX<--->TX, а у второго типа RX<-->TX, TX<--->RX В пачкорде RX,TX как-то по другому называются, но суть такова. Один типа "прямой", второй "накрест". Один предназначен для "соединять компы напрямую", второй для "комп к роутеру". В принципе почти все современные роутеры детектят такую ситуацию и даже с "неправильным кабелем" работают. Меняют у себя "что считать RX, что TX". Но в каких-то "старо-тупых" - может из-за этого быть проблема.
а при старте в терминал выдает
server is at ?
и какойat
показывает?0.0.0.0
почему=то.
завтра попробую без участия домена и хабов-подключенных к локалке, хаб напрямую со своим компом и ардуиной соединю в др подсети. мож че получится
достал из-за пазухи новый хаб d-link dgs-1008p, воткнул у него сетевуху компа и ардуину свою с шилдом)
присвоил сетевухе своей 192.168.1.55 , ардуине дал из последнего примера 192.168.1.50.
Пинг идет! как веб-браузер работает!!!))
на 0 порт для теста повесил датчик освещенности...
мониторинг порта:
и отображается страница с кодом:
т.е. проблема была в сети=подсети=маршрутизаторах и хз чем еще...
Я тоже пару дней проковырялся с этой чертовщиной, в моем случае оказалось что при использовании патч-корда с 4мя жилами ардуинка не пинговалась, заметил это в самый последний момент. Поставил нормальный 8ми жильный патч-корд и вуаля.
Пару раз забывал отключать на роутере фильтрацию по мас адресам. Похожий эффект.