1. 程式人生 > >讓你的樹莓派自動連上WiFi,並告訴你地址

讓你的樹莓派自動連上WiFi,並告訴你地址

週一的時候樹莓派總算是到手了,很早之前就瞭解過了,心裡長草很多年,但就是一直沒出手。最近在搞Arduino的小玩意,我們做的這個東西需要網路通訊(一個可以遠端控制的機器人小車),必須要藉助上位機(一臺android手機)的網路來接受命令,真想再給它再上一塊WiFi擴充套件板,把手機扔了。然後就突然想起了這貨,樹莓派基於linux的只有信用卡的大小計算機。你可以把這貨當成一個正常linux伺服器就是,基本上你平時在linux上能做到的事情,它都能做到,比如當成rails伺服器,在上面執行rails程式什麼的(不過我沒試,應該是可以的,sinatra可以)。然後這貨有usb口,再然後插上你在某寶買的usb無線網絡卡,它就可以用WiFi了。下面是我第一次,第二次以及第n次連上WiFi的過程。

第一次連上WiFi

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

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

    ssh [email protected]_raspi_ip
    #password: raspberry
    

我是通過插網線的方式進去的,這個方法比較麻煩的地方是,你得去找到樹莓派從DHCP的獲取到的ip(當然能設靜態ip又是另一回事了)。我是在自己家連,可以從路由器的客戶端列表裡面找到樹莓派的ip。

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

  1. 可能需要安裝的軟體(因為我拿到手的時候,發現系統裡已經有了,不知道是某寶的親幫我裝的,還是raspbian已經預裝了)

    sudo apt-get install wireless-tools
    
  2. 然後可以開始配置網路了,修改/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和對應密碼寫上就行了。

  3. 重啟網路

    /etc/init.d/networking restart
    # or: service networking restart
    

    然後你應該就已經連上wifi了,如果沒有連上:

    1. 檢查時候你要連線的wifi是不是隱藏的WiFi(不廣播自己的ssid的WiFi網路),這種配置方法沒辦法連線隱藏的WiFi。通過下面的命令檢查你要連的WiFi是不是在列表裡:
      iwlist wlan0 scan
    2. 檢查你的ssid和密碼是否正確!!!
    3. 檢查你要連的wifi網路是否正常,檢查你的USB無線網絡卡是不是正常
    4. 如果還連不上就google吧,我也無能為力了

這樣的配置在你重新啟動樹莓派後也能自動連線這個WiFi,這裡連線WiFi使用的是wpa_supplicant

自動連線多個WiFi網路

當你經常切換到不同WiFi網路中時,你可以配置多個WiFi網路,讓樹莓派能自動連線到可用WiFi網路中。這裡就要用到高大上的wpa_supplicant.conf了

  1. 修改/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
  2. 修改/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了。

  1. 註冊賬號~~~~
  2. 設定一個啟動指令碼來獲取本機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,但是感覺好像沒有必要。

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

    ssh [email protected]_registered_domain.dnsdynamic.com
    

總結

上面的提供的方案其實一定程度依賴於網路(internet),如果樹莓派連線到的wifi是沒有internet連線的,那麼就沒辦法通過dnsdynamic更新ip了,那麼我們也就沒有辦法獲取到它當前的ip,除非它使用靜態ip.
在failover的網路(上面設定的名叫pi的wifi)設定上也可以通過另一個方式,就是在樹莓派啟動之後可以自己開啟一個wifi AP,然後我們可以連線進去,進而做各種設定,arduino最新的板子arduino yun就是通過這種方式進行設定的。

相關推薦

樹莓自動WiFi告訴地址

週一的時候樹莓派總算是到手了,很早之前就瞭解過了,心裡長草很多年,但就是一直沒出手。最近在搞Arduino的小玩意,我們做的這個東西需要網路通訊(一個可以遠端控制的機器人小車),必須要藉助上位機(一臺android手機)的網路來接受命令,真想再給它再上一塊WiF

手機能Wifi而Win10筆記本卻解決方案(有圖)

出差在外,手機能夠連上Wifi,膝上型電腦連線時,Wifi圖示左下角卻出現橘黃色問號,顯示網路訪問不成功。 解決方法如下: 1. 點選工作列上的Wifi圖示,點選“網路和Internet設定” 2. 在開啟的設定面板中,選擇“更改介面卡選項” 3. 雙擊需要連線

樹莓 用lirc 複製遙控器進行遙控。

LIRC是我們需要的軟體. LIRC 是 Linux Infrared remote control的縮寫,是linux系統下開源的軟體包。從名字中可知,這個軟體讓你的Linux系統能夠控制紅外線訊號。 LIRC有個具有圖形使用者介面的前端,叫做KDELirc 在使用LIRC之前建議

自動FTP將檔案改為當時準確時間名稱

@Echo Off Echo open 192.168.1.246>ftp.up Echo wx >>ftp.up Echo wx >>ftp.up Echo bin

手機WIFI電腦的情況

