无屏幕和键盘配置树莓派WiFi和SSH

不算是什么新功能了,在树莓派3B发布后不久,树莓派官方 Raspbian 系统久加入了允许在开机前对 WiFi 网络进行配置的机制。

一、WiFi 网络配置

用户可以在未启动树莓派的状态下单独修改 /boot/wpa_supplicant.conf 文件配置 WiFi 的 SSID 和密码,这样树莓派启动后会自行读取 wpa_supplicant.conf 配置文件连接 WiFi 设备。

操作方法简单:将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,按照下面的参考格式填入内容并保存 wpa_supplicant.conf 文件。

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
 
network={
ssid="WiFi-B"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}

说明以及不同安全性的 WiFi 配置示例:
#ssid:网络的ssid
#psk:密码
#priority:连接优先级,数字越大优先级越高(不可以是负数)
#scan_ssid:连接隐藏WiFi时需要指定该值为1

如果你的 WiFi 没有密码

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}

如果你的 WiFi 使用WEP加密

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
wep_key0="你的wifi密码"
}

如果你的 WiFi 使用WPA/WPA2加密

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=WPA-PSK
psk="你的wifi密码"
}
<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>

如果你不清楚 WiFi 的加密模式,可以在安卓手机上用 root explorer 打开 /data/misc/wifi/wpa/wpa_supplicant.conf,查看 WiFi 的信息。

二、开启 SSH 服务

和 WiFi 配置相似,同样在 boot 分区新建一个文件,空白的即可,文件命名为 ssh。注意要小写且不要有任何扩展名。
树莓派在启动之后会在检测到这个文件之后自动启用 ssh 服务。随后即可通过登录路由器找到树莓派的 IP 地址,通过 ssh 连接到树莓派了。

如果需要远程桌面方式操作树莓派,可以通过 ssh 安装 xrdp,再用 Windows 的远程桌面客户端连接到树莓派

这个小技巧对于没有有线网卡、没有标准 USB 接口来直连键鼠,但集成了 WiFi 的树莓派 Zero W 尤其实用。

本文来自

无屏幕和键盘配置树莓派WiFi和SSH

教程1_点亮第一个led灯

学习模数电路,从点灯开始;

学习51单片机,从点灯开始;

学习stm32,从点灯开始;

学习DSP,从电灯开始;

学习FPGA,从点灯开始;

渐渐的,我们已经习惯了用点灯的方式去接触新的事物,不知不觉中,我们已经成为了人们口中常常提到的“一灯大师 ”。

今天,我们来学习树莓派的使用,依旧从点灯开始,用点灯的方式一步步点亮我们的世界。

 

实验原理

同过树莓派的IO口可以外接很多外设,如舵机、红外发送接收模块、继电器、步进电机、各类兼容传感器、屏幕等。通过这些外设可以制作很多有趣的设计,改善我们的生活方式提高我们的生活质量。

树莓派的IO口驱动能力是比较弱的,驱动电平为3.3V,高电平驱动比电平驱动能力稍弱些,但这也足够驱动led工作,为方便理解,以下实验以高电平驱动方式进行。IO口输出高电平,led灯亮,输出低电平则灭。

 

实验内容

  • 使用面包板和杜邦线连接电路
  • 通过ssh局域网无线连接树莓派
  • 使用wiringPi控制IO
  • 使用vim编辑器

 

实验元器件

  • 树莓派及电源 x1
  • 无线网卡 x1
  • 串口连接器 x1
  • 面包板 x1
  • Led灯 x1
  • 电阻220欧 x1
  • 杜邦线 若干

 

以上器件可在树莓派创客社区淘宝直营店购买:https://52pi.taobao.com

 


实验步骤

一、连接线路。

%e5%9b%be%e7%89%871%e5%9b%be%e7%89%872

实物图如下:

%e5%9b%be%e7%89%8711

二、通过ssh连接连接树莓派

