arduino mega 2560+Ethernet-sheld (W5100)

использование и разработка плат расширения

arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 21 фев 2013, 11:50

Понадобилось мне получать данные температуры с ардуино (ds18b20) через сеть.
Но с сервером соединение не устанавливается.

Ethernet-sheld подключил к ардуино через другие пины проводами.
https://www.dropbox.com/s/hsvvyqvfunpmu ... 593645.jpg
https://www.dropbox.com/s/yjzecl091xhdu ... 542504.jpg
На втором рисунке видны светящиеся светодиоды. Сейчас помимо их горит еще и led у надписи "AREF".
led "RX" подмаргивает, когда как "link" почти в противофазе потухает.

Вот собственно и скетч:
Код: Выделить всё
#include "U8glib.h"  // библиотека графического дисплея
#include <Ethernet.h>
#include <SPI.h>
#include <OneWire.h>
OneWire ds(20);

byte mac[] = {  0x00, 0x27, 0x13, 0xFD, 0x36, 0x95 }; //MAC-адрес Arduino
//IPAddress server(192,168,1,10); // IP сервера
byte ip[] = { 192, 168, 1, 100 };
byte server[] = { 192, 168, 1, 10 };
char buf[32];
int t1; //переменная темпрературы
int n; 

EthernetClient client;
U8GLIB_ST7920_128X64 u8g(18, 16, 17, U8G_PIN_NONE); // пины для подкл. дисплея/ SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17

void draw_sensor(void) {
  byte data[2];
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44);
  delay(750);
  ds.reset();
  ds.write(0xCC);
  ds.write(0xBE);
  data[0] = ds.read();
  data[1] = ds.read();
  int Temp = (data[1]<<8)+data[0];
  Temp = Temp>>4;
  t1=Temp;
  sprintf(buf, "http://192.168.1.10/a/?t[1]=%d", Temp);
  delay(1000); //задержка в 1 сек.
  if (client.connect(server, 80)) {
    client.println(buf); // Отправляем GET запрос
    client.println();
  }
}

void draw(void) {
  u8g.setPrintPos(0, 0);
  u8g.print("Temperatura        C");

  u8g.setPrintPos(93, 0);
  u8g.print(t1);

  if (n==1){
    u8g.setPrintPos(0, 11);
    u8g.print("Connected");
  }
  if (n==2){
    u8g.setPrintPos(0, 11);
    u8g.print("Disconnected");
  }
}
//============================================================================
void setup() {
  pinMode(53, OUTPUT);  //!!!Условие работы интерфейса SPI для связи между...
  //...ардуино mega 2560 и ефернет-шилдом W5100 (и картой SD)
  //Serial.begin(9600);
  Ethernet.begin(mac, ip);

  u8g.setFont(u8g_font_6x12);
  u8g.setFontRefHeightExtendedText();
  u8g.setDefaultForegroundColor();
  u8g.setFontPosTop();
}

void loop() {
  draw_sensor();

  u8g.firstPage(); 
  do {
    draw();
  } while( u8g.nextPage() );

  // Соединение с сервером
  if (client.connect(server, 80)) {
  n=1;}         //условие отображения на дисплее "connected"
  else {n=2;};  //условие отображения на дисплее "disconnected"
  delay(1000); //задержка в 1 сек. 
}


Наличие/отсутствие соединения отображается да дисплее GLCD (и температура тоже)

Пин 53 настроил, как выход, чтобы была связь между ардуино и ethernet через ISP.
Пробовал пример WebCliet загружать. На мониторе порта пишет "Failed to configure Ethernet using DHCP"
Сервер и сеть работают, т.к. с браузера запросы срабатывают.

Что делать дальше, не знаю. Прошу помощи
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение admin » 21 фев 2013, 13:52

а работу ethernet-шилда на стандартном примере проверяли?
Аватара пользователя
admin
Администратор
 
Сообщения: 317
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение Zoltberg » 21 фев 2013, 13:55

Светодиоды горят вроде правильно, шилд рабочий, осталось подружить его с платой.
У вас же "мега комптебел" шилд(разъём ICSP имеется), зачем провода и гнутые ноги? - так должно работать.
Ну и стандартно - всё убрать, просто воткнуть шилд в плату, залить что-то максимально простое ("webServer" например), уточнить что железо работает, и далее итеративно - добавлять датчик, экран, смотреть что с чем глючит (если глючит).
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 21 фев 2013, 15:48

admin писал(а):а работу ethernet-шилда на стандартном примере проверяли?


Выдает ошибку на строке
Код: Выделить всё
Client client(server, 80);