到你 mode 設備管理 mod inter 找到你 設備 lan net 可以搜到,密碼也對,但就是連不上,這時候可能就是你的設置錯了。 操作步驟以下: 右擊我的電腦-->管理-->設備管理器-->網絡適配器-->找到你wifi對應的那個名稱(如果

golang 2行代碼在基於arm linux的樹莓、orangepi運行http web服務

目標 開發板 server post fontsize alt main函數 handle 基於 go語言(golang)簡化了跨平臺交叉編譯步驟,支持在windows系統下交叉編譯基於arm+linux平臺的應用,運行時無需其它依賴庫。以下以一個簡單的http serve

樹莓自動播報溫濕度到QQ空間、微博

讀取 usr gpio net etc 寫代碼 播報 \n 電阻 原文鏈接 https://aoaoao.me/951.html 這是個比較無聊的應用。。。靈感來自於一個叫做“古城鐘樓”的微博賬號,此賬號每天都會定點報時,除此之外沒有其他任何內容,以此吸引了近50萬粉絲!報

樹莓無螢幕連線WiFi

將刷好 Raspbian 系統的 SD 卡用電腦讀取。在 boot 分割槽,也就是樹莓派的 /boot 目錄下新建 wpa_supplicant.conf 檔案,按照下面的參考格式填入內容並儲存 wpa_supplicant.conf 檔案。 1 2 3 4 5 6 7

樹莓3B連線到wifi和ssh遠端登入

一、樹莓派3B連線到wifi 在安裝了ubuntu系統時,會提示設定要連線的wifi,這時可以選擇wifi,輸入passwd,在/etc/NetworkManager/system-connections目錄下儲存有 以所連線的wifi的名稱的檔名,用root使用者修改該檔案的許可權為777,即

樹莓3代B+型貼散熱片連線wifi開啟ssh服務(不需要任何windows工具)

有錯的地方,或者不同意見的,煩請留言,或者發郵箱。 郵箱地址:[email protected] ————————————————————————————————— 硬體: 我所買的是亞博智慧科技的樹莓派3B+E14新款-基礎套餐。 軟體: a,樹莓派系統 系統

樹莓(Raspberry Pi)Qt5的本地構建

        網上有很多關於在Raspberry Pi上構建Qt5的教程,但所有或大部分教程都是使用桌面機器交叉編譯Raspberry Pi的二進位制檔案。如果您交叉編譯,您將無法執行qmake並在Raspberry Pi本身上建立。本教程旨在向您展示如何在Raspberr

【手把手教樹莓3 (一)】裝機

概述 raspberry pi其實可以看做一個微型的計算機,我們可以在上面裝各種作業系統,然後搭建伺服器,當然這只是它的一小點功能罷了。。。與我們常用的PC機不同的是,ras pi有GPIO,我們可以讓raspberry pi來控制這些引腳,從而傳送一些物理訊號給其他的裝置

在ubuntu 18.04下無線網絡卡無驅動wifi顯示wifi沒有介面卡的解決方法

近來因為做東西要用到linux環境,所以自己的筆記本在win10的系統上又安裝了ubuntu 18.04版本的雙系統,但是安裝好以後,沒有無線網絡卡的驅動,顯示wifi沒有介面卡等字樣,很糾結,前後研究了將僅一天,終於解決了,現在寫出來,希望對大家能有所幫助,也可適用於沒網的

樹莓自動執行應用程式(指令碼及圖形介面)

/etc/rc.local :加入自己的執行命令。 /etc/inittab :初始狀態的設定。 /etc/init.d/ :編寫一個指令碼,放著裡面,需設為執行許可權。 以svn為例: 1.製作開機啟動指令碼svn_serve #!/bin/sh ### BEGIN INIT INF

樹莓連線無線網wifi配置方法

Wifi配置 我的Wifi配置基本上是跟著這個教程來的,下面將過程簡述,並解釋每個命令/語句的作用。 1、檢查USB無線網絡卡是否已經正確識別 將無線USB網絡卡插入樹莓派後啟動樹莓派,比較不建議熱插拔,因為插入的一瞬間會有比較高的電流,如果電源輸出不夠可能導致樹莓派重啟。用自己的方法進入shell介面後

ubuntu本地程式顯示在樹莓xserver螢幕

本地程式遠端顯示在樹莓派上     參考:Linux江湖03:X Window的奧祕     http://www.cnblogs.com/youxia/p/linux003.html 1.關閉樹莓派xserver的-nolisten tcp關閉tcp監聽(關閉xserve

Mac 利用usb轉串列埠連線樹莓3及配置wifi

環境:Mac工具:樹莓派,usb轉串列埠,3根杜邦線預設:樹莓派SD卡系統安裝好,沒安裝好可參考網上教程。推薦官網步驟一:安裝驅動   Mac安裝CH340驅動(根據自己的USB轉串列埠晶片下載對應驅動,網上大多教程說安裝PL2303,但淘寶上大多數賣的是CH340)。點選下

樹莓新版系統使用mjpg-streamer獲取USB攝像頭和樹莓專用攝像頭RaspiCamera影象

網上有很多關於mjpg-stream移植到樹莓派的文章,大部分還是使用的sourceforge.net上的mjpg-streamer-r63.tar.gz,該工程版本比較老,在新版系統中編譯需要把原始碼檔案中所有 #include<linux/videodev.h&

樹莓3B板載wifi配置方法

樹莓派3代B版自帶板載wifi和藍芽,因此想讓樹莓派通過wifi上網不再需要單獨購買wifi模組,通過簡單配置板載wifi即可快速實現。配置方法在命令列操作,前提是你需要進入命令列終端,進入命令列終端的

樹莓視窗系統啟動後自動執行自定義的程式的實現方法

視窗系統啟動後,自動執行自定義的程式的實現方法進入當前使用者HOME目錄下的.config目錄(這是一個隱藏目錄,需用ls -a顯示出來)cd ~/.config 當前使用者是pi, 其HOME目錄是/home/pi, 上述命令相當於 cd /home/pi/.config建