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

全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)

1. 项目概述

本文详细介绍了一个基于STM32微控制器和AWS IoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点:

  • 使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑
  • 采用DHT22数字温湿度传感器,精确采集环境温湿度数据
  • 通过ESP8266 WiFi模块实现无线通信,支持远程访问
  • 采用MQTT协议与AWS IoT Core云平台通信,实现数据上报和远程控制
  • 提供Web界面和手机APP,实现便捷的远程监控和控制
  • 集成继电器控制模块,可直接控制制冷/制热设备
  • 本地OLED显示屏,实时显示当前温湿度和设定温度

该项目集成了嵌入式开发、无线通信、云计算和移动应用等多项技术,是一个典型的物联网应用案例。通过这个项目,用户可以随时随地监控和调节室内温度,提高生活舒适度和能源使用效率。

2. 系统设计

2.1 硬件设计

智能温控器的硬件系统主要由以下模块组成:

  • STM32F103: 主控制器,负责数据采集、处理和控制
  • DHT22: 高精度数字温湿度传感器,用于采集环境温湿度数据
  • OLED显示屏: 128x64像素,显示当前温湿度、设定温度和工作状态
  • ESP8266: WiFi模块,用于无线通信,支持Station和AP模式
  • 继电器: 控制制冷/制热设备的开关,支持高达10A电流
  • 按键模块: 用于本地温度设置和模式切换
  • LED指示灯: 指示设备工作状态

2.2 软件架构

软件系统采用分层架构设计,主要包括以下几个层次:

 

  • 应用层: 实现用户界面和交互逻辑

    • Web界面: 基于HTML5/CSS3/JavaScript开发,支持PC和移动端访问
    • 手机APP: 使用React Native开发,支持iOS和Android平台
    • 本地显示与控制: 实现OLED显示和按键控制功能
  • 业务逻辑层: 实现核心业务功能

    • 温度控制算法: PID控制算法,根据当前温度和目标温度调节制冷/制热设备
    • 数据处理: 温湿度数据滤波、统计分析、异常检测等
    • 设备状态管理: 管理设备工作模式、定时任务等
  • 通信层: 实现设备与云平台的数据交互

    • MQTT客户端: 实现MQTT协议,负责数据上报和指令接收
    • WiFi管理: 管理WiFi连接,支持SmartConfig配网
    • AWS IoT SDK: 集成AWS IoT设备SDK,实现设备认证、安全通信等功能
  • 驱动层: 实现硬件模块的驱动程序

    • DHT22驱动: 实现温湿度数据采集
    • OLED驱动: 实现显示屏控制
    • ESP8266驱动: 实现AT指令集封装
    • 继电器驱动: 实现继电器开关控制
  • 硬件抽象层: 提供硬件相关的底层接口

    • GPIO: 通用输入输出接口
    • I2C: 用于OLED显示屏通信
    • UART: 用于ESP8266通信
    • Timer: 用于定时任务和延时功能

3. 代码实现

本节将展示智能温控器的核心代码实现,包括温度采集、MQTT通信和温度控制算法。每段代码都附有详细说明,以便读者理解。

3.1 温度采集

以下代码实现了从DHT22传感器读取温度数据的功能:

#include "dht22.h"float readTemperature() {uint8_t data[5] = {0};// 发送起始信号DHT22_Start();// 等待DHT22响应if (DHT22_CheckResponse() == 0) {// 读取40位数据for (int i = 0; i < 5; i++) {data[i] = DHT22_ReadByte();}// 校验数据if ((data[0] + data[1] + data[2] + data[3]) == data[4]) {// 计算温度值float temperature = (data[2] & 0x7F) * 256 + data[3];temperature /= 10.0;// 处理负温度if (data[2] & 0x80) {temperature *= -1;}return temperature;}}// 读取失败,返回错误值return -999.0;
}

