这是我一生中最长久的工艺。从构思到最终实现花了12年,因此可以使用!在这段时间里,发生了许多大事:搬迁,出生,死亡,但是这个主意与我有关,无论如何,我都完成了。我想告诉您有关这项技术的发展历程,荆棘,愿望和结果。
理念
我很早就在这个项目中看到了基于路由器的Wi-Fi无线电的想法。如果有的话-这是2009年。这是一个基于路由器的广播,Linux和mpd守护程序。那对我来说这些并不是完全清楚的术语,但是我真的很想拥有这样的收音机。我提出了这个想法。另外,任何灯技术都给我很大的启发:放大灯,指示灯(我的头像上有6E1P),CRT屏幕。而且,VFD显示器(VFD-真空荧光显示器或俄语的真空发光指示器(VLI)或阴极发光指示器(CLI))也非常令人愉悦,
因此,我决定使用现金显示器,后来我什至不知道它叫什么买方展示。
就是这样的想法:买主的显示器,一些单板计算机或路由器,Linux + mpd,真空荧光指示器以及某种用于此类物品的控件。与启发我的项目相似。
我知道我对这项技术很晚,因为Wi-Fi无线电有很多不同的选择。但是,即使在今天,它仍然与其他概念在概念上有所不同,我认为阅读有关创建这种设备的信息将很有趣。而且,我这样做是为了灵魂,而不是为了出售。
基本概念与设计
在那几年(大约2010年),这台收音机还有另一个项目目标。在那些年里,我一直在学习塞尔维亚语,我想拥有一个简单的设备,通过“翻转开关”可以接收塞尔维亚的广播电台。电话,计算机不是选择,因为它们本身极大地分散了我的注意力:打开电话时,您会忘记自己在做什么。其次,我真的希望铁片尽可能地与普通的收音机相似,甚至老年人也可以使用。最后,我希望控件是简约的:一个按钮。
20世纪30到40年代在建筑,室内设计,尤其是在无线电接收器的设计解决方案中,我深受启发。这种风格称为装饰艺术。在我们国家,列宁图书馆,机场地铁站,Mayakovskaya,Krasnoselskaya的建筑就是这种风格的鲜明代表(更确切地说,它具有这种风格的影响)。如果我们谈论接收器(它们已经从体系结构中接收到的设计),那么最有趣的选择是那些规模最大的接收器。
强烈激发灵感的设计决策
当然,最初,该收音机的主体计划用贵重木材制成,就像顶部的接收器一样。甚至一次在哈布雷(Habré)上,我遇到了一位正在从事类似项目的设计师(对不起,我不记得哪个人);甚至我们为该项目设计了一些草图,但那时我还是不敢走这么认真的路,但徒劳无功...总的来说,有各种各样奇怪的梦想和愿望。但这一切都归结为残酷的现实。
实施的第一步
所有Wi-Fi无线电的基础都是买方的显示器。我选择了很长时间的显示器,愚蠢地逛了逛,看了我最喜欢的东西。我最喜欢Posiflex PD-2700显示器。我停了下来。
第一次打开,并在屏幕上显示图像,
我另外写了一篇关于如何使用这些显示器的文章。您可以在这里阅读。因此,我不会详细讨论他们的工作原理。
TP-Link 3020路由器,诺基亚N800(是的,不要惊讶,N800),各种笔记本电脑,各种条纹的工业计算机,收银机,各代的Raspberry Pi,单板设备等等,都被作为该收音机的“大脑”进行了尝试。一切都谈到决策的普遍性。展望未来,一些决定是为了便于携带,而不是为了减少建造成本。
但是总的来说,我不喜欢所有这些解决方案,或者它们在执行此任务的能力方面过高,或者相反,它们的性能太低并且在声音再现方面存在问题(例如路由器)。接下来,我将告诉您在项目实施中遵循的主要路径。没有像诺基亚N800这样的死胡同的分支机构(对于这种方法的所有浪漫之处)。
工作原型
我的第一个工作原型是自主的,甚至可以播放广播并站在厨房里,我是在TP-Link 3020路由器和100卢布的中文USB声卡的基础上实现的。该路由器对于这类手工艺品来说是一件了不起的事情,它的主要优点是您可以在最近的计算机商店购买,这与其他任何单板都不一样。主要的操作系统是OpenWRT,声音是通过大多数deshman扬声器播放的,为500卢布,由USB驱动。通常,一切都在最底层。而且它甚至有效!简而言之,看一次比阅读一千次更好。
之后,很明显,如何控制平板电脑上的视频不再是一种选择。当您可以使用同一台平板电脑时,无线电的含义就会消失。因此,我决定使用编码器添加控制。最初,编码器连接到该路由器的GPIO(是的,板上有一个GPIO),但是我真的不喜欢它的工作,并且这样的解决方案不是可移植的,所以将来我制作了一个基于arduino的单独的编码器控制器,该控制器通过UART连接。
编码器已连接到GPIO TP-Link3020。
此后,有必要“配置”广播电台,并且当您旋转旋钮并且滑块在屏幕上移动时,我想使其看起来像旧的广播电台。为此,实现了垂直字体,共五种。而且我每次都超载它,在我的文章中了解如何下载字体。结果就是这样的解决方案。
好吧,通过这些实验仍然需要穿越无线电本身,因此我们可以方便地进行控制。他简而言之,但实际上已经过去了几个月,但结果对我来说很重要。
似乎一切都很好,但是像往常一样,我和所有业余无线电爱好者一样-该设备没有保护套,并开始考虑该怎么做。30年代开放的老式接收器给我很大的启发,那里只有一个带有防护罩和把手的角落,所有内脏都是免费的。
我决定重做原型的一个变体。为此,他撕开了色谱柱,除去了色谱柱的尺寸,然后用纸板制成了原型。
我拿下扬声器,取出放大器并进行尺寸测量。
拆下色谱柱后,从那儿取出放大器,然后取下外壳的所有尺寸,放大器和编码器旋钮,并在纸板上按外观标记所有内容。
我
以为大小标记是在开玩笑,让我看看它在硬纸板(硬纸板原型)中的外观。
纸板收音机
甚至可以使用!
然后,他复制了所有尺寸,绘制并送去进行激光切割。
尺寸
切割后的丙烯酸材料是紧随其后的,这就是组装后的样子。
前面板上有电源按钮,编码器和音量旋钮。在内部,您可以看到有一个独立的电源,一堆集线器,嗯,说实话,它看起来不是很好。
许多人可能会注意到,丙烯酸是透明的。最初,我想将显示器放置在其后方,以使其通过它发光(显示器已经是白色,它通过绿色滤镜发光)。但是我不喜欢颜色和对比度。
在照片中,有橙色的丙烯酸光,诚实的显示屏颜色(在生活中为白色)和其中一个显示屏的蓝色滤镜(我的收音机中现在有绿色)。
最终的设计当然很酷,但是我不会对自己撒谎,不实用。当然,它起作用了,我什至听了一段时间,但是发现了许多问题。首先,以这种形式使用它是完全不可能的:它会集尘,您不能在上面放任何东西,它会占用大量空间。其次,TP-Link 3020的无线电功能相当薄弱,许多人都面临着在其上实现的问题。OpenWRT不支持浮点的硬件,因此mpd会将处理器加载100%,您可以在声音中听到它(有令人不快的数字点击)。通常,这将结束这种实现。另外,我一生中的许多情况都使我无法参与这个项目,并且收音机被拆解并直接装在盒子里。
最终决定
但是不要以为我只是放弃了。不,这个想法继续存在。现在,过了一会儿,我决定结束这台收音机。结果如此之好,以至于我有一个在中国买的箱子。作为大脑,我选择了beaglebone black,并在一个项目中使用它,我知道它的优缺点。这条围巾当然很旧,但是很适合完成这项任务。最初,我想将OpenWRT用作主要操作系统,但是那里的Wi-Fi驱动程序存在很多问题。我把声卡放在流行的PCM2704 DAC上。很容易在受欢迎的拍卖会上搜索到她的要求,例如一条白围巾。我对声卡感到非常满意,但是总的来说,可以放任何一个,甚至SoundBlaster。
进行原型设计阶段,尝试使用不同的声卡,单板设备,Linux映像,Wi-Fi适配器并选择最佳解决方案
在上一篇文章中,我谈到了花时间选择组件,否则会令人头疼。发生的方式相同,我想要一个支持Linux的USB Wi-Fi卡。他毫不犹豫地自己带了TP-Link N150。简而言之,不要这样做。她喝了我大量的血液,花了一周的时间。我没有设法在OpenWRT下获得它,在Ubuntu上,我用铃鼓进行了激烈的舞蹈。简而言之,我根据本手册进行了安装(中间有一条说明)。对我来说,启动脚本(/etc/rc.local)看起来像这样(经过一堆实验)。
#!/bin/sh
PATH="/sbin:/bin:/usr/bin"
ps -ef|grep wpa|awk '{print $2}' |xargs -i kill {}
#in case you want to test the script
ifdown wlan0
sleep 0.1
ifup wlan0
sleep 0.1
ifup wlan0
sleep 0.1
ifup wlan0
sleep 0.1
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
#END
sleep 30
#
总的来说,在经历了所有的磨难之后,所有这些都开始了,所有这些都被组装并放入了建筑物。我不会描述所有的细节,因为每个人都有自己的。但是我为腿部制作了新的衬套,底部是从下面用胶合板制成的,我把所有东西都固定了下来。显示器安装在木制框架上。
前面板
一切均由编码器控制。左右-电台选择,按下编码器按钮-暂停;短按两次按钮-显示时间和日期(工作原理类似于时钟)。
后面板
尽管实际上这只是一个Wi-Fi无线电,但它仍保留了通过以太网进行诊断和调试的可能性。就像您看到的那样,现在没有放大器了。我认为只有一次排队比较方便。让我们看看里面。
在左边的内部,我们看到电源,下面的表面是木制框架中的显示器,右边的表面上有一个编码器。在USB集线器的顶部(已插入电源),显示器也由其供电,音箱也插入了集线器。单板本身站在机架的铝角上,用螺钉固定在胶合板上。编码器控制器隐藏在右侧,看起来像这样。
编码器控制器
这是一个常见的arduinka,通过UART连接到Beaglebone。
关于源代码和设置的几句话
我注意到,如果将代码描述添加到文章中,那么其可读性将立即降低一半。因此,尽管只有两篇文章专门讨论代码,但本文中的代码很少。我不会描述mpd守护程序的设置,有成千上万的文章,包括有关Habré的文章,并且手册本身通常也很详尽。我将省略Beaglebone上的Linux安装程序。除非我必须打开UART以连接Arduino。但这也很容易被谷歌搜索。整个项目的源代码都保存在github上,并且每个人都可以使用。
我不会分析代码的所有要点。先前已在文章中介绍了使用显示器的工作。我将检查文件。
arduino_encoder文件夹包含arduino编码器项目。那里的一切都直观清晰,我认为没有理由以某种方式对其进行整理。在Linux文件夹中,是无线电本身的源代码,正是该代码在项目之间徘徊。
- 生成文件
这是项目本身的集合,这里没有新内容。
- 控制
这是所有魔术都发生的主程序。
- uart.c
- uart.h
这是现成的UART初始化代码。对于在Linux中使用UART使用C的每个人,我建议研究以下两个文件。嗯,我还建议大家谁看了Linux下使用UART工作我的网络研讨会一次或两次,也考虑他们。
- display.c
- display.h
- 输出.h
您可能会猜到,这是用于显示器的代码。另外,我不得不将字符转换代码固定在上面。
- charset_coverter.c
- charset_coverter.h
该显示采用CP866编码。甚至为了从控制台以俄语显示消息,您也必须使用以下技巧:
echo -en " \n dlinyj" | iconv -f UTF-8 -t CP866 > /dev/ttyACM0
但是,有一个细微差别:没有字母“ e”,硬符号“”和软符号“ b”相反。因此,解码后,您需要解码。
- 电脑
- 播放器
使用mpd守护程序。通常,有使用它的库,但是由于我不需要大量的函数,因此我决定从头开始在套接字上编写所有内容。也许对某人有用。
- term.c
- term.h
哦,那是最重要的部分。由于有时必须在没有显示器的情况下调试代码,因此我将自己变成了显示器的“模拟器”,使用键盘控制而不是编码器。看起来像这样:第一张图片上有日期和时钟,第二张图片上有旋律和电台。
有关如何编写此代码的更多详细信息,请参见文章“端子图”。
为我添加广播电台是以下脚本。
#! /bin/sh -
# Some configuration settings
VOLUME=60
#mpc volume $VOLUME # adjust this to suit your speakers/amplifier
mpc clear # clear current playlist
mpc add http://relay3.slayradio.org:8000/ #*Slay Radio
mpc add http://fr1.streamhosting.ch:8080 #*lounge-radio.com
mpc add http://us-tx1.streams.bassdrive.com:9000/ #*DnBHeaven.com
mpc add http://uk2.internet-radio.com:31491 #*AmbientRadio.org
mpc add http://www.partyvibe.com:8010/ #*PARTY VIBE RADIO
mpc add http://streamer.psyradio.org:8120 #*psyradio chillout
mpc add http://live.coolradio.rs/cool128
mpc add http://big2.bigportal.ba:8100/big2
如果您有任何
值得推荐的流媒体广播电台,特别是对于电子音乐,请在评论中写下:)为了便于管理和配置,我从ympd项目中添加了一个Web界面。看起来像这样。
结果,最后的/etc/rc.local文件如下所示:
sleep 30
/home/ubuntu/addradio.sh > /dev/null 2>&1 &
/home/ubuntu/wifi-radio/Linux/control > /dev/null 2>&1 &
/home/ubuntu/ympd --webport 80 > /dev/null 2>&1 &
是的,是的,我知道在Ubuntu上systemd和rc.local不好用,其他等等,等等,等等。但是我使用它是因为我想并且可以。
结果
当然,收音机看上去并不像原来打算的那样漂亮,自命不凡,但我认为手里的鸟比天空中的馅饼要好。这样做比将娱乐时间延长几年而导致结果不清楚还更好。尽管如此,尽管没什么用意,但这让我感到非常高兴。好了,阅读一堆文本需要什么,现在是时候观看视频了,它的外观和功能如何。
该视频有些陈旧,现在天线和以太网已连接,甚至可以正常工作。
在哪里生长?
而且还有成长的空间。我长期利用的这个项目的分支之一是Volumio项目。这是一个令人愉悦的播放器聚合器,可让您收听来自世界各地的广播电台,流媒体以及更多内容。每个人都很好,与我的项目完美对接,并在屏幕上显示了所有电台。除非控件完全没有用。您还可以添加语音控制,这是一个很棒的Rhasspy项目,关于该项目甚至在Habré上有一篇文章。它使您无需连接外部服务器即可进行语音控制!
唯一值得放弃mpd的是瓶颈。如果没有车站,他挂断电话等待。没有其他站的预缓冲等。也就是说,这里有成长的土壤。这个话题非常有趣,有很多想法。谢谢阅读!