Arduino Mega 2560 and ENC28J60
- Войдите на сайт для отправки комментариев
Всем привет. В моем арсенале мега + ethernet шилд ENC28J60 + библиотека https://github.com/jcw/ethercard
Суть проблемы в том, что не могу достучаться до ардуинки с браузера. Брал тестовый скетч backSoon (внизу поста код). Залил в ардуину и захожу с браузера по прописанному адресу, из данного скетча это 192.168.1.199 и вижу долгое зависание страницы и в конце концов браузер выдает ошибку о том, что страница не доступна.
Вся соль в том, что на работе сегодня проверял и с первого тыка все прошло удачно. Только залил скетч и в браузере смог увидеть ответ в виде хтмл странички. Посмотреть настройки маршрутизатора не могу на работе.
Грешу в порт форвардинге, но тут я слаб.
Выручайте, товарищи ардуинщики.
// Present a "Will be back soon web page", as stand-in webserver. // 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php #include <EtherCard.h> #define STATIC 0 // set to 1 to disable DHCP (adjust myip/gwip values below) #if STATIC // ethernet interface ip address static byte myip[] = { 192,168,1,199 }; // gateway ip address static byte gwip[] = { 0,0,0,0 }; #endif // ethernet mac address - must be unique on your network static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; byte Ethernet::buffer[500]; // tcp/ip send and receive buffer const char page[] PROGMEM = "HTTP/1.0 503 Service Unavailable\r\n" "Content-Type: text/html\r\n" "Retry-After: 600\r\n" "\r\n" "<html>" "<head><title>" "Service Temporarily Unavailable" "</title></head>" "<body>" "<h3>This service is currently unavailable</h3>" "<p><em>" "The main server is currently off-line.<br />" "Please try again later." "</em></p>" "</body>" "</html>" ; void setup(){ ether.printIp("IP: ", ether.myip); ether.printIp("GW: ", ether.gwip); ether.printIp("DNS: ", ether.dnsip); Serial.begin(57600); Serial.println("\n[backSoon]"); if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Failed to access Ethernet controller"); #if STATIC ether.staticSetup(myip, gwip); #else if (!ether.dhcpSetup()) Serial.println("DHCP failed"); #endif ether.printIp("IP: ", ether.myip); ether.printIp("GW: ", ether.gwip); ether.printIp("DNS: ", ether.dnsip); } void loop(){ // wait for an incoming TCP packet, but ignore its contents if (ether.packetLoop(ether.packetReceive())) { memcpy_P(ether.tcpOffset(), page, sizeof page); ether.httpServerReply(sizeof page - 1); } }
Дома подсеть какая?
LAN
Шнурок с интернетом подходит напрямую в маршрутизатор, подключение pppoe, ардуина подключена напрямую в маршрутизатор.
static
byte
gwip[] = { 0,0,0,0 };
поменяйте на
static
byte
gwip[] = { 192,168,1,1 };
Не помогло.
Смущает еще строка
На маршрутизаторе DHCP включен.
Попробуйте поставить 1, мало ли чё.
Как вариант еще мак уже такой в сети есть или фильтруется. Он забит с наклейки или от фонаря? Дуню пинговать пробовали?
И кстати на маршрутизаторе посмотрите диапазон разрешенных айпишников
Ставил 1, не помогло. Мак забит с тестового скетча. "дуня" не пингуется.
Сделал сброс маршрутизатора, не думаю что у него из коробки будут фильтры мак адресов.
Фильтр нет, а вот диапазон разрешенных адресов - запросто. Устройств в сети много? И кстати что Вы видите в консоли?
Ухожу, поэтому на последок - другой кабель, другой порт :)
Устройств 3 вместе с ардуиной. 2 компа и ардуинка. Диапазон 192.168.1.100 - 192.168.1.200
В консоли уже интересно
Уже пробовал, ничего не помогает.
Я имел ввиду монитор порта :)
Картинки не читабельны.
К сожалению сейчас на работе уже и нет возможности проверять.
Вчера сканировал сеть, при подключении ардуинки появляется еще один айпи в сети под номером, отличным от того, который прописывал в скетче, видать сказывается отключеный параметр DHCP. Вообщем появился айпи 192.168.1.100, пингуется отлично, а в браузере 0 по фазе. Но пока писал, подумал, что нужно пробрасывать порт, а порт узнать в сканере портов.
Сам придумал, сам попробую вечером. Отпишусь.
Gateway (gwip) он же шлюз, в локальной сети (LAN) не нужен для доступа от компьтера к компьютеру.
Вам нужно убедиться , что компьютер и шилд в оной сети (IP Сети у вас 192.168.1.0).
Устройства в сети должны иметь IP в диапазоне 192.168.1.1 - 192.168.1.254. Диапазон определяется маской подсети 255.255.255.0
В принципе в вашем скетче по-хорошему не зватает маски для полноценной прописки реквизитов сетевого устройства.
Но это все сработает, если у вас
#define STATIC 1
т.е. статический (прописанный руками), а не динамический (получаемый от маршрутизатора).
На работе у вас скорее всего нет ограничений на получение IP от DHCP поэтому вы и зашли, правда я не уверен, что на 192.168.1.199
В домашнем маршрутизаторе, возможно, стоит блокировка на раздачу IP кому попало, например кол-во выдаваемых IP ограниченно и все ip жестко привязаны к MAC адресу. И это правильно, хотя и неудобно.
В общем нужно посмотреть какой адрес получает шилд и посмотреть устройства, которые появляются на маршрутизаторе, это уже в самом маршрутизаторе.
Еще можно жестко прописать ip на компьютере и соеденить напрямую комп и шилд.
Например комп
192.168.1.10
255.255.255.0
шилд
192.168.1.199
255.255.255.0
шлюз можно не указывать, это адрес для перенаправления в другие сети, а их у вас не будет.
И еще порт форвардинг это проброска портов с одного ip (например внешнего) на порты на другом ip (например внутреннего).
Пробросив порты шилда, вы сможете обращаться к шилду из любой точки мира, даже если шилд находится в локальной сети.
Когда вы пингуете 192,168,1,199, то к сожалению ничего интересного не происходит. Хост недоступен.
Тоже результат вы получите если пинговать соседний несуществующий.
Очень интересно, что она вам в Монитор Порта выводит
В сетче есть Serial
.println, это вывод в порт USB.
Обратите внимание на скорость порта
Serial
.begin(57600);
Не плохо бы посмотреть, какие реквизиты выведутся в конце сетапа
Примерно так, возможно
ether.myip придется преобразовать в strSerial
.println(
ether.myip)Пинги, кстати, могут и не работать, это не обязательная функция для устройств в сети.
Для сканирования устройств в сети установите Find MAC Address в триальном режиме.
Спасибо за советы. С работы приду и буду проверять. Хотя, уже немного расстроился и решаюсь взять еще вайфай модуль. Не знаю, почему я сразу кинулся на изернет модуль.
Главное, что он у вас 100% рабочий, т.к. работает на работе (каламбур получился).
Проблема с временным отсутствием знаний в вашей голове. Не расстраивайтесь. Хуже когда в принципе не работает, там опять ждать и деньги тратить.