继上面的文章 使用DC 5V 继电器驱动DC 5V 电机

347 阅读2分钟

使用继电器驱动直流电机

一、材料

esp8266 NodeMCU 开发板一个

image-20230322200843974.png

5V 高电平继电器 一个

image-20230322201000274.png

直流电机一个

image-20230322201032637.png

5V的外置电源一个

image-20230322201244461.png

我这里因为没有外置5V的电源,我直接用另外一块开发板代替的,你们家里如果有那种5V电源的话,换成5V电源即可

各种线若干,我这里用的就是杜邦线

二、电路图

​ 在制作之前,我们先要画好电路图确定我们整体的接线,以下就是我的电路图,(画的不那么专业,意思意思)

电路图.jpg

三、编写代码

首先是espjs代码


// 我们这里设置 D0引脚为信号输出模式
NodeMCU.D0.mode('output')

//导入wifi模块
var wifi = require('Wifi');
var mqtt = require('modules/MQTT.min.js');
// wifi名称
var WIFI_NAME = "GZRJ123";
// wifi 参数
var WIFI_OPTIONS = {
  password: "rjzx123456",
};
console.log("connecting...");

initWifi();
/**
* @description 初始化wifi
*/
function initWifi() {
  //已连接wifi的事件
  wifi.on('connected', function () {
    wifi.getIP((err, info) => {
      if (err !== null) {
        throw err;
      }
      //获取一下所在wifi下的局域网IP地址
      console.log(info.ip, 'connected');
      connectMQTTServer();
    });
  });
  // 连接wifi
  wifi.connect(WIFI_NAME, WIFI_OPTIONS, err => {
    if (err !== null) {
      throw err;
    }
  });
}

/**
* @description 连接MQTT服务器
*/
function connectMQTTServer() {
  
  //初始化mqtt
  var client = mqtt.connect({
    host: '192.168.1.102',
    port: 1883,
    username: "user",
    password: '123456'
  });
  
  // 监听连接成功 回调
  client.on('connect', () => {
    console.log('connected success ...');
    client.subscribe('topic/DCMotor/start', { qos: 1 });
  });

  //监听消息
  client.on('message', (topic, message) => {
    console.log('message success ...');
    // 当有发布  'topic/DCMotor/start' 主题消息的时候我才接受
    if (topic == 'topic/DCMotor/start') {
      //由于我们使用的继电器是高电平继电器 那么D0输出高电平的时候 继电器就会闭合 
      var status = message == 'off' ? 0 : 1
      digitalWrite(NodeMCU.D0, status);
      // 输出成功后 发送一个操作成功的信号
      client.publish('/topic/success',{qos:1})
    }
  })
}

其次是搭建Nodejs的MQTT服务,这个上篇文章说,这里就不重复了

四、编写app连接搭建的MQTT服务控制开发板

上次是使用的是前端网页来控制这个开发板的灯亮和灯灭,今天换一下终端技术,我使用flutter 构建一个app来玩这个项目,最后的效果如下

lab.gif