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

让树莓派“说”出自己的IP地址,

68e3df638a8de46edcaf9699ddd60886.png

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

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

树莓派主板

USB 声卡

音箱或耳机一副

mplayer 播放器

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

Python 主程序

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

https://github.com/spoonysonny/speak_raspi_ip

一、下载主程序和软件

运行下面的命令。

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 画面。

d07e4429291520c5376e2acfb35328a1.png

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

a63124a42b3229781e03b55c165f06bc.png

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

cb335a636a7883f2325ce3c2c556b5ab.png

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

编辑文件 /etc/asound.conf。

sudo nano /etc/asound.conf

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

pcm.!default {

type hw card 1

}

ctl.!default {

type hw card 1

}

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

997af20b93da2db320321935f667cd32.png

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

sudo reboot

三、测试运行

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

cd ~/speak_raspi_ip

sudo mplayer voice/1.mp3

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

db19b999f57308b6e763d9925c9f7615.png

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

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 &

3d0512721b826fda9168b32f6ec39f34.png

按下 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)

文章标题:让树莓派“说”出自己的IP地址 - 树莓派实验室

固定链接:https://shumeipai.nxez.com/2019/05/29/make-the-raspberry-pi-speak-its-own-ip-address.html

21f89d4d0e85824478f35076cd84ccaa.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值