ESP32,制作一个遥控点火玩具

最近想做一个遥控点火玩具,过年的时候可以让娃拿出手机遥控点炮,绝对能成为全村最亮的仔。

实际也挺简单,使用的东西有ESP32开发板,1838T红外接收器,一个继电器,一个钨丝。

原理图如下。 

 GPIO17接红外out端口,接收红外数据,当接收到开关信息后,将GPIO12设置为高电压或者低电压。

继电器IN端子接GPIO12,根据GPIO12的电平信号打开或者关闭继电器。

钨丝,一段接电压负极。一段接继电器NO(常开)点。继电器COM端接电源正极。

当GPIO12输出为高电平,继电器闭合,NO点和COM点导通,钨丝开始工作,变热。

GPIO12输出低电平,继电器打开,NO和COM端口,钨丝断电冷却。

实物图见下图:

使用Arduino2.3开发,具体代码如下。后期考虑加上网络远程控制和蓝牙控制功能。目前只有红外控制功能。

#include <IRremote.hpp>
#define IR_RECEIVE_PIN  17  //红外接收器使用 gpio17  型号,1838T,三个引脚分别是out gnd vcc
int io=12;                  //控制点 gpio12 
bool state=false;           //默认关闭

//初始化
void setup()
{
  pinMode(io,OUTPUT);                                     //输出模式
  digitalWrite(io,LOW);                                   //输出低电压
  Serial.begin(9600);                                     //串口初始化
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  //监听红外
}
//主循环
void loop() {
  if (IrReceiver.decode()) {                                      //如果有数据
      if(IrReceiver.decodedIRData.decodedRawData==0xBF40FF00){    //如果是特定的信号
        if(state){                                                //如果当前是true
          state=false;                                            //切换为false
          digitalWrite(io,LOW);                                   //低电压输出
        }
        else{                                                     //如果当前是false
          state=true;                                             //切换为true
          digitalWrite(io,HIGH);                                  //高电压输出
        }
        Serial.println("rev data");                               //输出到串口,调试用
        Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX); // 输出到串口,调试用
      }
    
      IrReceiver.resume();                                        //清空值,下次从新读取
  }
 
  delay(300);                                                     //稍微等待一下
}