esp32,继电器,充电宝,结合mqtt服务器实现简单的远程点火
九又2024/07/29原创 计算机电子学软件综合 IP:甘肃
关键词
远程点火esp32

这里采用Arduino 编写/烧录程序 未来想着在此基础上添加推力采集部分(推力采集部分写进新的核心里去,以防止继电器控制函数带来的单核阻塞)

#include <PubSubClient.h>

#include <WiFi.h>
#include <SimpleTimer.h>

const char *mqtt_broker = "192.168.2.3";//mqqt服务器地址
const char *mqtt_username = "mqtt";//用户,密码
const char *mqtt_password = "mqtt";
const int mqtt_port = 1883;//端口
String mqtt_topic = "";
String mqtt_data = "";
boolean mqtt_status = false;
String project = "esp";
volatile boolean qi;//继电器控制函数

WiFiClient espClient;
PubSubClient client(espClient);
void callback(char *topic, byte *payload, unsigned int length) {//mqtt消息读取
  String data = "";
  for (int i = 0; i < length; i++) {
    data = String(data) + String((char) payload[i]);
  }
  mqtt_topic = String(topic);
  mqtt_data = data;
  mqtt_status = true;
}

SimpleTimer timer;

extern "C"
{
uint8_t temprature_sens_read();
}
uint8_t temprature_sens_read();

void Simple_timer_1() {//状态报告
  client.publish("状态",String("检验是否连接,并报告状态").c_str());
  client.publish("状态",String(String("mac地址:") + String(WiFi.macAddress())).c_str());
  client.publish("状态",String(String("温度:") + String((temprature_sens_read() - 32) / 1.8)).c_str());
}

void qibao()//继电器函数
{


    digitalWrite(13,LOW);//打开
    delay(1000);

    digitalWrite(13,HIGH);//复位    
     

}

void setup(){
  pinMode(21, OUTPUT);//声明21引脚使用(sda/scl)
  pinMode(22, OUTPUT);//(sda/scl)
  pinMode(13, OUTPUT);//继电器控制开关
  digitalWrite(13,HIGH);//我的继电器为高电平关闭,低电平打开(这里事先设置为高电平,防止微弱的闭合)(应在上电一段时间且对应继电器状态灯为关闭后在安入点火头)
  //或者建议在安全距离外选择接入点火头
 


  Serial.begin(9600);//串口开启(后期建议放入线程来提升主频)
  WiFi.begin("1402", "msm53547880");//wifi连接 wifi名,密码
  while (WiFi.status() != WL_CONNECTED) {//wifi等待连接
    delay(500);
    Serial.print(".");
  }
  Serial.println("Local IP:");
  Serial.print(WiFi.localIP());

  Serial.println("hello");
  Serial.println(WiFi.status());
  Serial.println(WiFi.localIP());
  client.setServer(mqtt_broker, mqtt_port);
  client.setCallback(callback);
  while (!client.connected()) {//mqtt连接
    String client_id = "esp-client-";
    client_id += String(WiFi.macAddress());
    Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());
    if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
      Serial.println("Public emqx mqtt broker connected");
    } else {
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);
  }
   
}


  timer.setInterval(500L, Simple_timer_1);//每五秒启动Simple_timer_1(报告函数)

  client.subscribe("报告");//发布订阅
  client.subscribe("状态");
  client.subscribe("数据");
  client.subscribe("引爆");
}

void loop(){
  client.loop();

  client.loop();

  timer.run();

  if (mqtt_status) {
    if (String(mqtt_topic).equals("报告")) {//判断消息传回
    Serial.println(mqtt_data);
    client.publish("数据",String("以接收").c_str());//测试消息服务器用
    mqtt_status = false;
    }
    if (String(mqtt_topic).equals("报告")) {//判断消息传回
      Serial.println(mqtt_data);
      if(mqtt_data=="001")
      {
        client.publish("数据",String("以收到001代码,准备引爆").c_str());
        qibao();
        client.publish("数据",String("以接收,执行完毕").c_str());
      }                

     
    mqtt_status = false;
    }
  }

  //client.publish("esp",String("检验是否连接").c_str());

}

(部分为省事,直接从一个可视化编程软件复制过来了)


由于继电器使用电压为5v,所以需要一个外接电源

VID_20240729_185313.mp4 点击下载

IMG_20240729_202139.jpg

大体样子




VID_20240729_202437(0).mp4 点击下载

实验点火部分


屏幕截图 2024-07-29 211000.png

未来可以结合mqtt客户端,或者开发内嵌支持mqtt的应用实现便捷的联网点火/实时数据采集与记录

来自:计算机科学 / 计算机电子学计算机科学 / 软件综合动手实践:实验报导
0
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

九又
进士 机友
文章
6
回复
14
学术分
0
2024/07/23注册,15时6分前活动

没什么简介?时而整整软件时而玩玩硬件......有时玩玩火箭。 有一个个人博客:XXXXXXXXXXXXXXXXat (访问时温柔点,服务器挺不住)

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:甘肃
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}