难度 | <! - 8 - > |
所需时间 | 短(2-5天) |
先决条件 | 以前的一些编程经验(最好是Python),或者学习如何编写Python代码的兴趣是优选的。音乐背景也很有用,但不是必需的。 |
材料可用性 | 该科学项目需要RFID阅读器和标签。有关详细信息,请参阅材料列表。 |
费用 | 平均值($ 50 – $ 100) |
安全 | 施工步骤需要使用工艺刀和热胶。使用这些物品时要小心,如果需要帮助,请询问成年人。 |
摘要
护照,身份证,公交车票,甚至一些信用卡都包含RFID标签.RFID( r adio- f id entification)标签允许计算机从短距离读取卡。虽然这在日常生活中非常有用,你会相信你可以用它制作音乐吗? RFID +采样音乐+一点点制作=一种有趣的乐器,仅受你想象力的限制。在这个科学项目中,你可以用纸杯制作手铃,这些纸杯可以播放真实的声音,这要归功于一点RFID技术。目的
使用便宜的RFID阅读器来构建专业手铃的模拟。
积分
Howard Eglowstein,Science Buddies
- MicrosoftWindows®是Microsoft Corporation的注册商标。
- Macintosh®,Mac®和”OS X” 是Apple,Inc。的注册商标。
- Apple®是Apple,Inc。的注册商标。
- Linux®是Linus Torvalds的注册商标。
- Hyperteminal®是Hilgraeve,Inc。的注册商标。
引用本页
此处提供了一般引用信息。请务必检查所使用方法的格式,包括大小写,并根据需要更新引文。
MLA风格
APA风格
最后编辑日期:2017-11-06
简介
为什么一些最好的技术浪费在无聊的东西上?如果您可以使用 r adio f 频率 id entification(RFID)阅读器并将其变成有趣的乐器怎么办?
RFID是人们越来越热衷于将信息传递到计算机化系统的方式。它通常以卡片的形式出现,您可能会收到学校证或公共汽车通行证,但也可以在挡风玻璃转发器设备中找到,该设备可让您的父母在不停车的情况下通过收费站进行日常通勤。与要求您通过插槽滑动卡的磁条卡不同,RFID读取器可以简单地从远处识别卡并获取存储在其上的信息。它也是仓库的一项伟大技术;例如,安装在叉车上的商用RFID阅读器可以读取距离100英尺或更远的RFID标签,并帮助操作员识别盒子内的物品.RFID也可能引起争议(它引发了隐私问题),但它也可以带来很多乐趣。你将使用一个小型的业余爱好者RFID阅读器制作听起来就像真实的乐器。没有什么争议的!
几家公司销售用于实验和有趣应用的小型RFID阅读器。例如,您可以在机器人上安装一个,当机器人在房间内移动时,它可以通过读取您留下的RFID标签来找出它的位置。你可以在你房间的门上使用一个 – 给你的朋友一张RFID卡,然后你可以判断你敲门的是朋友还是麻烦的兄弟姐妹。或者在这个科学项目中,使用RFID阅读器作为音乐合成器的一部分。
RFID系统通常运行的方式是读卡器在标签出入时保持静止。阅读器需要某种电源和与计算机的连接。标签只是便宜的塑料卡或密码卡。一个读者通常可以处理大量标签。如果读者要保持不变并且会有许多标签出现,那么你制作的乐器应该模仿你挥动大量物体的东西是有道理的。这听起来很像 handbells 。

图1。您将使用RFID阅读器和纸杯制作一组合成的手铃。
你可能在生活中的某个时候见过手铃。也许你的宗教团体在服务中使用它们。或者你听说他们在假日期间在一家购物中心玩。你的学校可能有一套用来帮助教授节奏的套装。

