《树莓派实战秘籍》——2.8 技巧28监视Pi的IP地址

简介:

本节书摘来自异步社区《树莓派实战秘籍》一书中的第2章,第2.8节,作者: 【美】Ruth Suehle , Tom Callaway 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.8 技巧28监视Pi的IP地址

当然,你可以在每次需要知道Pi的IP地址时使用ifconfig命令,或者你也可以在任何时候随时查看它。

这个技巧全部都是关于获取Pi的IP地址的。除非你将Pi一直连着显示器和键盘,或者静态分配它的IP,你没有其他简单的方法确定其IP地址。但如果使用一点点硬件和很少的软件,你就可以在任何你想了解的时候回答这个问题,只需要瞟一眼Pi就可以,如图2-12所示:


screenshot

我们如何实现这个神奇的壮举?好了,关键在于另一个Adafruit项目套件:LCD Pi Plate1。Adafruit的那些可爱又有才华的人们设计了一种简单的方法把一块16×2的LCD以及右侧的一个简单的键盘放到树莓派上面。它是一个未组装的套件,但组装起来非常简单。

2.8.1 打造LCD Pi Plate

要组装LCD Pi Plate,你需要:

  • 烙铁(以及焊锡)
  • LCD Pi Plate套件(它包括一个16×2的蓝色LCD,不过Adafruit也销售其他颜色的产品)
  • 细钢丝钳
  • 窄尖的十字螺丝刀
  • 高堆叠插头连接器2(可选)连接LCD到树莓派有许多不同的方法,但是对于这个技巧来说,LCD Pi Plate有一些显著的优点。Adafruit使用的LCD需要大量数字管脚(取决于LCD设备的功能,一般有6到9个),如果你直接连接该设备到树莓派上去,则会为了一个简单的液晶显示器功能占用大量的GPIO引脚。

但是LCD Pi Plate提供了一种可叠加的方式添加LCD(想想Arduino功能扩展板),它只使用了两个引脚(I2C引脚)。当然,因为I2C总线的工作方式,你也可以将其他设备连到这些引脚上,让它们也出现在I2C总线上(只要它们没有冲突的地址)。最重要的是,这种方法让你还得到了控制LCD的5个按钮。

Adafruit有一个梦幻般的教程3,可以引导你完成LCD Pi Plate的组装。不过即使你因为某种原因无法观看该教程,套件本身的组装也是很直观的。

基本上,你需要将两个220欧姆的电阻(有红色、红色、棕色、金色环标记)焊接到标记有RED和BLUE丝印的位置,剩下的一个电阻(330欧姆,有橙色、橙色、棕色、金色环标记)焊接到标记有GREEN丝印的位置,焊接完成后剪去多余的引脚。然后,将所有的按钮插入到标记有按钮示意图的位置(插入到与板平齐)并焊接好它们。

接下来,把电位器(它有三条“腿”)焊接到标记有Contrast的位置,把MCP23017 I2C端口扩展芯片焊接到标记(MCP23017)的位置。要保证将芯片的缺口对准丝印轮廓的缺口,否则芯片将无法工作。

此时,我们的推荐将稍稍偏离一下Adafruit套件。Adafruit套件配备了一个正常高度的插头连接器(看上去像一个黑色塑料矩形,两面分别是插孔和插针),它可以正常工作,但如果你希望能通过LCD Pi Plate连接其他设备(比如说,Pi Cobbler),你应该买一个具有更高高度的堆叠插头4。无论是原装还是新买的,你都需要将插头放在板的下面,并让其针脚穿过板上插孔来到上面。这里的插头将连接到树莓派的GPIO引脚,然后(从主板顶部)焊接好插头。

接下来,将橡胶缓冲片粘到电路板的底面,正对着你焊接按钮的地方。将它贴平,并尽可能的让它覆盖按钮区域,但不要和左边重叠也不要超出板边。

