Raspberry Pi jako pająk internetowy

Raspberry Pi jako pająk internetowy
Pobierz PDF Download icon
Pomysłów na zastosowanie miniaturowych komputerków Raspberry Pi powstało już bardzo wiele. Największa popularnością cieszą się chyba domowe aplikacje multimedialne, ale Raspberry Pi nadaje się też do zastosowań w pełni profesjonalnych. W artykule prezentujemy przykład użycia omawianego komputera do stworzenia robota internetowego, korzystającego z dwóch połączeń sieciowych (w tym 3G), który może pracować z dowolnym operatorem komórkowym - w tym także z Bezpłatnym Dostępem do Internetu.

Serwis Większość.pl to nowy portal, gromadzący wyniki sondaży internetowych z popularnych mediów. Jego twórcy, wbrew powszechnym obecnie trendom, przyjęli założenie, że prezentowane treści nie będą dodawane ręcznie przez użytkowników serwisu, lecz zbierane automatycznie przez serwer. W tym celu konieczne było przygotowanie odpowiednich skryptów, ale nie tylko. Natura skryptów i funkcje serwisu wymuszają generowanie wielu podobnych do siebie zapytań do różnych serwerów WWW, w tym do wyszukiwarki Google. Takie zapytania są jednak często blokowane przez zdalne serwery, głównie w oparciu o adresy IP. Dlatego zdecydowano się stworzyć rozwiązanie odporne na tego typu problemy, a jednocześnie skalowalne, bezpieczne oraz tanie w budowie i utrzymaniu. Zostało ono oparte o miniaturowy komputerek Raspberry Pi.

Założenia projektowe

W trakcie tworzenia pająka internetowego przyjęto, że:

  • musi być to rozwiązanie skalowalne, które można swobodnie zwielokrotniać, w miarę rosnących potrzeb,
  • musi być stabilne i bezpieczne, tak by nie zakłócać działania portalu, na rzecz którego działa i nie ułatwiać uzyskania niepowołanego dostępu do niego, • musi opierać się o nowoczesne, aktualne technologie, które pozwolą na jego ewentualne łatwe usprawnienie,
  • musi być niedrogie w budowie w budowie i tanie w utrzymaniu,
  • powinno być nieduże (większy rozmiar w praktyce zwiększa koszty utrzymania).

W oparciu o powyższe rozwiązania dobrano kompatybilny sprzęt i oprogramowanie oraz dokonano odpowiedniej konfiguracji.

Rysunek 1. Wyprowadzenia złącza GPIO w Raspberry Pi Model B wersja 2.0

Sprzęt

Jako platforma sprzętowa posłużył komputerek Raspberry Pi model "B", gdyż urządzenie musiało mieć port Ethernet. Projekt powstał w momencie, gdy na rynku już była dostępna wersja 2.0 Raspberry Pi, wyposażona w 512 MB pamięci RAM i pozbawiona ograniczników prądowych. W pierwszej wersji, wlutowane ograniczniki TE Connectivity (dawniej Tyco Electronics) miniSMDC014 limitowały maksymalny prąd pobierany ze złącza USB do nieco ponad 100 mA, podczas gdy w wersji 2.0 ogranicznik prądowy jest zamontowany tylko na wejściu zasilania USB i dotyczy zbiorczo całego komputerka, pozwalając mu na pobieranie do 1,1 A. Sam Raspberry Pi pobiera maksymalnie ok. 700 mA w trakcie intensywnej pracy, co pozostawia przynajmniej 400 mA do dyspozycji dołączonych, zasilanych urządzeń.

Jako nośnika danych użyto karty pamięci SDHC SanDisk Ultra UHS-I o pojemności 8 GB. Karta ta charakteryzuje się dobrym stosunkiem wydajności do ceny, nie sprawia problemów we współpracy z Raspberry Pi, a jej pojemność pozwala na zainstalowanie standardowej dystrybucji nowoczesnego Linuksa pozostawiając przy tym dużo miejsca na dodatkowe dane i programy.

Modem 3G

Kluczową kwestię stanowił wybór modemu 3G, za pomocą którego urządzenie łączy się z Internetem. To właśnie problemy z modemami 3G są najbardziej uciążliwe w przypadku aplikacji opartych o Raspberry Pi. Wybór padł na względnie niedrogi i popularny model Huawei E3131 w wersji S-2. Jego parametry to: • Obsługiwane pasma: UMTS/HSPA+ 900/2100 MHz, GSM/GPRS/EDGE 850/900/1800/1900 MHz.

  • Szybkość transmisji danych (HSPA+): downlink 21,6 Mb/s, uplink 5,76 Mb/s.
  • Złącze kart pamięci microSD.
  • Złącze anteny zewnętrznej.