图2. 手铃合唱团练习。铃铛的大小从几英寸到一英尺直径,有些可以重8磅.(图片来源:Wikimedia Commons用户Jeff Muceus)
RFID阅读器已经从大型仓库读者那里走了很长一段路;现在它们是一个大小与信用卡大小相当的小设备。为了工作,读者发出无线电信号。标签使用该信号中的能量为其自身的一台小型计算机和发射器供电,并传回它存储的一些编码数据。读者获取该信息然后关闭。然后标签失去动力。现在读者知道标签中的数据是什么,它可以做任何系统设计者的预期。例如,如果标签在您的学校ID中,则读者上的数据可以让您在当天签到学校。在这个科学项目中,每个标签都代表一个音符。电脑会播放相关的声音文件,你会创建一个简单的手铃设计,瞧!即时手铃!
术语和概念
- 射频识别(RFID)
- 手铃
- 合成
问题
- 有哪些不同类型的RFID阅读器以及哪些可以使用?
- 手铃如何发出声音?
- 手铃如何演奏?他们是否曾经采取过不同的方式进行游戏?
参考书目
- RFID Journal.(不详).常见问题。检索2014年4月10日起 http://www.rfidjournal.com/site/faqs
- 维基百科贡献者.(2014年2月19日).采样器(乐器)。维基百科:自由百科全书。检索2014年4月10日,来自 http://en.wikipedia.org/w/index.php?标题= Sampler_(musical_instrument)及OLDID = 596205658
- 维基百科贡献者.(2014年3月26日).科学音高符号。维基百科:自由百科全书。检索2014年4月12日,来自 http://en.wikipedia.org/w/index.php?title=Scientific_pitch_notation& OLDID = 601368127
本文是关于一种早期的电子乐器,它使用钢琴键盘播放其他乐器的预录音:
- 维基百科贡献者.(2014年3月23日). Mellotron。维基百科:自由百科全书。检索2014年4月10日,来自 http://en.wikipedia.org/w/index.php?title=Mellotron& oldid = 600935448
以下是一些玩手铃的在线视频:
- Mazimas,K。(2012年12月23日).这是一个手铃上的小世界。检索2014年4月10日,来自 http://www.youtube.com/watch?v=clVaXS5mHyU
- 罗利林格斯.(2011年12月7日). Bumblebee的飞行。检索2014年4月10日,来自 http://www.youtube.com/watch?v=d6o5NZV83TI
材料和设备
- Parallax USB RFID阅读器套件;可在 jameco.com
- USB线(迷你USB);可在 jameco.com
- Parallax RFID标签(我们建议至少10个);可在 jameco.com
- 纸杯(每个RFID标签1个)
- 塑料刀(每个RFID标签1个)
- 工艺刀
- 胶带(遮盖,管道或几乎任何种类)
- 热胶枪
- 热胶棒
- 永久性记号笔
- 带有至少一个USB端口,Windows®XP或更高版本,Macintosh®OSX®10.6或更高版本或最新Linux®版本的计算机
- 软件驱动程序将USB端口读取为串行(从制造商网站免费下载);可用 ftdichip.com
- 对于Apple®(OS X)计算机,SerialTools软件应用程序是一个选项;可在 itunes.apple.com上的Mac App商店。
- 对于Windows计算机:
- 超级终端软件,可能已经安装在计算机上
- 腻子;可在 chiark.greenend.org
- 或其他一些串行终端模拟器
- 对于Linux计算机,串行终端仿真器,如minicom软件;可在 pkgs.org
- Python 3.x(可能预装在您的计算机上,或者您可能需要安装它)
- pySerial模块,用于与已连接的设备进行通信
- pygame模块,用于通过Python在计算机上发出声音
- 合成铃铛每个音符的声音文件(参见下面的”数字化声音” )
- 可选:Python编程参考书
- 可选:手铃音乐书;例如可用的那个 grothmusic.com 。一本八度的简单书是一个很好的起点。
- 可选:初学钢琴或手摇铃演奏者的音乐;可以在互联网上找到下载,也可以在互联网或音乐商店中找到书籍
Python代码文件(在许多浏览器上,右键单击链接并”另存为” ):
数字化声音,礼貌 AnOctaveOfCows.org 。这些文件包含.wav文件,采用压缩格式,便于下载。
- Bell_sounds.zip (从此开始)
- Burps.zip (替代声音文件,可选)
- Cats.zip (替代声音文件,可选)
- Cows.zip (替代声音文件,可选)
声明:Science Buddies参与联盟计划家庭科学工具, Amazon.com , Carolina Biological ,以及 Jameco Electronics 。联盟计划的收益有助于支持Science Buddies,501(c)(3)公益慈善机构,为每个人免费提供资源。我们的首要任务是学生学习。如果您对我们网站上的建议您为科学项目所做的购买有任何意见(正面或负面),请告诉我们。写信给我们 scibuddy@sciencebuddies.org 。跨度>
实验程序
注意:在计算机上安装软件可能有点棘手。您将分步进行,但如果您遇到问题,请向成人或技术智能的朋友寻求帮助。
设置驱动程序和测试阅读器
驱动器
注意:根据您使用的计算机的拥有者,在下载和安装任何软件之前,请获得您父母或学校的许可。在特定计算机上安装软件的确切步骤可能因计算机的设置方式而异。如果需要,请向成人寻求安装驱动程序和应用程序软件的帮助。
- 材料列表中的RFID阅读器将通过USB连接到您的计算机。当然,这是非常常见的,但RFID阅读器不像键盘或鼠标;计算机不知道如何处理数据。要解决此问题,您需要一个设备驱动程序,它允许计算机知道如何从阅读器访问数据。
- 在RFID套件中,您可以找到有关前往Parallax网站获取文档的说明,以及 FTDI网站为司机.RFID阅读器使用FTDI的芯片,因此必须从他们的网站获得特定于您的计算机的驱动程序.Windows XP,Vista,Windows 7和Windows 8以及Mac®OSX 10.6或更高版本的网站上提供了驱动程序.Linux系统可能不需要驱动程序,因为许多Linux安装已经支持FTDI芯片组.
- 目标是使RFID阅读器看起来像标准的串行通信端口。按照套件随附的说明进行操作,以安装驱动程序。如果您需要帮助,请询问成年人。
串行终端仿真器
以下是关于术语 serial 和 terminal 的一些背景知识。在现代计算机上继续提及”串行” 和”终端” 是一种”老派” ,但这些术语可以追溯到几十年(到20世纪60年代和70年代),当时计算机没有显示器或键盘。相反,计算机使用不同类型的端口,称为串行端口,这在USB发明之前很常见。计算机可能已经在附近的特殊空调房间中,而用户在他或她的桌子上具有带有显示器和键盘的终端。因此,当我们谈论计算机如何与其他设备通信时,我们仍然使用该术语,即使大多数人的计算机上没有单独的终端,并且许多计算机不再具有旧的标准串行端口。
在这个科学项目中,您需要查看来自RFID阅读器的数据。由于您在上一节中安装了驱动程序,因此您的计算机会认为数据是通过串行端口进入的。要查看数据,您需要安装一个类似于旧式终端的程序来显示原始数据。这些终端仿真器很容易找到你将要使用的任何计算机。
- 在Windows上,您的计算机可能已安装超级终端。
- 较新的Windows系统可能没有安装Hyperterminal,但您可以下载名为 PuTTY (这个名称唤起了更老的技术)将完美地完成这项工作,并且实际上是该项目的首选。
- 在Mac OS X下,在app store中查找名为的程序 SerialTools 。
- Linux机器可以使用串行终端仿真器,如 minicom 。
连接RFID阅读器

