Sunteți pe pagina 1din 7

Textul și imaginile din acest document sunt licențiate

Attribution-NonCommercial-NoDerivs
CC BY-NC-ND

Codul sursă din acest document este licențiat


Public-Domain

Ești liber să distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, tipărire, sau orice alt mijloc), atât timp cât nu aduci nici un fel de modificări acestuia. Codul
sursă din acest document poate fi utilizat în orice fel de scop, de natură comercială sau nu, fără nici
un fel de limitări dar autorii nu își asumă nici o răspundere pentru pagubele pricinuite de
implementările realizate de utilizatori. Schemele și codul sursă au un rol educativ și nu sunt gândite
pentru a fi utilizate în mediu de producție (industrial, casnic sau comercial).
Router WiFi GSM utilizând
Raspberry PI Zero W
Plăcile de dezvoltare Raspberry PI [1] sunt cunoscute
pentru ușurința cu care se poate implementa un router /
gateway TCP/IP grație sistemului de operare Linux ce
rulează pe aceste plăci. Placa Raspberry PI 3 ce integrează
o interfață de rețea WiFi (pe lângă interfața ethernet clasică)
poate sta la baza unui AP WiFi printr-o configurare foarte
simplă (a se vedea „Cum putem utiliza placa Raspberry Pi
ca Access Point WiFi?” [2]). Chiar dacă implementarea
unor astfel de dispozitive (router, gateway sau AP) poate
părea la prima vedere doar un exercițiu educațional având în vedere multitudinea de
dispozitive comerciale cu aceste funcționalități, realizarea unui sistem de control al
comunicațiilor personalizat poate permite implementarea unor funcționalități proprii
inedite și de multe ori un cost mai mic decât al dispozitivelor comerciale.

Placa de dezvoltare Raspberry PI Zero W [3] este un membru mai nou al familiei de
plăci Raspberry introducând un format mai mic al plăcii și un cost mult mai mic dar
fiind limitată din punct de vedere al puterii de calcul și al memorie și neavând interfață
de rețea ethernet (doar WiFi). La prima vedere această placă nu am putea să o utilizăm
la implementarea unui sistem de tip router având o singură interfață de rețea. Având în
vedere dimensiunea, costul și consumul mult mai mici decât al unei plăci Raspberry PI
3 este totuși o alegere foarte bună pentru implementarea unui router WiFi GSM. Pentru
aceste lucru avem nevoie de un modem USB GSM (în cadrul testelor s-a utilizat un
modem Huawei E3131 dar se poate utiliza orice modem USB GSM, de exemplu [4]).
Conectarea modemului la placa de dezvoltare necesită un adaptor microUSB – USB
[5]. Bineînțeles, pentru funcționarea sistemului sunt necesare un card microSD pentru
sistemul de operare și un alimentator de 5V, 1A.

Punerea în funcțiune a unei plăci Raspberry PI Zero


este o provocare din cauza numărului mic de porturi
USB. Recomandăm utilizarea unui cablu serial de
debug [6] pentru a interacționa mai ușor cu placa de
dezvoltare (a se vedea și materialul „Raspberry Pi
Zero Headless Quick Start” [7]). Ca sistem de operare
vom utiliza Raspbian Lite pentru a nu încărca
procesorul plăcii de dezvoltare cu servicii și pachete
software inutile (testele au fost realizate utilizând
versiunea 2018-03-13-raspbian-stretch-lite).
https://www.robofun.ro/forum/
Chiar dacă în final conexiunea la Internet a sistemului se va face prin intermediul
conexiunii modemului USB GSM, pentru a instala pachetele necesare este nevoie să
activăm temporar conexiunea WiFi a plăcii de dezvoltare pentru acces la Internet.
Astfel în fișierul /etc/wpa_supplicant/wpa_supplicant.conf vom adăuga liniile cu
datele de acces la rețeaua WiFi locală (aceste linii vor fi șterse după realizarea
configurării de AP):

network={
ssid="…"
psk="…"
}

Configurarea WiFi se poate face și la nivel card de memorie înainte de prima pornire a
sistemului – a se vedea materialul: „Manually setting up Pi WiFi using
wpa_supplicant.conf” [8].

După repornirea sistemului vom instala update-urile sistemului de operare:

# sudo apt-get update


# sudo apt-get upgrade

și pachetele necesare necesare comunicației cu modemul GSM:

# sudo apt-get install ppp usb-modeswitch usb-modeswitch-data

După conectarea fizică a modemului și o nouă repornire a sistemului putem configura


legătura de date GSM. În fișierul /etc/network/interfaces se vor adăuga următoarele
linii:

auto gprs
iface gprs inet ppp
provider gprs

Ulterior vom crea fișierul gprs în directorul /etc/ppp/peers cu următorul conținut