В примерах компилятора Arduino 1.5.1r2 и 1.0.2 немного по другому: "EthernetClient client;"
заменив это, а также
Код: Выделить всё
 if (client.connect()) {
на
Код: Выделить всё
if (client.connect(server, 80)) {

выдает ошибку компиляции.
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 21 фев 2013, 16:15

Zoltberg писал(а):Светодиоды горят вроде правильно, шилд рабочий, осталось подружить его с платой.
У вас же "мега комптебел" шилд(разъём ICSP имеется), зачем провода и гнутые ноги? - так должно работать.
Ну и стандартно - всё убрать, просто воткнуть шилд в плату, залить что-то максимально простое ("webServer" например), уточнить что железо работает, и далее итеративно - добавлять датчик, экран, смотреть что с чем глючит (если глючит).


Изначально началось с простого бутерброда и примеров. Отсутствие соединения с сервером привело к гнутым ногам и проводам
http://mk90.blogspot.ru/2009/04/arduino-mega-ethernet-shield.html
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение Zoltberg » 21 фев 2013, 16:29

Ага, я так и понял что оттуда ноги растут :hi_hi_hi: посмотрите на дату поста и версию шылда.
У вас новый, должен простым бутербродом работать - ошибки не там(скорей всего).
Не надо примеров с сайтов и т.п. - там везде свои нюансы (в частности много старых примеров рассчитанных на давние версии библиотек) пробуйте стандартные голые примеры из ИДЕ - они гарантированно компилятся :)
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 21 фев 2013, 17:47

Zoltberg писал(а):Ага, я так и понял что оттуда ноги растут :hi_hi_hi: посмотрите на дату поста и версию шылда.
У вас новый, должен простым бутербродом работать - ошибки не там(скорей всего).
Не надо примеров с сайтов и т.п. - там везде свои нюансы (в частности много старых примеров рассчитанных на давние версии библиотек) пробуйте стандартные голые примеры из ИДЕ - они гарантированно компилятся :)

Сделал, как вы советовали. На удивление, примеры "DhcpAddressPrinter" и "DnsWebClient" заработали (в 1 первом случае dhcp-сервер выдал адрес и в логах dhcp-сервера это было видно; во 2 случае в порт загрузилась страничка гугла), но после повторных загрузок этих же скетчей порт уже ничего не давал, пустота.
Примеры открывал так: Файл/Примеры/Ethernet/... После загрузки сразу открывал монитор порта. В первых двух случаях увидел выданный IP адрес и ответ гугла, в дальнейшем - пустота и тишина.
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 21 фев 2013, 18:08

Случайно (а может и нет) на бутерброд рукой надавили и заработало :)
Благодарю за помощь!
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение Zoltberg » 21 фев 2013, 18:58

Контакты это даа...
А вообще у вас шилд-то с нюансом :hi_hi_hi:
У ранних моделях этих шилдов бывает дин неприятный плавающий косячок (неправильно работает схема сброса).
Проявляется в том, что шилд не принимает данные от Arduino - например не выставляется IP-адрес, соответственно невозможно подключится к WEB-серверу (скетч WebServer - пример из библиотеки Ethernet).
Вызвана эта неисправность неправильной сборкой шилда - отсутствует супервайзор питания CAT811, который управляет сбросом W5100 (см вложение ).
без супервайзора.png
без супервайзора.png (312.25 КБ) Просмотров: 50433

CAT811TTBI.jpg
CAT811TTBI.jpg (68.99 КБ) Просмотров: 50433

Вы можете самостоятельно восстановить работоспособность платы - надо замкнуть (каплей припоя или перемычкой) нижние площадки посадочного места супервайзора.
перемычка.png
перемычка.png (323.96 КБ) Просмотров: 50433

Ну или посмотрите внимательно(прозвоните тестером) нет ли там между нижними ногами дорожки-перемычки (на поздних стали делать) - тогда проблема не в этом. :nez-nayu:
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение kostya43 » 25 фев 2013, 08:53

Благодарю за раскрытый нюанс у шилда.
Проверил на наличие скрытой перемычки. Она там есть.
Разъем ICSP между шилдом и ардуинкой проблемный попался. Как-будто разъем не полность вставлен, т.к. бутерброд потревожил и контакты опять могут пропасть.
Скетч переправил согласно с примерами в IDE. Все работает :)
kostya43
 
Сообщения: 6
Зарегистрирован: 21 фев 2013, 11:10
programming: c++

Re: arduino mega 2560+Ethernet-sheld (W5100)

Сообщение repon » 28 янв 2014, 16:46

у меня не работает обычным способом.
прислали устаревший шилд? - как понять?

пробовать ноги гнуть и перекидывать на 50-53 порты?
repon
 
Сообщения: 3
Зарегистрирован: 21 янв 2014, 13:23
programming: c#


Вернуться в Шилды (Shields)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

© 2009-2021 |  Top.Mail.Ru О проекте  |  Политика Конфиденциальности  |