图3. Parallax RFID阅读器通过USB连接到您的计算机。这里显示的是所需的USB电缆,带有附带标签的阅读器套件,以及这个科学项目所需的10个附加标签包(您可以根据需要使用多个标签)。
- 安装设备驱动程序和终端仿真器后,使用mini USB线将RFID阅读器插入计算机。根据您的计算机,计算机可能需要一两分钟来识别设备。它将作为串行端口出现在您的计算机中。
- 在Windows上,它是一个通常命名为”COM4″ ,”COM5″ 或其他数字的设备。图4和图5显示了您可能在Windows计算机上运行的Hyperterminal和PuTTY(首选)的一些示例屏幕。如果使用PuTTY,请选择选项,如图5所示,使用适合您特定安装的任何COM端口。
- 在Mac或Linux计算机上,根据具体情况,它几乎可以命名。没关系,因为串行终端软件可以找到它。图6和图7显示了使用SerialTools的成功设置,这是一个可用于Mac OS X机器的程序。
- 请务必检查”RTS” 和”DTR” 框以激活RFID阅读器,然后单击”连接” 。
- 连接后,SerialTools将显示来自RFID阅读器的所有数据。

图4. Hyperterminal是Windows计算机上可能已有的一个程序.RFID阅读器将作为较高编号的COM端口之一出现。