说明:

  1. 函数首先发送起始信号,然后等待DHT22传感器响应。
  2. 如果响应正常,读取40位数据(5个字节)。
  3. 对读取的数据进行校验,确保数据完整性。
  4. 将读取的数据转换为实际温度值,考虑了负温度的情况。
  5. 如果读取失败,返回一个错误值(-999.0)。

3.2 MQTT通信

以下代码实现了与AWS IoT平台的MQTT通信功能:

#include "mqtt_client.h"
#include "esp8266.h"// 发布温度数据到MQTT主题
void mqtt_publish_temperature(float temperature) {char payload[50];snprintf(payload, sizeof(payload), "{\"temperature\": %.2f}", temperature);mqtt_publish("device/temperature", payload, strlen(payload), 0, 0);
}// MQTT消息回调函数
void mqtt_callback(char* topic, byte* payload, unsigned int length) {char message[100];memcpy(message, payload, length);message[length] = '\0';if (strcmp(topic, "device/setTemp") == 0) {float setTemp = atof(message);updateSetTemperature(setTemp);}
}// 设置并连接MQTT客户端
void setupMQTT() {mqtt_client.setServer(MQTT_BROKER, MQTT_PORT);mqtt_client.setCallback(mqtt_callback);while (!mqtt_client.connected()) {if (mqtt_client.connect("STM32TempController", MQTT_USERNAME, MQTT_PASSWORD)) {mqtt_client.subscribe("device/setTemp");} else {delay(5000);}}
}

说明:

  1. mqtt_publish_temperature函数用于将温度数据发布到MQTT主题。它将温度值格式化为JSON字符串,然后发布到"device/temperature"主题。
  2. mqtt_callback函数处理接收到的MQTT消息。当收到"device/setTemp"主题的消息时,它会更新设定温度。
  3. setupMQTT函数用于初始化MQTT连接,包括设置MQTT服务器、设置回调函数,以及建立连接并订阅相关主题。
  4. 使用while循环确保MQTT客户端成功连接,如果连接失败会每5秒重试一次。
  5. 成功连接后,订阅"device/setTemp"主题以接收温度设置指令。

3.3 温度控制算法

以下代码实现了基于PID算法的温度控制:

#include "pid.h"// PID参数定义
#define KP 2.0   // 比例系数
#define KI 0.5   // 积分系数
#define KD 1.0   // 微分系数PID_TypeDef tempPID;// 初始化PID控制器
void initTempControl() {PID_Init(&tempPID, KP, KI, KD, PID_DIRECTION_DIRECT);PID_SetOutputLimits(&tempPID, 0, 100);  // 输出限制在0-100%
}// 计算温度控制输出
int computeTempControl(float currentTemp, float setTemp) {PID_Compute(&tempPID, currentTemp, setTemp);return (int)PID_GetOutput(&tempPID);
}// 执行温度控制
void executeTempControl(int controlOutput) {if (controlOutput > 0) {// 制冷模式setCooling(controlOutput);setHeating(0);} else {// 制热模式setCooling(0);setHeating(-controlOutput);}
}

说明:

  1. 定义了PID控制器的参数:KP(比例系数)、KI(积分系数)和KD(微分系数)。这些参数需要根据实际系统进行调整以获得最佳控制效果。
  2. initTempControl函数初始化PID控制器,设置PID参数和输出限制。
  3. computeTempControl函数根据当前温度和设定温度计算控制输出。输出范围为0-100,表示控制强度的百分比。
  4. executeTempControl函数根据PID控制器的输出执行实际的温度控制。正值表示需要制冷,负值表示需要制热。
  5. 控制输出通过setCoolingsetHeating函数(未显示)来控制制冷和制热设备的工作强度。

3.4 主循环

以下是设备主循环的代码实现:

#include "main.h"void setup() {initHardware();initTempControl();setupMQTT();
}void loop() {// 读取当前温度float currentTemp = readTemperature();// 获取设定温度float setTemp = getSetTemperature();// 计算控制输出int controlOutput = computeTempControl(currentTemp, setTemp);// 执行温度控制executeTempControl(controlOutput);// 更新显示updateDisplay(currentTemp, setTemp);// 发布温度数据到MQTTmqtt_publish_temperature(currentTemp);// 处理MQTT消息mqtt_client.loop();// 延时delay(5000);  // 每5秒执行一次循环
}

