树莓派连接WiFi
尽管树莓派非常小,但是如果不能连接WiFi,那么它的移动性将大打折扣,因为它必须需要一根网线直接连接路由器。下面本文就介绍一下如何让树莓派连接无线网络。
准备工作
首先,你需要有:
- 树莓派一台
 - 无线路由器一台
 - USB WiFi网卡一枚(这里可以查看raspbian支持的无线网卡型号列表)
 
先把USB WiFi网卡插入树莓派USB接口,启动树莓派(如果树莓派已经在移动状态,则直接插入无线网卡即可)。
使用 sudo lsusb 命令查看无线网卡是否已经被正确识别,例如我本地显示为:
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
最新的raspbian已经有了wifi必要的包,一般直接插上就可以使用了,可以使用iwconfig再次确认网卡是否正常工作。
wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
lo        no wireless extensions.
eth0      no wireless extensions.
如果出现了类似如上例所示的wlan0,说明无线网卡已经可以正常工作了。
配置无线网卡
使用 sudo ifconfig 可以查看网卡的工作状态。
eth0      Link encap:Ethernet  HWaddr b8:27:eb:db:e8:f6
          inet addr:192.168.1.242  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:79683 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58163 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:109145561 (104.0 MiB)  TX bytes:5489567 (5.2 MiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
wlan0     Link encap:Ethernet  HWaddr e8:4e:06:26:ab:45
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:6 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
这里的wlan0就是USB无线网卡,不过它还没有被分配IP。
搜索可用的无线网络。
sudo iwlist wlan0 scan | grep ESSID
编辑 /etc/network/interfaces文件,可以自行选择emacs,vim,nano编辑器,记得使用sudo。
sudo cp interfaces interfaces_bak   # 先备份
sudo emacs /etc/network/interfaces
修改内容如下:
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
除非manual,否则请一定要把
wpa-roam改为wpa-conf。
配置WiFi连接
sudo emacs /etc/wpa_supplicant/wpa_supplicant.conf
添加如下内容:
network={
    ssid="YOUR_NETWORK_NAME"
    psk="YOUR_NETWORK_PASSWORD"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    auth_alg=OPEN
}
- proto 可以是 RSN (WPA2) 或者 WPA (WPA1)。
 - key_mgmt 可以是 WPA-PSK (绝大部分) or WPA-EAP (企业无线网络)。
 - pairwise 可以是 CCMP (WPA2) 或者 TKIP (WPA1)。
 - auth_alg 绝大部分都是OPEN, 其它的选项有 LEAP 和 SHARED。
 
如果想固定IP,不使用DHCP分配IP的方式,可以修改/etc/network/interfaces文件,如下例所示:
iface wlan0 inet static # dhcp to static
address 192.168.1.155 # Static IP you want 
netmask 255.255.255.0 
gateway 192.168.1.1   # IP of your router
配置完成后,重启树莓派,如果不想重启,也可以执行sudo ifdown wlan0 && sudo ifup wlan0来激活你的无线网卡。