当前位置: 首页 > news >正文

ESP32/ESP8266实现多点测温系统,手机端(网页)查看实时温度

目录

一、前言

二、工具

三、原理

四、代码实现

1、esp8266的使用

2、ds18b20的使用

前提:

3、oled屏使用

4、光敏传感器使用

五、网页使用

 六、总结


效果演示

esp8266物联网测试

一、前言

基于物联网课设设计的小项目,可供参考。

本项目使用ESP8266作为主控器实现一个简单的测温系统,主要功能有:测量环境温度并在屏幕上显示,实现昼夜更换减少耗能,超过温度会报警。

数据是基于MQTT协议通信的,作者想编写一个MQTT协议的APP,但是难度过大,并且没接触过android studio,所以用一个可以接受MQTT的网站来实现数据收集。

二、工具

arduino ide

esp32(esp8266)单片机

ds18b20温度传感器

OLED显示屏

光敏传感器

物联网网站

三、原理

        esp8266读取ds18b20数据并发布到指定话题,读取光敏传感器的状态来检测昼夜变换来实现系统的关闭与开启(白天关闭 False/0 夜晚开启 True/1),并在oled上显示温度和状态,并且可以在网页端查看数据和状态。

四、代码实现

1、esp8266的使用

        作者使用的是arduino ide进行代码上传的,相关代码可以看博主前几篇文章

学习使用Arduino IDE驱动ESP8266/32单片机进行wifi通信-CSDN博客文章浏览阅读685次,点赞18次,收藏12次。官网下载arduino ide准备一个esp8266单片机或esp32。通过arduino 进行esp8266的驱动和wifi通信。 https://blog.csdn.net/2301_76165902/article/details/146050322?fromshare=blogdetail&sharetype=blogdetail&sharerId=146050322&sharerefer=PC&sharesource=2301_76165902&sharefrom=from_link对于wifi和MQTT通信的基本操作都有写。

2、ds18b20的使用

前提:

安装库「OneWire」

头文件为

#include <OneWire.h>

网上好多教程都安装了「DallasTemperature」库或者ds18b20集成库,作者安装后在最新版arduino上编译不通过,只有OneWire原始库来驱动传感器才能编译通过,作者不知道原因,可能使编译器版本太新导致的,如果有解决办法欢迎评论区讨论。

 作者使根据示例 DS18x20_Temperature 文件去修改的

float DS18B20()
{
  byte i;
  byte type_s = 0;
  byte data[9];
  byte addr[8];
  float celsius;
  while( !ds.search(addr));

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(100);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
     default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  Serial.print("  Temperature = ");
  Serial.println(celsius);

  return celsius;
}

返回值为温度(摄氏度)

如果有不懂的地方可以去示例中查看。

3、oled屏使用

头文件为

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

去管理库里安装相应的依赖

参数设置

const int I2C_ADDR = 0x3c;              // oled屏幕的I2c地址
#define SDA_PIN 4                       // SDA引脚,默认gpio4(D2)
#define SCL_PIN 5                       // SCL引脚,默认gpio5(D1)

Adafruit_SSD1306 oled(128, 64, &Wire,-1);

初始化

oled.begin(SSD1306_SWITCHCAPVCC,0x3C);
  oled.setTextColor(WHITE);//开像素点发光
  oled.clearDisplay();//清屏
  

显示文字 

oled.setTextSize(1); //设置字体大小  
    oled.setCursor(35, 5);//设置显示位置
    oled.println("-jiezz-");
    oled.display(); // 开显示

在回调函数里显示温度 

for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
    oled.setCursor(15+i*12, 30);//设置显示位置
    oled.println((char)payload[i]);
    oled.display(); // 开显示

  }

这里的位置如果不懂就去网上查一查不同尺寸显示屏的参数,长和宽。

4、光敏传感器使用

光敏电阻通过光强来改变带电阻改变输出电压。

上面有四个引脚VCC,GND,AO(模拟输出),DO(数字输出),只用DO即可,会在光强时输出0,光弱时输出1,阈值可以通过电位器去调节。

简单的用一个引脚去读取即可

pinMode(D3,INPUT);

Serial.println(digitalRead(D3));

 可是充当系统的状态量

这些传感器都驱动好了,之后就是整合完成通信即可。

如果需要完整代码可以私信博主,这里就不占篇幅了。

五、网页使用

(公测)KZone喵星球 - 探索AI与编程的乐趣

添加三个话题

/esp8266/wendu  存放温度

/esp8266/state  存放状态

/esp8266/msg   存放信息

在可视化面板添加温度测量

右侧绑定话题

 

添加一个状态灯,绑定state话题

再添加一个输入框,可以和oled进行交互显示

 

到这里就能完成系统的基本功能了

 六、总结

对于云平台可以用阿里云或者腾讯云这些包装好的服务器,会提供app或者小程序使用,可视化效果更好,如果有需要可以试一试,本项目只是娱乐,无任何用途。

如果有问题请评论区指正。

相关文章:

  • 第十八篇 SQL优化之逻辑结构:用仓库管理员思维优化数据库
  • 展示深拷贝与移动语义的对比
  • 【DuodooTEKr】物联DTU设备与Odoo18 Maintenance设备模块IOT模块集成技术方案
  • Hadoop的运行模式
  • Leetcode 3478. Choose K Elements With Maximum Sum
  • 内存泄漏出现的时机和原因,如何避免?
  • 抽奖系统测试报告
  • ROS知识篇---ROS的编译配置文件
  • 云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之云快充协议模拟器使用手册
  • Java 面试题
  • 常见的三种锁
  • shiro550-cve-2016-4437复现
  • Java数据结构第二十期:解构排序算法的艺术与科学(二)
  • 2025 - GDB 盲调笔记--调试 “无调试符号“ “无调试信息“ 的三方程序
  • MyBatis-Plus分页控件使用及使用过程发现的一个坑
  • 从0开始的操作系统手搓教程31:完成硬盘驱动程序
  • 恋爱循环2025年3月9日
  • 基于RNN+微信小程序+Flask的古诗词生成应用
  • C语言学习day25:WinAPI编程进阶07-游戏辅助时钟周期事件、定时器消息
  • 带宽计算公式
  • 如何做网站微信小程序/nba今日数据
  • 免费做网站的/响应式网站模板的应用
  • 中国建设银行吉林分行网站/seo关键词优化指南
  • 营销型网站建设的价格/网络营销工程师是做什么的
  • 网站建设阝金手指信誉/google chrome浏览器
  • 萍乡做网站的公司有哪些/北京seo公司网站