image.png

2017年2月,树莓派基金发布了一款新的产品 pi zero w。zero系列是树莓派家族中最为小型的一个系列,仅有三分之一信用卡的大小,和STM32这种传统单片机(核心板)大小差不多,但是树莓派可是运行着Linux系统,在对实时性要求不严苛的情况下,妥妥秒杀单片机。

pi zero w是 pi zero的升级款,两者配置几乎一模一样。所不同的是,w代指,前者不仅多了wifi模块,还多了蓝牙4.1模块,大大增强了互联互通的能力。初代zero太坑,联网巨麻烦,因此新款版甫一问世,就销售一空,10美元的原价淘宝已经炒到200+,还限购……zero w的受欢迎程度可见一斑。

先看一下zero w的硬件配置:

image.png

1、制作启动系统

系统可以在官网上下载,有好多可以选择。

image.png

个人建议就选就可以,这款系统又有两个版本“ WITH PIXEL”和“ LITE”。后者是前者的精简版,要是没有连接显示器的要求,请安装后者。zero w硬件配置不高,建议选择后者。

值得说明的是,下载时最好选择下载,这样下载速度会快一些。

树莓派依靠SD卡内的系统启动,如果不插入SD卡,上电之后,什么反应都没有……

下将系统写入SD卡要用到。

2、使能串口调试

初次使用树莓派,是无法直接联网的,因此如果不想连接显示器进行设置,可以开启串口调试,效果和ssh是一样的。

对新写入的系统,需要在.txt 内最后一行加入开启串口调试的命令

enable_uart=1

2016年的某些版本是默认不开启ssh的(也是神奇……),不过对于刚写入系统的zero w开启ssh也没用,因为ssh必须在联网的情况下才能用,此时开机树莓派是不知道WiFi名字和密码的,联网也无从谈起。

3、串口调试刚写入系统的 pi

树莓派zero w的管脚如图所示,此视图排针在右侧

image.png

观察此图可知,右列的第3、4、5个端口分别为GND、TxD、RxD。

上可供串口调试的软件有很多,此处推荐

image.png

image.png

pi 默认的用户名:pi,密码:。第一次使用可输入修改密码。

image.png

更多串口配置可以参考官网。4、开启SSH

pi的系统设置可开启ssh,命令是raspi-,需要以管理员权限运行。

是以为基础的Linux,因此操作起来和比较像,root权限运行需要在前面加sudo。

sudo raspi-config

image.png

image.png

image.png

至此,ssh已经开启,如果处在联网的状态下,可以用ssh登陆树莓派了。

除此以外,还可以在SD卡的根目录下新建一个ssh的空白文件(无后缀),系统启动时发现此文件会自动打开ssh

5、为pi zero w设置WIFI

sudo nano /etc/network/interfaces

nano使用起来和普通的文本编辑器没什么区别,保存时按ctrl+o,退出按ctrl+x,如果没保存就退出,会提示是否保存,其他nano的用法可以参考nano简明使用指南。

把wlan0 inlet 后面的换成dhcp。

image.png

第一步我们发现wpa的配置文件在/etc//.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
}

> ,树莓派会自动连接优先级高的WiFi。

sudo ifup wlan0

image.png

可以看到,WiFi已经绑定到192.168.31.11这个IP上了。

如果可以登录路由器后台,可以给此树莓派绑定一个静态IP,这样就不用每次连接后都更换IP了。

如果想远程连接树莓派,由于在局域网内,除了要能远程访问到路由器,还需要开启路由器向192.168.31.11这个IP的22端口的转发。

6、设置树莓派自动重连WiFi

由于不可知的原因,有可能会导致树莓派失去连接,这时候需要重新连接WiFi。

自动重连的原理是,定期查看是否断网,如果断网了重启WiFi,参考的文章是这篇,第一步略有修改。

#!/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

#!/bin/sh
python /home/pi/autowifi.py &

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

image.png

这样一款不会断线的树莓派就设置好了。