图5. PuTTY是一种非常流行的终端模拟器,几乎可以在任何版本的Windows上运行。如果您有权在计算机上安装软件,那么它是比Hyperterminal更好的选择。如图所示,使用适用于特定安装的任何COM端口选择选项。

图6. OS X的SerialTools将显示您在计算机上找到的串行端口列表。在这个例子中,它认为它也发现了一些蓝牙串口,但我们通过USB连接,所以选择名称中带USB的那个。务必检查”RTS” 和”DTR” 框以激活RFID阅读器,然后单击”连接” 。

图7. 连接后,SerialTools将显示来自RFID阅读器的任何数据。
- 启动终端仿真器软件。在软件的菜单中,您将找到一个选择设备的位置。您可能没有连接很多串行设备,因此应该很容易找到正确的端口.RFID阅读器使用2400波特,8位,无停止位(如果你想知道这意味着什么,你可以查看它)。在通讯软件中选择这些选项。
- 要检查您是否正确,请使用RFID阅读器附带的标签之一并在阅读器的几厘米范围内挥动它。您应该会在屏幕上看到一个10位数的数字。
- 如果你这样做,那就太棒了!您已获得正确的配置并准备继续。
- 如果没有,您可能需要重新启动计算机才能激活驱动程序,或者您可能在终端软件中选择了错误的串行端口。阅读器上的LED是否亮起?如果没有,请检查您是否有可用的电缆,并将电缆插入正常工作的USB端口。
注意:此套件中的标签均包含唯一的10位数标识符。你要编写的程序利用这个来判断你正在响铃的”铃” 。
在您的计算机上查找或安装Python 3.x
- 本程序的其余部分使用Python 3.x作为编程语言从标签读取数据并启动相应的声音。根据您的计算机,Python可能从命令窗口启动,也可能是可点击的图标,可能标记为”空闲” 或”空闲3″ 。寻找预装Python的一些迹象。
- 如果您找到它,请启动它并查看您拥有的版本。如果您打算使用我们的示例代码,我们建议您使用第3版.
- 如果您没有版本3,可以查看 python.org 网站,为您的计算机下载正确的版本
- 根据指示下载并安装Python 3.x.同样,如果您需要帮助,请询问成年人或技术聪明的朋友。
安装pySerial
- 你有Python 3吗?大!坏消息是Python不知道如何与RFID阅读器等连接设备通信。要解决此问题,您需要安装一个名为”pySerial” 的模块,您可以从 pypi.python.org 获取该模块.注意:安装它有时会很棘手。我们建议你上网搜索”pyserial install python 3 windows” ,”pyserial install python 3 OS X” (适用于Mac)或”pyserial install python 3 linux” 开始使用。
- 要确保正确安装pySerial,请启动Python并加载从材料列表下载的程序”showtags.py” 。编辑程序以显示在上面的步骤2和3中使用串行仿真器运行测试时确定的串行端口的名称。您应该在屏幕上看到类似于图8的内容。

