Jaki jest najtańszy sposób na uzyskanie łączności sieciowej z Pi Zero?

49

Ponieważ Pi Zero nie ma portu Ethernet, zastanawiam się, jaki jest najtańszy sposób na uzyskanie dość szybkiej łączności sieciowej z urządzeniem?

AKTUALIZACJA

Przez „łączność sieciową” rozumiem połączenie z siecią LAN / WLAN, aby urządzenia mogły ze sobą rozmawiać, rozmawiać z innymi urządzeniami i korzystać z Internetu. Np. Po instalacji powinienem móc wget stackexchange.com. Właściwie to nie obchodzi mnie, czy to WiFi, czy Ethernet, ale domyślam się, że Ethernet powinien być szybszy i bardziej niezawodny (tylko zgaduję).

Ktoś właśnie zapytał, czy można to zrobić za pomocą HDMI , więc wiem, że inni szukają rozwiązania tego samego (lub podobnego) problemu.

Logiczny błąd
źródło
Do czasu dodania karty SD i karty sieciowej koszt nie tylko prawie potroił się, ale prawdopodobnie straciłeś swój jedyny port USB.
Chris Stratton,
1
Jaki jest sens @ChrisStratton? Musisz dodać kartę SD do dowolnego Pi. I mogą istnieć przypadki użycia, które nie będą wymagały dodatkowego portu USB. Ale w każdym razie myślę, że
dożyjemy

Odpowiedzi:

33

Dwie opcje:

a) Kup adapter Micro USB RJ45 za 2,15 USD

b) Adapter USB RJ45 za 1,50 USD i adapter Micro USB OTG za 0,23 USD (łączna cena 1,73 USD)

Niektóre artykuły mogą być tańsze, jeśli kupisz je za pomocą aplikacji mobilnej.

neuhaus
źródło
1
Opcja (a) wygląda na to, że najlepiej odpowiada moim potrzebom, ale będę monitorować pytanie pod kątem innych pomysłów. Wydaje mi się, że powinno być możliwe zintegrowanie RJ45, układu kontrolera Ethernet i układu USB w sposób podobny do tego, co robią większe Pi. Wczoraj próbowałem przeglądać schematy Pi 2 model B, ale bez schematów Pi Zero jestem trochę utknięty.
Logiczny błąd
5 USD dla Pi Zero i + - 2 USD dla sieci. W pełni działająca 1 Ghz 512 MB, super mała maszyna z systemem Linux .. Jestem zaniemówiony ... Świetna odpowiedź
Piotr Kula
5
Proszę nie kupować adaptera b) (JP1082), nie będzie on działał z niebuforowanym jądrem i będziesz musiał ponownie skompilować jądro po każdej aktualizacji.
gajdipajti
@neuhaus Jeśli kupię opcję a, czy mogę użyć jej również do dostarczenia energii elektrycznej do komputera?
Ricardo
RD-9700 w ogóle nie działa na Raspbian. i co najgorsze, najwyraźniej jest to jedyny USB 1.1
Piotr Kula,
24

Ethernet przez SPI

Jednym z najtańszych sposobów jest podłączenie kontrolera Ethernet przez magistralę SPI. Takim kontrolerem może być na przykład ENC28J60, który jest często używany do łączności Ethernet dla Arduino. Najnowsze jądra Linuksa dla Raspberry Pi mają sterownik z nakładką drzewa urządzeń. Zobacz na przykład https://github.com/raspberrypi/linux/issues/795

Zaletą tego rozwiązania jest to, że port USB pozostanie dostępny. Wadą jest to, że układ (i prędkość SPI) obsługuje tylko Ethernet 10BASE-T (10 Mbps).

Kompletne moduły o najniższych cenach (kilka USD) można prawdopodobnie znaleźć na AliExpress: http://www.aliexpress.com/wh wholesale?SearchText=ENC28J60

