低成本的 Raspberry Pi 单板计算机已取得巨大成功,可为系统设计师提供负担得起的控制器板,这种开发板可采用业内标准的 Debian Linux 编程。 Pi 目前尚缺乏的就是集成无线功能。 Raspberry Pi A 和 B 以及 Pi2 都需要外部 Wi-Fi 或蓝牙适配器,才能实现无线连接。 最新的版本 Raspberry Pi 3 增加了 64 位四核 ARM® Cortex®-A53 处理器,其频率提升到 1.2 GHz,并增加了 Wi-Fi 和 Bluetooth Smart 4.0 功能,价格与之前版本相近。 该开发板在发布之前已经预先生产了数月,并可从 Seeed 等供应商处获得。
这开启了该开发板在物联网 (IoT) 中使用的大好机会,它能轻松连接路由器或网关,进而传输传感器数据,或者从智能手机或互联网的终端进行控制。 四核处理器也具有强大的处理能力,可在本地进行数据分析、运行更广泛的控制算法,以及提供更快的响应。
许多这些 IoT 应用都不使用屏幕,因此这些开发板通过“无头”方式进行配置。 这种方法采用以太网或者串行控制台电缆连接终端。 执行这种连接的软件包含在标准软件映像中,这些映像文件随 Raspbian 操作系统一起包含在插入到开发板的 SD 卡中。
Raspbian 基于 Debian Linux,定期使用 Raspberry Pi 基金会的库进行更新,并通过开发板上的 NOOBS 安装应用程序进行安装。 然而,基金会刻意让其它 ARM Linux 发行版更容易取代 SD 记忆卡上的根分区,使得开发板可以使用其它操作系统。 这些操作系统可在建立连接之前,通过与该开发板配合使用的 PC 或笔记本电脑下载到卡上。
图 1: Raspberry Pi 3 开发板添加了 Wi-Fi 和 Bluetooth Smart 功能以及 1.2 GHz 四核 ARM Cortex-A53 处理器到同样的开发板。
使用 Raspbian 配置无线连接的第一步是扫描本地网络。 这可通过 sudo 命令完成,格式为
: sudo iwlist wlan0 scan
它将返回所有 Wi-Fi 网络的列表,以及安全连接和其他详细信息。
要连接到该开发板,所选 Wi-Fi 网络的名称将在 ESSID(扩展服务集标识)下方列出。 这还将包括所使用的验证方法,可以是 WEP、WPA 或 WPA2。
这就提供了配置文件所需的数据。 访问命令为:
: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
在文件底部是需要根据本地网络更改的 Wi-Fi 设置。
在 network= 区块中,ssid="" 条目需更改为本地网络,psk="" 需更改为 Wi-Fi 密码。
然后按下键盘上的 CTRL+X 可保存配置文件,再按下 Y 和回车进行确认。 配置文件通常将在几秒内更新,并尝试连接到 Wi-Fi 网络。 若 Wi-Fi 未连接,则可能需要使用 sudo reboot 进行重启。 连接成功后,可通过 ifconfig 命令进行验证:
: ifconfig wlan0
若 inet addr 字段返回 IP 地址,则连接成功,IP 地址在远程连接到开发板时有用。
连接蓝牙外设
Raspberry Pi 3 的优势之一是内置蓝牙功能。 这样蓝牙外设可轻松连接开发板,建立 IoT 网络。
连接蓝牙设备的最佳方法是使用 Raspbian 操作系统中的命令行界面的 bluetoothctl 命令。
对于其他操作系统,蓝牙模块可以使用命令进行安装:
: sudo apt-get install pi-bluetooth
运行 bluetoothctl 需要通过以下命令将蓝牙芯片打开:
: power on
这将提供之前连接到该开发板的设备列表。 使用
: scan on
命令,进入发现模式,查找附近的蓝牙设备。
然后,需要打开代理,处理外设和开发板的配对:
: agent on
需要外设 MAC 地址才能进行配对,该地址通常印刷在外设上,并使用该命令输入
: pair MAC 地址
也可能出现要求输入外设(如蓝牙键盘)密码的提示。
若外设经常使用,可使用命令将其添加到受信设备:
: trust MAC 地址
然后,使用命令进行连接
: connect MAC 地址
BeagleBone Green
其他流行的低成本单板计算机,如 BeagleBone Green,并未嵌入无线功能,因此需要配置适配器或软件狗才能实现 Wi-Fi 连接。 配置方法随使用的适配器而不同。 但是,这些通常是通过操作系统进行处理,对于 BeagleBone Green 而言是 Debian Linux 发行版 3.8 版。
图 2: BeagleBone Green 开发板使用带 ARM Cortex-A8 内核的 1 GHz Sitara 处理器
该开发板上 Wi-Fi 连接的一个问题是:Grove 端口的接地和电源层靠近可插入 Wi-Fi 适配器的 USB 端口。 这会使信号减弱,并导致连接不良。 对于许多无头嵌入式应用,这些端口可能并不需要,并且可通过设备树关闭。 对应的命令可在 uEnv.tx 文件中找到。
另一个方法是使用短 USB 延长线,这样 Wi-Fi 适配器能与开发板相隔一段较短的距离,以避免这个问题。
开发板还需要为 Wi-Fi 适配器提供充足电源,至少需要1 A 、 5 V 电源。
无论哪种情况下,第一步要使用 SSH 将开发板上的 USB 端口连接到 PC,内核升级可确保 Wi-Fi 适配器使用最新的库:
: cd /opt/scripts/tools/
: ./update_kernel.sh
内核映像应会自动下载并安装,然后重启。
通过添加小脚本,适配器会在开发板启动时自动开启,这有助于确保可以使用所有不同的适配器。 方法如下 方法如下
: cd ~
: ntpdate -b -s -u pool.ntp.org
: apt-get update && apt-get install git
: git clone https://github.com/adafruit/wifi-reset.git
: cd wifi-reset
: chmod +x install.sh
: ./install.sh
该脚本在开发板启动时自动开启适配器,然后运行 iwconfig 命令,提供可用网络列表,以及 /etc/network/interfaces 文件所需的 ESSID,从而指定适当的连接。
使用 nano 编辑器命令配置该文件:
: nano /etc/network/interfaces
这将显示 Wi-Fi 的带注释配置块:
# WiFi Example
#auto wlan0
#iface wlan0 inet dhcp
# wpa-ssid "essid"
# wpa-psk "password"
移除注释,并用相应网络名称和密码更换 ESSID 和密码,以对适配器进行配置。 网络连接可使用 ifup wln0 命令进行手动测试,这将返回该连接的 IP 地址,这在远程访问开发板时有用。 现在,重启开发板将调用打开适配器并配置网络连接的脚本。
结论
aspberry Pi 3 开发板加入Wi-Fi 和 Bluetooth Smart 功能,可让开发人员通过简单配置即可使用许多新的嵌入式无头应用。 这样,可通过 PC、智能手机和云服务远程轻松访问开发板。 但是,其他开发板的用户仍可使用无线适配器提供同样的功能。