说明:

  1. setup函数在设备启动时执行一次,用于初始化硬件、温度控制器和MQTT连接。
  2. loop函数是主循环,会不断重复执行。
  3. 在每次循环中,程序会读取当前温度、获取设定温度、计算并执行温度控制。
  4. 更新本地显示,显示当前温度和设定温度。
  5. 将当前温度数据发布到MQTT主题。
  6. 调用mqtt_client.loop()处理接收到的MQTT消息。
  7. 每次循环后延时5秒,以控制采样和控制频率。

3.5 Web端实现

Web端采用React框架开发,实现了温度监控和远程控制功能。以下是关键组件和代码示例:

3.5.1 温度显示组件
import React, { useState, useEffect } from 'react';
import { Line } from 'react-chartjs-2';const TemperatureChart = () => {const [tempData, setTempData] = useState([]);useEffect(() => {// 从API获取温度数据const fetchData = async () => {const response = await fetch('/api/temperature');const data = await response.json();setTempData(data);};fetchData();// 每5分钟更新一次数据const interval = setInterval(fetchData, 300000);return () => clearInterval(interval);}, []);const chartData = {labels: tempData.map(d => d.time),datasets: [{label: '温度 (°C)',data: tempData.map(d => d.temperature),fill: false,borderColor: 'rgb(75, 192, 192)',tension: 0.1}]};return (<div><h2>温度趋势图</h2><Line data={chartData} /></div>);
};export default TemperatureChart;

这个组件使用react-chartjs-2库创建了一个温度趋势图。它通过useEffect钩子从API获取温度数据,并每5分钟更新一次。

这个组件允许用户设置目标温度。它使用useState钩子管理设定温度的状态,并通过API将新的温度设置发送到服务器。

3.5.3 主应用组件
import React from 'react';
import TemperatureChart from './TemperatureChart';
import TemperatureControl from './TemperatureControl';const App = () => {return (<div><h1>智能温控器控制面板</h1><TemperatureChart /><TemperatureControl /></div>);
};export default App;

主应用组件整合了温度显示和控制组件,构成了完整的Web控制界面。

3.5.4 API路由

在后端,我们使用Express.js来处理API请求。以下是主要的API路由实现:

const express = require('express');
const router = express.Router();
const mqtt = require('mqtt');const client = mqtt.connect('mqtt://your-aws-iot-endpoint');// 获取温度数据
router.get('/api/temperature', async (req, res) => {try {// 这里应该从数据库或缓存中获取温度数据const tempData = await getTemperatureData();res.json(tempData);} catch (error) {console.error('获取温度数据失败:', error);res.status(500).json({ error: '获取温度数据失败' });}
});// 设置温度
router.post('/api/setTemperature', (req, res) => {const { temperature } = req.body;// 通过MQTT发送温度设置指令client.publish('device/setTemp', JSON.stringify({ temperature }), (err) => {if (err) {console.error('发送温度设置失败:', err);res.status(500).json({ error: '温度设置失败' });} else {res.json({ message: '温度设置成功' });}});
});module.exports = router;

这段代码实现了两个主要的API端点:

  1. GET /api/temperature:获取温度数据
  2. POST /api/setTemperature:设置目标温度

3.5.5 安全性考虑

在实际部署中,我们需要考虑Web应用的安全性。以下是一些关键的安全措施:

  1. 使用HTTPS:确保所有的通信都是加密的。
  2. 实现用户认证:使用JWT(JSON Web Tokens)进行用户认证。
  3. 输入验证:对所有用户输入进行验证,防止注入攻击。
const https = require('https');
const fs = require('fs');const options = {key: fs.readFileSync('path/to/key.pem'),cert: fs.readFileSync('path/to/cert.pem')
};https.createServer(options, app).listen(443, () => {console.log('HTTPS server running on port 443');
});
const jwt = require('jsonwebtoken');// 中间件:验证JWT token
const authenticateToken = (req, res, next) => {const authHeader = req.headers['authorization'];const token = authHeader && authHeader.split(' ')[1];if (token == null) return res.sendStatus(401);jwt.verify(token, process.env.TOKEN_SECRET, (err, user) => {if (err) return res.sendStatus(403);req.user = user;next();});
};// 使用中间件保护路由
router.get('/api/temperature', authenticateToken, async (req, res) => {// ...
});
const { body, validationResult } = require('express-validator');router.post('/api/setTemperature', body('temperature').isFloat({ min: 16, max: 30 }),(req, res) => {const errors = validationResult(req);if (!errors.isEmpty()) {return res.status(400).json({ errors: errors.array() });}// 处理请求...}
);

4.项目总结

本智能温控器项目成功地实现了以下目标:

  1. 准确的温度采集:使用DHT22传感器实现了高精度的温度数据采集。
  2. 智能温度控制:通过PID算法实现了精确的温度控制,可以根据设定温度自动调节制冷或制热设备。
  3. 远程监控和控制:利用MQTT协议和AWS IoT平台,实现了设备的远程监控和控制功能。
  4. 用户友好界面:通过Web界面和移动APP,为用户提供了直观、方便的操作界面。

在项目开发过程中,我们遇到并解决了以下挑战:

  1. 温度控制算法的调优:PID参数的调整需要反复试验,以达到最佳的控制效果。
  2. MQTT通信的稳定性:在网络不稳定的情况下,需要实现重连机制以确保通信的可靠性。
  3. 功耗优化:通过优化采样频率和休眠策略,降低了设备的整体功耗。

 

相关文章:

全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)

1. 项目概述 本文详细介绍了一个基于STM32微控制器和AWS IoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点: 使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑采用DHT22数字温湿度传感器,精确采集环境温湿度数据通过ESP8266 W…...

WPF学习(3) -- 控件模板

一、操作过程 二、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…...

Netty Websocket SpringBoot Starter

netty websocket starter Quick Start Demo 项目 添加依赖 <!--添加源--> <repository><id>github</id><url>https://maven.pkg.github.com</url><snapshots><enabled>true</enabled></snapshots> </reposit…...

数据结构(4.2)——朴素模式匹配算法

字符串模式匹配 在主串中找到模式串相同的子串&#xff0c;并返回其所在的位置。 子串和模式串的区别 子串&#xff1a;主串的一部分&#xff0c;一定存在 模式串&#xff1a;不一定能在主串中找到 字符串模式匹配 朴素模式匹配算法 主串长度为n&#xff0c;模式串长度为…...

git切换远程仓库地址

git 更换远程仓库地址三种方法总结 一、前言 由于之前项目管理使用私服的 gitlab &#xff0c;现在换成了Gitea&#xff0c;需要修改远端仓库地址。 二、环境 windows 10git version 2.34.0.windows.1 三、帮助文档 GitHub文档 四、三种修改方法 方法一&#xff1a;不删除远程仓…...

同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll

在 C# 中&#xff0c;异步编程通常涉及同时运行多个任务。处理多个任务的两种常见方法是 Task.WaitAll 和 Task.WhenAll。虽然它们看起来很相似&#xff0c;但它们的用途不同&#xff0c;并且用于不同的场景。本文探讨了 Task.WaitAll 和 Task.WhenAll 之间的区别&#xff0c;并…...

在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换

一、首先要先安装一个虚拟的环境 安装Miniconda包 Miniconda的官网链接:Minidonda官网 下载好放在要操作的linux系统,我用的是远程服务器的linux系统,我放在whl这个文件夹里面,这个文件夹是我自己创建的 运行安装 安装的操作都是yes就可以了 检查是否安装成功,输入下面…...

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

​​​​​​​ 目录 一、引言 二、pipeline库 2.1 概述 2.2 使用task实例化pipeline对象 2.2.1 基于task实例化“自动语音识别” 2.2.2 task列表 2.2.3 task默认模型 2.3 使用model实例化pipeline对象 2.3.1 基于model实例化“自动语音识别” 2.3.2 查看model与task…...

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…...

Leetcode3200. 三角形的最大高度

Every day a Leetcode 题目来源&#xff1a;3200. 三角形的最大高度 解法1&#xff1a;模拟 枚举第一行是红色还是蓝色&#xff0c;再按题意模拟即可。 代码&#xff1a; /** lc appleetcode.cn id3200 langcpp** [3200] 三角形的最大高度*/// lc codestart class Solutio…...

docker运行nginx挂载前端html页面步骤

1.常用docker命令 1.docker ps -a 查看所有容器 2.docker ps查看存活的容器 3.docker rm 删除容器 4.docker stop 停止容器运行 5.docker logs 容器id 查看容器日志 6.docker images 查看镜像 7.docker rmi 删除镜像 8.docker exec nginx nginx -s reload 重新加载conf文件…...

kafka部署以及常用命令详细总结

1环境准备 1.1ip规划 ip: 192.168.1.200 1.2配置主机名 #设置主机名 hostnamectl set-hostname node11.3配置hosts [rootnode1 ~]# cat >> /etc/hosts << EOF192.168.1.200 node1 EOF2部署 2.1安装包准备 将以下安装包从官网下载到本地 jdk-8u371-linux-x6…...

代码随想录算法训练营第29天|LeetCode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

1. LeetCode 134. 加油站 题目链接&#xff1a;https://leetcode.cn/problems/gas-station/description/ 文章链接&#xff1a;https://programmercarl.com/0134.加油站.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1jA411r7WX 思路&#xff1a; 贪心&#xff…...

代理模式(大话设计模式)C/C++版本

代理模式 C #include <iostream> using namespace std;class Subject // Subject 定义了RealSubject和Proxy的共用接口..这样就在任何使用RealSubject的地方都可以使用Proxy { public:virtual void func(){cout << "Subject" << endl;} };class R…...

本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法

新安装了macOS Ventura&#xff0c;打开Navicat Premium&#xff0c;发现会提示&#xff1a; “Navicat Premium”已损坏&#xff0c;无法打开。 你应该将它移到废纸篓。 遇到这种情况&#xff0c;千万别直接移到废纸篓&#xff0c;是有办法解决的。在这里记录一下解决方案。 …...

《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

期刊&#xff1a;TPAMI 年份&#xff1a;2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文&#xff0c;即单个图像中像素之间的依赖关系。然而&…...

技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)

文章目录 一、07.13 周六1.0&#xff09;算法题&#xff1a;字符串中的单词反转1.1&#xff09; 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么&#xff1f;他们之间有什么联系&#xff1f;MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...

UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别

在Unity的ECS&#xff08;Entity Component System&#xff09;开发中&#xff0c;entityQuery.ToComponentDataArray<T>(Allocator.Temp) 和 entityQuery.ToEntityArray(Allocator.Temp) 是两种不同的方法&#xff0c;用于从实体查询中获取数据。除了泛型参数之外&#…...

[python]基于yolov10+gradio目标检测演示系统设计

【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本&#xff0c;由清华大学的研究…...

浏览器开发者视角及CSS表达式选择元素

点击想要查看的接口&#xff0c;然后点击检查&#xff0c;便可以切换到该接口对应的html代码 如果F12不起作用的话&#xff0c;点击更多工具&#xff0c;然后选择开发者工具即可 ctrlF可以去查阅相关的CSS表达式选择元素 如果没有加#t1&#xff0c;那么表示的是选择所有的p 使用…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...