filezilla 传文件 树莓派_树莓派ZeroW电台

本文介绍了如何使用树莓派Zero W创建一个无线电台,通过filezilla传输文件。首先,文章讲解了准备硬件和连接步骤,接着详细阐述了软件安装、解决GPIO冲突、播放音频及不同格式文件的方法。此外,还提到了需要注意的法律问题,即未经许可的FM发射可能违法。最后,提供了相关参考资料链接。
摘要由CSDN通过智能技术生成

陈拓 chentuo@ms.xab.ac.cn 2018.06.02/2018.06.21

概述

使用树莓派可以自己制作一个无线电台,可以从1 MHz到250 MHz之间频段发送16比特立体声音频,用收音机或手机收音机app收听音乐。

1. 准备

1.1 硬件

  • 树莓派Pi Zero W
  • 杜邦线,将杜邦线插在Zero W的Pin7(GPIO4)上, 当fm的天线。
  • 电脑(我用Windows 7)

1.2 连接

用putty连接电脑和Pi Zero W,看本文最后的参考文档。Host Name填raspberrypi.local,端口22,用户名pi,密码raspberry。

2. 安装软件

  • 下载PiFMPlayer

pi@raspberrypi:~ $ wget https://github.com/Mikael-Jakhelln/PiFMPlay/archive/master.zip

ccbf329eb6c789b8a7f4a7b8f65dfda1.png
  • 解压到/home/pi

看看当前位置:

429cdb9efed21b968985d634d6c3f8ab.png

pi@raspberrypi:~ $ unzip master.zip

解压完成:

pi@raspberrypi:~ $ ls -l

6deff7a97bade11aa18ccdebb01a38e3.png

pi@raspberrypi:~ $ ls -l PiFMPlay-master

17c8d42515c405278c1b34e923b8489b.png

pi@raspberrypi:~ $ ls -l PiFMPlay-master/pifmplay

4e5ae79003290a31d21636e9b257396a.png
    • left_right.wav - 声音样本".wav"文件
    • Moby - Porcelain(Atlantic Connection Remix).mp3 - 音乐样本mp3文件
    • Pifm - 编译好的pifm模块
    • pifm.c - pifm C语言源代码
    • pifmplay
    • PiFm.py - pifm的Python代码
    • PiFm.pyc - Python语言pifm的字节代码
    • README
    • starwars.wav - 音乐样本wav文件
  • 为Pifm和pifmplay添加可执行权限

pi@raspberrypi:~ $ sudo chmod +x PiFMPlay-master/pifmplay/pifm PiFMPlay-master/pifmplay/pifmplay

3. 解决Raspberry Pi的GPIO冲突

Raspberry Pi Zero W提供了40个插针,用来连接外围设备,其中有些插针是功能复用的。Pin7(GPIO4)有GPCLK0(General purpose Clock 0)的功能, 1-wire的DS18B20功能和PiFM功能,这种功能复用的引脚可能会产生冲突。

为了解决这个问题,我在《树莓派 Zero W+温度传感器DS18B20》一文中已经将1-wire功能从GPIO4调整到了GPIO17,请参考。

4. 播放

4.1 修改配置

如果你要启用树莓派的音频的话,在里面添加一行audio=on即可。

pi@raspberrypi:~ $ sudo nano /boot/config.txt

看看相关的设置:

2a3c1091aa3446cabae53b9a48452b1e.png

默认已经有了。如果修改了config.txt需要重启树莓派。

图中BCM2835是一种低成本,全高清多媒体应用处理器,包括对数字音频的处理。

4.2 播放

  • 在Pin-7,就是GPIO4上插一根大约30cm的杜邦线当天线。
  • 进入pifmplay目录:

pi@raspberrypi:~ $ cd PiFMPlay-master/pifmplay

  • 播放

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo ./pifm starwars.wav 100.0

27a7d41496050e0d72daa1faae3f05f5.png

按下“Ctrl+C”就能停止播放。

