树莓派实验室之前已经介绍了多种方法,来获得树莓派的IP地址。有的利用局域网工具或登录路由器查询、有的通过OLED小屏幕自动显示、还有的利用DDNS做域名解析。下面我们再来多介绍一种,让树莓派在启动之后“说”出自己的IP地址。

这里用到了下面这些东西:

树莓派主板

USB 声卡

音箱或耳机一副

mplayer 播放器

数字语音包,含一组录制好了的 MP3 音频

Python 主程序

注意,USB声卡不是必须的,但因无法忍受树莓派板载3.5MM的电流声,这里加装了一个USB声卡。软件部分是在 GitHub @ma6174 的开源项目基础上修改而来。

一、下载主程序和软件

运行下面的命令。

cd ~

sudo git clone https://github.com/spoonysonny/speak_raspi_ip.git

sudo apt-get install mplayer

sudo apt-get install -y mpg123

二、设置输出声卡

如果你使用树莓派板载的声卡,那么可以跳过这一步。下面的介绍用于在使用其他声卡的情况下参考(以USB声卡为例)。

笔者所用的这个USB声卡免驱,即插即用。所以直接进行切换声卡的设定就行。

运行 alsamixer 命令进入 alsamixer 画面。

按 F2 查看系统信息,选择 /proc/asound/cards 查看可用的声卡设备。

可以看到设备名和对应的编号,记下USB声卡的编号(为1)下面会用到。

alsamixer 的其他功能如果有兴趣可以顺便试试,这里暂不深入。如果只需要列出声卡信息,还可以使用 aplay -l 命令。

编辑文件 /etc/asound.conf。

sudo nano /etc/asound.conf

填入如下内容,请先确保这个文件之前是空白的再填入:

pcm.!default {

type hw card 1

}

ctl.!default {

type hw card 1

}

上面的数字 1 代表声卡的设备编号。

按下 Ctrl+O 保存,按下 Ctrl+X 退出。并重启系统。

sudo reboot

三、测试运行

首先需要确认一下声卡和 mplayer 是否正常工作。

cd ~/speak_raspi_ip

sudo mplayer voice/1.mp3

如果顺利的话,接上音箱会听到报数“一”。

下面就可以测试主程序了。

sudo python speak_ip.py

现在树莓派应该会“说”出IP地址。

四、设置开机运行

编辑 rc.local 文件。

sudo nano /etc/rc.local

在 exit 0 之前添加一行:

sudo /usr/bin/python /home/pi/speak_raspi_ip/speak_ip.py &

按下 Ctrl+O 保存,按下 Ctrl+X 退出。

完成之后,下次重启的时候就可以听到树莓派的IP地址了。

最后,附上主程序代码

#!/usr/bin/env python

# coding=utf-8

import os

import sys

import time

import socket

import subprocess

voice_path = os.path.join(sys.path[0], 'voice')

player = ["mplayer"]

def getLocalIP():

ip = None

try:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.connect(('114.114.114.114', 0))

ip = s.getsockname()[0]

except:

name = socket.gethostname()

ip = socket.gethostbyname(name)

if ip.startswith("127."):

cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''

