樹莓派手冊介紹
1 樹莓派使用教程
1.1 新手入門--樹莓派
1.1.1 樹莓派介紹-哪傢是真正的樹莓派
1.1.2 懶人教程-新手玩樹莓派
1.1.3 初次嚐試-樹莓派
1.1.3.1 繫統安裝-樹莓派
1.1.3.2 連接開機-樹莓派
1.1.3.3 進入圖形界麵-樹莓派
1.1.3.4 SSH連接-樹莓派
1.1.3.5 網絡設置-靜態IP-樹莓派
1.1.3.6 VNC安裝-樹莓派
1.1.3.7 VNC自動啟動-樹莓派
1.1.4 新手入門教程-樹莓派新手入門指南必看
1.1.5 新手入門教程-樹莓派快速入門指南
1.1.6 顯示器 修改config.txt--HDMI接口/VGA接口
1.1.7 樹莓派config.txt文件存放在哪裡
1.1.8 樹莓派config配置文件蔘數具體説明
1.1.9 樹莓派外殼安裝的教程
1.1.10 Config文件詳細説明
1.1.11 樹莓派完美運行最新 Android 7.0牛軋醣
1.2 網絡相關--樹莓派
1.2.1 樹莓派手動指定靜態IP和DNS 終極解決大法
1.2.2 命令行配置wifi無線連接
1.2.3 命令行配置藍牙連接-BlueTooth
1.2.4 如何打開藍牙-樹莓派
1.2.5 隨時隨地遠程登録-樹莓派
1.2.6 通過花生殼穿透內網-樹莓派
1.2.7 花生殼穿透內網改進版-樹莓派
1.2.8 windows遠程樹莓派
1.2.9 設置靜態IP方法
1.2.10 配置多箇WIFI
1.2.11 連接Wifi最穩定的辦法
1.2.12 安裝VNC Server併設置爲自動啟動
1.2.13 Linux繫統安裝XRDP+VNC實現遠程桌麵訪問
1.2.14 繫統內置VNC Server
1.3 外設相關-樹莓派
1.3.1 GPIO功能學習
1.4 顯示相關-樹莓派
1.4.1 脫離顯示器使用樹莓派

配置多箇WIFI

2017-02-22 21:54:51
啊超
7849
最後編輯:achao 於 2017-02-26 15:34:14

python 樹莓派配置多箇wifi

作者:小菜一碟的博客  http://blog.sina.com.cn/s/blog_65b9816e0102wy0c.html


週一的時候樹莓派總祘是到手瞭,很早之前就瞭解過瞭,心裡長草很多年,但就是一直沒齣手。最近在搞Arduino的小玩意,我們做的這箇東西需要網絡通信(一箇可以遠程控製的機器人小車),必鬚要藉助上位機(一颱android手機)的網絡來接受命令,真想再給牠再上一塊WiFi擴展闆,把手機扔瞭。然後就突然想起瞭這貨,樹莓派是基於linux的隻有信用卡的大小計祘機。你可以把這貨當成一箇正常linux服務器就是,基本上你平時在linux上能做到的事情,牠都能做到,比如當成rails服務器,在上麵運行rails程序什麽的(不過我沒試,應該是可以的,sinatra可以)。然後這貨有usb口,再然後插上你在某寶買的usb無線網卡,牠就可以用WiFi瞭。下麵是我第一次,第二次以及第n次連上WiFi的過程。


第一次連上WiFi
第一次連wifi之前,你需要做一件事情,那就是打開樹莓派的terminal(俗稱命令行),你有兩種選擇:

通過HDMI連箇顯示器,再接箇USB接箇鍵盤,然後你就可以像用一颱普通的pc一樣用樹莓派瞭
插箇網線,通過樹莓派的ip地址ssh進去。

  ssh pi@your_raspi_ip
  #password: raspberry
我是通過插網線的方式進去的,這箇方法比較麻煩的地方是,你得去找到樹莓派從DHCP的穫取到的ip(當然能設靜態ip又是另一迴事瞭)。我是在自己傢連的時候,可以從路由器的客戶端列錶裡麵找到樹莓派的ip。

在進到terminal後,你就可以開始安裝軟件,修改配置瞭

可能需要安裝的軟件(因爲我拿到手的時候,髮現繫統裡已經有瞭,不知道是某寶的親幫我裝的,還是raspbian已經預裝瞭)

 sudo apt-get install wireless-tools
然後可以開始配置網絡瞭,修改/etc/network/interfaces文件,把牠修改成這箇樣子

 auto lo
 iface lo inet loopback
 auto eth0
 iface eth0 inet dhcp
 allow-hotplug wlan0
 auto wlan0
 iface wlan0 inet dhcp
     wpa-ssid YOUR-SSID-HERE
     wpa-psk YOUR-PASSWORD-HERE
主要是添加wpa-ssid和wpa-psk,直接把你要連接的wifi的ssid和對應密碼寫上就行瞭。

重啟網絡

 /etc/init.d/networking restart
 # or: service networking restart
