Arduino Mega + сетевая enc28j60
- Войдите на сайт для отправки комментариев
Ср, 22/07/2020 - 17:09
Проблема в подключении. Скетч - простейший пример присоединения к сети. На UNO R3 всё работает, для меги не могу реализовать:
при компиляции куча ошибок и не работает.
#include <EtherCard.h>
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x32 };
byte Ethernet::buffer[700];
void setup () {
Serial.begin(57600);
Serial.println(F("\n[testDHCP]"));
Serial.print("MAC: ");
for (byte i = 0; i < 6; ++i) {
Serial.print(mymac[i], HEX);
if (i < 5)
Serial.print(':');
}
Serial.println();
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println(F("Failed to access Ethernet controller"));
Serial.println(F("Setting up DHCP"));
if (!ether.dhcpSetup())
Serial.println(F("DHCP failed"));
ether.printIp("My IP: ", ether.myip);
ether.printIp("Netmask: ", ether.netmask);
ether.printIp("GW IP: ", ether.gwip);
ether.printIp("DNS IP: ", ether.dnsip);
}
А вопрос какой?
Наверно вопрос - как сделать, что бы работало.
Получало IP и тд
1) Правильно присоединить модуль к ардуине
2) Скомпилировать пример из библиотеки.
То, что выше - и для Uno не скомпилируется.
это UNO R3
на меге встаёт на
пробовал разные подключения модуля к меге, результат один - не работает
Какие - разные?
Вот нормальное соединение, если модуль с 5V стабилизатором - подключать на +5V, а не на +3.3V: https://github.com/ntruchsess/arduino_uip/issues/177
попробовал еше раз эту схему - не идёт
... или 3.3 вольта запитать на 5 вольт Меги?
если модуль
с 5V стабилизатором - подключать на +5V, или на Меге паленые порты
Модуль 5вольтовый, на нем даже пин 5V есть - подписан.
попробовал на другой меге - результат тот же
... и на 5 вольт пробовал
Чудес не бывает. Или плохой контакт или хорошее замыкание происходит. С такими проводками много мороки. У меня с таким модулем особых проблем не было при корректном соединении.
уже и провода взял с UNO.
и так и сяк...
а по фото всё верно подключено?
бывает, замылится глаз...
Лично я не совсем понимаю что куда в Меге воткнуто.
ф - 50
з - 51
о - 52
ж - 53
ф (S0)- 50
з (SI) - 51
ораньжевый (SCK) - 52
ж (CS) - 53
Мне так вообще показалось, что жёлтый мимо воткнут.
Может библиотека не знает про CS=53 и ищет его на 10? Такое в штатной бывало...
при компиляции такой ворох сообщений:
Это опенсорц, привыкайте плавать самостоятельно.
Перейдите на UIPEthernet, если с EtherCard не справляетесь.
"опенсорц" - это ладно. Вдруг умные люди разглядели бы там ошибку среди предупреждений.
Чем поможет UIPEtherne, чем он проще?
А добавь в setup
/* Проверяем, что контроллер Ethernet доступен для работы */ Serial.println("Initialising the Ethernet controller"); if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) { Serial.println( "Ethernet controller NOT initialised"); while (true); } // Пытаемся получить адрес динамически Serial.println("Attempting to get an IP address using DHCP"); if (ether.dhcpSetup()) { ether.printIp("Got an IP address using DHCP: ", ether.myip); } else { // Если DHCP не доступен, используем статический ip-адрес ether.staticSetup(ip, gateway, dns); ether.printIp("DHCP FAILED, using fixed address: ", ether.myip); fixed = true; }А это перед setup
uint8_t ip[] = { 192, 168, 0, 136 }; // Статический IP-адрес uint8_t subnet[] = { 255, 255, 0, 0 }; // Маска подсети uint8_t gateway[] = { 192, 168, 0, 2 }; // Адрес шлюза uint8_t dns[] = { 192, 168, 0, 1 }; // Адрес DNS-сервера (необязателен)А добавь в setup
/* Проверяем, что контроллер Ethernet доступен для работы */ Serial.println("Initialising the Ethernet controller"); if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) { Serial.println( "Ethernet controller NOT initialised"); while (true); } // Пытаемся получить адрес динамически Serial.println("Attempting to get an IP address using DHCP"); if (ether.dhcpSetup()) { ether.printIp("Got an IP address using DHCP: ", ether.myip); } else { // Если DHCP не доступен, используем статический ip-адрес ether.staticSetup(ip, gateway, dns); ether.printIp("DHCP FAILED, using fixed address: ", ether.myip); fixed = true; }А это перед setup
uint8_t ip[] = { 192, 168, 0, 136 }; // Статический IP-адрес uint8_t subnet[] = { 255, 255, 0, 0 }; // Маска подсети uint8_t gateway[] = { 192, 168, 0, 2 }; // Адрес шлюза uint8_t dns[] = { 192, 168, 0, 1 }; // Адрес DNS-сервера (необязателен)ругается на
if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) {
нет такого mac
#include <EtherCard.h> // настройки Ethernet #define BUF_SIZE 2000//Больше не хочет работать byte mac[] = { 0x54, 0x55, 0x58, 0x10, 0x00, 0x24 }; // MAC-адрес byte fixed = false; // =false: пробовать получить адрес по DHCP, // в случае неудачи использовать статический; // =true: сразу использовать статический uint8_t ip[] = { 192, 168, 0, 136 }; // Статический IP-адрес uint8_t subnet[] = { 255, 255, 0, 0 }; // Маска подсети uint8_t gateway[] = { 192, 168, 0, 2 }; // Адрес шлюза uint8_t dns[] = { 192, 168, 0, 1 }; // Адрес DNS-сервера (необязателен) byte Ethernet::buffer[BUF_SIZE]; static BufferFiller bfill; // used as cursor while filling the buffer void setup(void) { Serial.begin(9600); delay(2000); /* Проверяем, что контроллер Ethernet доступен для работы */ Serial.println("Initialising the Ethernet controller"); if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) { Serial.println( "Ethernet controller NOT initialised"); while (true); } // Пытаемся получить адрес динамически Serial.println("Attempting to get an IP address using DHCP"); if (ether.dhcpSetup()) { ether.printIp("Got an IP address using DHCP: ", ether.myip); } else { // Если DHCP не доступен, используем статический ip-адрес ether.staticSetup(ip, gateway, dns); ether.printIp("DHCP FAILED, using fixed address: ", ether.myip); fixed = true; } } void loop(void) {}ругается на
if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) {
нет такого mac
Блин, так заведите! Почему в своих скетчах в начале ветки вы задавали mac. а тут - не можете?
Михаил, это у ни в какие ворота. Как уже сказали, опенсорц - это значит что вы сами пытаетесь разобраться.
ругается на
if (ether.begin(sizeof Ethernet::buffer, mac, 53) == 0) {
нет такого mac
Блин, так заведите! Почему в своих скетчах в начале ветки вы задавали mac. а тут - не можете?
Михаил, это у ни в какие ворота. Как уже сказали, опенсорц - это значит что вы сами пытаетесь разобраться.
пардон, туплю. я его стёр
стопорится на
if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
Тогда не знаю... пробуйте альтернативу UIPEthernet
Диагноз тут простой - нет обмена по SPI. А почему - может и библиотеке надо ткнуть носом, мож провода не тащат, а может к уно подключается один модуль, а к меге - другой. Причин факапа - уйма.
...уф
заработало
Схема будет выглядеть так:
При использовании Arduino Mega она станет выглядеть так:
но второе - не верно. Для меги CS = 8
теперь интересно запустить
ESP-12E Wi-fi Shield
А не проще использовать ESP8266-12E WeMos D1 или WeMos D1 mini.
мне думается, это одно и то же в разном исполнении. или как?
Нет, это шидл, который использует возможности Ардуины, общаются я так понял они через serial AT командами.
А Wemos это самостоятельная esp8260 обвязкой, которую можно программировать в IDE
Нет, это шидл, который использует возможности Ардуины, общаются я так понял они через serial AT командами.
А Wemos это самостоятельная esp8260 обвязкой, которую можно программировать в IDE
это меня и настораживало, когда покупал...
надо искать Wemos