ENC28J60+Arduino

enot0324
Offline
Зарегистрирован: 10.04.2019

Здравствуйте!

необходимо создать устройство, подсоединенное с помощью витой пары к компу, которое можно пропинговать и получить ответ (через консоль винды)

в интернете множество примеров, где само устройство пингует что-то, а когда пытаюсь сделать наоборот, приходит ответ, что заданный узел недоступен

может у кого то есть рабочий пример или кто знает где можно найти такое

sadman41
Offline
Зарегистрирован: 19.10.2016

UIPEthernet по-дефолту должен отвечать на icmp.

enot0324
Offline
Зарегистрирован: 10.04.2019
в этой библиотеке есть такой пример, только он опять таки не отвечает на запрос. заданный узел недоступен
 
 
 
[code]
 
#define MACADDRESS 0x00,0x01,0x02,0x03,0x04,0x05
#define MYIPADDR 192,168,1,6
#define MYIPMASK 255,255,255,0
#define MYDNS 192,168,1,1
#define MYGW 192,168,1,1
#define LISTENPORT 1000
#define UARTBAUD 115200
 
#if defined(__MBED__)
  #include <mbed.h>
  #include "mbed/millis.h"
  #define delay(x) wait_ms(x)
  #define PROGMEM
  #include "mbed/Print.h"
#endif
 
#include <UIPEthernet.h>
// The connection_data struct needs to be defined in an external file.
#include <UIPServer.h>
#include <UIPClient.h>
#include "utility/logging.h"
 
uint8_t mac[6] = {MACADDRESS};
uint8_t myIP[4] = {MYIPADDR};
uint8_t myMASK[4] = {MYIPMASK};
uint8_t myDNS[4] = {MYDNS};
uint8_t myGW[4] = {MYGW};
 
EthernetServer server = EthernetServer(LISTENPORT);
 
#if defined(ARDUINO)
void setup() {
#endif  
#if defined(__MBED__)
int main() {
#endif
  #if ACTLOGLEVEL>LOG_NONE
    #if defined(ARDUINO)
      LogObject.begin(UARTBAUD);
    #endif
    #if defined(__MBED__)
      Serial LogObject(SERIAL_TX,SERIAL_RX);
      LogObject.baud(UARTBAUD);
    #endif
  #endif
 
// initialize the ethernet device
//Ethernet.begin(mac,myIP);
Ethernet.begin(mac,myIP,myDNS,myGW,myMASK);
// start listening for clients
server.begin();
#if defined(ARDUINO)
}
 
void loop() {
#endif  
 
#if defined(__MBED__)
while(true) {
#endif
  size_t size;
 
  if (EthernetClient client = server.available())
    {
      if (client)
        {
          while((size = client.available()) > 0)
            {
              uint8_t* msg = (uint8_t*)malloc(size);
              size = client.read(msg,size);
              #if ACTLOGLEVEL>=LOG_INFO
                LogObject.uart_send_buf_len(msg,size);
              #endif
              client.write(msg,size);
              free(msg);
            }
        }
    }
}
#if defined(__MBED__)
}
#endif
[/code]
sadman41
Offline
Зарегистрирован: 19.10.2016

У меня этот отвечает: https://github.com/ntruchsess/arduino_uip/tree/fix_errata12

enot0324
Offline
Зарегистрирован: 10.04.2019

какой именно пример? echoServer?

sadman41
Offline
Зарегистрирован: 19.10.2016

Любой. Отвечает драйвер, а не пользовательский код.

enot0324
Offline
Зарегистрирован: 10.04.2019

Подскажите пожалуйста, какие Настройки сетевого адаптера выставляете, может в этом проблема 

sadman41
Offline
Зарегистрирован: 19.10.2016

Обычные - MAC/IP/GW/NETMASK. Этого хватает. Может в .h файлах порыться - там еще какие-то настройки имеются.

miks69
Offline
Зарегистрирован: 16.02.2020

Есть целый ряд проблем практически со всеми имеющимися на рынке Ethernet-контроллерами для Arduino, и особенно с контроллером ENC28J60. Мне например так и не удалось его заставить работать, пришлось взять W5100, который также как выяснилось работает не со всеми роутерами (с D-Link как пишут не работает). Проблема может быть и в самом контроллере, и в подключении к Arduino, и в используемой библиотеке. В Инете полно информации на эту тему, Google или Yandex в помощь.

enot0324
Offline
Зарегистрирован: 10.04.2019

Уже решил проблему покупкой новых таких же контроллеров 

по всей видимости братья китайцы схалтурили 

miks69
Offline
Зарегистрирован: 16.02.2020

enot0324 пишет:

Уже решил проблему покупкой новых таких же контроллеров 

по всей видимости братья китайцы схалтурили 

Бывает )))

sadman41
Offline
Зарегистрирован: 19.10.2016

Другие ENC запинговались? Можно фото/ссылку на оба варианта?

enot0324
Offline
Зарегистрирован: 10.04.2019

такой не захотел отвечать:

https://images-na.ssl-images-amazon.com/images/I/41aFIk96jLL._AC_.jpg

купил этот, все отлично заработало с первого раза:

https://images-na.ssl-images-amazon.com/images/I/71Bf5EmsGlL._SX425_.jpg

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Если первый запитали от 5V, то, скорее всего, сразу запалили. Он на 3.3V рассчитан.

enot0324
Offline
Зарегистрирован: 10.04.2019

не исключаю этот вариант, пробовал по разному подключать, когда не получалось

