在本节中,我们将使用Raspberry Pi开发一个RF遥控器,该遥控器可用于无线控制设备。我们可以使用此RF遥控器打开和关闭设备。我们之前已经开发了许多使用RF模块的项目,例如RF控制机器人,手势控制机器人等,请检查它们以了解RF模块的工作原理。
所需组件:
发射器侧:
- 射频发射器(ASK混合发射器)
- HT12E集成电路
- 4个按钮
- 750k电阻
- 9伏电池
接收方:
- 树莓派
- 16x2 LCD
- 10K锅
- 面包板
- 1K电阻器(五个)
- 33K电阻
- HT12D IC
- 射频接收器(ASK混合接收器)
- LED(五个)
- 10K电阻(四个)
- 连接线
- 电源供应
射频模块
这是一个ASK混合发送器和接收器模块,工作频率为433Mhz。该模块具有一个晶体稳定振荡器,可保持精确的频率控制以达到最佳范围。在那里,我们仅需为该模块外部安装一根天线。
在需要远距离RF通信的情况下,该模块具有很高的成本效益。该模块不直接使用PC或微控制器的UART通信发送数据,因为在该频率及其模拟技术下存在很多噪声。我们可以在编码器和解码器IC的帮助下使用此模块,该IC从噪声中提取数据。
在使用最大电源电压的情况下,发射器的范围约为100米,对于5伏特,使用简单的单码17厘米长的天线导线,发射器的范围约为50-60米。
射频发射器功能:
- 频率范围:433 Mhz
- 输出功率:4-16dBm
- 输入电源:3至12伏直流电
RF Tx的引脚说明:
- GND-接地
- 数据输入-该引脚接受编码器的串行数据
- Vcc-+5伏应连接到此引脚
- 天线-缠绕式连接到此引脚以正确传输数据
射频接收器功能:
- 灵敏度:-105dBm
- 中频频率:1MHz
- 低功耗
- 电流3.5 mA
- 电源电压:5伏
RF Rx的引脚说明:
- GND-地
- 数据输入-此引脚将输出串行数据提供给解码器
- 数据输入-此引脚将输出串行数据提供给解码器
- Vcc-+5伏应连接到此引脚
- Vcc-+5伏应连接到此引脚
- GND-地
- GND-地
- 天线-缠绕式连接到此引脚以正确接收数据
工作说明:
这个项目的工作非常简单。在此项目中,我们使用了发送器端的四个按钮(用作远程按钮)来控制接收器端的四个LED。当我们按下四个按钮中的任何一个时,编码器IC会对信号进行编码,然后将其发送到RF发送器,RF Transmitter在环境中发送它。现在,RF接收器接收发送的信号,并使用解码器IC HT12D对其进行解码,并将其4位输出发送到Raspberry Pi。然后,Raspberry Pi读取这些位并执行相关任务并点亮相应的LED。每当按下任何键时,蜂鸣器都会发出哔哔声。 16x2 LCD也用于显示所有LED的“ ON”或“ OFF”状态。
在该项目中,我们仅使用四个LED进行演示,我们可以通过按“ RF Remote”上的相应按钮来触发任何任务。就像我们还可以使用继电器连接AC家用电器代替LED,并可以使用相同的“ RF Remote”无线控制那些家用电器。因此,该电路可以用作使用Raspberry Pi的基于RF的家庭自动化项目。我们之前已经开发了许多通过蓝牙,DTMF,GSM等控制的家庭自动化项目,您可以在此处查看所有家庭自动化项目。
电路说明:
该Raspberry Pi RF遥控器的电路很简单,它包含Raspberry Pi板,按钮和LCD,RF Pair和编码器/解码器IC。Raspberry Pi控制LCD,读取输入并根据输入发送输出。我们在这里使用了Raspberry Pi 3,但是任何Raspberry模型都可以使用。电路分为两部分,一个是射频接收器电路,另一个是射频发射器电路。下图显示了这两个电路。
在接收器部分中,LCD引脚rs,en,d4,d5,d6,d7以4位模式连接到接线Pi GPIO引脚11、10、6、5、4、1。RF接收器从RF发送器接收信号,然后HT12D IC对其进行解码。HT12D解码器IC的D8,D9,D10,D11直接连接在接线PI GPIO引脚25、24、23和22上。输出LED连接在接线GPIO引脚26、27、28和29上。蜂鸣器也用于发出警报在Pi Pi GPIO 0上按下键。
射频发射器电路包含HT12E编码器IC和4个按钮,用于控制4个LED。在编码器和解码器IC中,所有地址线都接地。
在Raspberry Pi中安装connectionPicture Library:
像在Python中一样,我们将 导入RPi.GPIO作为IO 头文件 导入, 以使用Raspberry Pi的GPIO引脚,在这里,用C语言,我们需要使用 connectioningPi Library 在我们的C程序中使用GPIO引脚。我们可以通过以下命令一个一个地安装它,您可以从Terminal或某些SSH客户端(如Putty)(如果使用Windows)运行此命令。浏览我们的《 Raspberry Pi入门》教程,以了解有关处理和配置Raspberry Pi的更多信息。
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git://git.drogon.net/wiringPi cdconnectionPi git pull origin cdconnectionPi./build
使用以下命令测试wireingPi库的安装:
gpio -v gpio阅读全部
编程说明:
首先,我们包含头文件并定义LCD的引脚,然后初始化一些变量和引脚以获取输入和LED指示。
#包括
之后,我们在 void setup() 函数中为所有使用的GPIO引脚提供方向。
void setup(){如果(wiringPiSetup()== -1){clear(); print(“无法启动”); setCursor(0,1); print(“ wiringPi”); } pinMode(led1,OUTPUT); pinMode(led2,输出); pinMode(LED3,输出); pinMode(led4,输出);………
在代码中,我们使用 digitalRead 函数读取Decoder的输出,并使用 digitalWrite 将输出发送到LED或设备。
…………….. while(1){setCursor(0,0); print(“ D1 D2 D3 D4”); if(digitalRead(d1)== 0){flag1 ++; setCursor(0,1); if(flag1%2 == 1){print(“ ON”); digitalWrite(led1,HIGH); }……………..
这是此项目中使用的更多功能。
函数 void lcdcmd 用于向LCD发送命令, 函数 void write 用于向LCD发送数据。
函数 void clear() 用于清除LCD, void setCursor 用于设置光标位置和 用于将字符串发送到LCD的 无效打印 。
函数 void begin 用于初始化4位模式下的LCD,并且 使buzzer() 用于蜂鸣器蜂鸣。
在下面查看此Raspberry RF遥控器的完整代码。