pabouk
źródło
1
Jest to bardzo interesująca alternatywa, w której można użyć GPIO do połączenia Ethernet. OK, nie nadaje się do przesyłania strumieniowego multimediów HD ... ale jeśli wszystko, co robi, to stacja pogodowa lub router CNC ... świetnie!
Piotr Kula
gdzie umieścisz ten układ na zero?
Patoshi
1
@duckx: Oto przykład okablowania i korzystania z nakładki drzewa urządzeń: gajdicookbook.wordpress.com/2015/02/25/... Oto kilka zdjęć z tym samym okablowaniem: elektroda.pl/rtvforum/topic2950919.html (używany piny nagłówka GPIO są takie same od pierwszej wersji Raspberry Pi do Pi Zero).
pabouk
1
Zwykle można uzyskać 300 Kb / s za pomocą modułu ENC28J60. Myślę, że osobiście jest to najlepsze rozwiązanie. ( Sparowałem go z A +, który uruchamia węzeł Munin dla czujników DB18B20 .)
gajdipajti
1
@gajdipajti: Przy zwiększonej częstotliwości taktowania SPI: spi-max-frequency = 20000000średnia przepustowość powinna wynosić około 540 kB / s: github.com/raspberrypi/linux/issues/795#issuecomment-87255295 Niestety, jeśli weźmiemy na przykład wideo 1080p24, nie wystarczy to do strumieniowania dopuszczalna jakość. ------ Jak wspomniano w dalszej części GitHub, w przyszłości powinno być możliwe dalsze zwiększenie częstotliwości - bliżej ENC28J60 maksymalnie 20 MHz.
pabouk
9

Dla mnie najtańszym i najłatwiejszym sposobem na podłączenie Ethernetu do zera było połączenie USB z moim hostem. Odkryłem, że link tutaj był najłatwiejszy i najszybszy, ustawiłem statyczny adres IP dla połączenia sieciowego USB0 i działa idealnie dla SSH na zero, gdy jest podłączony do USB na moim laptopie i komputerze stacjonarnym. W Windows 10 pojawia się jako port szeregowy USB, musisz określić sterownik Acer RDNIS, ale potem działa świetnie również pod Windows. Windows 7 i 8 właśnie to zobaczyły, nawet nie pytając. Mam nadzieję, że to pomaga. :)

http://pi.gbaman.info/?p=699

Clinton Johnson
źródło
2
Zaktualizowany i uproszczony przewodnik tutaj: gist.github.com/gbaman/975e2db164b3ca2b51ae11e45e8fd40a
shrx
7

Jeśli najtańszy był jedynym wymogiem pójdę z modułem WiFi ESP8266-01 jak ten jeden . Całkowity koszt 3,50 USD w tym koszty wysyłki. Istnieje kilka samouczków dotyczących korzystania z nich w Pi:

Możesz wydać kilka dodatkowych dolarów i wybrać jeden z wyższej klasy modeli ESP8266. Te moduły wyższej klasy mają kilka dodatkowych zalet, a mimo to kosztują mniej niż 10 USD, zawierają ADC coś, czego Pi nie robi, a także wyłamują wszystkie piny z układu ESP.

Steve Robillard
źródło
Czy istnieje podobna strategia, której można użyć w przypadku Ethernetu? Istnieje podobny instruktaż dla Arduino .
Logiczny błąd
Ta sama wymieniona część (adapter szeregowy na Ethernet będzie również działał z Pi) Sprawdź ten wątek raspberrypi.org/forums/viewtopic.php?f=44&t=18397 . Pamiętaj, że twoje pytanie nie wspomina, że ​​chcesz rozwiązania Ethernet.
Steve Robillard
Widzę Pi Zero + na horyzoncie! Cóż, z pewnością rozumiem uzasadnienie minimalistycznego i kosztownego podejścia, jakie Fundacja przyjęła w przypadku Zero. Ale w najbliższym czasie powinno być Pi z WiFi na pokładzie. Pomyśl o Internecie rzeczy.
Ghanima
Myślę, że cokolwiek podłączonego przez UART serial nie spełnia „rozsądnie szybkiej” części listy wymagań.
Peter Green
1
@neuhaus, oczywiście wolniej, jeśli korzystasz z UART. Jednak w trybie SDIO zgłoszono ~ 40 Mb / s. Zobacz moją odpowiedź
John La Rooy
6

Lepszym rozwiązaniem ESP8266 jest podłączenie go jako urządzenia SDIO na porcie GPIO.
Jest to niedrogie i może zapewnić ci ~ 40 Mb / s przez Wi-Fi

