热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

陈拓chentuoms.xab.ac.cn2018.06.022018.06.21概述使用树莓派可以自己制作一个无线电台,可以从1MHz到250MHz之间频段发送16

陈拓 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

在本地电脑上通过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


推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
author-avatar
李浩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有