Warto zaznaczyć, że modem spełnia wymagania kategorii dziesiątej HSDPA, dzięki czemu jest w zgodny z wymaganiami darmowej usługi BDI świadczonej przez firmę Aero2. Decydując się na taki modem należy jednak zwrócić uwagę na dokładne oznaczenie modelu. Na polskim rynku oferowane są przynajmniej 4 odmiany tego modemu: E3131S-1, E3131AS-2, E3131S-2, E3131S-2 HiLink. Pierwsze dwa mają ograniczenia odnośnie do szybkości działania i nie są w pełni kompatybilne z Aero2. Natomiast ostatni jest dosyć popularny i o ile w niektórych sytuacjach może być optymalnym wyborem, o tyle większą swobodę działania daje zwykły Huawei E3131S-2, ponieważ technologia HiLink upraszcza sposób obsługi modemu przez komputer, z którym współpracuje. Modem staje się wtedy wirtualną kartą sieciową korzystającą z niezmiennego adresu 192.168.1.1. Nie obsługuje niektórych poleceń diagnostycznych, które mogłyby być użyte przy współpracy ze zwykłymi modemami 3G, automatycznie wznawia połączenie i będzie problematyczny, przy próbie stworzenia bardziej zaawansowanego, dostosowanego systemu. Istnieje co prawda metoda tymczasowego wyłączenia trybu Hi- Link w modemach tego typu, ale użytkownik będzie musiał wtedy samodzielnie zdobyć sterowniki do modemu (nie ma ich wgranych w pamięci urządzenia) a po restarcie, modem znów przejdzie w tryb HiLink.

Do zalet wybranego modemu należą jeszcze: możliwość użycia karty microSD (do 32 GB) jako dodatkowego nośnika danych i opcja dołączenia zewnętrznej anteny, która mogłaby okazać się przydatna w przypadku, gdy urządzenie stałoby w miejscu o słaby zasięgu sieci komórkowej. Szczęśliwie udało się też zdobyć modem bez simlocka, w obudowie o malinowym kolorze.

Zasilanie i buzzer

Istotna jest także kwestia zasilania. Wszystko wskazywało na to, że aby zapewnić niezawodną pracę urządzenia, konieczne będzie użycie dwóch zasilaczy. Jeden, wyposażony w złącze microUSB miał zasilać komputer, a drugi miałby stanowić dodatkowe źródło zasilania dla modemu 3G, podłączonego przez odpowiedni rozdzielacz USB, taki który zapewnia transmisję danych pomiędzy komputerem a modemem i jednocześnie pozwala na pobór prądu z zewnętrznego zasilacza. W praktyce jednak okazało się, że zestaw w pełni stabilnie pracuje będąc podłączonym jedynie do portu USB Raspberry Pi, gdy komputer jest zasilany za pomocą zwykłej ładowarki sieciowej do telefonu o prądzie znamionowym 1,1 A. Zestaw został też wyposażony w miniaturowy, 12-woltowy głośniczek piezzo włączony pomiędzy wyprowadzenie GPIO18 i masę, czyli piny 12 i 6 złącza wyprowadzeń GPO (rysunek 1). Służy on do informowania o stanie komputera i o ewentualnych błędach. Całość umieszczono w obudowie dla Raspberry Pi model "B".

Oprogramowanie

W celu uproszczenia procesu instalacji i konfiguracji oprogramowania oraz aby umożliwić użycie różnych nowoczesnych, darmowych narzędzi programistycznych, skorzystano z najnowszej dystrybucji Debiana przystosowanej do współpracy z Raspberry Pi - Raspbiana Wheezy. Do obsługi modemu 3G użyto oprogramowania wvdial, a do obsługi portów GPIO (buzzera) - WiringPI.

Pobrany ze strony www.raspberrypi.org obraz systemu Raspbian został wgrany za pomocą programu Win32DiskImager na kartę SD dołączoną do czytnika kart komputera PC. Pierwszego uruchomienia Raspbiana dokonano przy bezpośrednim podłączeniu monitora, klawiatury i sieci ethernetowej do Raspberry Pi. Za pomocą narzędzia konfiguracyjnego raspi-config wybrano ustawienia językowe (pl_PL_UTF8), określono ustawienia sieciowe i ograniczono pamięć zarezerwowaną dla układu graficznego z 64 do 16 MB, ponieważ urządzenie nie miało być używane w trybie graficznym. Okazało się też, że aby polskie znaki były wyświetlane poprawnie, konieczna była zmiana domyślnej czcionki terminala na inną, dostarczoną wraz z systemem (listing 1).

