Ethernet shield W5200
- Войдите на сайт для отправки комментариев
Пт, 05/06/2015 - 13:34
Создаю подключение через интернет между сервером и ethernet shield.
Сервер доступен с компьютера, однако с arduino не получается подключение.
#include <Ethernet.h> #include <SPI.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 10, 0, 0, 177 }; byte server[] = { 64, 233, 187, 99 }; // 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("СЮДА ПИШУ КОМАНДУ В ФОРМАТЕ XML"); 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(;;) ; } }
Вопросы такие:
Некоторые пишут byte server[] = {0,0,0,0};
а некоторые IPAdress server(0,0,0,0);
1) Эти выражения равнозначны ?
2) При подключении к серверу выдает ошибку в Serial о том что connection failed,
пробовал не указывать IP а только MAC
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
а дальше
Ethernet.begin(mac);
В таком случае даже ошибку подключения не выдает ,хотя DHCP работает. проблема в коммутаторе на выходе в интернет ?
1. Без разницы.
2. Если пытаетесь подключиться к внешнему серверу без DHCP и не указываете адрес шлюза, в вашем случае он устанавливается как 10, 0, 0, 1. Такой у вас адрес шлюза? А вот почему у вас не работает DHCP это вопрос.
Указывал настройки моей локальной сети, DHCP работает на всем кроме ethernet shield.
Сервер же находится в интернете и доступен из любой точки. Сегодня вечером попробую подключить шилд напрямую, минуя коммутатор. Думаю проблема может быть в нем он немного геморный (mikrotik).
Ничего удивительного, что у вас ничего не работает, стандартная библиотека Ethernet предназначена для w5100, вам же нужна Ethernet V2.0 Library.
Спасибо, еще в указании MAC адреса пишет ошибку.
префикс 0x ставится перед буквой или перед всем символом?
Например 15; F3; 1C будет записано как 0х15; 0хF3; 0x1C ?? Или по-другому?
Ничего удивительного, что у вас ничего не работает, стандартная библиотека Ethernet предназначена для w5100, вам же нужна Ethernet V2.0 Library.
По поводу библотеки вот что получилось. Я её подгрузил в папку library как и положено но при добавлении образца скетча она не активна и при компиляции выдает ошибку.
Один и тот же пример с библиотеки Ethernet скомпилировался а EthernetV2_0 выдает ошибку.
Сначала думал оттого что папка в директории с русским именем, но перемечение ничего не дало. Вот ошибка:
Гениально, столько мароки из-за такой х***и .
Ошибка появляется из-за того что версия IDE слишком новая ^^
http://forum.amperka.ru/threads/arduino-%D0%B8-ethernet-shield.4548/
Нужен IDE 1.0.6
Иными словами, ставим старый IDE, ставим библиотеку для 2й версии и только потом можно работать.