从排针折下16针长度(如果你买了不同的需要更多引脚的LCD,则可能需要折下18针的长度),并将其长的引针从LCD Pi Plate的正面(top面)向上插入,使得长针脚朝上。然后将LCD放入,将插孔对准排针的长针脚,并焊接板背面以及LCD顶部的每一个引脚。

此刻,它已经是完全组装好了(且连接紧固)。你可以把它放到你的树莓派上,将GPIO引脚插入到连接器中,并使其整齐地贴放在树莓派上面。

同样地,如果上述任何步骤有不清楚的地方,由于Adafruit的在线教程非常优秀,你不妨在觉得迷惑的时候去那里参考一下。

2.8.2 安装软件控制LCD Pi Plate

Adafruit令人尊敬的地方还因为他们开源了所有驱动其所售硬件的软件。LCD Pi Plate有一个专为其编写的Python库,用户可以使用这个库对LCD和按钮进行访问和编程。你可以从他们的GitHub库5中获得代码副本,不过我们在本书的GitHub库6中也包含了一份副本(连同我们写的用来在Pi上监视Pi的IP地址的一些其他代码)。

来吧,克隆我们的GitHub库到你的树莓派上(如果你还没有这么做的话):


screenshot

为了让本软件的所有功能都可以工作,你需要在Linux内核中启用I2C支持。如果你正在使用一个自定义的内核(在任何Linux版本上),并如技巧22中所述配置,那么你无需再做其他事情。如果你正在运行的是Pidora或Occidentalis,即使没有使用自定义内核,你也拥有了需要预配置所需要的所有东西。

但是,如果你正在运行的是Raspbian实例并使用了它的自带内核,你将需要一些额外的配置才能启用I2C支持。具体来说,你需要运行下面的命令:


screenshot

此外,你还需要编辑edit /etc/modules文件,并在文件末尾添加如下行:


screenshot

在任何发行版上,你都需要安装一些软件来添加对系统管理总线(SMBus,你可以认为SMBus是一个更严格版本的I2C)的Python模块、python-rpi、I2C实用工具以及python-netifaces模块(你将用这个模块获取IP地址信息)等的支持。

Pidora在18版本(本书撰写之时的当前版本)没有python-smbus的打包版本,所以我们在本书的GitHub库中为你提供了一个RPM软件包。

在Pidora上,运行:


screenshot

在Raspbian/Occidentalis上,运行:


screenshot

2.8.3 运行代码

安装这些软件之后,你可以扫描I2C总线(总线1)查找LCD Pi Plate:


screenshot

不出所料,你在I2C总线上看到了Adafruit LCD Pi Plate,其设备号为20。

现在继续前进,将当前目录变更到你checkout我们Github库生成的文件下面的Adafruit_CharLCDPlate/目录:


screenshot

在此目录下,你可以看见一些Python文件,这些文件中的大多数都提供了访问LCD Pi Plate的必要的功能库。如果你只是想要测试一下你的连线和焊接是否工作正常,你可以运行Adafruit测试脚本:


screenshot

当你按下Pi Plate上的按钮时,LCD的颜色会循环变化并在屏幕上显示文本字符串。如果你使用的是本套件通常配置的蓝色16×2的LCD,由于它并不支持不同的背景颜色,因此根据你所按下的是哪个按钮,该程序看上去可能会显示暗淡的背景。如果发生这种情景,不要害怕。

如果LCD上没有显示文字,但你可以看见屏幕闪烁,你可能仅仅调节对比度即可解决。用你的窄尖十字螺丝刀旋转电位器(它是按钮旁边带有十字形槽的圆形旋钮),直到文字出现。

当你对测试脚本结果觉得满意,那么下一步就该是收获的时候了。我们写了一个不同的Python脚本,当它执行时,会运行一个简单的程序来显示eth0和wlan0的IP地址。它也有一个粗略的菜单结构,你可以在LCD Pi Plate上按向上和向下按钮来做切换,分别显示eth0和wlan0的IP地址。而其他按钮将会返回到菜单屏幕。

要运行此程序,只需运行命令:


screenshot

