logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Arduino Leonardo - Ethernet Shield jest niewidoczna w sieci

mglowinski93 26 Paź 2015 10:42 1437 1
  • #1 15097283
    mglowinski93
    Poziom 9  
    Posty: 26
    Ocena: 1
    Witam,
    chciałem zrobić WebServer na Arduino , lecz Arduino nie jest widoczne w sieci.
    Pracuję na Arduino Leonardo oraz ethernet shield.

    Kod na którym pracowałem to kod z przykładu. Wraz z frustracją dodawałem kilka liniek kodu, lecz i tak nie pomogło. Zmieniałem głównie ustawienia sieciowe takie jak braka, maska oraz IP.


    Mój kod :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Adres IP komputera : 192.168.1.14
    Maska : 255.255.255.0
    Bramka : 192.168.1.1
    Dodam, że połączyłem przewodem crossowanym.

    Problem jest w tym, że gdy pinguję arduino nie odpowiada, a przeglądarka nie wyświetla strony, która powinna stać na Arduino.

    Macie pomysł gdzie może leżeć problem?

    Z góry dziękuje za pomoc:)
  • #2 15118140
    adikbo
    Poziom 26  
    Posty: 814
    Pomógł: 77
    Ocena: 37
    Pierwsze co rzuca się w oczy to sposób podłączenia i związana z tym konfiguracja - jeżeli łączysz komputer "na krótko" z arduino to po co ci konfiguracja bramy domyślnej?

    Druga sprawa - sprawdź, czy podany przez ciebie adres MAC nie występuje już w twojej sieci (mam nadzieję, że nie podałeś adresu MAC swojej karty sieciowej ale wolę zapytać).

    Trzecia sprawa - czy po próbie pingowania (nieudanego co zresztą jest logiczne ale o tym za chwilę) sprawdzałeś za pomocą polecenia arp -a na swoim komputerze czy widzisz powiązanie adresu mac z adresem ip arduino?

    Czwarta rzecz - dokumentacja biblioteki ethernet.h wskazuje metodę podania adresu ip jako byte ip[] = { 192,168,1,18}; - dokładniej jest to array of four bytes - notacja bez spacji nie jest najlepszym pomysłem.

    I ostatnia sprawa - w kodzie który załączyłeś na porcie 80 tcp powinien zgłosić się serwer www. Czy sprawdziłeś za pomocą polecenia telnet 192.168.1.19 80 czy ten serwer jest widoczny w sieci czy nie?

    A teraz kilka słów odnośnie narzędzia ping - dlaczego próbowałeś programem ping używającym protokołu ICMP (dokładniej metod Echo-Request oraz Echo-Reply) testować serwer www pracujący na protokole TCP i porcie 80? To nie jest pełny komputer z systemem operacyjnym który pewne rzeczy jak np obsługę stosu TCP/IP ma zaimplementowaną. W kodzie który załączyłeś ewidentnie używasz protokołu tcp więc brak odpowiedzi na ping jest jak najbardziej poprawnym zachowaniem. Po prostu nie masz zaimplementowanej obsługi ICMP.

    Reasumując -
    - sprawdź czy adres arduino pojawi się w tablicy arp
    - sprawdź serwer www czy nasłuchuje za pomocą narzędzia telnet
    - sprawdź co widać na porcie serial - masz tam pełen podgląd tego co się dzieje z serwerem
    - nie używaj do testowania tcp narzędzia ICMP - to jakby próbować wbić gwoździa skarpetką.
    - kabel krosowany w dobie kart sieciowych z automatycznym wykrywaniem par jest już trochę działaniem na wyrost (przynajmniej karta w komputerze powinna mieć taką funkcjonalność - arduino o to nie podejrzewam). Sprawdź na zwykłym kablu prostym.


    Pozdrawiam

    adikbo
REKLAMA