微信小程序可自定义单片机温湿度阈值(基于esp32c3+onenet+微信小程序)

这篇具有很好参考价值的文章主要介绍了微信小程序可自定义单片机温湿度阈值(基于esp32c3+onenet+微信小程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​ 前段时间有个粉丝问我能不能出一个微信小程序调节阈值的教程,我就下班之余在原来的基础上改进一下,因为是修改阈值,这里我就用继电器控制风扇、温度达到一定阈值控制风扇启动来做例子。这个成功了,其他阈值修改都是依样画葫芦啦。

​ 之前博客 :基于物联网的环境调节系统(ESP32-C3+Onenet+微信小程序) 很多步骤其实跟这个差不多,对下面一些操作不懂的可以跳回去看。

1、 Onenet

那就先从onenet开始,这里还是继续采用老版的多协议接入,我使用的是mqtt协议。建了四个数据流,方便传值
esp32 微信小程序,微信小程序,ESP32-C3,微信小程序,物联网,嵌入式硬件

2、Arduino IDE

这里我还是继续采用Arduino IDE编译环境,可能以后会使用IDF环境了,现在上班使用的是IDF环境。跟onenet建立MQTT连接的方式还是跟以前一样,这里我就不啰嗦写进去了

2.1头文件

这里比以前多了"Ticker.h" 是定时器 ArduinoJson.h 是解析json数据

#include <WiFi.h>
#include "DHT.h"
#include "PubSubClient.h"
#include "Ticker.h"
#include <ArduinoJson.h> 
2.2定义接口、阈值
///* 使用0.96寸的OLED屏幕需要使用包含这个头文件 */
#include "SSD1306Wire.h"
///* 设置oled屏幕的相关信息 */  //有一些引脚接口不支持I2C 
const int I2C_ADDR = 0x3c;              // oled屏幕的I2c地址
#define SDA_PIN 4                       // io4 
#define SCL_PIN 5                       // io5

///* 新建一个oled屏幕对象,需要输入IIC地址,SDA和SCL引脚号 */
SSD1306Wire oled(I2C_ADDR, SDA_PIN, SCL_PIN);
#define DHTPIN 7     
#define DHTTYPE DHT11    // DHT 11
DHT dht(DHTPIN, DHTTYPE);
int shan =0;     //设备状态
int newshan =0;     //应用程序下发状态
int  threshold=32;  //温度阈值
const int fengshan=1; //继电器in接口
2.3 setup函数

​ 一定要定义继电器的引脚输出,不然没反应的

 pinMode(fengshan, OUTPUT);
  Serial.begin(115200);


  setupWifi();   //调用函数连接WIFI
  Serial.print(F("DHT11 test!"));
  dht.begin();   
    /*  oled屏幕初始化 */
  oled.init();
  oled.flipScreenVertically();          // 设置屏幕翻转
  oled.setContrast(255);                // 设置屏幕亮度
  drawRect();                           // 测试屏幕显示
  oled.clear(); oled.display();         // 清除屏幕                                      
  client.setServer(mqtt_server, port);                   //设置客户端连接的服务器,连接Onenet服务器, 使用6002端口
  client.connect(mqtt_devid, mqtt_pubid, mqtt_password); //客户端连接到指定的产品的指定设备.同时输入鉴权信息
  if (client.connected())
  {
    Serial.print("OneNet is connected!");//判断以下是不是连好了.
  }
  //client.setCallback(callback);                                //设置好客户端收到信息是的回调
  client.setCallback(callback); //订阅命令下发主题
  tim1.attach(5, sendTempAndHumi);                            //定时每5秒调用一次发送数据函数sendTempAndHumi

2.4loop()函数

​ 这里我写好了判断 当它超过阈值或者微信小程序下发开启的时候控制风扇启动,反之就关闭,这样就不会造成冲突。

 float t = dht.readTemperature(); 
  oled.setFont(ArialMT_Plain_16);       // 设置字体
  oled.drawString(0,0, "Temp:" +String(t)+"C"); // 将要显示的字母写入缓存
  oled.drawString(0,20, "Humi:"+String(h)+"%" ); // 将要显示的字母写入缓存
  oled.drawString(0,40, "threshold:"+String(threshold)); // 将要显示的字母写入缓存
  oled.display();                       // 将缓存里的文字在屏幕上显示
  oled.clear();
 if(t>threshold || newshan ==1){
     digitalWrite(fengshan, HIGH);  //
     shan =1;
     Serial.print("open");
  }
  
  else{
      digitalWrite(fengshan, LOW);
       shan = 0;
       Serial.print("close");
  }
2.5 callback函数

​ 发送主题函数不变,这里是重头戏,以前都是接收字符串,获取0-10之间的值,这次是因为要修改阈值,我这里改进了一下,使用了JSON数据,利用键值对来实现操作

//收到主题下发的回调, 注意这个回调要实现三个形参 1:topic 主题, 2: payload: 传递过来的信息 3: length: 长度
void callback(char *topic, byte *payload, unsigned int length)
{
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
   // Handle incoming message here
  String message = "";
  for (int i = 0; i < length; i++) {
    message += (char)payload[i];
  }

  Serial.println("Received message: " + message);
   // Parse message as JSON
  DynamicJsonDocument doc(1024);
  DeserializationError error = deserializeJson(doc, payload, length);
  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.c_str());
    return;
  }
  // Check which command was received
  if (doc.containsKey("修改温度阈值")) {
    threshold = doc["修改温度阈值"];



    Serial.println("Executing temperature threshold update operation.");
    Serial.print(threshold);
  } else if (doc.containsKey("风扇")) {
    newshan  =doc["风扇"];
    Serial.print(F("\n"));
    Serial.print(newshan);
   
  } else {
    // Unknown command
    Serial.println("Unknown command received.");
  }
    // Get the new threshold value

}

