切歌请按3或4!我把树莓派装进了旋转电话里,现在它成了一部MP3

简介: 切歌请按3或4!我把树莓派装进了旋转电话里,现在它成了一部MP3

旋转电话这个东西,相信大家看好莱坞老片的时候经常能看到。

文摘菌小时候觉得旋转电话比现在的普通电话酷多了,要是自己能有一个就好了。

无奖竞猜:这是哪部电影?

这样的幸运降临在了一个名叫gardines的博主身上。

一次偶然间打扫阁楼的机会,他就发现了这么一个老式旋转电话,而且似乎功能尚好。

考虑到家里并不怎么缺一个电话,于是他突发奇想,决定在里面放一个树莓派,把这个电话改装成一个MP3播放器。

他的目标是尽可能保留电话的原貌,所以可以看到,外观上的主要变化在背面的端口,从模块化的电话插孔改装成了现在的微型USB。

同时,他还在手柄上加了一个开关,主要控制树莓派的电源。不过从最终结果上来说,这个开关反而在使用舒适度上成了减分项。

秉承着尽可能保留外观的想法,MP3的扬声器也被安装在了耳机里。

成品如下图所示:

是不是有亿点心动?

接下来,就和文摘菌一起来看看,这个过程到底是怎么完成的吧~

必要的准备工作

整个项目需要用到的配件如下图所示:

然后就,话不多说直接上!

首先,清空电话内部的所有部件,然后切一块聚碳酸酯板,将树莓派安装在远离金属底座的地方。博主用了裁纸刀进行切割,并在一半的地方打上刻痕,在切口处切开。切割模板如下图所示:

下图是实际使用的板材。可以看到,还是有一些失误的,比如右上角的标签被弄坏了,除此之外,打孔的位置也存在一些误差。

然后用螺丝把树莓派固定在板材上,将其安装在电话底座上:

基本上,挂钩、旋转和拨号可以视为独立的开关。当接收器在挂钩上时,挂钩开关是打开的,当接收器被提起时,挂钩开关关闭。当转盘处于默认位置时,转盘开关是打开的,当转盘从默认位置移开时关闭。旋转开关停在关闭位置,然后打开和关闭的次数与所拨的号码一样多。

于是,用跳线将每个开关都连接到一个GPIO引脚上。每个开关都包括一个10k欧姆的电阻。

同时,为了便于连接和断开线路,要用胶水把跳线终端粘在一起,于是做出了一条“彩虹线(rainbow cable)”。

在这里选择一排GPIO引脚,它们都在一条线上。具体来说,连接到了引脚9、11、13、15和17,其中包括一个接地(引脚9)和一个3.3V(引脚17),以及它们之间的三个GPIO引脚。

于是就有了连线旋转引脚11,拨号引脚13和挂钩引脚15,如图所示:

接收器和电源

接下来,从接收器上拆下扬声器和麦克风,换上新的扬声器,用捻线把它们系在立体声音响上。

不过,事后看来,保留麦克风,只用单声道音频可能会更有趣。

在装上新扬声器后,接收器质量减小,不能把挂钩固定在支架上了,因为弹簧会把它推回去。于是在这里还需要给接收器加上一些镇流器。

而整个项目中最难搞的,就是焊接电源线了。

需要有两个插座携带电力,于是将其装在整个装置后面。插头相较而言更小但总算是能用的。

将Arch装在SD卡中

然后,从archlinuxarm.org下载可用于树莓派的Arch OS。

然后,在linux机上执行所有后续步骤。

下面是linux上的命令:

wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.zip
wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.zip.md5
cat ArchLinuxARM-rpi-latest.zip.md5md5sum ArchLinuxARM-rpi-latest.zip
md5sum ArchLinuxARM-rpi-latest.zip

最后两个命令输出的32个字符应该匹配,否则可能会发生一些奇怪的事情。

将图像写入SD卡,使用的是:

unzip ArchLinuxARM-rpi-latest.zip
dd bs=1M if=./ArchLinuxARM*.img of=/dev/sdX # replace X with location of SD card

这需要等一小段时间。

由于写入SD卡的图像只有2G,为了利用额外空间,还可以调整一下分区大小。

软件的启动和安装

到这一步的时候,把SD卡放在树莓派上,连接网线,启动。

应该就能看到树莓派上的一些灯在闪烁。

不过,由于树莓派上没有连接显示器/键盘,需要通过ssh进行远程连接:

ssh root@alarmpi.local

更新操作系统软件并安装所需软件:

pacman -Syu nodejs rsync parallel mpc mpd espeak alsa-utils git

