发作品签到
专业版

智能便携体温计

工程标签

863
0
0
0

简介

基于 ESP8266 模组设计,管脚全部引出,支持 Arduino IDE 编程,支持WiFi蓝牙连接和通信,是实现物联网产品开发验证和应用设计的好帮手。

简介:基于 ESP8266 模组设计,管脚全部引出,支持 Arduino IDE 编程,支持WiFi蓝牙连接和通信,是实现物联网产品开发验证和应用设计的好帮手。
星火计划2025
复刻成本:100

开源协议

GPL 3.0

创建时间:2025-03-14 17:15:59更新时间:2025-04-20 13:40:37

描述

智能便携体温计

设计功能包括

  • GPIO 排针引出,
  • 支持 Arduino IDE 编程,
  • 支持WiFi蓝牙连接和通信,
  • 实现物联网产品开发快速验证、应用设计
  • ……

产品外观

3D 渲染图

外壳

3D 外壳文件见附件。

实物图片

外壳

--------- 2025年3月30日更新 -----------

1.侧边按键板框优化为微凹设计,提升美感和按压手感;

2.优化全铺铜为 45° 网格,(线宽10mil, 间隔10mil),提升手感与抗干扰性能;

========== 2025年4月11日 =================

1.新增功能描述;

采集 DHT11 温湿度数据并通过 MQTT 联网上传至 Home Assistant 智能家居平台;

----------------------------------

Arduino 代码

#include 
#include
#include
#include

// WiFi Configuration
const char* ssid = "xxx";
const char* password = "xxx";

// MQTT Configuration
const char* mqtt_server = "192.168.1.121";
const int mqtt_port = 1883;
const char* mqtt_user = "admin";
const char* mqtt_password = "admin";

// Device Configuration
const char* device_name = "esp8266_dht11";
const char* device_id = "livingroom_sensor";

// Topics
const char* state_topic = "home/sensor/";
const char* temp_config_topic = "home/sensor/";
const char* hum_config_topic = "home/sensor/";

// DHT Sensor
#define DHTPIN 5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
 delay(10);
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
}

 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
}

void reconnect() {
 while (!client.connected()) {
   Serial.print("Attempting MQTT connection...");
   if (client.connect(device_name, mqtt_user, mqtt_password)) {
     Serial.println("connected");
     // Send Home Assistant auto-discovery config
     sendAutoDiscoveryConfig();
  } else {
     Serial.print("failed, rc=");
     Serial.print(client.state());
     Serial.println(" try again in 5 seconds");
     delay(5000);
  }
}
}

void sendAutoDiscoveryConfig() {
 // Configuration for temperature sensor
 DynamicJsonDocument temp_config(512);
 temp_config["name"] = "Living Room Temperature";
 temp_config["device_class"] = "temperature";
 temp_config["state_topic"] = state_topic;
 temp_config["unit_of_measurement"] = "°C";
 temp_config["value_template"] = "{{ value_json.temperature }}";
 temp_config["unique_id"] = String(device_id) + "_temperature";
 temp_config["device"]["identifiers"] = device_id;
 temp_config["device"]["name"] = "Living Room Sensor";
 temp_config["device"]["manufacturer"] = "DIY";
 temp_config["device"]["model"] = "ESP8266+DHT11";
 
 char temp_config_message[512];
 serializeJson(temp_config, temp_config_message);
 client.publish(temp_config_topic, temp_config_message, true);

 // Configuration for humidity sensor
 DynamicJsonDocument hum_config(512);
 hum_config["name"] = "Living Room Humidity";
 hum_config["device_class"] = "humidity";
 hum_config["state_topic"] = state_topic;
 hum_config["unit_of_measurement"] = "%";
 hum_config["value_template"] = "{{ value_json.humidity }}";
 hum_config["unique_id"] = String(device_id) + "_humidity";
 hum_config["device"] = temp_config["device"]; // Same device info
 
 char hum_config_message[512];
 serializeJson(hum_config, hum_config_message);
 client.publish(hum_config_topic, hum_config_message, true);
}

void setup() {
 Serial.begin(115200);
 dht.begin();
 setup_wifi();
 client.setServer(mqtt_server, mqtt_port);
}

void loop() {
 if (!client.connected()) {
   reconnect();
}
 client.loop();

 delay(2000); // Wait between measurements

 float h = dht.readHumidity();
 float t = dht.readTemperature();

 if (isnan(h) || isnan(t)) {
   Serial.println("Failed to read from DHT sensor!");
   return;
}

 // Create JSON payload
 DynamicJsonDocument doc(256);
 doc["temperature"] = t;
 doc["humidity"] = h;

 char json_string[256];
 serializeJson(doc, json_string);
 
 Serial.print("Publishing: ");
 Serial.println(json_string);
 
 client.publish(state_topic, json_string, true);
}

固件烧录

  • Type-C 数据线连接开发板和电脑,按住 BOOT 键的同时,短按 RST 键,进入下载模式;
  • Arduino IDE 构建工程 - 选择目标串口对应的端口号 - 上传工程

 

YAML 文件

home assistant 配置文件添加如下代码

mqtt:
 sensor:
   - name: "Temperature"
     state_topic: "home/sensor/"
     suggested_display_precision: 2
     unit_of_measurement: "C"
     value_template: "{{ value_json.temperature }}"
   - name: "Humidity"
     state_topic: "home/sensor/"
     suggested_display_precision: 2
     unit_of_measurement: "%"
     value_template: "{{ value_json.humidity }}"

效果

========== 2025年4月20日更新 ==============

  • 新增 DS18B20 模块 IIC 四引脚接口设计;
  • 固件更新,支持 MQTT 数据上传,Home Assistant实时监测,同时 OLED 显示;

代码见附件;

测试效果见视频。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
3DShell_3DShell_PCB1_T.stl
1
2
3DShell_3DShell_PCB1_B.stl
1
3
VID_20250409_072110.mp4
4
4
VID_20250420_074523.mp4
1
5
ESP8266_DS18B20_HA_OLED.ino
1
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航