通过上一课程的学习,已经知道如何通过串口连接树莓派进行联网,接下来学习如何在局域网中通过ssh无线网络连接树莓派,这样摆脱了接串口线的麻烦,方便很多。

1.首先通过串口连接上树莓派,登陆进入树莓派后输入 ifconfig 回车。可以查看到树莓派的ip地址。

%e5%9b%be%e7%89%874
2.电脑打开PuTTY软件,选择SSH模式,输入上面查看的ip地址,端口22,确认无误后点击Open,输入默认用户名密码,登陆完成。

%e5%9b%be%e7%89%875

%e5%9b%be%e7%89%876
三、使用vi编辑器编写控制代码及编译运行

1.登陆树莓派后,输入cd ./wiringPi 进入wiringPi目录,使用vi编辑器编辑c源文件,

输入vim.tiny blink.c,如目录下有blink.c文件打开编辑,若无则会新建一个打开编辑。

%e5%9b%be%e7%89%877

2.按i进入输入模式,输入C语言代码,如下是使GPIO17间隔500ms交替输出高低电平的代码。

%e5%9b%be%e7%89%878

对应各栏接口的标号,如以下程序使用的0即为树莓派的GPIO17接口也是物理接口的11接口。

#include <wiringPi.h>

int main (void)

{

wiringPiSetup () ;

pinMode (0, OUTPUT) ;

for (;;)

{

digitalWrite (0, HIGH) ; delay (500) ;

digitalWrite (0, LOW) ; delay (500) ;

}

return 0 ;

}

%e5%9b%be%e7%89%879

 

代码书写完毕后输入按esc退出编辑模式,再输入:wq进行保存退出

3.输入gcc –o blink blink.c -lwiringPi编译程序,

  • gcc是对c语言编译的声明,
  • -o blink是输出工程文件到blink文件(接下来的执行文件)
  • blink.c是刚刚编写的c语言程序
  • -lwiringPi是库的调用

输入sudo ./blink执行程序。(需要通过sudo命令获取权限)

%e5%9b%be%e7%89%8710

 

可以看到面包板上的led在闪烁,恭喜您已学会用树莓派成功点亮第一个LED灯。

%e5%9b%be%e7%89%873

树莓派连接WiFi(最稳定的方法)

概述

树莓派是一个只有信用卡大小的卡片式电脑,基于ARM架构,采用Linux作为其操作系统;它默认是通过有线接口连接互联网,对于如此小巧的设备,有线连接非常不方便,下面我们介绍下如何让树莓派通过无线网卡连接网络。

网上大多数文章介绍的是编辑  /etc/network/interfaces  文件,修改成如下的形式:

iface wlan0 inet dhcp
wpa-ssid "WiFi-name"
wpa-psk "WiFi-password"

然后重启树莓派或者重启network服务来连接WiFi:

sudo service network restart

这种方法虽然简单,但也有非常明显的缺点:

  • 不能同时保存多个WiFi用户名和密码,更换WiFi连接时非常不便
  • 连接WiFi可能要重启系统
  • 即使靠重启network服务来避免重启系统,也会导致其他网络连接中断(如网口的有线连接)
  • WiFi意外断开后不能自动重连

由于实用性不强,上述方法的具体操作过程就不再熬述了。这里介绍一种嵌入式业界常用的WiFi连接方法,可完全应用于树莓派,实现WiFi的方便、稳定连接:

  • 同时保存多个WiFi用户名和密码
  • 可设置连接优先级,多WiFi环境下优先连接指定WiFi
  • 避免重启系统,也无需重启任何服务
  • 断开自动重连

方法步骤

登录树莓派控制台

对于已联网的树莓派,具体步骤戳  使用PuTTY登录到树莓派

装有Linux的树莓派,和普通计算机一样。所有操作都可以通过电脑的远程登录完成。通过VNC可以登录到树莓派的桌面环境,而通过SSH可以操作树莓派的命令行。

