Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino Leonardo - jako host USB, wykrywanie modemu 3G

nadchloran 07 Paź 2016 06:31 1179 24
  • #1 07 Paź 2016 06:31
    nadchloran
    Poziom 10  

    Witam, po nieudanych eksperymentach zwracam się do forumowiczów z pytaniem, czy jest wgl. możliwość podpięcia i obsługi urządenia USB (takiego jak np modem 3G) do płytki Arduino (albo samego AVR posiadającego obsługę portu USB)? Dochodzę do wniosku że samo podłączenie 2 portów USB nie wystarczy, czy Arduino musi pracować jako Host?
    Czy jest to programistyczne ciężkie do zrealizowania?

    0 24
  • #2 07 Paź 2016 10:19
    2675900
    Użytkownik usunął konto  
  • #3 07 Paź 2016 10:49
    grko
    Poziom 33  

    @Piotrus_999 Musisz wszędzie wciskać te STMy? To tego celu najlepiej nadają się procesory na których można odpalić Linuxa. Nawet najprostszy MIPS z OpenWrt będzie 10x lepszy do STM32 do tego typu zastosowań.

    0
  • #4 07 Paź 2016 10:51
    2675900
    Użytkownik usunął konto  
  • #5 07 Paź 2016 11:36
    373522
    Użytkownik usunął konto  
  • #6 07 Paź 2016 12:19
    tmf
    Moderator Mikrokontrolery Projektowanie

    nadchloran napisał:
    Witam, po nieudanych eksperymentach zwracam się do forumowiczów z pytaniem, czy jest wgl. możliwość podpięcia i obsługi urządenia USB (takiego jak np modem 3G) do płytki Arduino (albo samego AVR posiadającego obsługę portu USB)? Dochodzę do wniosku że samo podłączenie 2 portów USB nie wystarczy, czy Arduino musi pracować jako Host?
    Czy jest to programistyczne ciężkie do zrealizowania?


    Oczywiście jak już koledzy wspomniejli bezpośrednio nie da się połączyć urządzenia device USB, lecz możesz stosować do arduino protezy - shieldy z hostem USB, oparte na rozwiązaniach m.in. z FTDI - zobacz chipy Vinculum. Jest to rozwiązanie o pośredniej skali trudności w implementacji, prostsze niż pisanie czy dostosowanie biblioteki hosta USB na STM, ale nie tak proste jak podpęcie urządzenia do USB za pomocą np. FT232. Oczywiście zapewne w Arduino masz gotowce, co powinno ułatwić zadanie.

    0
  • #7 07 Paź 2016 14:17
    2675900
    Użytkownik usunął konto  
  • #8 07 Paź 2016 14:34
    grko
    Poziom 33  

    Cytat:

    Na STM-y można jak ktos lubi "aduino-style" uzyć mbed, gdzie jest biblioteka usb-host. Wtedy wystarczy dowolna płytka z portem USB (aby nic nie lutować i dopinać) - czyli część nucleo, discovery


    Tylko że nie każda płytka która ma USB może pracować jako HOST. Więc nie dowolna płytka z portem USB.

    0
  • #9 07 Paź 2016 14:42
    JacekCz
    Poziom 36  

    grko napisał:

    Tylko że nie każda płytka która ma USB może pracować jako HOST. Więc nie dowolna płytka z portem USB.


    Jakim kryterium się kierować?

    0
  • #10 07 Paź 2016 14:43
    2675900
    Użytkownik usunął konto  
  • #11 07 Paź 2016 15:16
    373522
    Użytkownik usunął konto  
  • #12 07 Paź 2016 16:06
    Freddie Chopin
    Specjalista - Mikrokontrolery

    niveasoft napisał:
    Uruchomienie RTOS to chyba jak odpakowanie lizaka

    Na szczęście pomiędzy "uruchomienie" a "zrozumienie" jest tak daleko jak tylko można sobie wyobrazić (; Żeby nie być gołosłownym - smartfona uruchamiam jednym palcem, ale nie sądzę aby szybko udało mi się jakiegoś zbudować.

    0
  • #13 07 Paź 2016 16:30
    373522
    Użytkownik usunął konto  
  • #14 07 Paź 2016 17:18
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Nie do końca chodziło mi o "tworzenie" (to oczywiście jest jeszcze bardziej skomplikowane), tylko o samo używanie. Generalnie świat wielowątkowości jest bardzo skomplikowany i ilość ukrytych pułapek czyhających na potencjalnych śmiałków jest ogromna, a są to kwestie praktycznie nieznane w zwykłym programowaniu jednowątkowym (deadlock, zapomniane mutexy) lub słabo poznane i sprawiające często problemy (data race), tyle że w przypadku wielowątkowości te problemy są wielokrotnie częstsze - wręcz można by rzec, że to "chleb powszedni". Z tego względu uruchomienie gotowego projektu wielowątkowego jest oczywiście proste, zmiana w nim jakichś drobnostek zapewne nie będzie dużo bardziej problematyczna niż w jakimkolwiek innym projekcie, jednak już stworzenie swojego projektu wielowątkowego, dołożenie jakichś funkcjonalności w kolejnych wątkach lub połączenie dwóch projektów mogą być niezłym wyczynem.

    Sama idea wielowątkowości sprawia, że raczej ciężko to jakoś ułatwić aby stało się tak łatwe i przystępne jak wspomniany Bascom czy Arduino.

    0
  • #15 07 Paź 2016 17:33
    grko
    Poziom 33  

    Freddie Chopin napisał:
    Z tego względu uruchomienie gotowego projektu wielowątkowego jest oczywiście proste, zmiana w nim jakichś drobnostek zapewne nie będzie dużo bardziej problematyczna niż w jakimkolwiek innym projekcie, jednak już stworzenie swojego projektu wielowątkowego, dołożenie jakichś funkcjonalności w kolejnych wątkach lub połączenie dwóch projektów mogą być niezłym wyczynem.


    Ja bardzo długi czas programowałem pod RTOS. Jednak teraz muszę tworzyć firmware OS independent. Szczerze mówiąc, sprawia mi to więcej problemów niż projekty, które realizowałem z użyciem RTOSa. Przykładowo drivery pod takiego RTOSa się dużo prościej pisało z racji tego, że można było obsługiwać wszystkie interfejsy synchronicznie. Po przejściu na event driven wszystko staje się nagle mocno skomplikowane :D

    Poznanie samych mechanizmów OS jest dość trudne i pamiętam, że wiele czasu na tym spędziłem. Jednak wykorzystanie tego co oferuje nawet najprostszy RTOS upraszcza soft na wielu płaszczyznach.

    0
  • #16 09 Paź 2016 16:06
    nadchloran
    Poziom 10  

    Czy układ MAX 3421 jedno układowy host USB jest w tym wypadku dobrym pomysłem? Czy trzeba do niego też używać jakichś bibliotek do obsługi dedykowanych urządzeń USB?
    Nie jestem na tyle leniwy żeby kupować Shild Host USB pod arduino. Poza tym jest dość drogi a wspomniany scalak można nabyć już za 5$. Na razie nie chcę się zagłębiać w STM-y i chcę pozostać przy AVR- ach.

    Jeszcze jedno pytanie czy jest możliwe wgranie do arduino emulacji programowej hosta USB?
    Czy to ma prawo wgl. działać?

    0
  • #17 09 Paź 2016 16:32
    2675900
    Użytkownik usunął konto  
  • #18 09 Paź 2016 16:35
    JacekCz
    Poziom 36  

    Piotrus_999 napisał:
    nadchloran napisał:
    Czy trzeba do niego też używać jakichś bibliotek do obsługi dedykowanych urządzeń USB?

    A jak myslisz? Musisz napisać / skombinować obsługę stosu USB, następnie obsługę tego modemu.


    Host zarządza, negocjuje połączenia itd ... ma sporo niegłupiej "roboty" i nigdy nie będzie bez (niebanalnego) oprogramowania

    0
  • #19 09 Paź 2016 16:52
    jnk0le
    Poziom 18  

    nadchloran napisał:

    Jeszcze jedno pytanie czy jest możliwe wgranie do arduino emulacji programowej hosta USB?
    Czy to ma prawo wgl. działać?

    Nawet jeśli ktoś zaimplementuje softwareowo tryb hosta to i tak będzie to nawyżej w trybie LS.

    W twoim przypadku pozostaje jakiś AT90USB*** + LUFA, albo ten MAX 3421.

    0
  • #20 09 Paź 2016 16:57
    nadchloran
    Poziom 10  

    Hah nie wiedziałem że komunikacja USB jest taka problematyczna,

    jnk0le napisał:
    Nawet jeśli ktoś zaimplementuje softwareowo tryb hosta to i tak będzie to nawyżej w trybie LS.


    Możesz rozwinąć co to jest tryb LS?

    0
  • #21 09 Paź 2016 17:10
    2675900
    Użytkownik usunął konto  
  • #22 09 Paź 2016 17:48
    JacekCz
    Poziom 36  

    Wracając do postaw tego pytania, może będzie znacznie prościej i taniej kupić specjalizowany "shield" płytkę modemu (z kartą SIM) i zostawić to nieszczęsne USB w spokoju?

    0
  • #23 01 Lis 2016 04:00
    nadchloran
    Poziom 10  

    Ostatnio myślałem żeby użyć po prostu procka z wbudowaną obsługą Hosta usb jak np STM32 tak będzie i przy okazji mam do dyspozycji większe zasoby sprzętowe w porównaniu do mikrokontrolerów AVR 8 bitowych.

    0
  • #24 03 Lis 2016 15:38
    Marico
    Poziom 19  

    nadchloran napisał:
    Ostatnio myślałem żeby użyć po prostu procka z wbudowaną obsługą Hosta usb jak np STM32 tak będzie i przy okazji mam do dyspozycji większe zasoby sprzętowe w porównaniu do mikrokontrolerów AVR 8 bitowych.


    Na niewiele się to zda (jeśli ciągle myślisz o bezpośrednim użyciu modemu 3G). Nawet jak będziesz miał mcu z hostem usb to musisz zaimplementować przeładowanie* modemu z trybu usbstorage w jakim się zgłasza po włączeniu zasilania w usbserial. Jedyny gotowy soft do sportowania na mcu w tym celu to linuxowy usb_switch dla huaweia i paru innych kompatybilnych. Gotowców (kodu) dla mcu (nawet tych z USB) się nie spodziewaj. Jak już uda się przełączyć to dalej jest już z górki bo szukasz do swojego mcu (z usb) stosu z wsparciem usbserial, implementujesz jakiś dostępny stos tcpip z obsługą ppp i już. Ale to wszystko pod warunkiem, że masz jakiś stary modem 3G, bo współczesne z LTE to już nawet nie są usbserial ale usblan/usbeth.
    Mam taki projekt odłożony w todo, ale ciągle brak czasu. Nie wspominając o tym, że to sztuka dla sztuki, proof of concept, że się da. Nic więcej.
    O niebo prościej użyć moduł GSM z wbudowanym stosem tcpip + mcu bez usb. Masz sporo do wyboru, sim900, sim800, g510 ,g6xx.


    * - w niektórych sklepach z zaopatrzeniem "embedded" można dostać modemy USB zgłaszające się jako usbserial, ale to rzadkość i to droga, i nawet nie 3G.

    0
  • #25 05 Lis 2016 15:02
    nadchloran
    Poziom 10  

    Właśnie z modułami SIMCOM sprawa jest prosta, ale prędkość transmisji już jest mała. Chciałbym użyć tego modemu LTE 3G do transmisji danych z prędkośćią np 5 Mbit/s tak by móc transmitować strumień danych np kamery.

    0