esp32课设记录(五)整个项目开源github
我把该项目开源到了github:https://github.com/whyovo/ESP32_course_project
以下是readme文档:
ESP32 课设
项目概述
这是一个基于ESP32的课设,实现了多种功能模式的集成,包括信息显示、图片展示、MQTT通信、摩尔斯电码处理以及MPU6050姿态传感。该项目作为电子系统设计课程的实践项目,展示了ESP32在物联网应用中的多种功能实现。
课程设计要求
必做功能(满分80分)
- ✅ 1个按键输入(GPIO9)
- ✅ 1个LED输出(GPIO8)
- ✅ 液晶屏显示自己的照片(预存在开发板)
- ✅ WLAN连接到MQTT服务器,注册账户并可以收发消息
- ✅ 液晶屏显示英文字符串(由MQTT服务器下发)
- ✅ 单一程序运行时具备上述功能,不需要切换程序
选做功能(20分)
- ✅ 3个人一组,可以通过MQTT互相收发消息(使用统一主题,可通过消息前缀识别发送者)
- ✅ 支持更多传感器输入和数据上传(集成MPU6050加速度计与陀螺仪)
- ✅ 按键输入支持摩尔斯电码(短按输入"点",长按输入"划")
硬件要求
- ESP32开发板
- ST7789/ST7735 LCD显示屏 (128x160分辨率)
- MPU6050传感器 (加速度计和陀螺仪)
硬件连接
LCD屏幕连接
- SCL: GPIO5
- SDA: GPIO4
- RES: GPIO0
- DC: GPIO3
- CS: GPIO1
- BL: GPIO2
MPU6050连接
- SCL: GPIO8
- SDA: GPIO10
软件要求
- ESP-IDF v5.x 或更高版本
- 下列必要的ESP-IDF组件:
- WiFi
- MQTT
- I2C
- SPI
- LCD
- FreeRTOS
功能模式
该项目包含以下功能模式,可通过双击按钮切换:
- 欢迎界面模式:显示个人和课程信息
- 照片模式:显示预加载的图片,可通过短按控制LED开关
- MQTT模式:连接MQTT服务器,发送和接收消息
- 摩尔斯电码模式:通过按钮输入摩尔斯电码,实时解码并显示
- MPU6050模式:显示并发送加速度计和陀螺仪数据到MQTT服务器
操作指南
基本操作
- 短按按钮:根据当前模式执行不同操作
- 长按按钮:根据当前模式执行辅助操作
- 双击按钮:切换到下一个功能模式
各模式操作详情
欢迎界面模式
- 短按:刷新个人信息
- 长按:显示设备详情
照片模式
- 短按:切换LED状态
- 长按:显示LED状态信息
MQTT模式
- 短按:发送预设消息
- 长按:显示MQTT连接详情
摩尔斯电码模式
- 短按:输入"点"(.)
- 长按:输入"划"(-)
- 系统会自动解码输入的摩尔斯电码
- 输入6个连续点(…) 将通过MQTT发送当前解码结果
MPU6050模式
- 短按:刷新传感器数据
- 长按:通过MQTT发送传感器数据
- 自动每0.5秒发送一次数据到MQTT服务器
详细配置指南
WiFi和MQTT配置
在mqtt.h
文件中需要配置以下参数:
// WiFi配置
#define WIFI_SSID "您的WiFi名称"
#define WIFI_PASSWORD "您的WiFi密码"// MQTT配置
#define MQTT_BROKER_URL "mqtt://您的MQTT服务器地址:端口"
#define MQTT_USERNAME "您的用户名"
#define MQTT_PASSWORD "您的密码"
#define MQTT_CLIENT_ID "ESP32_客户端ID"
#define MQTT_TOPIC "您的订阅主题"
#define MQTT_PUBLISH_TOPIC "您的发布主题"
屏幕显示修改
修改欢迎界面和个人信息
在main.c
文件中可以修改欢迎界面显示的个人信息。找到以下代码段并修改为您的信息:
// 显示初始欢迎界面
clear_text_area(lcd_buffer, LCD_H_RES, LCD_V_RES);
draw_string(lcd_buffer, 0, 0, "姓名", 0xFFFF, LCD_H_RES); // 修改为您的姓名
draw_string(lcd_buffer, 0, CHINESE_FONT_HEIGHT + 2, "班级", 0xFFFF, LCD_H_RES); // 修改为您的班级
draw_string(lcd_buffer, 0, CHINESE_FONT_HEIGHT * 2 + 4, "学号", 0xFFFF, LCD_H_RES); // 修改为您的学号
draw_string(lcd_buffer, 0, CHINESE_FONT_HEIGHT * 3 + 6, "电子系统设计2", 0xFFFF, LCD_H_RES);
esp_lcd_panel_draw_bitmap(panel_handle, 0, 0, LCD_H_RES, LCD_V_RES, lcd_buffer);
修改MQTT发送的消息内容
在MQTT模式下默认发送的消息可在以下位置修改:
// MQTT模式下短按发送消息
char message[50];
strcpy(message, "wyh_esp32"); // 修改为您的标识信息
添加汉字库
汉字库在font_chinese.h
和font_chinese.c
文件中定义。要添加新的汉字,请按照以下步骤操作:
- 在
font_chinese.h
文件中添加新汉字的点阵数据:
static const uint8_t char_新汉字名[] = {// 这里是16x16点阵数据,每行2个字节,共16行(总共32字节)0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
- 在
chinese_chars
数组中添加新汉字的Unicode编码和点阵数据映射:
static const chinese_char_t chinese_chars[] = {// ...现有汉字定义...{0x新汉字Unicode, char_新汉字名}, // 新汉字的Unicode和数据
};
替换图片
要替换显示的照片,需要修改wyh_pic.c
文件中的图片数据:
- 准备一张适合LCD分辨率的图片
- 使用图片转换工具(如LCD Image Converter)将图片转换为适合的RGB565格式
- 将生成的数据替换到
wyh_pic.c
文件中的gImage_wyh_pic
数组 - 修改分辨率的宏定义,现在是128x128
// 图片数据示例格式
const unsigned char gImage_wyh_pic[32768] = {0xFF, 0xFF, 0xFF, 0xFF, ... // 这里是图片的16位RGB565格式数据
};
MPU6050传感器配置
如果需要修改MPU6050的连接引脚,可在mpu6050.c
文件中修改以下定义:
#define I2C_MASTER_SCL_IO 8 // SCL引脚,默认GPIO8
#define I2C_MASTER_SDA_IO 10 // SDA引脚,默认GPIO10
摩尔斯电码配置
摩尔斯电码模块的超时时间和缓冲区大小可在morse.c
文件中调整:
#define MORSE_CHAR_TIMEOUT 2000 // 字符超时时间(毫秒)
#define MORSE_MAX_BUFFER 32 // 最大缓冲区大小
按钮配置
如需调整按钮的长按时间、双击检测时间等参数,可在button.c
文件中修改:
#define BUTTON_LONG_PRESS_TIME 750 // 长按阈值(毫秒)
#define BUTTON_DOUBLE_CLICK_TIME 300 // 双击的有效时间窗口(毫秒)
#define BUTTON_DEBOUNCE_TIME 20 // 消抖时间(毫秒)
添加支持的传感器
如需添加新的传感器支持,建议参考MPU6050的实现方式,主要步骤:
- 创建传感器相关的
.h
和.c
文件 - 在
general.h
中包含新传感器的头文件 - 在
main.c
中添加传感器初始化与数据读取代码 - 添加新的显示模式用于展示传感器数据
注意:添加新模式需要修改app_mode_t
枚举类型并增加相应的处理逻辑。
项目结构
ESP32_course_project/
├── main/
│ ├── main.c # 主程序入口
│ ├── general.h # 通用头文件
│ ├── button.c/h # 按钮处理
│ ├── led.c/h # LED控制
│ ├── lcd.c/h # LCD显示屏控制
│ ├── mqtt.c/h # MQTT通信
│ ├── morse.c/h # 摩尔斯电码处理
│ ├── mpu6050.c/h # MPU6050传感器控制
│ ├── font_chinese.c/h # 中文字体支持
│ └── wyh_pic.c/h # 图片数据
├── CMakeLists.txt # CMake构建配置
└── README.md # 项目说明文档
编译与烧录
- 安装ESP-IDF环境
- 配置项目:
idf.py menuconfig
- 编译项目:
idf.py build
- 连接ESP32,并烧录:
idf.py -p [端口] flash
- 监视输出:
idf.py -p [端口] monitor
故障排除
- 屏幕无显示:检查LCD连接,特别是SPI引脚连接
- WiFi无法连接:确认WiFi凭据正确,ESP32在WiFi覆盖范围内
- MQTT连接失败:检查MQTT配置和服务器状态
- MPU6050没有数据:检查I2C连接,确认地址设置正确
注意事项
- 首次使用前,请确保正确配置WiFi和MQTT参数
- 确保MPU6050连接正确,否则可能导致I2C通信错误
- 修改图片数据需要重新编译整个项目
相关文章:
esp32课设记录(五)整个项目开源github
我把该项目开源到了github:https://github.com/whyovo/ESP32_course_project 以下是readme文档: ESP32 课设 项目概述 这是一个基于ESP32的课设,实现了多种功能模式的集成,包括信息显示、图片展示、MQTT通信、摩尔斯电码处理以…...
力扣每日一题5-19
class Solution { public String triangleType(int[] nums) { Arrays.sort(nums); if (nums[0] nums[1] < nums[2]) return “none”; if (nums[0] nums[1] && nums[1] nums[2]) return “equilateral”; if (nums[0] nums[1] || nums[1] nums[2]) return “is…...
CI/CD 深度实践:灰度发布、监控体系与回滚机制详解
CI/CD 深度实践:灰度发布、监控体系与回滚机制详解 一、引言 在现代软件开发中,持续集成与持续交付(CI/CD)是加快交付速度、提升质量的关键。面对复杂的分布式系统和海量用户,如何安全、快速地发布新版本,…...
【日常笔记】wps如何将值转换成东西南北等风向汉字
在WPS表格中,若要将数值(如角度值)转换成“东、南、西、北”等风向汉字,可通过以下步骤结合自定义函数或条件判断实现: 一、wps如何将值转换 方法一:使用LOOKUP函数(简化公式)&…...
RabbitMQ的简介
三个概念 生产者:生产消息的服务消息代理:消息中间件,如RabbitMQ消费者:获取使用消息的服务 消息队列到达消费者的两种形式 队列(queue):点对点消息通信(point-to-point) 消息进入队…...
中职大数据实验室解决方案分享
第1部分概述 1.1政策背景 2021年3月,教育部印发《职业教育专业目录(2021年)》,共设置19个专业大类、97个专业类、1349个专业。新版《目录》聚焦推进数字化升级改造,构建未来技术技能,优化和加强了5G、人工智能、大数据、云计算、…...
阿里云web端直播(前端部分)
阿里云:Web播放器快速接入_视频点播(VOD)-阿里云帮助中心 import Aliplayer from aliyun-aliplayerimport aliyun-aliplayer/build/skins/default/aliplayer-min.css<div id"J_prismPlayer" style"width: 300px; height: 300px;" />var …...
从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案
2025年5月23-25日,第63届中国高等教育博览会(高博会)将在长春中铁东北亚国际博览中心举办。作为国内高等教育领域规模大、影响力广的综合性展会,高博会始终聚焦教育科技前沿,吸引全国高校管理者、一线教师、教育科技企…...
阿里云国际站与国内站:局势推进中的多维差异
在当今数字化浪潮席卷全球,云计算成为企业与开发者关键助力的局势下,阿里云作为行业翘楚,其国际站与国内站备受关注。两者虽同宗同源,却在诸多方面存在着显著差异,这些差异犹如隐藏在幕后的齿轮,悄然影响着…...
Docker项目部署深度解析:从基础命令到复杂项目部署
Docker项目部署深度解析:从基础命令到复杂项目部署 注:根据黑马程序员javawebAI视频课程总结: 视频地址 详细讲义地址 一、传统部署困境与Docker破局之道 在传统Linux部署场景中,新手常被三大难题困扰: 命令记忆负…...
reserve学习笔记(花指令)
这是闲来无事逛博客时看到的一篇相关文章,觉得挺有意思。 定义 首先花指令其实就是没有用的指令(垃圾指令),它穿插在真正的代码中,会导致反编译时出现问题,从而会影响我们的静态分析 分类以及讲解 花指…...
docker运行Redis
创建目录 mkdir -p /home/jie/docker/redis/{conf,data,logs}添加权限 chmod -R 777 /home/jie/docker/redis创建配置文件 cat > /home/jie/docker/redis/conf/redis.conf << EOF # 基本配置 bind 0.0.0.0 protected-mode yes port 6379# 安全配置 密码是root require…...
Django 项目中,将所有数据表注册到 Django 后台管理系统
在 Django 项目中,将所有数据表注册到 Django 后台管理系统中需要为每个模型(Model)创建一个对应的 ModelAdmin 类,并在 admin.py 文件中注册这些模型。以下是一个详细的步骤指南: 确保你的模型已定义 首先,确保你已经在 models.py 文件中定义了所有的数据模型。例如:py…...
pyspark测试样例
from pyspark.sql import SparkSession from pyspark.sql.functions import col, lit, concat 创建 SparkSession spark SparkSession.builder.appName(“SparkSQLExample”).getOrCreate() 创建 DataFrame(可以是从 CSV、JSON 等文件读取) data […...
Python学习笔记--使用Django操作mysql
注意:本笔记基于python 3.12,不同版本命令会有些许差别!!! Django 模型 Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。 Django 为这些数据库提供了统一的调…...
HarmonyOS Next应用分层架构下组件封装开发实践
基于鸿蒙应用分层架构的ArkUI组件封装实践 在鸿蒙应用开发中,合理利用 ArkUI 组件进行封装,可以实现代码复用,提升开发效率。本文将结合鸿蒙应用分层架构的特点,详细探讨几个典型的 ArkUI 组件封装场景及其实现方案。 华为鸿蒙应…...
全能视频处理工具介绍说明
软件介绍 本文介绍的软件是FFmpeg小白助手,它是一款视频处理工具。 使用便捷性 这款FFmpeg小白助手无需安装,解压出来就能够直接投入使用。 主要功能概述 该工具主要具备格式转换、文件裁剪、文件压缩、文件合并这四大功能。 格式转换能力 软件支持…...
CSS实现过多的文本进行省略号显示
单行文本省略 .ellipsis {white-space: nowrap; /* 禁止换行 */overflow: hidden; /* 溢出内容隐藏 */text-overflow: ellipsis; /* 溢出部分显示为省略号 */width: 200px; /* 必须设置宽度 */ } 多行文本省略(跨浏览器方案)…...
十三、Hive 行列转换
作者:IvanCodes 日期:2025年5月19日 专栏:Hive教程 在Hive中,数据的形态转换是数据清洗、分析和报表制作中的核心环节。行列转换尤为关键,它能将数据从一种组织形式变为另一种,以适应不同的业务洞察需求。本…...
Django之验证码功能
验证码功能 目录 1.绘制验证码 2.在登录页面里面实现验证码的功能 3.代码展示集合 这篇文章, 内容不是很多, 不过验证码, 是在网页里面比较常见的功能, 所有我们还是要掌握它!!! 一、绘制验证码 绘制验证码, 我们需要用到图像, 然后在…...
代码随想录算法训练营 Day51 图论Ⅱ岛屿问题Ⅰ
图论 题目 99. 岛屿数量 使用 DFS 实现方法 判断岛屿方法 1. 遍历图,若遍历到了陆地 grid[i][j] 1 并且陆地没有被访问,在这个陆地的基础上进行 DFS 方法,或者是 BFS 方法 2. 对陆地进行 DFS 的时候时刻注意以访问的元素添加访问标记 //…...
Python Django 的 ORM 编程思想及使用步骤
目录 一、ORM 编程思想概述 二、Python 中使用 ORM 的主要优势 2.1 简化数据库操作 2.2 提高开发效率 2.3 减少错误 2.4 增强代码的可维护性 2.5 降低耦合性 三、Django 中使用 ORM 的详细步骤 3.1 创建应用模块 3.2 配置数据库信息 3.3 确定数…...
设计一个程序,将所有的小写字母转换为大写字母
汇编语言程序设计实验 实验内容 设计一个程序,将所有的小写字母转换为大写字母,此程序不能改变除字母a~z外的任何其它字符。 实验分析 实现的功能是将所有的小写字母转换为大写字母,此程序不能改变除字母a~z外的任何其它字符。可以分为以…...
Rust 学习笔记:关于错误处理的练习题
Rust 学习笔记:关于错误处理的练习题 Rust 学习笔记:关于错误处理的练习题想看到回溯,需要把哪个环境变量设置为 1?以下哪一项不是使用 panic 的好理由?以下哪一项最能描述为什么 File::open 返回的是 Result 而不是 O…...
使用docker——10分钟内 完成一个高可用的 MongoDB 副本集部署
实验目的 掌握 Docker 容器化部署 MongoDB 副本集 的方法 理解 主从同步、故障转移、数据一致性 等核心机制 熟悉 MongoDB 集群管理命令 和 运维监控技巧 🔧 实验环境 操作系统: Rocky Linux 9 / CentOS 7 软件依赖: Docker 20.10 docker-compose 1.29 硬件要…...
信息化的编程未来发展
信息化与数字化与编程领域与AI的爆炸发展是最近十几年瞠目结舌的事情,列举一下相关词汇: C#、AI、C、Python、.NET、API 、IDE、asp、JavaScript网页端、Visua Studio、VR、Github、OpenGL-webGL-计算机图形学、面向对象 、类库、GIS、GPU计算与显卡、可…...
计算机视觉与深度学习 | EMD-KPCA-LSTM、EMD-LSTM、LSTM回归预测对比,多输入单输出(Matlab完整程序和数据)
以下是针对EMD-KPCA-LSTM、EMD-LSTM和LSTM回归预测对比的完整可运行MATLAB实现。包含数据生成、特征处理、模型构建和性能评估全流程,并提供关键代码注释和注意事项。 完整代码实现(含数据生成) %% 清理环境 clear; clc; close all; warning off;%% 生成模拟数据(正弦波+噪…...
Ollama 如何在显存资源有限的情况下合理分配给不同的服务?
在显存资源有限的情况下,合理分配显存给不同服务需要结合硬件特性、软件配置和模型优化技术。以下是几种有效的方法: 1. 使用 Ollama 自身的资源限制参数 Ollama 提供了一些命令行参数来限制单个模型的资源使用: --ram:限制模型…...
2025-05-19 学习记录--Python-简易用户登录系统 + 计算天数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、简易用户登录系统 ⭐️ # 用户登录系统 # 用户名、密码、黑名单 users [{name: 小红, password: 123, status:True},{name…...
APP小程序抓包和下游代理
本文仅作学习/技术记录和交流,请勿进行非法活动,否则后果自负! 本文将主要围绕对小程序、APP的抓包方法,同时介绍下游代理。 在本文中我们将用到 Burpsuite、Yakit 和 Proxifier来完成。 小程序&APP抓包 对于小程序或APP抓…...
UE 材质几个输出向量节点
PixelNormalWS...
【八股战神篇】Java多线程高频面试题(JUC)
目录 专栏简介 一 如何创建线程? 延伸 1. 创建 Java 线程的本质 二 说说线程的生命周期? 延伸 1.描述一下线程的生命周期图 2.线程的优先级对线程执行有何影响? 3.如何确保三个线程按照特定顺序执行? 三 并发和并行的区…...
【esp32 mqtt】 连接亚马逊-加密传输信息
文章目录 1 加密文件1.1 服务端证书1.2 客户端CA证书1.3 客户端私钥1.4 三者协同工作的流程 2 亚马逊创建物品3 esp32 程序编写3.1 证书文件读取3.2 MQTT配置3.2.1 配置结构体3.2.2 初始化客户端3.2.3 注册事件3.2.4 开启mqtt3.2.5 示例 3.3 事件回调函数3.2.1 示例 3.4 接收到…...
用于判断主子关系的方法的实现(orm是efcore)
HasParentChildRelationship 方法:主要用于判断给定实体集合中是否存在主子关系,通过检查实体的导航属性来实现。CheckForDependencies 方法:是一个辅助方法,负责具体的依赖关系检查,包括对已访问实体的跟踪࿰…...
《Effective Python》第三章 循环和迭代器——在遍历参数时保持防御性
引言 本文基于《Effective Python: 125 Specific Ways to Write Better Python, 3rd Edition》一书的 Chapter 3: Loops and Iterators 中的 Item 21: Be Defensive when Iterating over Arguments。该条目深入探讨了在 Python 中处理迭代器(iterator)和…...
【python基础知识】Day30 模块和库的导入
学习python 学习python基础语法 处理任务需要用到的库 一、导入官方库的三种手段 1 标准导入:导入整个库 # 方式1:导入整个模块 import math# 导入库后,输出测试 print("方式1:使用 import math") print(f"圆周率…...
leetcode hot100刷题日记——4.盛最多水的容器
解答: 我的思路: class Solution{public:int maxArea(vector<int>& height){//遍历,我暴力找一下,时间超限// int vol0;// for(int i0;i<height.size()-1;i){// for(int ji1;j<height.size();j){// volmax(vol,…...
大二周周练翻译
翻译题 文章目录 翻译题[toc]中国茶道数字经济茶马古道中国父母现状电子商务长城大学生就业一带一路中国结 相遇的意义,是被你改变的那部分的我,代替你永远陪在我身边 点个赞呗! 中国茶道 China is a country with a time-honored civilizat…...
深度学习————模型保存与部署
第一部分:模型保存基础 什么是模型保存? 当你训练好一个深度学习模型后,它会拥有“学习到的参数”,这些参数(权重、偏置等)构成了模型的“知识”。如果不保存这些参数,那么训练好的模型在关闭…...
5G金融互联:迈向未来金融服务的极速与智能新时代
5G金融互联:迈向未来金融服务的极速与智能新时代 大家好,我是Echo_Wish,今天咱们聊聊一个大家都十分关心的话题:5G网络在金融服务中的应用。咱们平时可能觉得5G只是打个电话、刷个视频更流畅了,但在金融服务领域,5G的低延时、大带宽和高可靠性正在悄然改变整个游戏规则。…...
交易所开发:构建功能完备的金融基础设施全流程指南
交易所开发:构建功能完备的金融基础设施全流程指南 ——从技术架构到合规安全的系统性解决方案 一、开发流程:从需求分析到运维优化 开发一款功能完备的交易所需要遵循全生命周期管理理念,涵盖市场定位、技术实现、安全防护和持续迭代四大阶…...
Icecream Video Editor:简单易用的视频编辑软件,轻松打造专业视频
Icecream Video Editor 是一款简单易用的视频编辑软件,专为希望快速、高效编辑视频的用户设计。它提供了丰富的功能,包括视频剪辑、效果应用、音频处理和视频导出,满足用户在不同场景下的需求。无论是视频新手还是有一定基础的创作者…...
论文阅读--Logical quantum processor based on reconfigurable atom arrays
论文主要内容 研究背景与目标: 论文提出了一种基于可重构中性原子阵列的逻辑量子处理器,旨在通过量子纠错(QEC)和逻辑量子比特编码,解决物理量子比特的噪声限制问题。该处理器结合高保真度逻辑门操作、任意连接性和实时…...
安防综合管理系统EasyCVR视频融合平台安防知识:门禁系统与视频监控系统如何联动?
在现代安防体系中,视频监控与门禁系统是两大核心。前者实时记录画面,为安全事件追溯提供依据;后者精准管控人员出入。二者联动可提升安防智能化水平,实现门禁点图像抓拍与实时监视,在安全事件发生时快速整合信息&#…...
微机系统第二章-题目整理
80x86标志寄存器中ZF位等于1,说明( )。 A A.运算结果等于0 B. 运算结果大于0 C. 运算结果不等于0 D.运算结果溢出 8086CPU由哪两大部分组成?简述它们的主要功能。 总线接口部件BIU跟执行部件EU。 总线接口部件(BIU&…...
w~自动驾驶合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12371169 #世界模型和DriveGPT这类大模型到底能给自动驾驶带来什么ne 以下分享大模型与自动驾驶结合的相关工作9篇论 1、ADAPT ADAPT: Action-aware Driving Caption Transformer(ICRA2023) AD…...
嵌入式学习的第二十三天-数据结构-树+哈希表+内核链表
一、树(一对多) 1.树的定义 树:n(n>0)个结点的有限集合。n 0 ,空树。 2.在任意一个非空树中, (1),有且仅有一个特定的根结点 (2),当n>1 时,其余结点可分为m个…...
互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发
互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发 在当今技术领域,随着AI和大模型技术的广泛应用,如何在复杂的系统架构中高效地集成这些技术成为了各大互联网公司关注的重点。本文将通过一场模拟的面试对话,…...
Ansible模块——主机名设置和用户/用户组管理
设置主机名 ansible.builtin.hostname: name:要设置的主机名 use:更新主机名的方式(默认会自动选择,不指定的话,物理机一般不会有问题,容器可能会有问题,一般是让它默认选择) syst…...
lowcoder数据库操作1:链接目标数据库
比如我使用的是PostgreSQL,要链接到数据库。 步骤1,Data Sources 步骤2, New data source 步骤3,选择PostgreSQL 步骤4,输入各种信息 命名,数据库所在的IP,端口,库名,用户密码。 步…...