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

ATMega - Jak stworzyć sieciowy dysk z USB i RJ45 na AVR?

pawelooo19 04 Paź 2012 19:07 1857 7
  • #1 11377384
    pawelooo19
    Poziom 13  
    Witam,
    mam pytanie odnośnie ATMega. Czy jest możliwe stworzenie układu który działa jak dysk sieciowy i pendrive jednocześnie?
    Chodzi mi o urządzenie, które posiada złącza USB męskie i RJ45 żeńskie z obsługą sieci (siec lokalna). Wysyłam przez sieć do tego urządzenia plik który zapisze się na karcie SD, następnie mogę ten plik wyciągnąć przez drugi komputer do którego jest podłączone te urządzenie USB.

    komputer1 -> sieć -> urządzenie z kartą SD -> interface USB -> komputer2

    Próbowałem rozwiązać problem kartą SD Wi-Fi ale niestety te karty nie odświeżają transmisji. Musiałbym wyjmować w wkładać kartę za każdym wysłaniem pliku. Dodam że komputer2 jest bardziej sterownikiem niż komputerem ale współpracuje z pamiecią masową. karty Wi-Fi USB nie wchodza w gre bo ten sterownik nie obsługuje sieci.
    Chciałbym zrobić to na AVR ale niestety nie wiem jak się za to zabrać.
  • #2 11377744
    mickpr
    Poziom 39  
    AVR będzie za słaby. Proponuję użyć np. LPC17xx.

    Ja akurat wybrał bym LPC1758/68 - ma i sieć (100MBit) i USB (OTG/Host/Device).
    Możesz więc sprzętowo bez problemu zrobić i sieć i USB (o karcie SD nie wspominając nawet).
    Problemem najtrudniejszym będzie napisanie (a raczej adaptacja) stosu TCP/IP.
    W końcu jakoś ten plik chcesz wrzucać, prawda?
    Jeśli wrzucał będziesz protokołem FTP (lub TFTP) - to konkretne rozwiązania znajdziesz.
    Jeśli chciałbyś "zmapować dysk" jak pod Windows - to nie polecam.

    Zawsze można wstawić jeszcze coś mocniejszego (jakiś większy ARM z systemem np. Linux).
    Wtedy już żadnych problemów nie przewiduję.

    P.S.
    A teraz czekam na "razy" od oburzonych sympatyków AVR.
    :)
  • #3 11377817
    pawelooo19
    Poziom 13  
    Dobrze, a jak to się ma do linuxa? Co potrzebuję dla ARM? Bardzo kuszące. Jak dotąd o ARM wiedziałem tylko tyle, że istnieje i nic po za tym. Chyba zacznę szukać coś w tym temacie

    Aha i jeszcze jedno - jak będzie na tym system to musi mieć monitor itp jak np PC? Powiem szczerze, że zainteresowało mnie to :)

    Dodano po 24 [minuty]:

    Do tego nie potrzebuje zabójczej prędkości. Plik nie będzie większy niż kilkanaście kb. Głównie pliki tekstowe.

    Dodano po 1 [godziny] 20 [minuty]:

    A czy HUB USB ma możliwość komunikacji między portami? Załóżmy, że mamy huba USB z 4 żeńskimi i jednym męskim.

    ATMega - Jak stworzyć sieciowy dysk z USB i RJ45 na AVR?

    Czy jest możliwa transmisja między portem 1 a 2 i odwrotnie?

    To bym wtedy zrobił tak:
    1 - pendrive
    2 - sterownik który by czytał z pendrive
    3 - Tp-link TL-PS310U printserwer MFP dysk sieciowy USB -> i dalej sieć

    Jeżeli nie jest możliwa transmisja między portem 1 i 2 to bym po prostu zrobił mostek dla tych portów a na zasilaniu wstawił bym diody prostownicze żeby nie doszło do zwarcia z print serwerem :)
  • Pomocny post
    #4 11378441
    mickpr
    Poziom 39  
    pawelooo19 napisał:
    Czy jest możliwa transmisja między portem 1 a 2 i odwrotnie?
    Nie.
    pawelooo19 napisał:
    Jeżeli nie jest możliwa transmisja między portem 1 i 2 to bym po prostu zrobił mostek dla tych portów a na zasilaniu wstawił bym diody prostownicze żeby nie doszło do zwarcia z print serwerem
    Nie, nie i jeszcze raz nie.

    Poczytaj o tym co to jest USB Host/Device a potem nawet OTG.
    -------------------
    A teraz rozwiązanie bardziej szczegółowo:
    Karta SD będzie najprostszym rozwiązaniem (najtańszym), do tego system plików FAT32 (np. FatFS - do znalezienia w Internecie).
    Stos USB (USB Device z obsługą MSC) -> http://support.code-red-tech.com/CodeRedWiki/RDB1768ExampleProjects czyli USB MSC (Mass Storage Controller) Example.
    Stos TCP/IP - najlepiej LwIP, ale może i UiP udźwignie transfer.
    Na stronie WWW możesz zaimplementować sobie "podgląd" owego systemu plików + sterowanie.

    Ale uprzedzam, to zadanie na pewno nie dla laika.

    O wiele prościej będzie kupić sobie jakąś płytkę z Linux (+USB +Ethernet). Wtedy zrobisz to o wiele mniejszym nakładem pracy (ale będzie drożej).
  • #5 11378468
    pawelooo19
    Poziom 13  
    Widzę, że jest to zadanie o wiele trudniejsze niż mi się wydawało. Dzięki, że nakreśliłeś mi temat. Poczytam o tym, uzupełnie wiedzę i ruszę - być może z większą ilością pytań :) Jak na razie to dzięki.
  • #6 14373885
    Michal.elektryk
    Poziom 11  
    Najprościej jest to zrobić na rasberry pi (lub banana pi, wtedy dysk możesz sobie podpiąć). Prosty samba serwer, gorzej z pendrivem, tutaj może pomóc przekaźnik, tzn. wpięty do rasberry->ładowanie pliku->przekaźnik odpina->dostęp z zewnątrz
  • #7 14374160
    tmf
    VIP Zasłużony dla elektroda
    pawelooo19 napisał:
    Widzę, że jest to zadanie o wiele trudniejsze niż mi się wydawało. Dzięki, że nakreśliłeś mi temat. Poczytam o tym, uzupełnie wiedzę i ruszę - być może z większą ilością pytań :) Jak na razie to dzięki.


    Zrobienie tego tak, żeby układ był widoczny jako pendrive jest banalne, nawet na AVR (najlepiej z obsługą sprzętową USB). Problemem jest druga strona - czyli styk ethernet-komputer. A to dlatego, że nie ma zdefiniowanego protokołu wymiany plików, który działa tylko w warstwie TCP/IP. Czyli musisz postawić stos (można wykorzystać gotowe moduły za 2-3$), ale to nie wystarczy - na tym musisz postawić coś co udostępnia pliki - może to być ftp, ale jeśli to ma być wygodne to musi być co najmniej samba, bo o NFS nawet nie wspomne. Znowu - samo połączenie TCP/IP zestawisz nawet przy pomocy AVR + moduł sieciowy i jest to banalne, ale samby na tym nie skompilujesz. Podobnie nie skompilujesz jej na procek bez OS, chociażby embedded linux. I tu się zaczynają schody. W warunkach domowych praktycznie nie uda ci się w rozsądnej cenie zaprojektować układu, który pociągnie Linuksa, nie mówiąc już o dostosowaniu dystrybucji, co jest czasami pracochłonne. Dlatego rozwiązaniem może być proponowane RPi, z tym, że ono ma USB host i o ile połączenie komputer-RPi po sieci pójdzie bezproblemowo, o tyle USB z RPi nie podłączysz pod USB komputera. Jak widać problem jest nikoniecznie powiązany z architekturą MCU (i AVR i ARM obsysają, bynajmniej nie sugeruję, że warto takie projekty robić na AVR), a raczej z brakiem prostych standardów wymiany danych lub ich niedostosowaniem do twoich potrzeb. Pamiętaj, że nawet jeśli sam zbudujesz takie urządzenie to klasa USB Mass Storage nie powiadomi komputera, że w systemie plików zaszły zmiany, w efekcie komputer i tak nie będzie widział przesłanych plików. Co gorsze, na skutek buforowania najprawdopodobniej dojdzie do uszkodzenia FS. Problem taki nie wystąpi od strony sieci - gdyż samba ma mechanizmy blokowania.
  • #8 14425090
    Michal.elektryk
    Poziom 11  
    Możesz wziąć prosty przekaźnik podpiąć pena przez przekaźnik do rasberry, załadować plik, a potem odpiąć pendrive(na przekaźniku) i normalnie podłączyć do komputera.
REKLAMA