https://www.robofun.ro/forum/
(cartela SIM utilizată nu avea activat codul PIN):

connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T em"


/dev/ttyUSB0
noipdefault
defaultroute
replacedefaultroute
hide-password
noauth
persist
usepeerdns

După o nouă restartare conexiunea de date GSM va deveni funcțională și putem șterge
configurația din fișierul /etc/wpa_supplicant/wpa_supplicant.conf și putem trece la
configurația AP. Vom instala pachetele software necesare managementului clienților
WiFi:

# sudo apt-get update


# sudo apt-get install dnsmasq hostapd

și vom opri pentru moment serviciile până după configurarea corectă a acestora:

# sudo systemctl stop dnsmasq


# sudo systemctl stop hostapd

Interfața de rețea WiFi va avea în configurația de AP adresă IP statică deci vom


configura acest lucru în serviciul DHCP (fișierul /etc/dhcpcd.conf):

interface wlan0
static ip_address=192.168.66.1/24

și vom reporni serviciul:

# sudo service dhcpcd restart

https://www.robofun.ro/forum/
Având în vedere că funcționalitatea de AP necesită oferirea clienților WiFi de
configurații dinamice de rețea este necesară configurarea serverului DHCP (dnsmasq).
Vom crea un nou fișier de configurare:

# sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig


# sudo nano /etc/dnsmasq.conf

în care vom indica plaja de adrese IP oferite clienților WiFi:

interface=wlan0
dhcp-range=192.168.66.2,192.168.66.20,255.255.255.0,24h

În fișierul serviciului de management AP (/etc/hostapd/hostapd.conf) vom introduce


următoarea configurație (personalizând, bineînțeles, datele de conectare la AP):

interface=wlan0
driver=nl80211
ssid=…
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=…
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

și vom referi fișierul în fișierul de configurare principal al serviciului hostapd


(/etc/default/hostapd):

https://www.robofun.ro/forum/
DAEMON_CONF="/etc/hostapd/hostapd.conf"

După aceste configurări putem porni cele două servicii:

sudo systemctl start hostapd


sudo systemctl start dnsmasq

Pentru ca sistemul să retransmită pachetele din rețeaua WiFi în rețeua Internet este
necesar să achivăm rutarea pachetelor TCP/IP – în fișierul /etc/sysctl.conf vom
decomenta următoarea linie:

net.ipv4.ip_forward=1

Ultimul pas este configurarea serviciului de filtrare a pachetelor (iptables). Vom adăuga
și salva o regulă de MASQUERADE [9]:

sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

și o vom executa la fiecare repornire a sistemului prin adăugarea următoarei linii în


fișierul /etc/rc.local înainte de linia exit 0:

iptables-restore < /etc/iptables.ipv4.nat

După o ultimă repornire routerul WiFi GSM este funcțional.

https://www.robofun.ro/forum/
Referințe on-line

[1] Raspberry PI
https://www.robofun.ro/raspberry-pi-si-componente?utm_source=newsletter&utm_medium=email&utm_content=productLink&utm_campaign=CURS_EMAIL

[2] Cum putem utiliza placa Raspberry Pi ca Access Point WiFi?


https://blog.robofun.ro/2017/05/23/cum-putem-utiliza-placa-raspberry-pi-ca-access-point-wifi/

[3] Kit Raspberry Pi Zero W cu Cutie


https://www.robofun.ro/raspberry-pi-zero-w-cutie?utm_source=newsletter&utm_medium=email&utm_content=productLink&utm_campaign=CURS_EMAIL

[4] 3G modem HSDPA


https://www.robofun.ro/3g-modem-hsdpa?utm_source=newsletter&utm_medium=email&utm_content=productLink&utm_campaign=CURS_EMAIL

[5] Adaptor Tiny OTG - USB Micro la USB


https://www.robofun.ro/adaptor-tiny-otg-usb-micro-la-usb?utm_source=newsletter&utm_medium=email&utm_content=productLink&utm_campaign=CURS_EMAIL

[6] Cablu USB to TTL - Debug / Console Raspberry Pi


https://www.robofun.ro/usb-to-ttl-serial-cable-debug-console-cable-for-raspberry-pi?utm_source=newsletter&utm_medium=email&utm_content=productLink&utm_campaign=CURS_EMAIL

[7] Raspberry Pi Zero Headless Quick Start | Adafruit Learning System


https://learn.adafruit.com/raspberry-pi-zero-creation

[8] Manually setting up Pi WiFi using wpa_supplicant.conf


https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa_supplicant-conf/

[9] Network address translation – Wikipedia


https://en.wikipedia.org/wiki/Network_address_translation

https://www.robofun.ro/forum/

S-ar putea să vă placă și