esp32 微信小程序,微信小程序,ESP32-C3,微信小程序,物联网,嵌入式硬件

3、微信小程序

获取数据和获取设备信息跟以前一样,不一样的是获取数据函数里面的东西,界面也跟之前不一样,修改了样式,

我还采用了弹出框来修改阈值。点击温度右边的icon就可以弹出来

esp32 微信小程序,微信小程序,ESP32-C3,微信小程序,物联网,嵌入式硬件

esp32 微信小程序,微信小程序,ESP32-C3,微信小程序,物联网,嵌入式硬件

 postdata:function(){
    var that =this;
    const name =that.data.devicename;
    const value=that.data.devicevalue;
    wx.request({
      url: 'https://api.heclouds.com/cmds?device_id=***********',
      //设备ID
      //api-key
      header:{
        'content-type':'application/json',
        //
        "这里是api-key":"*************"
      },

      method :"POST",
      data:{[name]:value}, //数据指令
      success(res){
        wx.showToast({
          title: '已发送控制指令',
          image:"/images/gong.png",
          duration:2000,
          mask:true
        })
        console.log("控制成功,已完成控制指令")
        console.log(res)
        console.log(res.data);
      },
      fail(res){
        wx.showToast({
          title: '请求失败',
          image:"/images/errer.png",
          duration:2000,
          mask:true
        })
        console.log("请求失败")
        console.log(res)
        console.log(res.data);
      }
    })
  },

设备名称和数值是根据风扇按钮和阈值来修改的

 confirmModal: function () {
    const value = this.data.tempThreshold;
    if (isNaN(value)) {
      wx.showToast({
        title: '输入内容无效',
        icon: 'none'
      })
    } else {
      this.setData({
        showModal: false,
        tempThreshold: value,
        devicename:"修改温度阈值",
        devicevalue:value
      });
      wx.showToast({
        title: '设置成功',
        icon: 'success'
      })
      var that =this
      that.postdata();
    }
  },
  //风扇状态
   btn_feng:function(e){
    if(e.detail.value ==true){
      this.setData({
        devicename:"风扇",
        devicevalue:1
      });
      var that =this
      that.postdata();
    }
      
    else{
      this.setData({
        devicename:"风扇",
        devicevalue:0
      });
      var that =this
      that.postdata();
    }
},

最后面来看一下实际效果吧

微信小程序可自定义单片机温湿度阈值文章来源地址https://www.toymoban.com/news/detail-725332.html

