步骤1:获得您想要实现的概述
在我们的案例中,我们决定购买此收音机,因此我们只需要专注于内部-
由于我们将无线电功能与推子和扬声器保持在一起,因此它们是引起困惑的关键。
但是我们将无线电中的按钮功能更改为输入键。为谜语。因为我们认为两个按钮以前的背景灯很无聊,所以我们将它们更改为RGB,从而为谜语提供了额外的支持。
作为收音机的核心,我们选择了由ATMega328支持的Raspberry Pi B +,它应该负责按钮,LED,伺服(用于密码箱)和谜语的一些关键功能。
Raspberry具有强大的处理能力,但体积很小,无法在表壳中占据一席之地。
基于这些输入和输出的可能性,我们创建了一些谜语,每个谜语都有其独特之处解决方法。这些可以在其他PDF“谜语”中找到。
步骤2:打开无线电并删除不必要的部分
我们已经知道哪些部分是必需的,让我们摆脱那些不再有用的部分。
其中很多。实际上,除了扬声器,显示屏,按钮(实际上是您所看到的),电位器以及螺丝以外的所有东西。而且由于我们需要的电流比变压器提供的电流还要多,因此我们也可以卸下0.6 A的小型变压器。
无线电现在将非常空,这将导致下一部分:
第3步:获取新零件
如前所述,我们得到了:
-Raspberry Pi B +
-ATMega328 (有时称为AVR)
-RGB LEDs
-TDA2005作为放大器
另外:
以下是我们决定使用每个组件的原因:
步骤4:第一个(较小的)电路板
旧的电路板无法用于进一步的工作,我们必须设计自己的电路板以满足我们的要求。您应注意螺钉和LED的斑点,因为它们应与旧零件和外壳兼容。我们需要在按钮上钻一些孔,因为RGB LED比以前的LED稍大。由于按钮的三个RGB LED以及另外一个作为显示屏背光的第四个LED,应该能够以所有可能的组合和颜色发光,因此我们决定使用微控制器来获取有关按钮的所有信息以及一些按键功能谜语之谜,控制所有LED并控制伺服机构的位置,伺服机构负责密码箱的关闭机构。由于伺服只能由PWM控制,而Raspberrys的PWM功能已经用于内置声音,因此这是微控制器的另一个动机。所有这些组件都可以通过“串行外设接口”(SPI)进行访问,其中AVR处于从模式,而Raspberry处于主模式,方法是同时向AVR发送两个字节,同时向Raspberry交换一个字节。由于有多个端口,中断以及PWM和SPI接口,因此ATMega328可以正常工作。您可能会随意使用自己的代码,但是我们决定使用两个字节的第一个半字节(四位)指定不同的功能,并使用其他三个半字节作为参数:
⦁0x0:保持当前状态进程,将忽略参数,仅用于更新按钮和标志
⦁0x1:静态LED灯,每三位控制一个LED(RGB),从LSB开始
⦁0x2:前行灯,参数控制起始位置
⦁0x3:后行灯,参数控制起始位置
⦁0x4:旋转灯,参数控制起始位置,但更改仅在相同的LED上发生(三步后重复)
⦁0x5:向后旋转光
⦁0x6:自动:参数是所有LED的遮罩,按下负责按钮时亮起
⦁0x7-0xE:反应测试:参数将被忽略;可能会分为不同但尚未实现的功能
⦁0xF:通过参数
设置伺服位置
您将收到的字节的结构如下:
第一个半字节(从MSB开始的前四个字节)用于反应测试的以下标志(在Raspberry上的软件中尚未完全实现):
⦁位7:1,如果所有LED均为相同颜色,则为0否则
⦁位6:1,如果按任意键直到所有LED均以相同颜色点亮,否则为0
⦁位5:1,如果在所有LED均以相同颜色点亮时按下任何键,则为0,否则
⦁位4:1(如果已启动并正在运行反应测试,否则为0)
进一步的半字节给出有关所按下按钮状态的信息:
⦁位3:如果按下了按钮4(为Internet广播功能的开关预定义,尚未实现),则为1,否则为0/p》
⦁位2:如果按下了按钮3(最右边的那个),则为1,否则为0
⦁位1:如果按下了按钮2,则1:1(mi ddle 1),否则0
0位0:如果按下了按钮1(最左边的那个),则0:否则0
我们用pcb-mill制作了电路板。我们使用的文件也已上传。为了更轻松地更新微控制器的软件,我们在电路板上的“系统内编程器”(ISP)接口中内置了该控制器。像所有按钮的下拉电阻和LED的串联电阻一样,将伺服器,第四按钮和第四LED的针头放置在其上。
步骤5:第二(主)电路板
第二个电路板采用了旧主板的功能,其中包括一个放大器。覆盆子的声音输出,可通过具有打开/关闭功能的对数电位器(之前也用于音量控制)进行控制。我们决定只为放大器使用此开关功能,以避免树莓的长启动延迟,但在关闭时使无线电无噪声。
次级电位器负责设置频率。由于Raspberry没有内置的模数转换器(ADC),我们使用了MCP3002,这是一个10位分辨率的两通道ADC,也可以通过SPI访问。因为我们只需要一个通道,所以我们实现了它来兼顾两个通道的差异,但是可以将第二个通道用于带有针头和跳线的将来用途,该跳线将第二个通道接地。
请注意电位计的位置!我们决定重用旧的,并测量它们的旧位置和螺钉的位置。
由于旧的0.6 A电源不足以为所有设备供电,因此我们决定使用2 A电源。但是在为这些电源准备了一些草案之后,我们决定使用旧的2A开关电源,该电源可提供1A的5V电源(用于为Raspberry,ADC,AVR和LED供电)和1A的12V电源(用于放大器)。 )。测量所有零件并将它们绘制到PCB软件中需要花费大量时间。但是,如果您绘制了组件和电路,则电路板的布线非常快!
由于我们的放大器提供的功率远远超过内置扬声器所能提供的功率,因此我们决定使用微调,以限制输出,以免损坏扬声器。研磨电路板后,您必须将零件焊接到电路板上,这需要一段时间。一旦一切准备就绪,您可以将其放回盒中,连接由插头连接准备的所有连接。
步骤6:构建秘密箱
密码箱位于收音机的背面。因为盒子应该自己打开,所以我们在其中放置了一个带有伺服电机的接头。我们用3毫米厚的MDF板对盒子以及接头进行了激光切割。将盒子粘上,然后拧紧伺服电机和关节。盒子和关节的矢量图形已粘贴,因此您可以自己进行激光切割。
盒子的侧面(从外面可以看到)是剪掉收音机的前面板,所以它隐藏的时间更长。
步骤7:软件
AVR用C编程,并用编程器闪烁。请注意对负责的拒绝位进行编程,以避免微控制器的预分频器将8 MHz预先缩放为1 MHz,因为这会使Raspberry与AVR通信时出现问题。不幸的是,这不是通过代码行而是通过IDE的接口(在我们的例子中是AtmelStudio)来完成。我们建议您阅读二手微处理器的数据表中的负责部分!
由于我们用Java编写了谜语代码,因此最困难的部分是开发用于在Raspberry之间进行通信的软件/驱动程序。 Pi和ATMega可以获取按钮和电位计的信息以及点亮LED。
使用库connectionpi用C语言编写驱动程序非常容易。这就是为什么我们首先在C中构建用于测试的工具的原因。我们上载了软件,因此您将了解如何自己完成操作或仅获取文件。使用Java,即使Java与平台无关,也可以通过Java访问驱动程序。围绕它构造一个面向对象的接口,我们可以同时实现所有功能。
尽管如此,我们还是实现了这些东西:
-首先有噪音,就像在真实的收音机中一样
-如果玩家在六个频率中的一个附近移动,他将首先听到背景噪音,然后变成声音,问他一个谜或只是给他提示
-如果当前频率有问题,则玩家可以使用前面的按钮来回答。
-当所有不同频率的问题都得到回答时正确地打开背面的盒子,玩家将获得钥匙或饼干之类的奖励。如您所愿。
软件完成后,将其放在Raspberry Pi和微控制器上,关闭收音机,然后开始困惑!
步骤8:记录音频文件。..
为使我们的代码简单,我们使用Java的标准库来处理音频输入文件。这就是为什么我们以音频/波形格式记录谜语的原因。由于原始谜语仅以德语录制,因此我们只能提供所附的德语示例。另外,我们使用了一些背景。我们添加了电子管放大器的声音效果,以使其听起来更真实,但是Raspberry内置的“声卡”的不良音质已经为我们的复古收音机带来了良好的噪音。随意使用自己的背景声音。也许一些老式音乐也可以做到!或录音机/录音带的声音。为了在没有任何输入的情况下以某种频率聆听谜语之后渡过漫长的桥梁,我们录制了一些随机注释(ZIP中的r1.wav-r10.wav),如果匹配,则可以针对每个频率播放。
责任编辑:wv
-
收音机
+关注
关注
58文章
592浏览量
75906
发布评论请先 登录
相关推荐
评论