调频广播是以调频方式进行音频信号传输的,调频波的载波频率随着音频调制信号的变化而在载波中心频率(未调制以前的中心频率)两边变化,每秒钟的频偏变化次数和音频信号的调制频率一致,如音频信号的频率为1KHZ,则载波的频偏变化次数也为每秒1K次。频偏的大小是随音频信号的振幅大小而定。

在调频发射机中允许将最大频偏限制在75KHZ。我国的调频频率规定范围为87--108MHZ。学校一般规定在70--87MHZ之间,一般调频收音机接收不到信号。

树莓派电台工作的频率为1MHz-250MHz,我们现在用100MHz。虽然你可以在1MHz-250MHz范围内改变工作频率,但考虑到我国的调频广播使用范围是87.5-108MHz,这也是我们的接受设备的频率搜索范围,所以发射频率也要在这个范围内。

声音文件必须是16位单声道wav格式。

4.3 收听

在手机上打开FM收音机,插上耳机,调整频率为100.0,按下面中间的电源按钮开始收听。

430d001f617fd4b3535dd234ea72cd55.png

4.4 新特性

  • 立体声

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo ./pifm left_right.wav 103.3 22050 stereo

left_right.wav是22050立体声音频文件。

  • 播放MP3

需要安装SoX和ffmpeg,请看下一小节。

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ ffmpeg -i Moby - Porcelain(Atlantic Connection Remix).mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm

  • 从USB麦克风广播 (看arecord命令手册的配置config)

arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm – 103.3

4.5 用Python播放

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo python

>>> import PiFm

>>> PiFm.play_sound("starwars.wav")

将FM收音机的频率调到103.3Mhz,这是默认频率。

5. 播放其他格式的音频文件

PiFMPlay是一个用于树莓派(发送FM音频程序)的PiFM插件。PiFMPlay使得播放音乐和控制FM广播变得更容易。

查看PiFMPlay的README.md

ff0fe0bba4979e400321afe2e8bd89de.png

pi@raspberrypi:~/PiFMPlay-master $ cat README.md