a = subprocess.Popen(

cmd,

shell=True,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

a.wait()

out = a.communicate()

ip = out[0].strip().split("\n") # 所有的列表

if len(ip) == 1 and ip[0] == "" or len(ip) == 0:

return False

ip = "over".join(ip)

return ip

def getFilePath(filename):

return os.path.join(voice_path, "%s.mp3" % filename)

def play(voice):

for i in player:

cmd = "%s %s" % (i, getFilePath(voice))

a = subprocess.Popen(

cmd,

shell=True,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

a.wait()

if a.returncode == 0:

break

def speak(ip):

for i in ip:

if i == ".":

play("dot")

else:

play(i)

play("over")

if __name__ == '__main__':

count = 0

while True:

ip = getLocalIP()

print ip

if ip == False:

play("fetching")

else:

count += 1

speak(ip)

if count == 10:

break

time.sleep(1)

Linux查找树莓派ip地址,让树莓派“说”出自己的IP地址相关推荐

  1. c语言程序 根据输入的ip地址和掩码,计算出网络地址,根据ip地址和子网掩码计算网络地址...

    演示 ip地址: 子网掩码: function show() { var ip = $("#ip").val(); var mask = $("#mask"). ...

  2. 树莓派自启动python程序,远程树莓派桌面,重装树莓派系统,串口驱动,永不休眠,树莓派旋转屏幕方向,树莓派定时重启,修改矫正树莓派时间,raspbian Linux 系统命令常用

    一.树莓派4B自启python的脚本方法 1.rc.local文件修改 (1)新建运行脚本 pi@zero:~/raspberry $ sudo nano test.sh #!/bin/sh cd / ...

  3. linux模拟树莓派,使用QEMU模拟树莓派Raspberry Pi

    树莓派 被誉为 "世界上最流行最便宜的小型电脑" 的「树莓派」Raspberry Pi 是一款性价比超高的迷你电脑主机 (仅有信用卡大小), 深受全球开发者.极客.技术爱好者们的追 ...

  4. 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)

    [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 文章目录 [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 前言 1. 硬件需求与软件版本汇总 ...

  5. 树莓派笔记1:树莓派4B+网线(无网线)+远程打印机+静态IP设置

    树莓派4B 树莓派无屏幕开机指南 用到的工具:Xshell7或putty 通过网线与电脑连接,可以获取树莓派IP地址 首先打开windows的网络连接设置 然后在cmd端 输入 arp -a 查看树莓 ...

  6. Linux驱动开发(十)---树莓派输入子系统学习(红外接收)

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

  7. 树莓派开发6-配置树莓派的Linux内核

    文章目录 配置树莓派的Linux内核 树莓派Linux内核编译 文件系统 Linux内核驱动基础框架 驱动测试步骤 树莓派学习笔记,本文图片文字皆为转述 配置树莓派的Linux内核 驱动两种加载方式: ...

  8. linux模拟树莓派,树莓派使用入门:树莓派上的模拟器和原生 Linux 游戏

    原标题:树莓派使用入门:树莓派上的模拟器和原生 Linux 游戏 树莓派是一个很棒的游戏平台.在我们的系列文章的第九篇中学习如何开始使用树莓派. -- Anderson Silva 回到我们关于树莓派 ...

  9. 树莓派怎么学linux,树莓派使用入门用树莓派学 Linux

    树莓派使用入门用树莓派学 Linux 我们的<树莓派使用入门>的第四篇文章将进入到 Linux 命令行. 在本系列的 第三篇文章 中开始了我们的树莓派探索之旅,我分享了如何安装 Raspb ...

最新文章

  1. 网友:Java岗,自学一个月跳槽计算机视觉!附学习资源合集
  2. 新松机器人BG总裁高峰_新松与民航物流公司签署战略合作协议
  3. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)
  4. 弄懂CNN,然后提升准确率4.21-4.27
  5. 小波的秘密5_多分辨率分析和连续小波变换2
  6. 利用mochiweb让服务端主动推送数据至前端页面
  7. python 队列与栈的实现
  8. 六台机器搭建RedisCluster分布式集群
  9. 线性回归实现——梯度下降
  10. 炒鞋火了?单日成交金额超新三板!
  11. 虚拟化技术(1)——介绍
  12. matlab2c使用c++实现matlab函数系列教程-sin函数
  13. AcWing 802. 区间和
  14. matlab语音去噪_如何使用XAudioPro对音频去噪
  15. Unity学习笔记--无限地图(地图拼接)
  16. 二合一笔记本电脑的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 信息驾驶舱(管理驾驶舱)
  18. 双击.bat文件闪退
  19. 在docker容器中创建用户组和用户,并且多用户共用一个anaconda环境
  20. VC++操作Excel生成饼状图!

热门文章

  1. 链接列Uva 6176 Faulhaber's Triangle
  2. (二)、WCF通道模型
  3. Azure PowerShell (10) 使用PowerShell导出订阅下所有的Azure VM和Cloud Service的高可用情况...
  4. 爬取表格类网站数据并保存为excel文件
  5. 图片加载------reactVirtualized
  6. linux中根据进程的PID值来查找执行文件的及其路径
  7. hdu-5645 DZY Loves Balls(水题)
  8. Permutations
  9. Fedora下SAMBA的相关配置
  10. 根据输入参数创建xml模板