2017年2月,樹莓派基金發布了一款新的產品raspberry pi zero w。zero系列是樹莓派家族中最為小型的一個系列,僅有三分之一信用卡的大小,和STM32這種傳統單片機(核心板)大小差不多,但是樹莓派可是運行著Linux系統,在對實時性要求不嚴苛的情況下,妥妥秒殺單片機。
raspberry pi zero w是raspberry pi zero的升級款,兩者配置幾乎一模一樣。所不同的是,w代指wireless,前者不僅多了wifi模塊,還多了藍牙4.1模塊,大大增強了互聯互通的能力。初代zero太坑,聯網巨麻煩,因此新款wireless版甫一問世,就銷售一空,10美元的原價淘寶已經炒到200+,還限購……zero w的受歡迎程度可見一斑。
先看一下zero w的硬件配置:
1、制作啟動系統
系統可以在raspberry官網上下載,有好多可以選擇。
個人建議就選raspbian就可以,這款系統又有兩個版本“RASPBIAN JESSIE WITH PIXEL”和“RASPBIAN JESSIE LITE”。后者是前者的精簡版,要是沒有連接顯示器的要求,請安裝后者。zero w硬件配置不高,建議選擇后者。
值得說明的是,下載時最好選擇utorrent下載,這樣下載速度會快一些。
樹莓派依靠SD卡內的系統啟動,如果不插入SD卡,上電之后,什么反應都沒有……
windows下將系統寫入SD卡要用到Win32DiskImager。
- 1、解壓下載的系統,應該會出現一個xxxx.img的文件,將其移動到不帶中文的路徑下
-
2、打開Win32DiskImager選擇此img文件,并選擇需要寫入的SD卡
image.png - 3、點擊write,等待寫入完成
2、使能串口調試
初次使用樹莓派,是無法直接聯網的,因此如果不想連接顯示器進行設置,可以開啟串口調試,效果和ssh是一樣的。
對新寫入的系統,需要在config.txt 內最后一行加入開啟串口調試的命令
enable_uart=1
2016年raspbian的某些版本是默認不開啟ssh的(也是神奇……),不過對于剛寫入系統的zero w開啟ssh也沒用,因為ssh必須在聯網的情況下才能用,此時開機樹莓派是不知道WiFi名字和密碼的,聯網也無從談起。
3、串口調試剛寫入系統的raspberry pi
樹莓派zero w的管腳如圖所示,此視圖排針在右側
觀察此圖可知,右列的第3、4、5個端口分別為GND、TxD、RxD。
Windows上可供串口調試的軟件有很多,此處推薦MobaXterm
- 1、新建session,選擇com口,波特率必須選擇115200
- 2、點擊確定,并進入串口模式
raspberry pi 默認的用戶名:pi,密碼:raspberry。第一次使用可輸入passwd修改密碼。
更多串口配置可以參考官網。
4、開啟SSH
raspberry pi的系統設置可開啟ssh,命令是raspi-config,需要以管理員權限運行。
raspbian是以Debian為基礎的Linux,因此操作起來和Ubuntu比較像,root權限運行需要在前面加sudo。
sudo raspi-config
至此,ssh已經開啟,如果處在聯網的狀態下,可以用ssh登陸樹莓派了。
除此以外,還可以在SD卡的根目錄下新建一個ssh的空白文件(無后綴),系統啟動時發現此文件會自動打開ssh
5、為pi zero w設置WIFI
- 1、修改/etc/network/interfaces文件,用pi自帶的nano打開
sudo nano /etc/network/interfaces
nano使用起來和普通的文本編輯器沒什么區別,保存時按ctrl+o,退出按ctrl+x,如果沒保存就退出,會提示是否保存,其他nano的用法可以參考nano簡明使用指南。
把wlan0 inlet 后面的manual換成dhcp。
- 2、將WiFi名稱和密碼寫入wpa_supplicant.conf
第一步我們發現wpa的配置文件在/etc/wpa_supplicant/wpa_supplicant.conf,此文件就是我們配置WiFi名稱和密碼的地方。其他更詳細配置參見官網說明.
GNU nano 2.2.6 File: /etc/wpa_supplicant/wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你的WiFi名稱"
psk="你的密碼"
key_mgmt="WPA-PSK"
priority=5
}
network={
ssid="你的WiFi名稱2"
psk="你的密碼2"
key_mgmt="WPA-PSK"
priority=4
}
priority5 > priority4,樹莓派會自動連接優先級高的WiFi。
- 3、重啟WiFi
pi的WiFi的名稱是wlan0,可以用ifup或者ifdown命令連接或者斷開wlan0
sudo ifup wlan0
可以看到,WiFi已經綁定到192.168.31.11這個IP上了。
如果可以登錄路由器后臺,可以給此樹莓派綁定一個靜態IP,這樣就不用每次連接后都更換IP了。
如果想遠程連接樹莓派,由于在局域網內,除了要能遠程訪問到路由器,還需要開啟路由器向192.168.31.11這個IP的22端口的轉發。
6、設置樹莓派自動重連WiFi
由于不可知的原因,有可能會導致樹莓派失去連接,這時候需要重新連接WiFi。
自動重連的原理是,定期查看是否斷網,如果斷網了重啟WiFi,參考的文章是這篇,第一步略有修改。
- 1、Python 代碼 autowifi.py,放在 /home/pi 目錄下:
#!/usr/bin/python
import os, time
while True:
if '192' not in os.popen('sudo wpa_cli status').read():
print '\n****** wifi is down, restart... ******\n'
os.system('sudo ifup wlan0')
time.sleep(300) #5 minutes
- 2、Shell腳本autowifi.sh,也放在 /home/pi 目錄下:
#!/bin/sh
python /home/pi/autowifi.py &
- 3、開機自動啟動以上腳本:在終端窗口執行以下命令即可
sudo cp -f /home/pi/autowifi.sh /etc/init.d/
sudo chmod +x /etc/init.d/autowifi.sh
sudo chown root:root /etc/init.d/autowifi.sh
sudo update-rc.d autowifi.sh defaults
- 4、測試一下效果
這樣一款不會斷線的樹莓派就設置好了。