暖管网络收音机



这是我一生中最长久的工艺。从构思到最终实现花了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的是瓶颈。如果没有车站,他挂断电话等待。没有其他站的预缓冲等。也就是说,这里有成长的土壤。这个话题非常有趣,有很多想法。谢谢阅读!






All Articles