当前所在位置:首页 > 新闻资讯

新闻资讯

如何用nRF24L01制作腕带式对讲机

       一直以来,都想要制作一个腕带式对讲机,特别是看到金刚战队那酷炫的交流工具,又适逢智能手表火热了起来,那语音通话等功能受到了追捧,这些都直接促发了制作灵感。前前后后已经做了好几个原型设计,并且现在对要做什么已经有了一个初步的想法。

       此教程,是教大家如何使用nRF24L01制作一个简单的对讲机。虽说这个项目没有做到将装置很好的组装起来,但是希望大家能在制作学习的过程中有所启发进步。

步骤一:准备工具

      将全部原件焊接在面包板上,可以使得整个原型看起来比较圆滑,只是做起来效果没那么好。材料清单如下:

2 x Arduino UNO/SparkFun RedBoard (Arduino Mega)

2 x nRF24L01

2 x驻极体传声器

2 x NPN晶体管

2 x按钮

2 x3.5 mm RRS连接器

6 x 10 k 电阻

2 x 100 k 电阻

6 x 100 nF 电容

工具

烙铁

焊接

助焊笔

焊锡线

步骤二:扩音器电路

       整个扩音器的电路来源于互联网,看起来很简单。不过在原始电路上做了一点小小的修改,即是把电路中晶体管旁边0.1uF的电容移除了。这个电容的作用主要是隔直流通交流,意味着我们要建立一个负电压。在大多数情况下这个电路设计是不错的,但是将前置放大器的输出连接到微控制器时,电路不能输出负电压。不仅如此,当把它连接到Arduino的模拟 - 数字转换器时,它也能够直接将前级放大器电路与耳机直接挂钩。所以可以将其删除。

驻极体麦克风和晶体管

       驻极体麦克风里面有一个柔性膜片,声波触发到它的时候就会移动。柔性膜片是与另一个传导盘平行的。这个传导盘的功能是根据膜片的弯曲程度和麦克风检测到的声波强度得到电容值。从麦克风连接到电路的情况来看,它将会根据麦克风检测到的声浪程度在晶体管产生一个AC电流。晶体管的基础电流是经过放大的,所以流入微控制器的声波也是经过放大的。

步骤3:呼叫按钮

      我们需要一个简单的按钮来呼叫对讲机另一端的人。下面使用一个简单的按钮 ,10 k电阻,100 nF电容器。电路很简单。在典型的按钮电路上增加一个电容器,大家可能会熟悉。该电容器有助于防止按钮“反弹”或不稳定信号。大家可能熟悉其他防反跳按钮的方法,但其实,添加电容器已经足够了。

      按钮按下时连接一个中断引脚3来检测。需要“中断”代码来提供不降低性能的非常准确的定时事件(如果处理得当)。

attachInterrupt(digitalPinToInterrupt(talkButton), talk, CHANGE);

      有了这段代码,我们去“talk()”函数检查引脚3的电压。如果电压高或5 V,nRF24L01将切换到发送模式(发出的声音)。如果电压很低或0 V,nRF24L01将切换到接收模式(接收声音)。当按钮按下时引脚3的电压应是高的,当松开按钮时则应该是低的。当引脚3上的电压“变化”在我们的“attachinterrupt”函数上表示时,“talk()”函数将执行。

void talk()

{

if (digitalRead(talkButton)) rfAudio.transmit();

else rfAudio.receive();

}

第四步:无线传输

       为这个项目使用nRFL01射频收发器。使用了远程模块(天线),但这些都不是需要的。对于这一步,我们需要下载两个Arduino的库:该RF24和RF24Audio库(附后)。在Arduino安装第三方库的说明,请参阅本教程arduino.cc。附件为特里国王和其他贡献者的arduinoinfo和NRF24L01的引脚说明。特里也有一个详细的关于nRF24L01的教程和描述,这是很有帮助的。为了稳定性要焊接100 nF的电容器在VCC与GND之间,这是Terry在他的维基百科里建议的。

第五步:Arduino代码

       利用rf24和rf24audio库整理一个简单的代码,上传这段代码到Arduinos。在代码的开始默认两个电路为“接收”的。按“呼叫按钮”从一个无线电传输音频到另一个。 注意:RF24Audio使用PWN传输音频和其他一些技术。由此产生的响亮的背景噪音,很刺激。暂时还没想到方法来去掉,如果大家会,可以分享出来。