http://oshlab.com/esp8266-raspberry-pi-gpio-wifi/

Trochę historii. ESP8266 IC (jeśli jeszcze o nim nie słyszałeś) to niezwykle popularny mikrokontroler Wi-Fi z wieloma tanimi modułami na rynku. Pierwotnie był używany jako interfejs szeregowy UART dla mikrokontrolerów, ale od tego czasu został przeniesiony do pracy jako samodzielny mikrokontroler wykorzystujący LUA lub Arduino. Jest to bardzo szybki mikrokontroler działający z częstotliwością 80 MHz. Jest to jeden z moich ulubionych mikrokontrolerów do wykorzystania w projektach, ponieważ jest szybki, tani i ma Wi-Fi.

Pojawiło się kilka wersji modułu, w tym ESP-12E i ESP-12F (oba około 2 $ 3 $), które przełamują interfejs SDIO. Było to w dużej mierze bezcelowe, ponieważ do pamięci flash używany jest interfejs SDIO.

Okazuje się jednak, że ESP8266 to tak naprawdę ESP8089 IC, który właśnie przemianowano. ESP8089 to układ Wi-Fi SDIO dla małych tabletów. Jeśli nie ściągniesz GPIO 15 podczas rozruchu, tak jak podczas uruchamiania go jako mikrokontrolera, działa on w trybie SDIO i jest w zasadzie układem scalonym ESP8089 w tym momencie.

Projekt oparty na projekcie Hackaday.io RPi WiFi . Wprowadziłem pewne modyfikacje do pracy z nowym jądrem Linuksa w nowym Raspbian i napisałem skrypt, aby całkowicie zautomatyzować ten proces. Aby tego użyć, potrzebujesz modułu ESP-12E lub ESP-12F. Zalecany jest ESP-12F.

Najpierw podłącz ESP-12F w ten sposób.

wprowadź opis zdjęcia tutaj

Rezystory 33 omów są niezbędne do osiągnięcia wymaganych prędkości SDIO, więc nie należy ich pomijać. Lepiej jest również wyciągać z szyny 5 V i mieć osobne LDO dla modułu ESP8266, ale ciągnięcie bezpośrednio z szyny 3,3 V na Raspberry pi powinno działać dobrze.

SSH do Raspberry Pi i wprowadź następujące polecenia. Możesz najpierw rozszerzyć system plików za pomocą raspi-config.

cd ~
git clone https://github.com/oshlab/esp8089.git
cd esp8089
sudo sh install

To zajmie trochę czasu. Więc po prostu usiądź i poczekaj lub idź napić się kawy.

Po zakończeniu zrestartuj swoje Pi.

sudo reboot

Po ponownym uruchomieniu moduł ESP8266 powinien się aktywować. Możesz wykonać szybki skan, aby upewnić się, że działa.

sudo iwlist scan

Powinien skanować w poszukiwaniu sieci bezprzewodowych i pokazywać, co jest dostępne.

Teraz będzie działać tak jak każdy inny moduł WIFI. Twoje zdrowie.

John La Rooy
źródło
4

Checkout HubPiWi - dodatek do Pi Zero z 3 portami USB i zintegrowanym Wi-Fi z wbudowaną anteną. Płytka ma antenę PCB i nie wymaga kabla ani złącza.

wprowadź opis zdjęcia tutaj

Typowym zastosowaniem HubPiWi będzie dodanie klawiatury, myszy i kamery na trzech portach USB. Oczywiście jest to dodatek do Wi-Fi.

Vikas Shukla
źródło
1
Ciekawe, jednak za 13 USD nie jest to „najtańszy sposób na uzyskanie połączenia z siecią”, co było pierwotnym pytaniem.
neuhaus 30.09.16
3

(Teraz) dość oczywistą odpowiedzią jest uzyskanie Raspberry Zero W (Wireless), która obecnie wydaje się sprzedawać za około 5 funtów więcej niż normalne zero (od 9 do 10 funtów obecnie u większości sprzedawców w Wielkiej Brytanii - bez pinów nagłówka i inne akcesoria)

