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卡
- 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、测试一下效果
这样一款不会断线的树莓派就设置好了。