miks69
Offline
Зарегистрирован: 16.02.2020

sadman41 пишет:

Если первый запитали от 5V, то, скорее всего, сразу запалили. Он на 3.3V рассчитан.

Я у себя пробовал такой вариант и в описании у него написано питание 5V. А если он реально 3,3V тогда объясните мне, зачем он вообще нужен, если у Arduino питание 5V?

b707
Онлайн
Зарегистрирован: 26.05.2017

miks69 пишет:

 А если он реально 3,3V тогда объясните мне, зачем он вообще нужен, если у Arduino питание 5V?

в одной фразе три или четыре глупости сразу:

1. Ардуино бывают разные, полно и на 3.3в

2. Кто вам сказал, что он вообще для ардуино?

3. Кроме того, любой контроллер Ардуино, если его вытащить из платы - может работать и при 3.3в

miks69
Offline
Зарегистрирован: 16.02.2020

b707 пишет:

miks69 пишет:

 А если он реально 3,3V тогда объясните мне, зачем он вообще нужен, если у Arduino питание 5V?

в одной фразе три или четыре глупости сразу:

1. Ардуино бывают разные, полно и на 3.3в

2. Кто вам сказал, что он вообще для ардуино?

3. Кроме того, любой контроллер Ардуино, если его вытащить из платы - может работать и при 3.3в

Ну я смотрю у Вас ум прям через край хлещет. Научите Arduino из платы вытаскивать?

b707
Онлайн
Зарегистрирован: 26.05.2017

miks69 пишет:

Ну я смотрю у Вас ум прям через край хлещет. Научите Arduino из платы вытаскивать?

Можно и вытащить - например в таком Уно контроллер легко вытаскивается из панели:

но в большинстве случаев, если нужен контроллер - его так и покупают отдельно, на Алиэкспрессе навалом

Но вы что-то только на один пункт отреагировали. Первая и главная ерунда в вашем высказывании - что вы забыли про ардуины на 3.3в - а их таких больше, чем 5вольтовых - Про мини, Дуе, многочисленные Вемосы, ЕСП, СТМ32 и тд...

sadman41
Offline
Зарегистрирован: 19.10.2016

miks69 пишет:

Я у себя пробовал такой вариант и в описании у него написано питание 5V. А если он реально 3,3V тогда объясните мне, зачем он вообще нужен, если у Arduino питание 5V?

В каком описании?

Открываем ENC28J60 Data Sheet и читаем:
- Operating Voltage of 3.1V to 3.6V (3.3V typical)
- 5V Tolerant Inputs

На модуле с гребёнкой 2x6 снизу платы припаян AMS1117-3.3, понижающий VCC до 3.3V.

Модуль же с гребёнкой 2x5 такового LDO не имеет и должен запитываться от уже "готовых" 3.3V

Что же касается вопроса "зачем он нужен" - так этот модуль и не исключительно для Arduino. В мире достаточно микроконтроллеров с Operating Voltage 3.3V, таковые даже поддерживаются платформой Arduino. Я, конечно, не буду относить к ним Вемосы, ESP-xxx, STM32, однако Due и Pro Mini - вполне себе 3.3V платы. 

miks69
Offline
Зарегистрирован: 16.02.2020

b707 пишет:

Но вы что-то только на один пункт отреагировали. Первая и главная ерунда в вашем высказывании - что вы забыли про ардуины на 3.3в - а их таких больше, чем 5вольтовых - Про мини, Дуе, многочисленные Вемосы, ЕСП, СТМ32 и тд...

Ооо, да я смотрю для Вас нет разницы в перечисленных устройствах. Ну что ж, желаю Вам удачи!

b707
Онлайн
Зарегистрирован: 26.05.2017

sadman41 пишет:

В мире достаточно микроконтроллеров с Operating Voltage 3.3V, таковые даже поддерживаются платформой Arduino. Я, конечно, не буду относить к ним Вемосы, ESP-xxx, STM32, однако Due и Pro Mini - вполне себе 3.3V платы. 

чой-то, Гриша? :) Зачем СТМ-ку обижаешь? - Лучшая Нана - это блюпилл :)

sadman41
Offline
Зарегистрирован: 19.10.2016

b707 пишет:

чой-то, Гриша? :) Зачем СТМ-ку обижаешь? - Лучшая Нана - это блюпилл :)

Пока их нет в линейке производителя Arduino, я не могу говорить о них, как об Arduino. Ну, к IDE примотаны, да. 

Я и ATmega328PB не могу отнести к Arduino, потому как для него надо ставить add-on. 

 

miks69
Offline
Зарегистрирован: 16.02.2020

sadman41 пишет:

Модуль же с гребёнкой 2x5 такового LDO не имеет и должен запитываться от уже "готовых" 3.3V

Выходит я тоже лоханулся и видимо сжег его...

b707
Онлайн
Зарегистрирован: 26.05.2017

sadman41 пишет:

Пока их нет в линейке производителя Arduino, я не могу говорить о них, как об Arduino. Ну, к IDE примотаны, да.

да ладно тебе. Если вернутся к предмету ветки - обсуждать этот сетевой модуль применительно к "нормальной ардуино" особого смысла нет - слишком контроллеры слабенькие и памяти мало. Для сетвых протоколов нужны ЕСП-ки или СТМ, в крайнем случае Мега...

sadman41
Offline
Зарегистрирован: 19.10.2016

Сетевые протоколы разные бывают. И на 168-м МК можно мутить с ENC, но недолго. Чем отличается "нормальный" от "ненормального" я пока не знаю.