起因
工具
- 电钻
- 铁皮剪
- 热熔胶枪
- 尖嘴钳
- 圆头锤
材料
- DFRduino Uno R3
- Gravity IO 扩展板(可选)
- 模拟声音传感器(麦克风)
- 386AMP音频放大器模块(扬声器)
- 6xAA电池座,带DC2.1电源插孔(5号电池6枚)
- NRF24L01 + PA + LNA(带天线)
- 按钮开关
- 铝制罐头
- 跳线
处理罐头
在连接电子设备之前,我们需要在罐头上先打两个孔。
一个用于天线,另一个用于按钮。
先来给天线钻孔。把天线板放到罐头里面,测量好距离,并用白板笔做好标记,然后在需要钻孔的地方压出一个小凹痕,方便等下钻孔。
根据你使用的天线的不同,需要钻的孔的大小也可能不一样,为了确保尺寸合适,我拿天线上的螺纹和钻头的尺寸进行了比较。
一旦确定好了尺寸、标记好了孔的位置,用电钻快速钻进去,但不要太用力。罐头的壁很薄,钻完之后可以用铁皮剪清理一下孔的边缘,注意手不要被割到。
接下来是给按钮开关钻孔,具体操作如下:
粘合组件
先插上热胶枪,等它热起来,这个时候可以放点音乐。
然后,用胶枪把天线固定在罐体上。
这里建议在天线的金属部分涂上胶水,这样它就不会直接与罐子接触。
注意:
对于所有这些组件,可以多用一点热熔胶,不要让任何模块有机会与罐子接地。如果测试的时候听到嗡嗡声或哔哔声,则可能是接地故障。将DFRduino Uno粘到罐子的底部,然后装上电池组。这是所有部件中最重的部分,建议将胶水涂在边缘上,然后把罐子放到你想放的地方,保持天线朝上。
为了方便和美观,我们把扬声器模块粘在电池组的一边,麦克风模块粘在另外一边,像这样:
电路接线
根据上面的原理图,将所有的跳线连接到相应的引脚。(下面提供基于Gravity扩展板的引脚接法)
天线
- MI -> MISO
- MO -> MOSI
- SCK -> SCK
- CE -> Pin 7
- CSE -> Pin 8
- GND -> GND
- 5V -> 5V
NRF24L01是一项出色的技术,但它对电流非常敏感。确保仅使用3.3V的电压为其供电。当使用扩展板时,只能连接到5V,否则会烧坏天线。模拟声音传感器
- Gravity Pins -> A0
- +(扬声器输入端) -> 9 或 10 (左或右音频)
- -(扬声器输入端) -> GND
- Gravity pins -> D0
- NO -> A1
- COM -> GND
- 麦克风的信号引脚总是对应A0引脚;
- 开关总是对应A1引脚;
- 这里使用的音频放大器不管它插在哪里,只要有电就行。重要的是你用于音频传输的电线,它默认9和10引脚(用于左音频和右音频);
- 天线的CE和CSE引脚总是分别连接到引脚7和8(允许两个方向的无线电信号)。
烧录代码
//Include Libraries
#include <RF24.h>
#include <SPI.h>
#include <RF24Audio.h>
RF24 radio(7,8); // Set radio up using pins 7 (CE) 8 (CS)
RF24Audio rfAudio(radio,1); // Set up the audio using the radio, and set to radio number 0.
void setup() {
rfAudio.begin(); // The only thing to do is initialize the library.
}这里就不具体解释它是如何工作的了,如果你想了解有关Arduino IDE的更多信息以及此代码的含义,请查看此链接[2]。
你还需要安装RF24和RF24Audio库,可以在这里下载[3]。
安装好Arduino IDE后,下载提供的Arduino程序并打开代码。查看"Tools(工具)"下拉列表。确保将 "Programmer(编程器)" 设置为 AVR ISP,并将 “开发板” 设置为Arduino UNO(或您使用的任何板卡)。还要确认你的端口正确(应该显示"ArduinoUnoonCom#")
现在我们已经准备好烧录代码了。将USB电缆插入Arduino和计算机,然后单击IDE左上方的上载箭头。
代码上传,你可能会听到安静的嗡嗡声。
试着按下按钮,看看嗡嗡声是否会改变音调。
它还应使IO扩展板上的LED变暗。
如果上面的情况都出现了,那么程序正确运行了,说明各个模块的连接也没有问题。
实地测试
同样在另一个罐子上也试试。
听到什么了吗?如果听到了,说明你成功了!
注意:
如果出现干扰或嗡嗡声,请检查接地问题。确保没有任何引线接触到罐子,并且组件之间有足够的胶水。尽量避免相互缠绕,因为这会增加干扰。我还建议用电工胶带覆盖天线的金属部分,以防止它接地到罐子上。
如果你测试下来有效的话,接着测试一下距离。
如果没有任何阻挡信号的东西,通信的有效距离应该可以达到1000米。
参考资料
[1] RF24Audio库: https://tmrh20.github.io/RF24Audio/
[2] Arduino IDE的更多信息: https://www.arduino.cc/en/Guide/HomePage
[3 RF24和RF24Audio库: https://github.com/nRF24/RF24Audio
[4] 项目来源: https://www.instructables.com/id/How-to-Make-a-Wireless-Tin-Can-Telephone-Arduino-W/
项目作者:Facio Ergo Sum
译:Roy
转载请注明作者名称及出处!
呵呵,我2015年开始在.instructables.com上发表作品。后来一是DIY做的少了,二是英文,三是网速很慢,也就没再发表了。instructables.com是个DIY内容十分丰富的网站,是学习和交流获得知识的适宜场所。