Ma to wiele zalet w stosunku do innych rozwiązań, w tym:

  • Jest na pokładzie, więc jest łatwo dostępny od razu po wyjęciu z pudełka
  • Jest bardzo kompaktowy i może być bardziej energooszczędny niż inne rozwiązania
  • Obejmuje Bluetooth.
  • Nie wykorzystuje GPIO, USB ani innych złączy Pi
Wilf
źródło
2

Odpowiadam na moje pytanie dwoma pomysłami, które mam, ale oba rozwiązania są tandetne (IMO) i wcale nie takie tanie (10-30 USD). Mam nadzieję, że jest lepszy sposób.

Podłącz przejściówkę micro-USB-na-USB , a następnie:

  1. Podłącz a za pomocą przejściówki USB na Ethernet lub

  2. Włóż tani klucz USB WiFi.

Pierwszy będzie prawdopodobnie najbardziej niezawodny; Miałem pecha z kluczami WiFi.

Logiczny błąd
źródło
Jeśli potrzebujesz listy adapterów WiFi, które powinny działać, wypróbuj tutaj
Wilf
Nie wiem, jak
wbicie
2

Próbowałem uzyskać dostęp do Internetu na moim RPi zero i znalazłem tę listę adapterów do USB http://elinux.org/RPi_USB_Ethernet_adapters jeden z adapterów jest wykonany przez Plugable http://plugable.com/2015/12/10 / ethernet-for-the-raspberry-pi-zero /

Skonfigurowałem kartę SD na Raspberry Pi 1, ponieważ konfiguracja w ten sposób była prostsza (dałem jej statyczny adres IP, edytując /etc/dhcpcd.conf). Następnie adapter wtykowy działa bez dodatkowej pracy, wystarczy go podłączyć i moc i wszystko działa.

Nie mogę komentować, czy jest to dobre rozwiązanie, ale jestem w stanie SSH i pracować w wierszu poleceń bez zauważalnych problemów z wydajnością.

ThetaSinner
źródło
2

Kolejna opcja to: https://www.kickstarter.com/projects/755102253/pijack-add-ethernet-to-raspberry-pi-zero

Nie jest to najtańszy sposób, ale z pewnością działa i jest obsługiwany - jak każdy inny moduł oparty na ENC28J60.

To nie zostało sfinansowane, ale jest dostępne tutaj: http://www.pijack.net

Należę do zespołu programistów, więc mogę być stronniczy!

mah
źródło
1
To nie jest szczególnie pomocna odpowiedź. To link kickstarter, który nie został jeszcze w pełni sfinansowany. Równie dobrze może nie istnieć, jeśli chodzi o to pytanie.
Jacobm001
1
Jest to jednak wykonalny projekt, konstrukcja EXISTS i prototypy wydają się funkcjonalne - płytka dodatkowa łączy się z nagłówkiem GPIO40 i zapewnia TYLKO 10 Mb / s (nie 100 Mb / s, nie Gigabit!) Przewodowe połączenie Ethernet. Biorąc pod uwagę ramy czasowe w momencie pisania tego tekstu (2 miesiące po wydaniu Pi Zero) cel początkowy wynoszący około 4,5 tys. Funtów do roku 20160302 mógł zostać spełniony - ale obietnica w pełni zbudowanej planszy (17 funtów za lipiec 2016 r., Inne zobowiązania są dostępne) mniej 40 Pinowy nagłówek może być więcej niż niektórzy by to zrobili. OTOH, jeśli tego właśnie chciałbyś, dziękuję plakatowi za zwrócenie naszej uwagi ...
SlySven
Aktualizacja: nie otrzymali wszystkich funduszy z kickstarter, ale z innych źródeł udało im się je uruchomić od samego początku i jest teraz dostępny wyprodukowany od nich PiJack, który jest firmą z UE (NIE Dalekiego Wschodu) za 11,49 £ najwyraźniej .. .!
SlySven
Oznacza to oczywiście, że można go również użyć jako drugiego połączenia Ethernet i teoretycznie użyć modelu RPi B + lub 2 / 3B jako przewodowej zapory sprzętowej - chociaż przepustowość NIE byłaby tak wysoka, jak widzę.
SlySven,
1

