Добрый день! Убил целый вечер на настройку шилда. Оказалось, что он не хочет работать через хаб D-Link DES-1008D. Хаб абсолютно рабочитьй, через него подключаются и ноут и малинка без проблем. Ардуина при подключении через него пишет: . Покупать новый хаб желания и средств нет, да и где гарантия, что купишь тот который подойдет к ардуино. Что можете посоветовать?
Скетч один и тот же. Выдергиваешь провод из хаба и втыкаешь в шилд и все работает. А через хаб выдает ошибку. В скетче проверка стоит после строки Код (C++): if (Ethernet.begin(mac) == 0) { т.е. дело даже не доходит до отправки запроса и информации об ip и настройках сети
Согласующий резистор поменять на шилде. http://forum.iobroker.net/viewtopic.php?t=1609 http://focuswitharduino.blogspot.ru/2016/02/ethernet-shield-w5100.html
Добавил строкит Код (C++): byte gateway[] = {192, 168, 1, 1}; byte subnet[] = {255, 255, 255, 0}; и изменил строку на Код (C++): Ethernet.begin(mac, ip, gateway, subnet); В итоге скетч выглядит так: Код (C++): #include <SPI.h> #include <Dhcp.h> #include <Dns.h> #include <Ethernet.h> #include <EthernetClient.h> #include <EthernetServer.h> #include <EthernetUdp.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 201); byte gateway[] = {192, 168, 1, 1}; byte subnet[] = {255, 255, 255, 0}; char server[] = "www.google.com"; // название сервера Google (с DNS) // Создаем клиента, который будет подключаться // к необходимым для нас IP-адресу и порту // (портом по умолчанию для HTTP является 80): EthernetClient client; void setup() { // Инициализируем последовательную передачу данных и ждем открытия порта: Serial.begin(9600); while (!Serial) { ; // ждем подключения последовательного порта (нужно только для Leonardo) } // Запускаем Ethernet-соединение: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // "Не удалось сконфигурировать Ethernet при помощи DHCP" // Продолжать дальше смысла нет, поэтому вместо DHCP // попытаемся сделать это при помощи IP-адреса: Ethernet.begin(mac, ip, gateway, subnet); } // Даем Ethernet Shield секунду на инициализацию: delay(1000); Serial.println("connecting..."); // "Подключение..." // Если подключение установлено, сообщаем об этом на Serial Monitor: if (client.connect(server, 80)) { Serial.println("connected"); // "Подключение установлено" // Делаем HTTP-Запрос: client.println("GET /search?q=arduino HTTP/1.1"); client.println("Host: www.google.com"); client.println("Connection: close"); client.println(); } else { // Если соединения с сервером нет, пишем об этом на Serial Monitor: Serial.println("connection failed"); // "Подключиться не удалось" } } void loop() { // Если от сервера есть какие-нибудь байты, // считываем их и выводим на Serial Monitor: if (client.available()) { char c = client.read(); Serial.print(c); } // Если сервер отключился, останавливаем работу клиента: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); // "Отключение..." client.stop(); // Ничего не делаем: while(true); } } Но все равно не работает
Эти строки можно закомментировать Код (C++): if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // "Не удалось сконфигурировать Ethernet при помощи DHCP" все равно результат
А как резистор может повлиять на работу с хабом. Ведь при подключении к роутеру (он тоже своеобразный управляемый хаб) работает, а при подключении через дополнительный хаб - нет. Такой микрокомпанент перепаять будет не просто
Ну и не парьтесь больше. Это аппартный баг, программно не решается. Отнесите шилд в ремонт ПК. Думаю там вам заменят эту деталь.
Это терминирующий резистор линии связи. Без него нарушается распространение высокочастотного сигнала по проводу. Вопрос работоспособности при таком раскладе - дело случая.
Вряд ли автор шилда хотел получить максимальную рассеиваемую мощность на сборке согласующих резисторов. http://www.williamspublishing.com/PDF/5-8459-0807-8/part.PDF