系统会提示按“Y”或回车继续,然后会下载并安装几个软件包。

当该命令完成时,配置现在可以使用的软件:

bash /usr/lib/node_modules/piphone/config_mpd.sh
bash /usr/lib/node_modules/piphone/install_crontab.sh

然后重新启动,但是不要关闭ssh会话。

只要你的linux机上有MP3文件,你可以用以下命令把它们放到树莓派上:

在Pi上:
mkdir -p /var/lib/mpd/music
在linux机上:
rsync -av /path/to/music/* root@alarmpi.local:/var/lib/mpd/music/

当这个命令完成后,运行以下命令:

refresh_mpd

当命令完成后,就可以关闭树莓派了:

halt

这个时候,如果你看到闪烁的灯逐渐减少,最终只剩下一个灯,这表明电源已经连接。

然后,断开电源和网线的连接。连接GPIO引脚,把耳机插入音频插孔,把电源线从机箱接到树莓派上。

然后关上机箱,这时你应该能够将微型USB线插入手机背面,片刻之后,就一切准备就绪了。

在默认设置中,关机可以拨打“1178”,不过由于软件中的一些错误,可能需要多拨几次。

其他的命令如下:

1:轻声播放当前歌曲
2:大声播放当前歌曲
3: 轻声播放下一首歌曲
4: 大声播放下一首歌曲
5: 轻声播放前一首歌曲
6: 大声播放前一首歌曲
7,8,9,0:按标题搜索歌曲并播放。

播放完一首歌曲后,手机将停止并等待进一步的指令。

怎么样,本来就炫酷的旋转电话现在变得更酷了,你有什么类似的经验吗,欢迎来评论区和文摘菌分享~

相关报道:
https://www.instructables.com/Raspberry-Pi-in-Rotary-Phone/

相关文章
|
2月前
|
Ubuntu Linux 数据安全/隐私保护
Ubuntu系统安装详细教程
确认您的选择无误后,安装程序将正式启动。请耐心等待,直至程序运行完毕并提示您重启。随后,您可以安全地移除安装盘,并重启计算机。至此,系统安装已全部完成!
|
5月前
|
传感器 存储 iOS开发
【HarmonyOS NEXT调试全攻略】设备连接+运行环境一站式指南
本文提供HarmonyOS调试全面指南,涵盖设备连接与运行环境配置。包括模拟器操作、真机调试方法,及环境配置、功能模拟、故障排除等内容。核心覆盖Win/Mac双平台配置、真机级功能模拟、50+故障解决技巧等,助开发者高效调试。适合教育科普学习,错误之处欢迎指出。
267 0
|
12月前
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
306 3
|
7月前
|
机器学习/深度学习 人工智能
DeepMind用语言游戏让大模型学AlphaGo自我博弈,数据限制不存在了
DeepMind提出“Socratic Learning”新范式,基于语言游戏实现大模型自我博弈学习,突破传统数据限制。该方法通过智能体与自身对话和辩论改进知识技能,具有高数据效率、强可扩展性和良好对齐性等优势,但也面临时间成本、对齐风险及领域限制等挑战。论文链接:https://arxiv.org/abs/2411.16905
160 2
|
移动开发 JSON 前端开发
|
存储 安全 Java
Java线程池ThreadPoolExcutor源码解读详解08-阻塞队列之LinkedBlockingDeque
**摘要:** 本文分析了Java中的LinkedBlockingDeque,它是一个基于链表实现的双端阻塞队列,具有并发安全性。LinkedBlockingDeque可以作为有界队列使用,容量由构造函数指定,默认为Integer.MAX_VALUE。队列操作包括在头部和尾部的插入与删除,这些操作由锁和Condition来保证线程安全。例如,`linkFirst()`和`linkLast()`用于在队首和队尾插入元素,而`unlinkFirst()`和`unlinkLast()`则用于删除首尾元素。队列的插入和删除方法根据队列是否满或空,可能会阻塞或唤醒等待的线程,这些操作通过`notFul
395 5
|
并行计算 C++ Windows
windows10下visual studio 2019安装以及cuda11配置
windows10下visual studio 2019安装以及cuda11配置
1775 0
|
存储 C++ 索引
C++ 序列容器Vector各种方法实现原理(带你从本质理解Vector容器)(上)
C++ 序列容器Vector各种方法实现原理(带你从本质理解Vector容器)
|
域名解析 网络协议
|
数据安全/隐私保护 C++
c++面向对象程序设计——基类和派生类(一)
c++面向对象程序设计——基类和派生类(一)
663 0