Spóźniam się na przyjęcie i masz już bardzo tanie opcje, ale sądzę, że możesz to zrobić za mniej - tylko kilka rezystorów - jeśli masz w pobliżu komputer z wolnym portem szeregowym. Strona sprzętowa jest trochę zepsuta, a połączenie będzie POWOLNE i mówisz, że chcesz dość szybko, ale myślałem, że i tak warto o tym wspomnieć.

Przesłanka: sieć można połączyć z szeregowym za pomocą PPP (modemy używają do łączenia się z ISP). Jeśli więc uda nam się zmusić Pi's Tx i RX do połączenia z portem szeregowym komputera, możemy połączyć się przez sieć.

Jak możemy podłączyć Pi's Tx / Rx do portu RS232? Napięcia są różne, więc możesz również

  1. Użyj przełącznika poziomu, takiego jak MAX3232, który prawdopodobnie będzie cię kosztować tyle, co karta sieciowa lub ...
  2. Przejdź bezpośrednio z linii Tx Pi do linii Rx komputera; komputer powinien być w porządku z niższym napięciem. Zmierz napięcie generowane przez komputer na linii RS232 Tx i użyj dzielnika rezystora, aby uzyskać napięcie 3,3 V, i podłącz je do linii Rx Pi. Specyfikacja RS232 pozwala na szeroki zakres napięć, więc nie powinieneś polegać na tym, że jest taki sam między komputerami.

Jest tu tutorial , który wyjaśnia, jak wykonać część oprogramowania.

Mark Smith
źródło
Dlaczego nie skorzystać z portu USB i nie korzystać z sieci przez USB? Jest szybszy niż seryjny i dostępny wszędzie.
neuhaus,
2. Nie sądzę, że poleci - poziomy RS232 są równomiernie rozmieszczone wokół napięcia uziemienia i występuje histereza, więc napięcie wejściowe przełączające się między poziomem dodatnim a uziemieniem jest naprawdę niezgodne ze specyfikacją: odbiornik takiego sygnału jest całkowicie w zakresie okular. zignorować to (a RS232 jest odwróconą polaryzacją IIRC - tj. napięcie bardziej ujemne niż -3,0 V = znak; napięcie bardziej dodatnie niż 3,0 V = spacja). Tak się składa, że ​​dlatego starsze komputery były zasilane napięciem -12V - wyłącznie dla portów szeregowych, choć w dzisiejszych czasach obwody pompy ładującej są takie jak w układach scalonych serii MAX.
SlySven
1

Używam przekierowania portów. Mam Pi podłączone do laptopa jako urządzenie sieciowe i uzyskuję do niego dostęp przez SSH.

ssh -R 1234:182.254.218.141:80 [email protected]

Spowoduje to utworzenie zdalnego portu do serwera proxy (znajdź go na http://proxylist.hidemyass.com/ lub podobnej stronie) na porcie 1234. Kolejnym krokiem jest dodanie proxy APT do pliku / etc / apt / apt. conf (utwórz, jeśli nie znaleziono) i napisz następujący wiersz:

Acquire::http::Proxy "http://localhost:1234";

Zysk!

Shmarkus
źródło
Podoba mi się ta sugestia. Laptop nie jest tani, ale wiele osób ma go wokół.
Logical Fallacy
jak podłączyłeś Pi do laptopa jako urządzenia sieciowego (są różne sposoby !!)
Wilf
Użyłem kabla USB
Shmarkus
1

Z pewnością nie jest to tania wersja, ale zdecydowanie najbardziej elegancka - szczególnie jeśli musisz dodać dodatkowe osłony za pomocą nagłówka GPIO. I zawiera 2-portowy HUB USB.

Mogę być nieco stronniczy, ponieważ to prawdopodobnie mój produkt, który sprzedaję, ale jest to potencjalnie prawidłowe rozwiązanie:

https://www.tindie.com/products/marcel/raspberry-pi-zero-ethernet-rj45-and-usb-hub-shield/

To jest mój produkt, więc mogę być konkurencyjny!

MarcelH
źródło
Cześć i witaj. Pamiętaj, że wymagane jest pełne ujawnienie Twojej przynależności . (Twoja nazwa użytkownika nieco sugeruje związek). Edytuj swoją odpowiedź.
Ghanima