PiFM是由[Icrobotics] (http://www.icrobotics.co.uk/wiki/index.php)编写的。

pifmplay是Mikael Jakhelln写的,是一个shell脚本,可以用文本编辑器打开。看看pifmplay脚本就知道,需要安装SoX和ffmpeg

5.1 安装SoX和ffmpeg

  • 安装SoX - 声音转换:http://sox.sourceforge.net/

SoX是一个跨平台(Windows,Linux,MacOS X等)命令行工具,可以将各种格式的计算机音频文件转换为其他格式,可以用来记录,转换,编辑声音,还可以对这些声音文件应用各种效果,比如,可以为声音文件加上回音效果。另外,SoX可以在大多数平台上播放和录制音频文件。SoX不仅可以做音频的合并、分割,也能做混音和音量调节。

直接安装SoX:

pi@raspberrypi:~ $ sudo apt-get install sox libsox-fmt-all

测试:pi@raspberrypi:~ $ sox

74acaa93d2e9656aba68d03c14ea29b6.png

可以在http://www.linuxfocus.org/common/src/article178/和http://home.sprynet.com/~cbagwell/sox.html找到有关于sox更多的信息。

  • 安装ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。ffmpeg使用sox程序对MP3音频进行解码,就可以播放MP3类型的了。将FFmpeg+PiFM结合起来=PiFMPlayer,这样其他格式的声音文件就可以转换成wav格式,然后用你选好的电台频率播放出来。

安装ffmpeg:

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo apt-get install ffmpeg

错误:

bdbed8c6552562e73506028d7b93206d.png

是因为某些软件包冲突导致,试试自己编译。看看这篇文章:

http://www.jeffreythompson.org/blog/2014/11/13/installing-ffmpeg-for-raspberry-pi/

    • 下载ffmpeg源码

git clone https://github.com/FFmpeg/FFmpeg.git

-bash: git: command not found

bc91c7cbe7265527111585f3a4236f74.png

git没找到,安装一个:

pi@raspberrypi:~ $ sudo apt-get install git –y

171d185f99b5945cf0457ce1d8c2b0c0.png

出错了:

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

按照提示,加上--fix-missing参数试试:

pi@raspberrypi:~ $ sudo apt-get install git --fix-missing

git安装成功:

e70e8645a9819181fd3a74d96e6affe2.png

再下载ffmpeg源码

eb9274d1108e8d69ac2db0bced893c24.png

再下载:

e18a3f4a2194aab55c5789e88248754f.png

下载多次才成功。

编译安装FFmpeg:

pi@raspberrypi:~ $ cd FFmpeg/

    • 配置编译参数

pi@raspberrypi:~/FFmpeg $ sudo ./configure --arch=armel --target-os=linux --enable-gpl --enable-nonfree

05eb390d9bcae67ac2b9015430a07ea3.png

要很长时间才能看到这个画面,耐心等待哦。

    • 编译

pi@raspberrypi:~/FFmpeg $ make

很长时间,等待……

    • 安装

pi@raspberrypi:~/FFmpeg $ sudo make install

    • 测试

4db827faee636d4edbe56431bc729e25.png
  • 将ffmpeg源码保存到电脑上

这么费劲下载的东西当然要保存好。

    • 压缩打包:

pi@raspberrypi:~ $ tar -zcvf FFmpeg.tar.gz FFmpeg

47e88e1d9b91d32cdc1c82768f976952.png
    • 在PC上安装一个文件传输工具

我用FileZilla,软件 下载地址:https://filezilla-project.org/download.php

1f1442b8e962175a12e4e054820bd2f1.png

下载,安装,运行FileZilla:

592d69f494d749a7dda84bc4c33b0457.png

主机sftp://raspberrypi.local、用户名pi、密码raspberry,端口空着。注意主机前面的sftp://一定要加!

文件传输操作你应该看看就会啦。

5.2 播放不同格式的音频文件

  • 播放所有音频文件

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo sh pifmplay . 91.3

91.3是默认频率,如果有干扰可以换其他频率。

用不同格式的文件播放:

  • 播放指定的音频文件

pi@raspberrypi:~/PiFMPlay-master/pifmplay $ sudo sh pifmplay "Moby - Porcelain(Atlantic Connection Remix).mp3" 96.8

这将用pifm播放音频文件。

  • 从一个管道播放文件

$ cat /path/to/file | sudo pifmplay PIPE

播放本地文件(在这里cat命令只是一个例子)。

$ cat <audio file> | ssh pi@raspberrypi 'cat - | sudo /home/pi/pifmplay/pifmplay PIPE'

在本地电脑上通过ssh播放树莓派上的文件。

  • 播放文件夹

$ sudo sh pifmplay "/path/to/folder" 101.5

  • 暂停/停止播放和跳过歌曲

打开另一个终端。

$ sudo sh pifmplay pause

$ sudo sh pifmplay resume

$ sudo sh pifmplay stop

$ sudo sh pifmplay next

也可以从同一个终端控制pifmplay,在后台运行pifm,在命令尾部加 &

$ sudo sh pifmplay "/path/to/folder" &

pifm更新

检查这里看是否有pifm的更新: [http://icrobotics.co.uk](http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter)

PIFMPLY未来的发展:

  • 重定向所有声音输出到PIFMPLAY(重定向alsa声音输出)
  • Youtube流(可能用[youtube-dl] (http://www.raspberrypi.org/phpBB3/viewtopic.php?p=97710))
  • di.fm/soundcloud/spotify/pandora 流

警告!!!

如果对信号进行滤波和放大,树莓派可以制成一个强大的调频发射机。但是在大多数国家,使用一个没有正规执照的FM发射机是非法的。所以如果你违反了法律并被罚款,那是你自己的错!!但是只要你不给它安装大天线就可以了。

参考文档

  1. 树莓派介绍 https://blog.csdn.net/chentuo2000/article/details/81051241
  2. 电脑连接树莓派3B+
  3. 电脑连接树莓派Zero W
  4. 树莓派的GPIO控制
  5. 树莓派 Zero W+温度传感器DS18B20
  6. 树莓派电台 https://www.cnblogs.com/zygoses2gether/p/4906844.html
树莓派蓝牙温度传感器 - 百度文库​wenku.baidu.com 微信小程序蓝牙温度数据采集 - 百度文库​wenku.baidu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值