端口号24
时间:2022-05-08 03:49 | 分类: 句子大全 | 作者:创客e工坊 | 评论: 次 | 点击: 次
端口号24
1. IP地址后面跟/24是什么意思
ip地址后面跟/24表示掩码位是24位,子网掩码是255.255.255.0的IP地址,其主机位最多有254个。
子网掩码通常有以下2种格式的表示方法: 1. 通过与IP地址格式相同的点分十进制表示 如:255.0.0.0 或255.255.255.128 2. 在IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度 如:192.168.1.1/24 的子网掩码也可以表示为255.255.255.0 子网掩码一般为255.255.255.0。
用2.4G模块NRF24L01做一个无线遥控开关,远程控制很方便
大家好,我是阿乐,今天教大家做一个无线遥控开关。
如下示意图:
我想要实现的功能是,遥控端输出一个高电平或者低电平,接收端也能同时输出一个高电平或者低电平,这样就能隔空控制很多东西,也不用拉线布线。
手头正好有2.4G模块,型号是NRF24L01,那我们就用它来实现。这个模块也不算贵,如下图:
这种外接胶棒天线带PA放大的也就十块钱左右,号称距离可达1100米,当然实际我也没去试过。
然后更常见更便宜的是板载天线的,体积也更小,价格也就四五块钱,非常值得入手玩玩。实物如下图:
今天我以这个外接胶棒天线带PA放大的NRF24L01作为例子来给大家讲解。先来讲讲它的引脚,把它反过来,令光滑没有元器件的一面对着我们,这面就是背面,它的正面有密密麻麻的小小个的元器件。示意图如下:
将模块翻过来,看到它的背面,它有两排排针,如下图:
最上面两个排针,左边是电源输入引脚,可输入3V-3.6V的直流电,推荐是用3.3V。过来右边是电源地,GND,是电源负极。下来第二排两个排针,左边是CSN,右边是CE。下来第三排两个排针,左边MOSI,右边是SCK。最后一排两个排针,左边是IRQ,右边是MISO。
接下来给大家解释一下这些引脚对应的功能:
CSN,它是Chip Select Not的缩写,是接收端选择引脚, Not代表低电平有效。
CE是Chip Enable的缩写,是发射/接收状态选择引脚。
MOSI是Master Out Slave In的缩写,主出从入,是控制端输出,接收端输入引脚,通常简写成MO。
SCK是Serial Clock的缩写,是时钟信号脚。
IRQ是Interrupt Request的缩写,是中断请求脚,今天我们不会用到这个脚。
MISO是Master In Slave Out的缩写,主入从出,是控制端输入,接收端输出引脚,通常简写成MI。
单独的这个NRF24L01模块自己还不能完成通讯去收发数据,我们需要一个单片机通过编程给它设置,一个当做发射端,另一个当做接收端,这样才能用来一对一通讯收发数据。当然它也可以用来设置一对多通讯。
这样子的话我们就会需要两个NRF24L01模块,两个单片机。单片机我用Arduino pro mini,如下图:
上图中的这个小东西,它相当于一个小开发板,用它来控制设置NRF24L01模块,别人已经写有很多库了,我直接调用就可以,就不用去底层设置寄存器,不用什么都亲历亲为,可以省下很多时间,这对于初学者来说很容易上手,可以快速开发,这个就是用Arduino的好处。一会儿我们直接用别人写好的库,直接修改例程就得了。
好,看硬件连接,我简单画了个接线图,如下图:
Arduino和NRF24L01模块的连线,无论发射端还是接收端都是这样连。
看到下面发射端的接线图:
在发射端我增加了一个按键,当按键没按下时,Arduino的D3号脚检测到的是低电平,因为直接接一个10K电阻到负极了嘛,所以是0。当按键按下时,接通5V的直流电到D3号端口,D3号端口又对地接一个10K电阻,所以在端口这里得到的是高电平,是1。
好,看接收端,如下图:
我在接收端的Arduino D3号脚接了一个4.7K欧姆的电阻和8550三极管,用来驱动蜂鸣器。当我们从D3给一个低电平的时候,蜂鸣器就会响起来,蜂鸣器负极的100Ω的电阻是限流电阻。
接下来讲一下编程思路:当发射端检测到我按下这个按键时,也就是检测到一个高电平时,就把这个高电平的数据发送到接收端,接收端接收到这个高电平的数据后就输出一个低电平,驱动蜂鸣器响起来,否则输出一个高电平,蜂鸣器不响。在这里不详细讲2.4G模块的具体设置方式,我只讲整体程序的实现过程。
在开始编程前我们需要下载一个库,就是别人编好的函数与例程,到时候方便我们直接调用。这个库可以自己到github去下载,也可以私聊我要,库名称是RF24-master,下好后把它丢到我们安装Arduino这个软件的根目录下的libraries文件夹中就可以了。
好,看程序,下图是发射端的程序:
红色方框1中#include是我们要引用的程序库,把它们包含进来。红色横线2是定义Arduino3号引脚把它命名为buttonPin,后面当出现buttonPin的地方说明是要控制3号引脚。往下,红色横线3是定义一个整型变量buttonState,用来存放按键的键值。
看到下面这张图片:
红色横线1的语句是把7脚设置为CE脚, 8脚设置为CSN脚。红色横线2是设置通讯通道地址00001,接下来红色方框中的是初始化函数,先设置3脚为输入引脚,启动nRF24模组,设定通道地址。在这里多说几句,nRF24L01模块在2.4GHz~2.525GHz这个频带上,在这个频带上划分了0-125個频道,我们通过程序可以自由设定使用的频道,只要发射端和接收端所处的频道相同就可以了。然后每个频道内可容纳6个通道(pipe),每个通道可对应一个发射器;一个接收器可接收来自6个发射器的讯号。一个频道内,至少要有一个发射器和一个接收器,才能连线通讯。发射器可以位于0-5任一通道,并且指定一个唯一的地址值。接下来是设定广播功率,设置功率为RF24_PA_MIN,然后停止侦听,就是设定成发射模式。
如上截图,在循环函数中,读取3号脚的状态,使用radio.write()函数将数据发送出去。发射端的完整程序就是这样,内容并不多。验证一下,没问题后选好板子的对应型号,选端口,上传就完成发射端的程序写入。
接下来讲讲接收端的程序,如下图:
前面的设置基本是一样的,不同的是接收端定义3号脚是用来控制蜂鸣器,同样也定义一个整型变量buttonState,用来存放收到的按键的键值。这里设置引脚和通道地址跟前面一样的,发射端和接收端必须处于同一地址。
如上截图,在初始化函数中,将3脚设置为输出引脚,将3脚置为高电平,启动NRF24模组,设定通道地址,设定广播功率。
如上截图,在循环函数中,开始监听无线广播,检查是否有可用的数据传输过来,当有数据可用时,我们将读取它,将其保存到buttonState中去,if函数判断,如果发射端按下按键了,则输出低电平,驱动蜂鸣器响起;否则,如果发射端没有按下按键,则保持高电平,蜂鸣器不响。这就是接收端的整个程序,也验证一下,没问题后选好板子的对应型号,选端口,上传就完成了。
最后看一下演示效果图:
在室内测试,信号传输稳定,通讯效果很好;在室外休闲公园里测试,以发射端为圆心,在大概800米空旷(有一些树和景观石的遮挡)的半径内,信号传输依旧稳定,通讯效果也很好,更远的距离没去测试过。
详细视频教程请移步到我的头条主页观看。
好的,我制作这个无线传输开关的作用可不是为了遥控这个蜂鸣器而已,我是想把语音识别模块和这个结合起来,对家里的家电进行远程无线遥控,这样我们离智能生活岂不是又更近了一步?
好啦,本期教程就讲这么多,我们下期再见,拜拜!