到了这里,关于微信小程序可自定义单片机温湿度阈值(基于esp32c3+onenet+微信小程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 105-基于stm32单片机智能家居温湿度烟雾监测人体红外防盗报警系统Proteus仿真+程序源码

    一:功能介绍 1、采用stm32单片机+LCD1602+DHT11温湿度传感器+烟雾传感器+按键开关+蜂鸣器+LED灯,制作一个智能家居温湿度烟雾监测人体红外防盗报警系统; 2、通过按键开关来模拟人体红外检测触发,并且可以通过按键开关来设置正在布防和停止布防状态,布防状态下,当检测

    2024年02月03日
    浏览(67)
  • 51单片机项目(7)——基于51单片机的温湿度测量仿真

    本次做的设计,是利用DHT11传感器,测量环境的温度以及湿度,同时具备温度报警的功能:利用两个按键,设置温度阈值的加和减,当所测温度大于温度阈值的时候,蜂鸣器就会响起,进行报警提示。 同时系统还有一个LCD1602屏幕,用于显示实时的温度湿度,还可以显示温度阈

    2024年02月10日
    浏览(51)
  • 79、基于STM32单片机DHT11温湿度无线蓝牙手机APP监控报警系统(程序+原理图+PCB图+设计资料+参考论文+开题报告+元器件清单等)

    摘 要 温湿度控制已成为当今社会研究的热门项目。是工农业生产过程中必须考虑的因素。作为最常见的被控参数。温度和湿度已经不再是相互独立的物理量,而应在系统中综合考虑。广泛应用于实验室、大棚、花圃、粮仓乃至土壤等各个领域。而传统的温湿度控制则利用湿

    2024年02月11日
    浏览(72)
  • 基于51单片机温湿度传感器

    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通 空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制 相对湿度和温度测量 全部校准,数字输出 长期稳定性 超长的信号传输距离:20米 超低能耗:休眠 4 引脚

    2023年04月10日
    浏览(91)
  • 51单片机——DHT11温湿度模块

    一.DHT11介绍 型号 测量范围 测湿精度 测温精度 DHT11 20-90%RH  0-50摄氏度°C 士5%RH   士2℃ 二.DHT11接口说明 1.建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。 2.VCC接单片机的5v,GND接GND,DAT接单片机的IO口。 三.电源引脚 DHT11的供电电压为

    2024年02月14日
    浏览(58)
  • 单片机项目分享 Stm32 WIFI智能家居温湿度和烟雾检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(68)
  • 51单片机(DHT11温湿度传感器)

    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通 空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制 相对湿度和温度测量 全部校准,数字输出 长期稳定性 超长的信号传输距离:20米 超低能耗:休眠 4 引脚

    2024年02月02日
    浏览(72)
  • 基于51单片机的DHT11温湿度检测

           系统提供2种工作模式,在显示模式中:1. 显示温湿度 2.超出温湿度限定的范围时蜂鸣器,LED 实现报警 3.加减温度时 显示标志 ;在设置模式中:分别设置 温湿度上下限        硬件: 单片机AT89C52 , 液晶LCD1602显示器 , 温湿度传感器DHT11 , 存储器AT24C02        else:

    2023年04月22日
    浏览(59)
  • 0230-基于单片机的温湿度监测电路设计

    1、采用51/52单片机作为主控芯片; 2、采用DHT11传感器,温度范围0℃~50℃,湿度范围10%~90%RH 3、采用1602液晶同时显示:温度+湿度+报警参数; 4、采用按键设置温度和湿度的报警阈值,具有掉电保存功能,保存在STC单片机内部; 5、当超过阀值时,蜂鸣器报警、指示灯报警(温

    2024年02月21日
    浏览(48)
  • 97、基于stm32单片机智能药箱药盒温湿度体温光照时钟wifi手机APP监控(程序+原理图+PCB源文件+手机APP源码+硬件设计资料+元器件清单等)

    单片机类型选择 方案一:可以使用现在比较主流的单片机STC89C5单片机进行数据处理。这款单片机具有的特点是内存和51的单片机相比多了4KB内存,但是价格和51单片机一样。并且支持数据串行下载和调试助手。此款单片机是有ATMEL公司生产,可用5V电压编程,而且擦写时间仅需

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包