图8. 示例Python程序”showtags.py” 将简单地显示来自阅读器的标签数据。
- 获取数据的程序存在处理可随时发送信息的设备的问题。如果您编写的程序要求用户输入内容,程序将询问,然后等待响应。我们不能用RFID阅读器做到这一点;一旦知道它就会发送它知道的任何东西。为了更好地处理这个问题,该程序利用了一个名为 threading 的概念,一个程序开始表现就像是两个或多个程序一起工作.Python确实很好地进行了线程化,所以这个程序利用了它。您可能会发现在阅读此工作原理描述时,在Python或文本编辑器/文字处理器中打开’showtags.py’文件会很有帮助。
- 前四行只是告诉Python你正在使用一些额外的功能。在这种情况下,串行(pySerial,准确),线程,时间(所以你可以准确计时),和sys(用于系统功能).
- 接下来的两行告诉程序您要与哪个串口通信(使用您之前找到的名称),以及数据的”波特率” 。该术语是指每秒传输的位数和RFID阅读器使用2400。
- 接下来,您告诉Python建立与串行端口的连接。你给它命名和速度,它存储一个句柄。该句柄是程序与开放端口通信的方式。
- 然后定义两个辅助函数。
- 当完全读入标记时,将调用第一个handle_data()。当您之前运行串行终端测试时,您会看到消息的格式。这个功能现在做不了多少;它只是在屏幕上显示数据。稍后您将使用它来播放声音。
- 第二个助手做重物.read_from_port()将永远循环尝试从RFID阅读器读取数据。来自端口的数据将是每个标签12个字符:10个唯一数字后跟2个字符以指示数据结束。这个函数全部收集它,当它完成时,它调用handle_data()把它变成有用的东西。
- 定义了助手并打开了端口,下一步是启动在自己的线程中运行的read_from_port()。这让你可以做其他事情,比如播放声音。您需要设置一个线程,开始运行,然后打印出一条消息。最后,你不能只是结束,所以你永远循环什么都不做,将值0赋给变量。如果您的程序有事可做,您可以在此处执行其他操作。如果这个程序的某些部分对你没有意义,你可以在Internet或Python参考书中找到关于Python和pySerial函数的解释。
安装pygame
- 你有pySerial和你的RFID标签阅读器吗?是时候发出一些声音! Python有一个仅用于游戏的模块,称为”pygame” 。它提供播放声音,播放大型声音文件,从操纵杆读取,显示图形以及您计划用Python编写游戏时可能需要的其他内容的功能。太糟糕了,它没有读取RFID标签!您需要安装”pygame” ,您可以从 pygame.org 获取.注意:网页提供了一些可能有用或可能没有帮助的安装说明。我们建议您搜索”pygame install python 3 windows” ,”pygame install python 3 OS X” (对于Mac)或”pygame install python 3 linux” 来开始。弄清楚比pySerial更容易。
- 将您从”材料” 列表中下载的”playsounds.py” 复制到硬盘上的目录中。您还需要文件’Bell_sounds.zip’,它是手铃上播放的音符选择。将声音文件放在与’playsounds.py’相同的目录中.
- 启动Python并加载’playsounds.py’。运行该程序,您应该听到手铃上播放的两首曲子。
- 一步一步,这就是playsounds.py演示了两种使用pygame播放声音的方法。首先,如图9所示,您必须初始化声音系统。导入必要的模块(你总是必须这样做),然后调用pygame函数来设置它的混音器。您可以在 pygame 网站(前面显示的链接)上看到完整的pygame功能列表。

图9. 要使用pygame播放声音,必须初始化pygame的混音器。

图10. 这是您可以用来播放声音的一种方法。我们不建议这个,但你会在互联网上找到它,这很容易做到。
- 要播放任意长度的声音文件,您只需使用pygame”load()” 和”play()” 函数即可。缺点是程序必须暂停和读取文件,这会使事情变慢,并且您一次只能播放一个文件。有了真正的手铃,你经常听到整个小组一次玩。这种方法的另一个问题是它占用了大量的程序空间来决定要播放哪个文件。当您编写读取标记的程序时,您可能会得到以下内容:
如果tag = 1则播放(”C” )
如果tag = 2则播放(”D” )
…等
如果您有一些标签,几个音符和一种声音,那也没关系。想象一下,你有几十个音符和几种不同类型的声音。这可能不是编写程序最有效的方法。图10中的小代码片段没问题,但……
- 还有另一种方法可以创建一个具有声音文件名的项目列表(预加载到pygame混音器中),一个用于RFID标签的空间,稍后您将与之关联,以及一个更友好的名称。在手摇铃,钢琴或许多其他乐器上,八度音阶都有编号;最低值为0,最高值为9.这称为科学音高表示法(有关更多信息的链接,请参阅参考书目),并且通常是用于手铃。文件中表示的音高是否恰好是这些八度音程并不重要。这个想法是使用”C4″ 来表示比”C5″ 低一个八度的C更容易。项目列表包含这些”更友好” 的名称。然后,您可以获取每个列表(每个注释一个)并列出它们。它比上面所有其他’if-then’测试占用的空间要少得多。它创建了一个相当原始的笔记数据库及其与RFID标签和笔记名称的关系。