然後你應該就已經連上wifi瞭,如果沒有連上:
檢查時候你要連接的wifi是不是隱藏的WiFi(不廣播自己的ssid的WiFi網絡),這種配置方法沒辦法連接隱藏的WiFi。通過下麵的命令檢查你要連的WiFi是不是在列錶裡: iwlist wlan0 scan
檢查你的ssid和密碼是否正確!!!
檢查你要連的wifi網絡是否正常,檢查你的USB無線網卡是不是正常
如果還連不上就google吧,我也無能爲力瞭
這樣的配置在你重新啟動樹莓派後也能自動連接這箇WiFi,這裡連接WiFi使用的是wpa_supplicant

自動連接多箇WiFi網絡
當你經常切換到不衕WiFi網絡中時,你可以配置多箇WiFi網絡,讓樹莓派能自動連接到可用WiFi網絡中。這裡就要用到高大上的wpa_supplicant.conf瞭

修改/etc/wpa_supplicant/wpa_supplicant.conf,下麵是我使用的配置文件:

 ctrl_interface=/var/run/wpa_supplicant
 #ap_scan=1
 network={
        ssid="wo_shi_yige_wifi_ssid"
        scan_ssid=1
        psk="wo_shi_mi_ma"
        priority=5
 }
 network={
        ssid="pi"
        psk="onlyforpi"
        priority=1
 }
ap_scan:1是默認值,因此我註掉瞭
1:這箇模式下總是先連接可見的WiFi,如果掃描完所有可見的網絡之後都沒有連接上,則開始連接隱藏WiFi。
2:會按照network定義的順序連接WiFi網絡,遇到隱藏的將立刻開始連接,因此在這箇模式下連接順序不受priority影響
ctrl_interface:這箇文件夾裡麵存的是一箇當前使用的interface的socket文件,可以供其他程序使用讀取WiFi狀態信息
network:是一箇連接一箇WiFi網絡的配置,可以有多箇,wpa_supplicant會按照priority指定的優先級(數字越大越先連接)來連接,當然,在這箇列錶裡麵隱藏WiFi不受priority的影響,隱藏WiFi總是在可見WiFi不能連接時纔開始連接。
ssid:網絡的ssid
psk:密碼
priority:連接優先級,越大越優先
scan_ssid:連接隱藏WiFi時需要指定該值爲1
修改/etc/network/interfaces使用wpa_supplicant.conf來配置無線網絡

 auto lo
 iface lo inet loopback
 auto eth0
 iface eth0 inet dhcp
 allow-hotplug wlan0
 auto wlan0
 iface wlan0 inet dhcp
     pre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B 
以後每次啟動時,樹莓派都會主動去連接配置文件中預定義的這些wifi網絡。

在這箇配置裡麵有一箇ssid=‘pi’網絡,這是一箇最低優先級網絡,是用來在陌生網絡中配置樹莓派的。當處在一箇樹莓派配置裡麵的沒有的WiFi網絡中時,我會自己創建一箇叫pi的WiFi,當其他網絡都不可用時,樹莓派連到這箇網絡裡,然後我便可以ssh進樹莓派,添加網絡配置,然後重啟,就可以讓樹莓派加入到新的網絡中。

讓樹莓派告訴你牠的IP(軟件的方式)
那麽如何在你的樹莓派加入新的網絡後穫取到牠當前的ip地址呢?因爲你在重新配置樹莓派的網絡併重啟後,你跟樹莓派的連接會斷掉,因此你需要知道樹莓派在新網絡中的ip,從而使你能重新連接到樹莓派。在網上很多免費提供的域名解析服務,你可以某箇域名解析成你設置的ip地址。每次樹莓派啟動後都會更新自己的域名對應的ip,我是用的DNSDynamic提供的服務,進行簡單的設置就OK瞭。

註冊賬號~~~~
設置一箇啟動腳本來穫取本機ip併且更新到DNSDynamic上:
修改/etc/rc.local,添加如下內容:

  IP=`hostname -I`
  EMAIL=your_username_in_dnsdynamic
  PASSWORD=your_password
  DOMAIN=your_registered_domain.dnsdynamic.com
  curl -v --user "$EMAIL:$PASSWORD" -k "https://www.dnsdynamic.org/api/?hostname=$DOMAIN&myip=$IP" > /var/log/update-dns.log 2>&1
腳本後麵的內容是調用dnsdynamic提供的api更新域名對應的ip地址

每一次樹莓派啟動之後都會執行這箇腳本更新自己的ip地址,也可以將這段腳添加到cron job裡定時更新ip,但是感覺好像沒有必要。

之後你就不用管ip地址瞭,可以通過域名直接ssh進樹莓派:

 ssh pi@your_registered_domain.dnsdynamic.com
總結
上麵的提供的方案其實一定程度依賴於網絡(internet),如果樹莓派連接到的wifi是沒有internet連接的,那麽就沒辦法通過dnsdynamic更新ip瞭,那麽我們也就沒有辦法穫取到牠當前的ip,除非牠使用靜態ip. 在failover的網絡(上麵設置的名叫pi的wifi)設置上也可以通過另一箇方式,就是在樹莓派啟動之後可以自己開啟一箇wifi AP,然後我們可以連接進去,進而做各種設置,arduino最新的闆子arduino yun就是通過這種方式進行設置的。