首先简单介绍一下继电器,它实际上是用小电流去控制大电流运作的一种“自动开关”,利用它不仅能起到控制作用,同时也将强弱电进行了有效隔离,当然如果再加光耦隔离就更彻底了。由于一般nodeMcu输出电压是3.3V,如果输入电压是5V,貌似也能输出5V的电压。所以可以选择3-5V触发电源的继电器。
图上5VDC是触发直流电压为5V,后面的10A250VAC是继电器能控制的设备电流电压。
简单画一下nodeMcu与继电器连接,以及连接220V交流电和灯的图。
这里重点提一下nodeMcu板上D0与控制电平IN,由D0输出控制用电平,而D0对应的是GPIO16,程序上控制的还是原来板上的LED小灯对应的端口,控制程序还是原来的
如果选择其它点,程序对应的端口需要修改,这里给出对应表,大家可以试试其它端口实现对继电器的控制。比如D1,成功请在留言区留言。
这里接线,我们可以先只连接低压侧,高压侧的电灯,先不要接,接着下一步。
** 还要说一下nodeMcu上的5V电压还可以继续用电脑的USB供电,但为了安全起见,建议用独立USB电源,由于后面还要接强电,所以安全为上。**
这里的程序还是用我们熟悉的控制板载LED的程序,因为对应的是同一个GPIO端口。
这里再附一下:
记住烧入板子时,去掉注释。
烧入程序运行后,就可以试验了。记得将这程序设置为开机自启动,可采用 init.lua 的方式。当在同一局域网的电脑或手机浏览器输入 http://192.168.8.145/on 和 http://192.168.8.145/off ,就可以看到nodeMcu上LED和继电器上LED灯的变化和清脆滴答声音。
进一步,接上强电部分,用继电器控制电灯点亮吧。
本次成功让nodeMcu控制了灯的点亮,大家可以发挥想象,其实还可以控制更多的电器,当然这还要考虑继电器本身的功率,请选择在继电器控制功率范围内的电器设备,或者选择更大功率的继电器。至此我们已经基本实现了网上常见的智能插座的功能。当然如果完全独立作为智能插座或开关使用,还需要为nodeMcu配一个降压电源模块(220VAC转5VDC),这样用220V就能同时给nodeMcu供电又能给控制的负载(比如灯)供电。
void main(void){
unsigned char state=0//状态
Gpio_Init()//端口初始化
Led_Init()//LED初始化
CLK_LSEConfig(CLK_LSE_ON) //打开 LSE 时钟
while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)== RESET)//等待 LSE 稳定
CLK_PeripheralClockConfig(CLK_Peripheral_BEEP, ENABLE)//使能 BEEP 外设时钟
CLK_BEEPClockConfig(CLK_BEEPCLKSource_LSE)//配置 BEEP 的时钟源为 LSE
while (1)
{
if( GPIO_READ(GPIOB,GPIO_Pin_0)==0){
switch(state){ //状态机,选择功能。
case 1:BEEP_Init(BEEP_Frequency_1KHz)//1KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_1()//LED 显示当前状态
LED2_0()
break
case 2:BEEP_Init(BEEP_Frequency_2KHz)//2KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_0()//LED 显示当前状态
LED2_1()
break
case 3:BEEP_Init(BEEP_Frequency_4KHz)//4KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_1()//LED 显示当前状态
LED2_1()
break
default:state=0
break
}
}
LED1_0()//LED 显示当前状态
LED2_0()
delay_ms(1000)//延时,让用户听一会BEEP出声
BEEP_Cmd(DISABLE)//关输出
delay_ms(500)//延时,区分两个频率的声音
state++//下一个状态
}
}
自己写的一个小程序 ,拿走不谢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)