图11. 另一种在Python中播放声音的方法。
- 列表列表是一个将搜索此数据库的帮助程序后,按名称查找声音,然后播放它。一旦定义了帮助程序,就可以用它来播放一首小歌曲。
编写程序
- 现在你有办法阅读RFID标签和播放声音的方法。你快到了。现在你需要编写一个程序来监视标签,当它看到标签时,决定播放哪个音符并播放它。这里没有方便的示例代码,但我们相信您会很有乐趣解决这个问题!也要考虑一些人可能不喜欢手铃音乐。他们可能会喜欢猫喵喵而不是奶牛。您的程序可以播放相同的音符,但是从铃声切换到另一种声音吗?考虑在一张照片上放一张铃铛,在另一张照片上放一张奶牛的照片,然后用这些标签切换声音。
使其看起来像仪器
当然,你的节目非常酷,而且你的房子里的每个人都被”玛丽有一只小羊羔” 充满了骚动,被满是奶牛的草地所牵着。但是在阅读器前面挥动小标签并不像乐器那样。继续手铃主题,您可以使用纸杯和塑料刀来制作纸质手铃,如图12所示。将标签放在里面,它们看起来更像真实的东西。

图12. 只需将标签隐藏在由纸杯和塑料刀制成的”手铃” 中,就会让人们注意到你的小纸铃声听起来像是真实的东西。
- 使用你的工艺刀在杯子的底部做一个小切口。保持尽可能集中。
- 将塑料刀插入狭缝。为了将它放在正确的位置,将杯子,嘴巴朝下放在桌子上。向下按压刀直到它刚好接触到桌子。你不希望它粘在杯子的边缘上。
- 在杯子外侧使用热胶将刀固定到位。务必保护您使用热胶的区域的工作表面;它会变得有点凌乱。冷却时不要接触胶水。他们称之为 hot 胶水是有原因的!周围有成年人,以防您需要帮助.

图13. 塑料刀穿过杯子底部的缝隙,在刀子的两侧放上一团热胶,将杯子固定到位。
- 一旦外面的胶水冷却,将杯子翻过来并在内侧做同样的事情。你需要一点胶水才能确保在你演奏手铃时杯子不会摆动。见图14.

图14. 在杯子内部的刀子两侧放一些热胶。整齐地做这件事很难;尽你所能。
- 使用一小段胶带将一个标签粘贴到刀尖上。你希望它在尖端,如图15所示。如果你知道你不会重复使用这些标签,而是想热粘它们,那也没关系。但是,我们不建议这样做,因为您可能会发现这种RFID阅读器和标签的各种用途。

图15。将RFID标签粘贴到刀片上,尽可能靠近尖端。
- 使用showtags.py程序并读取刚刚贴在刀上的标签。记下标签号。确定这个手铃将用哪个音符,并使用永久性标记将其写在杯子上。是C4吗? D4?为每个手铃选择一个。

图16. 一整套纸手铃。
- 一旦你制作了10个或更多的手铃并将每个标签分配给一个音符,你就可以参加一场音乐会!不过,你需要一些音乐。以下是如何获取音乐的几个想法:
- 你学校的音乐老师可能会有一些你可以借的。
- 材料列表中列出的grothmusic.com网站是一个良好的开端。
- 您可以在互联网上找到音乐.
- 使用材料列表中包含的示例声音文件;但是,它们没有锐器和平底鞋。将来可能会在 AnOctaveOfCows.org 网站上提供更多文件。您也可以制作自己的声音文件.
- 你是歌手吗?唱出每个音符并自己录音。将结果保存为.WAV文件,然后将”自己玩” 作为手铃.
- 也许你有狗嚎叫,或者你知道如何制作音乐水杯。录制你最好的声音并用你的铃声演奏.注意: AnOctaveOfCows.org 网站收集声音,与其他人分享这样的科学项目,他们也许可以使用你的。让您的父母给他们发送电子邮件。
如果你喜欢这个项目,你可能会喜欢探索这些相关的职业:
变体形式
- 如图17所示,尝试将标签放在其他内容中,例如与动物声音相对应的动物形状,或构成自己的乐器。考虑制作一个表演视频,在线发布,并与我们分享链接 scibuddy@sciencebuddies.org 。

图17. 没有人说这些有看起来像手铃。如果它们听起来像猫,它们看起来像猫!只需将标签贴在木质或纸板镂空的背面即可。
- 有很多种不同的手铃方式。改变你的设计,包括其中一些的声音。
- RFID阅读器非常小,并且使用USB电源。如果您有一台小型笔记本电脑,而您的父母或学校(取决于它的电脑)是否允许您,如果您将标签放在地板上并将笔记本电脑放在小推车上会发生什么?当您将车推过标签时,它会根据位置发出声音吗?也许是音乐火车?