如果你需要在后台运行此程序,只需要在./LCD-pi-plate-demo.py后面加一个&号即可(但必须在su-c调用的引号之内)。

你应该在LCD面板上看见这些信息:


screenshot

如果你在LCD Pi Plate上按向上按钮,它会尝试显示eth0的IP地址(如果有的话)。

如果你在LCD Pi Plate上按向下按钮,它会尝试显示wlan0的IP地址(如果有的话)。

尽管我们知道树莓派并没有内置无线网络支持,不过大家一般都是通过连接一个USB无线设备来添加这种支持的。

虽然在我们的脚本中是用编码写死的形式显示eth0和wlan0和IP地址,但如果你想显示其他网络设备的话,也很容易进行修改。这段代码很简单:如果你对Python有一个基础的理解,你就可以找出它们是如何工作的。不妨随意在我们的代码上修改并完善它!

相关文章
|
网络虚拟化 网络架构
计算机网络实验(华为eNSP模拟器)——第三章 配置IP地址和网关
计算机网络实验(华为eNSP模拟器)——第三章 配置IP地址和网关
计算机网络实验(华为eNSP模拟器)——第三章 配置IP地址和网关
|
索引
树莓派 Raspberry Pi (bullseye)更换阿里云源方法
树莓派 Raspberry Pi (bullseye)更换阿里云源方法
8774 0
|
5月前
|
网络协议 Linux 网络安全
无公网IP环境固定地址远程SSH访问本地树莓派Raspberry Pi
无公网IP环境固定地址远程SSH访问本地树莓派Raspberry Pi
|
10月前
|
Ubuntu 网络协议 Linux
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用NAT方式,推荐)
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用NAT方式,推荐)
541 0
01 奇妙的Python库之【socket(获取本机ip地址)】
01 奇妙的Python库之【socket(获取本机ip地址)】
|
Linux 虚拟化
十四、Linux下安装操作系统,虚拟机联网,如何ping通baidu.com网址,以及如何设置静态IP精讲,这一篇足够了。(手把手小白教程)
十四、Linux下安装操作系统,虚拟机联网,如何ping通baidu.com网址,以及如何设置静态IP精讲,这一篇足够了。(手把手小白教程)
十四、Linux下安装操作系统,虚拟机联网,如何ping通baidu.com网址,以及如何设置静态IP精讲,这一篇足够了。(手把手小白教程)
|
Docker 容器 网络协议
实战教程丨手把手教您在 Raspberry Pi 上设置集群(二)
有什么比在 Raspberry Pi 上安装 Docker Engine (CE) 18.09 更好的方式来表达“Happy Pi Day”呢?本文将引导您完成在 Pi 上安装 Docker Engine 18.09 的完整过程。
2093 0
|
Linux Docker 容器
实战教程丨手把手教您在 Raspberry Pi 上设置集群(一)
有什么比在 Raspberry Pi 上安装 Docker Engine (CE) 18.09 更好的方式来表达“Happy Pi Day”呢?本文将引导您完成在 Pi 上安装 Docker Engine 18.09 的完整过程。
3898 0
|
Linux 网络安全
如何从外网登录访问树莓派Raspberry Pi
外网登录访问树莓派Raspberry Pi 本地的树莓派 Raspberry Pi,只能在局域网内访问,怎样从公网也能登录访问树莓派 Raspberry Pi? 本文将介绍具体的实现步骤。 1. 准备工作 1.1 安装并启动树莓派 Raspberry Pi系统 树莓派 Raspberry Pi是基于ARM的嵌入式Linux系统,默认的sshd端口是22。
3705 0
【加法笔记系列】PN 结和单向导通原理
PN 结是二极管中最基本的单向导通原理 * 化学键 * 离子键 * 共价键 * 元素周期表 * PN 结 * 原理 * 形成 * 正向偏置 * 反向偏置 # PN 结 ## 化学键 > 化学键有3种类型 ,即离子键、[共价键](https://baike.baidu.com/item/%E5%85%B1%E4%BB%B7%
2592 0