尚未联网的树莓派,具体步骤戳  Adafruit的树莓派教程:使用控制电缆

这节课你将学习到如何使用控制电缆控制你的树莓派

修改网络配置

/etc/network/interfaces

用命令行文本编辑器 nano 打开  /etc/network/interfaces  文件,按如下方式修改:

  • 如果你从没有编辑过 /etc/network/interfaces文件,那它其中几行看起来是这个样子:
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

    你要做的是把上述两行替换成

    iface wlan0 inet dhcp
    wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf

    这样就行了

  • 如果你以前按照其他文章的方法,把 /etc/network/interfaces改写成下面的样子:
    iface wlan0 inet dhcp
    wpa-ssid "WiFi-name"
    wpa-psk "WiFi-password"

    那么你要做的同样是,把上述三行替换成

    iface wlan0 inet dhcp
    wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf

    即可。

建议,若你不使用树莓派的有线网口连接网络的话,最好把  /etc/network/interfaces  文件第一行(也可能不在第一行)中 auto lo eth0 wlan0eth0 删掉。因为它会导致树莓派开机时等待有线网卡动态分配IP,但实际上你的有线网口并没有连接到路由器,这里会让内核等待更长的时间,从而拖慢开机速度。

尚不熟悉nano的用法,戳 nano简明使用指南

笔者的 /etc/network/interfaces  配置如下:

7cd8ea49-867d-4852-948a-b03b2cd9ed8e-675x425

/etc/wpa_supplicant/wpa_supplicant.conf

除  /etc/network/interfaces  之外,你还需要修改  /etc/wpa_supplicant/wpa_supplicant.conf  。所有的WiFi连接配置都在这里了。

打开  /etc/wpa_supplicant/wpa_supplicant.conf  照着下面的样子添加(请不要删除原先就已经存在的任何行):

# 最常用的配置。WPA-PSK 加密方式。
network={
ssid="WiFi-name1"
psk="WiFi-password1"
priority=5
}
 
network={
ssid="WiFi-name2"
psk="WiFi-password2"
priority=4
}

priority 是指连接优先级,数字越大优先级越高(不可以是负数)。

按照自己的实际情况,修改这个文件。

例如,你家中有3个WiFi,分别为WiFi-A、WiFi-B和WiFi-C。你希望树莓派的连接优先级为 WiFi-A>WiFi-B>WiFi-C,则整个配置文件看起来像这样:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
priority=5
}
 
network={
ssid="WiFi-B"
psk="12345678"
priority=4
}
 
network={
ssid="WiFi-C"
psk="12345678"
priority=3
}

笔者的 /etc/wpa_supplicant/wpa_supplicant.conf 配置如下:

78159683-675x425

开始连接WiFi

修改好  /etc/network/interfaces  之后,无论是连接还是断开WiFi,都变得简洁无比。

连接WiFi

在命令行下输入

sudo ifup wlan0

这条命令的意思是,启用(up)wlan0端口,即寻找可用WiFi并尝试连接。

命令会在屏幕上打印几行字符,未输出错误信息的话,就意味着WiFi连接成功了:

bb93dec0-2894-46bd-b880-773f901f5089-675x425

你可以用 iwconfig 命令或 ifconfig 命令检查一下WiFi连接:

5d4ce249-1e8b-4b67-a590-61bba7e6d1d7-675x425

719734e8-4a2a-4043-bb13-f78f4164b1ee-683x738

断开WiFi

在命令行下输入

sudo ifdown wlan0

这条命令的意思是,关闭(down)wlan0端口,即断开已连接的WiFi。

02dab065-a1e8-441e-9f8d-bba27da0883e-675x425

千万不要在网络连接ssh时候执行这条命令,它会直接断开你的ssh连接


到这里,一切都配置好了。下次开机的时候,树莓派将自动连接有效的WiFi。

你可以试验一下WiFi的掉线自动重连功能,比如重启一下无线路由器,看树莓派还能不能重新连接上无线路由器。