Skrypty realizujące zaplanowane funkcje robota internetowego wgrano do odpowiednio zabezpieczonego katalogu i za pomocą daemona crond ustalono harmonogram ich wykonywania. Pozostała tylko kwestia odpowiedniego zorganizowania ruchu sieciowego i obsługi buzzera. Zaawansowany routing Komputer jest na stałe dołączony do przewodowej sieci Ethernet, która jest połączona z Internetem przez niezależny router. Interfejs sieci 3G został skonfigurowany w taki sposób, aby był uruchamiany automatycznie po starcie komputera. W efekcie, Raspberry Pi dysponuje dwoma niezależnymi łączami internetowymi.

Głównym interfejsem sieciowym jest modem 3G, więc tuż po uruchomieniu jest on wybierany jako domyślny poprzez dodanie odpowiedniego wpisu w tabeli routingu. Jednocześnie zadeklarowano dwa stałe adresy serwerów DNS, aby nie były one przypadkiem pobierane z routera sieci przewodowej. W tym celu skorzystano z ogólnodostępnych, darmowych DNS-ów Google (8.8.8.8 i 8.8.4.4), których można używać niezależnie od sieci, do której jest się włączonym.

Połączenie 3G jest bardziej zawodne niż przewodowe, a jego wykorzystanie wiąże się z ponoszeniem dodatkowych opłat za każdy gigabajt ruchu, więc do komunikacji z innymi serwerami portalu wykorzystano dostępny interfejs ethernetowy (listing 2). Jego stały adres IP pozwolił na zwiększenie poziomu bezpieczeństwa komunikacji poprzez wprowadzenie odpowiednich ustawień w firewallach i konfiguracjach serwerów. Dodano też odpowiednie przekierowania portów na routerze w sieci lokalnej, dzięki czemu komunikacja pomiędzy komputerem Raspberry Pi a innymi serwerami serwisu Większość.pl może być inicjowana obustronnie. Jednocześnie w ustawieniach firewallu Raspberry Pi zablokowano wszelkie nowe połączenia przychodzące z sieci 3G (listing 3). Dodatkowo, ze względu na specyfikę funkcjonowania sieci 3G, która po pewnym czasie działania może zawieszać połączenie, aby nie stało się to w trakcie wykonywania ważnych operacji, komputer samodzielnie rozłącza się i łączy ponownie, przed każdą kolejną sesją przeglądania Internetu. Nie wpływa to w żaden sposób na połączenie z innymi serwerami portalu. Dodano również ręcznego restartowania połączenia 3G, co pokazano na listingu 4

Rezultat

Gotowa aplikacja jest praktycznie bezobsługowa i bardzo tania w utrzymaniu. Komputer pracuje cicho (brak wymuszonego chłodzenia), stabilnie i pobiera nie więcej niż 5 W mocy. Dzięki połączeniu 3G, przy każdej sesji zbierania danych otrzymuje nowy numer IP, losowany z bardzo dużej puli adresowej. System został przygotowany tak, by obsługiwał wszystkich popularnych operatorów sieci komórkowych w Polsce, co oznacza że w razie potrzeby wystarczy tylko wymienić kartę SIM w modemie, by połączenie odbywało się z adresu IP z puli innego operatora (listing 5). Jednocześnie prowadzenie całego pozostałego ruchu przez stałe łącze minimalizuje koszt abonamentów sieci komórkowych. W razie potrzeby możliwe jest podłączenie się do urządzenia poprzez SSH, ale tylko z użyciem interfejsu ethernetowego. Wprowadzono też szereg innych zabezpieczeń, utrudniających dostęp do komputera niepowołanym osobom.

W przypadku wystąpienia problemów, komputer korzysta z buzzera podłączonego do jednego z wyjść GPIO i do masy. Wyjście to, po ustawieniu w tryb PWM, pozwala na generowanie sygnału prostokątnego o wybranej częstotliwości (listing 6). Utworzono kilka sygnałów (prostych melodii), które pozwalają rozpoznać zaistniały problem, bez konieczności podłączania się przez SSH. Dodatkowo, dla celów diagnostycznych, rejestrowane są parametry połączenia 3G, w tym odbierana moc sygnału, co w razie potrzeby ułatwia wykrycie przyczyn ewentualnych problemów. Szeroka dostępność komputerów Raspberry Pi i innych podzespołów zastosowanych w urządzeniu, ich niski koszt oraz utworzenie kopii zapasowej gotowego, skonfigurowanego już systemu operacyjnego pozwalają błyskawicznie odtworzyć urządzenie i je powielić. Urządzenia te niezawodnie działają już od kilku tygodni na potrzeby serwisu Większość.pl, a obecnie trwają prace nad wdrożeniem podobnie wyposażonych komputerów Raspberry Pi celem realizacji nowych funkcji, które niebawem pojawią się w portalu.

Marcin Karbowniczek, EP

Artykuł ukazał się w
Elektronika Praktyczna
marzec 2014
DO POBRANIA
Pobierz PDF Download icon
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów