资料介绍
描述
动机
我一直很喜欢玩八音盒,实际上在家里也有收藏。能够按下一个按钮,或者转动几圈曲柄,然后突然在你的手中播放音乐,这真是太新奇了!这个可编程音乐盒是仿照一个更“传统”的音乐盒(以这个为例)。当您购买传统的可编程音乐盒时,您会得到一个基于曲柄的音乐盒、特殊纸张和用于在该纸张上打孔的特殊打孔器。你在纸上打孔的地方“抓住”每根弦,因为它穿过音乐盒,这就是你发出声音的方式。
但是,问题在于这些可能有点贵。而且,除此之外,你还需要特殊的纸,一旦你用完了那张纸,你就得买更多。我想做一些你可以在家里用便宜的零件建造的东西,而且你不需要特殊的纸!
概述
如上所述,这个音乐盒的运作机制与上面的音乐盒类似;您可以通过在纸上打孔然后将其送入盒子来选择播放的音符。但是,有几个主要区别:
1.这里不是使用手动曲柄送纸,而是通过连续旋转伺服来完成,可以通过按下按钮来打开和关闭!这种变化主要是因为我真的想在这个项目中使用伺服。
2.每个孔的检测方式如下。首先,将 2 根电线焊接到铜板的每一端,以便将其接地。然后,将7根线放在铜板的顶部;这些线连接到 PocketBeagle 上它们自己的模拟输入引脚(每个音符一个:A、B、C、D、E、F、G)。打孔纸穿过铜板的顶部,以及这些电线的下方;当铜板和这些导线之间有纸时,模拟输入引脚读取的值会随机上下浮动。当有孔时,电线将暂时与接地铜板接触,因此模拟输入引脚将读取 0(或接近该值的某个位置)。
因此,您所要做的就是将纸放在铜板上,按下按钮开始,然后观看音乐开始播放!
初步图表和规划
在开始把这个项目放在一起之前,我首先列出了我希望音乐盒具有哪些功能:
1.多个扬声器一次播放多个声音
2.一个开/关按钮
3.伺服驱动纸张
4. LCD 显示八音盒状态
这些都在下面的框图中进行了可视化:
请注意,只有 6 根线连接到模拟输入引脚,而之前提到了 7 个引脚(AG 之间的每个音符一个)。不幸的是,由于 PocketBeagle 只有 6 个 AIN 1.8V 引脚,因此必须省略其中一个注释。
所有这些组件的实际接线可以在下面的 Fritzing 示意图中看到:
构建说明:硬件组件
扬声器
音乐盒包括 3 个扬声器,这意味着音乐盒最多可以同时播放 3 个音符。如下图所示:
每个扬声器的一端接地,而另一端连接到 PWM 输出。特别是,我使用了 PocketBeagle 上的 PWM0-A、PWM1-A 和 PWM2-B 引脚。这很好,除了一个小问题:由于某种原因,我的 PocketBeagle 上的 PWM0-A 引脚无法以 400 Hz 以外的频率输出信号。上网查了一下,这似乎是一个非常罕见的问题,没有明确的解决方案。鉴于此,我决定离开第三位演讲者,希望尝试这个项目的任何其他人都不太可能遇到同样的问题。
另请注意,我们只有 3 个扬声器,这意味着一次只能播放 3 个音符。如果八音盒读取的音符超过 3 个(即连续打孔过多),代码设置为随机选择 3。
4位7段显示器
4 位 7 段显示器的目的是让用户可以知道设备是打开还是关闭。音乐盒关闭时显示屏将显示“off”,如果音乐盒打开则显示“go”(选择“go”而不是“on”,因为 7 段显示屏无法显示“n”)。在我的设置中,该显示器连接到 PocketBeagle 上的 I2C1 引脚,并为 SDA 和 SCL 线路配备了适当的上拉电阻,并根据需要连接了电源和接地:
按钮
如上所述,使用了一个按钮来允许用户打开和关闭音乐盒:
按钮的一个端子连接到上拉电阻以及 PocketBeagle 上的 GPIO 59,在下面的代码中已将其配置为 GPIO_IN 引脚。另一端接地。因此,未按下按钮时,GPIO 引脚将读取“1”,按下按钮时将读取“0”。因此,代码可以简单地检测“0”以查看按钮是否被按下。
连续旋转伺服
如上所述,连续旋转伺服用作移动纸张通过页面的“曲柄”。这是典型的接线方式,伺服系统的“信号”引脚连接到 PocketBeagle 上的 PWM0-B 引脚。旋转速率固定为 400Hz,占空比为 25。
除了硬件组件之外,伺服系统还用橡皮筋包裹着,以确保它可以在旋转时真正“抓住”并移动纸张。这显示在下面:
标头引脚
整个设置中最重要的部分是检测音符的实际电线!这些线中的每一条都连接到不同的模拟输入引脚;特别是,使用的引脚为 P1_19、P1_21、P1_23、P1_25、P1_27、P2_36。这些电线连接到插头引脚,以便它们可以轻松固定到位。如下图所示:
(请注意,图片中有 7 根电线,而实际上只有 6 根连接到 PocketBeagle —— 第 7 根额外的电线主要是为了保持间距而留下的)。
如前所述,由于这些电线大部分时间都没有连接到任何东西,所以只是浮动。但是,当它们与接地铜板接触时,它们所连接的 Analog-in 将显示为 0!
铜版
最后的组件只是一个接地的铜板。使用的铜板与您可能会发现用于 PCB 轧机的铜板相同。我将一根电线焊接到铜板的每一侧,然后将每根电线插入 PocketBeagle 上的接地:
八音盒的物理组装
连接所有电气元件后,就可以将所有东西组装到实际的音乐盒中了!
首先,取铜板,用强力胶粘两块硬纸板,形成音乐盒的侧面,足够近,以便插头销可以牢固地楔入:
然后,将连续旋转伺服系统强力胶粘到音乐盒的一侧,高度准确,使伺服“臂”几乎不接触铜板:
就是这样,我们完成了!
代码设置
1. 使用来自 BeagleBoard.org 的最新 PocketBeagle 映像
2. 从这个 repo下载这个 project_01 文件夹,解压,然后移动到你自己的 PocketBeagle 上的 Cloud9 IDE
3. 确保您在本地安装了 Python 以及 Python AdaFruit_BBIO 包。如果没有,执行的步骤是:
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus-y
sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo pip install Adafruit_BBIO
4.导航到project_01文件夹,并更改运行脚本的权限
chmod 755 run
5. 使用 Chron 以便程序在以下步骤中自动启动时运行
- 导航到您的本地 cloud9 文件夹
- 键入“mkdir 日志”
- 输入“sudo crontab -e”
- 添加到文件末尾:
@reboot sleep 30 && sh 'run' script> > /var/lib/cloud9/logs/cronlog2>&1
6.重启PocketBeagle,等待30秒后代码会自动运行!
操作说明
1.打孔纸获得想要的歌曲
2. 将纸张送入八音盒,足够远,使其部分位于连续旋转伺服下方
3.打开PocketBeagle,等待30秒让程序自动启动
4.按下按钮开机,享受音乐!
。
。
- 有时,大头针在孔上停留的时间过长,这会记录为多个音符
- 当多个音符注册在一起太快时,这会在积压中为扬声器创建一个缓冲区,这会在音乐盒和正在播放的实际声音之间产生延迟
这些将是该项目需要的两个主要修复。我想为这个项目做的其他改变,继续前进,是:
- 为设备创建更坚固的外壳(使用激光切割机或 3D 打印机)
- 减少音乐盒检测到孔的时间和扬声器播放时间之间的延迟
- 找到一种合并更多音符的方法(即包括带有临时记号的音符)
- 添加音量控制
- 添加一种控制连续旋转伺服速度的方法
致谢
最后,特别感谢 Erik Welsh 教授 ( https://www.hackster.io/welsh ) 为使这个项目成为可能提供的所有帮助!
- 单片机制作音乐盒
- 头脑风暴音乐盒开源构建
- 夜光音乐盒开源分享
- 现场可编程门阵列简介 76次下载
- 使用51单片机实现音乐盒的设计论文 115次下载
- 使用51单片机实现音乐喷泉频谱彩灯音乐盒播放器的源代码免费下载 108次下载
- 使用51单片机自制音乐盒的详细资料和程序及电路图免费下载
- 如何使用单片机设计音乐盒进行播放小苹果的C语言程序免费下载 21次下载
- 使用单片机进行音乐盒的设计资料合集免费下载 49次下载
- 使用51单片机设计音乐盒的程序资料免费下载 15次下载
- 51单片机音乐盒梁祝的proteus汇编程序和电路图免费下载 32次下载
- 蜂鸣器唱歌 电子琴protues仿真 51音乐盒仿真 基于51的 63次下载
- 基于单片机的音乐盒设计 43次下载
- 简单的音乐盒 8次下载
- 电子音乐盒设计
- 什么是现场可编程逻辑阵列?它有哪些特点和应用? 485次阅读
- 可编程片上系统的基本特征和主要应用 403次阅读
- 可编程片上系统是什么意思 399次阅读
- 现场可编程门阵列的原理和应用 457次阅读
- 现场可编程门阵列是什么 2217次阅读
- 简单认识现场可编程门阵列 681次阅读
- 可编程逻辑器件测试方法 1160次阅读
- 可编程电源的结构 可编程电源的使用事项 856次阅读
- 可编程电源的原理 可编程电源的优缺点 2150次阅读
- 如何使用数字电位计构建可编程振荡器 1052次阅读
- 可编程控制器的特点有哪些 8439次阅读
- diy音乐盒制作 2w次阅读
- 可编程电源应用与选型详解 1.3w次阅读
- 可编程控制器基本知识_可编程控制器原理及应用 5.8w次阅读
- 可编程电源简介 2067次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多