Задать вопрос
@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Почему arduino не подключается через ethernet?

Плата - Arduino Mega, Arduino Uno (пробовал на обеих)
в качестве адаптера - enc28j60
20130814093820798.JPG
Настройка сети:fe5a5485c4354a6a93549b18159b086f.png
Скетч:
#include <UIPEthernet.h>
#include <ethernet_comp.h>
#include <UIPClient.h>
#include <Dhcp.h>
#include <Dns.h>
#include <UIPUdp.h>


byte mac[] = {  0x94, 0xDE, 0x80, 0x3A, 0x90, 0xC9 }; //MAC-адрес Arduino
const unsigned long postingInterval = 600000;  // интервал между отправками
                                               // данных - 10 минут
// IP-адрес, назначаемый Ethernet shield:
byte ip[] = { 192, 168, 0, 2 };   
// IP-адрес, dns сервера:
byte sdns[] = { 192, 168, 0, 1 };   
// адрес шлюза:
byte gateway[] = { 192, 168, 0, 1 };
// маска:
byte subnet[] = { 255, 255, 255, 0 };
 
IPAddress server(192, 168, 0, 1); // IP сервера
//IPAddress server(91,122,49,168); // IP сервера
EthernetClient client;
unsigned long lastConnectionTime = 0;   // время последней передачи данных
boolean lastConnected = false;          // состояние подключения
char replyBuffer[160];
 
void setup()
  {
  Serial.begin(9600);
  // Ethernet connection:
  Ethernet.begin(mac,ip,sdns,gateway,subnet);
  // секунда для инициализации Ethernet
  delay(1000);
  //первое соединение через 15 секунд после запуска
  lastConnectionTime = millis()-postingInterval+15000;
}
 
void loop()
  {
    lastConnected = client.connected();
    Serial.println(lastConnected);
    delay(1000);
  }

Подключил к ноутбуку через ethernet. В мониторе порта выводился 0 (соединение не установленно).
Заглянул в таблицу arp. Она оказалась пустой.
Прпробовал пинговать:
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
From 192.168.0.1 icmp_seq=1 Destination Host Unreachable
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
From 192.168.0.1 icmp_seq=4 Destination Host Unreachable
^C
--- 192.168.0.2 ping statistics ---
18 packets transmitted, 0 received, +4 errors, 100% packet loss, time 17075ms
pipe 13


При этом, на адаптере (на самом ethernet разъеме горел зеленый индикатор, и мигал оранжевый (что это значит?).

Заглянул в еще раз таблицу arp:
? (192.168.0.2) в <не завершено> на enp3s0
тогда добавил новую запись:
dproger@racoon:~$ sudo ip neigh add 192.168.0.2 llad 94:DE:80:3A:90:C9 dev enp3s0
dproger@racoon:~$ arp -a
? (192.168.0.2) в 94:de:80:3a:90:c9 [ether] PERM на enp3s0

Ничего не изменилось

До этого пытался подключить ее к роутеру (прописывал в скетче ip адрес роутера, маску в сети, шлюз, все как положено). Роутер ее не видел (не было в списке клиентов), пытался пинговать, результатов не дало.
Как вообще правильно проверить, подключена она или нет?
  • Вопрос задан
  • 2143 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Если память мне не изменяет, то шлюз - это адрес роутера должен быть. А в данном случае адрес Arduino совпадает с адресом роутера. Попробуйте задать ей адрес 192.168.0.101.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы