吐血整理:Air8201如何使用LuatOS进行电源管理功能!

news2025/4/21 10:33:40

在物联网应用场景中,设备续航能力直接影响其部署成本与运维效率。LuatOS操作系统通过软件层面的精细化控制,为Air8201提供了灵活且高效的电源管理策略。本文将从系统架构、API接口、实战配置三个维度,解析如何利用LuatOS实现Air8201的智能电源管理,从而延长设备寿命并降低能耗成本。

一、电源管理介绍

电源管理是电子设备中非常重要的一部分,尤其是在移动设备和嵌入式系统中。它直接关系到设备的能效、续航时间和整体性能。以下是关于电源管理的一些基本知识和常见概念的介绍。

1.1 电源管理的定义

电源管理指的是在电子设备内部合理利用和调节电源,以保证各个组件在最佳运行条件下工作,同时延长设备的使用时间和确保能量的有效利用。

1.2 电源管理的目标

延长电池寿命:通过有效的充放电管理,使电池在使用过程中更长久地保持能量。

优化能耗:监测各个部件的能耗,减少不必要的能量消耗。

提供稳定的电力供给:确保设备在不同的负载和环境条件下都能稳定工作。

1.3 常见术语

Vbat(电池电压):指设备中电池当前的电压值,通常用于评估电池的状态。

电池电量百分比:代表电池当前剩余能量的百分比,通常用于用户界面显示。

充电状态:指设备是否正在充电,影响电池电量的监测和管理策略。

电池放电曲线:描述不同电压下电池剩余电量的关系,帮助计算电量百分比。

电池调节电压:电池在充放电过程中,可以通过一定控制策略或电路设计,维持电池电压在一定范围内的稳定。Air8201 的电池电压上限值默认为 4.2V,可在代码中自行更改电池电压阈值。

快速充电:快速充电是一种技术,它允许电池在较短时间内充入更多电量。快速充电技术包括恒流充电与恒压充电。在快速充电的恒流阶段,充电器会以一个固定的电流给电池充电,直到电池电压达到一个预设的电压值(Air8201 默认为 4.2V),随后切换至恒压模式,此时电流逐渐减小,直到电池充满后停止充电。

1.4 常见功能

电量监测:通过 ADC(模数转换)读取电池电压,定期更新电量状态。

充电检测:利用 GPIO 中断检测充电状态,判断电池是否处于充电状态。

自动关机:根据电量百分比自动关闭设备,以防止电池过度放电。

过压保护:当充电到达电池电压阈值时会自动停止充电,待剩余电量与满电量相差超过 120mA 时恢复充电。

用户接口:通过长按电源键执行关机命令,提升用户体验。

路径管理:当插入 USB 既可以给锂电池充电,同时也可以给主板供电

1.5 实践中的应用

在实际应用中,电源管理代码通常涉及多个功能模块,包括初始化电源,实时监测电量,响应用户操作和维护设备状态。一个良好的电源管理系统能够显著提高设备的性能和用户满意度。

通过合理的电源管理策略,用户不仅可以延长设备的使用时间,还可以确保设备在关键时刻的稳定性和可靠性。在编写电源管理程序时,应充分考虑设备的使用场景和用户的需求。

二、演示功能概述

在本演示中,我们将展示电源管理系统的核心功能模块,以及如何通过不同的技术手段实现有效的电源管理。这些功能旨在提升设备的性能和用户体验,以下是主要演示功能的概述:

1. 电量监测:本系统通过 ADC(模数转换器)实时读取电池电压,并定期更新电量状态。通过精确监测电池电压,可以让用户清晰掌握当前电池剩余电量,避免意外关机带来的困扰。

2. 充电检测:系统利用 GPIO 中断技术,能够快速检测电池的充电状态。当设备连接到电源时,将自动判断电池是否在充电状态,并相应地调整电源管理策略,以优化充电效率和电池寿命。

3. 自动关机:根据监测到的电量百分比,该系统能够在电量过低时自动关机,以防止电池过度放电。这种智能管理能够保护电池,延长其使用寿命,确保设备在低电量时不会意外关机。

4. 用户接口:系统提供了便捷的用户交互接口,用户可以通过长按电源键实现关机操作。提升用户体验的同时,确保用户可以方便地控制设备的电源状态。

通过这些功能的实现,用户不仅可以延长设备的使用时间,还能够保证设备在关键时刻的稳定性和可靠性。在实际应用中,这些功能能够有效地提升设备性能,满足用户对电源管理的需求。

三、演示硬件环境

3.1 开发板

本文以 Air8201 开发板 为例

此开发套件的详细使用说明参考:Air8201 产品手册 中的 Air8201 硬件手册 和 Air8201 的 LuatOS 快速入门。

(Air8201 产品手册 :https://docs.openluat.com/air8201/product/)

3.2 SIM 卡

在中国大陆环境下,使用移动,电信,联通的物联网卡或者手机卡都可以。

3.3 PC 电脑

PC 电脑推荐使用 Windows10 及以上版本。

3.4 数据通信线

1. USB 转 Type-C 数据线

它的一端是 USB 接口,另一端是 Type-C 接口。

四、演示软件环境

4.1 Luatools 下载调试工具

Luatools 工具支持最新固件获取、固件打包、trace 打印及单机烧录等功能。

工具使用说明参考:

(Luatools 下载和详细使用:https://docs.openluat.com/Luatools/)

4.2 获取固件及源码

1. 底层 core 下载地址:SDK&Demo - luatos@air8201 - 合宙文档中心

本文使用的固件版本为 LuatOS-SoC_V2002_Air8201.soc 。

2. demo 位置

本 demo 的主要功能是对电池管理系统的控制和监测

demo 位置参考:LuatOS-Air8201: 本仓库LuatOS源码适用于合宙4G Cat.1模组Air8201Air8201是一款内置了通信/定位/G-Sensor/充电管理/SIM卡槽/USB-C等外设接口的高集成度模组 - Gitee.com

五、软硬件资料

5.1 电池充电器说明

注意注意,锂电池与锂离子电池不是同一种电池。锂电池是一个统称,而锂离子电池是锂电池的其中一种类型。

Air8201 选用了一款高度集成的单电池锂离子电池充电器,该充电器具有系统电源路径管理,可供空间有限的便携式应用使用。功能具有涓流充电、恒流充电、恒压充电、充电终止和自动充电。而且可以自动调节充电电流与充电电压,或者进入其他模式。

5.1.1 锂电池充电过程

锂离子电池的充电过程可概括为四个阶段:涓流充电、恒流充电、恒压充电以及充电终止。以下为这四个阶段的详细介绍。

1. 涓流充电

涓流充电用于先对完全放电的电池单元进行预充,也叫恢复性充电。在电池电压低于 3V 左右时,先采用最大 0.1C 的恒定电流对电池进行充电。(C 是充放电倍率,表示电池在单位时间内充放电电流与电池额定容量的比值。例如,一个电池的额定容量是 1000mAh,1C 就表示以 1000mA 的电流在单位时间内进行充放电,也表示电池在一小时内完全充放电。)

2. 恒流充电

在涓流充电之后,当电池电压上升到涓流充电阈值以上时,此时提高充电电流从而进行恒流充电。这个阶段的电流通常在 0.2C~1.0C 之间,电池电压随着恒流充电过程在逐步升高。恒流充电时的电流并不要求十分精确,准恒定电流也可以。

当在线性充电器设计中,电流经常会随着电池电压的上升而上升,应尽量减轻传输晶体管上的散热问题。选择大于 1.0C 的恒流充电并不会缩短整个充电充电周期时间,这种做法是不可取的。

当以更高电流进行充电时,由于电极反应的过压以及电池内部阻抗上的电压上升,电池电压会更快速地上升。恒流充电阶段就会变短,同时下面恒压充电阶段的时间会相应增加,因此总的充电周期时间并不会缩短。

3. 恒压充电

当电池电压上升到 4.2V(默认值)时,恒流充电结束,开始恒压充电阶段。在此阶段,电流会根据电芯的饱和程度逐渐减少,直到达到一个很小的值,可称为判满电流值时,充电终止。

4. 充电终止

与镍电池不同,此时不建议对锂离子电池进行连续涓流充电。连续涓流充电会导致金属锂出现极板电镀效应。从而使电池不稳定,并且极大可能导致突然的自动快速解体。

这个阶段有两种典型的充电终止方法:一种是采用最小充电电流判断,当恒压充电阶段的充电电流减小到判满电流值时终止充电;另一种是从恒压充电阶段开始计时,持续充电两个小时后终止充电过程。Air8201 选择的电池充电器充电终止方法为第一种。

5. 充电恢复说明

充电终止后,当电池放电后剩余电量与满电量相差超过 120mV 时会恢复充电,转为恒压充电阶段。

5.1.2 锂电池放电说明

由于锂电池内部结构所致,在放电时锂电池不能全部移向正极,必须要保留一部分锂离子在负极,从而保证在下次充电时锂离子能够畅通地嵌入通道。否则,电池寿命将会大大缩短。

1. 放电电压平台

锂电池在放电过程中,电压会保持在一个相对稳定的范围内,这个范围被称为放电电压平台。对于大多数锂电池来说,这个平台大约在 3.7V 到 3.0V 之间。

2. 放电电流

放电电流是指电池在放电过程中的电流强度。放电电流的大小会直接影响到电池的放电时间和寿命。大电流放电时会导致电池温度升高,也可能会缩短电池寿命。(锂电池放电电流不应超过电池容量的 3 倍,例如 1000mAH 电池,放电电流应严格控制在 3A 以内,否则会导致电池损坏。)

3. 放电截止电压

为了保证锂电池放电后石墨层中仍留有部分锂离子,就需要严格限制最低放电截止电压,也就是要避免过放电。当电池电压降到这个值时,电池应停止放电。对于大多数锂电池,这个截止电压大约是 2.5V 到 3.0V。

Air8201 在代码中已经设置当电池电量低于 30% 且两分钟内没有充电时自动关机。

4. 放电效率

放电效率是指电池放电过程中电能转换的效率。锂电池放电效率可达到 90% 以上。

5. 放电深度

放电深度是指电池放电时放电量与电池总容量的比率。即放电深度=(放电量/电池总容量)*100% 。(例如,如果一个电池的总容量是 1000mAh,放电到 500mAh,那么放电深度就是 50%。)

6. 放电速率

放电速率是指电池单位时间内放电时放电量与电池额定容量的比值,用充放电倍率 C 表示。(例如,一个电池的额定容量为 1000mAh,如果用 200mA 的电流进行放电,其放电倍率为 0.2C,因为 200mA/1000mAh=0.2。)

7. 温度影响

锂电池的放电性能受温度影响较大。在低温下,电池的放电性能会下降,而在高温下,电池的寿命可能会缩短。

8. 循环寿命

锂电池的循环寿命是指电池可以经历的充放电次数。一般来说,锂电池的循环寿命可以达到几百到几千次,具体还要取决于电池的类型、使用条件和放电深度。

9. 自放电

锂电池即使在不使用的情况下也会进行自动放电,这种现象称为自放电。锂电池的自放电率相对较低,通常每月 1% 到 2%。

5.2 sensor 库介绍

sensor 库是一个传感器操作库,用于在 LuatOS 环境中处理各种传感器的数据交互。它支持多个传感器的操作,包括 DS18B20 温度传感器、DHT11/DHT12 温湿度传感器、HX711 称重传感器、CS1237 传感器、WS2812B RGB LED 灯带以及 SC12A 触摸传感器等。

此为 sensor 库 API 接口介绍 ,大家可自行参考测试。

5.3 Air8201 开发板烧录说明

5.3.1 选择固件和脚本

1. 打开 Luatools_v3 工具

2. 点击 项目管理测试


3. 根据图示操作

注意,大家只需要跟着做到第四步即可,第五步跟着后面的操作再做。


5.3.2 烧录

1. 将 Air8201 开发板通过 USB 数据线连接至电脑,如下图所示:

由于 Air8201 单板子没有复位键和 BOOT 键,所以数据线与 Air8201 开发板之间还需要接一个 USB_BOOT 板,不过大家放心,Air8201 套件里已经包括了 USB_BOOT 板,不需要单独购买。 而且特别注意,USB_BOOT 板在接 Air8201 开发板时不用区分正反。


2. 根据下方操作进行烧录

此时就需要大家先点击 Luatools 工具上的 下载脚本 或 下载底层和脚本,再执行下方操作了。

开发板处于未开机状态:此时先按住下载模式按键(BOOT 键)不放,再长按开机键(POW 键)开机,若不出意外开发板将会进入下载模式,Luatools 工具下载进度条会开始跑,这时便可以松开 BOOT 键和 POW 键,等到工具提示下载完成即可。

开发板已经处于开机状态:此时可以先按住 BOOT 键不放,再短按复位键(RST 键)后开发板会重启并进入下载模式。

5.3.3 不同模式下的端口显示

1. 正常开机模式


六、功能验证

6.1 ChargeICLogic.lua 中代码介绍

该文件中的代码无需修改,大家直接调用这个文件就行。

6.1.1 代码说明

该文件中的代码是一个用 Lua 编写的脚本,主要用于与充电 IC(集成电路)进行交互,进行状态监测和控制。

6.1.2 代码逐步解析

1. 注释部分

这段注释用于指出代码的主要功能,即处理充电 IC 相关的逻辑。


2. 电池上限电压表

此部分定义了电池上限电压的不同设置值。Vreg 表包含多个十六进制数,每个数对应不同的电池上限电压。在 V_CTRL 寄存器中,前四位用来设置电池上限电压,其余位可以用作其他设置。默认情况下,其他位为 0。


3. 快速充电电流表

这部分定义了快速充电电流的设置值。Ichg 表中列出的十六进制数对应于不同充电电流的设置。在 I_CTRL 寄存器中,前三位是设置快速充电电流的,其余位是其他设置,默认为 0; 该电流值是通过电阻 Rsns 计算得出的,Air8201 的 Rsns 值为 1KΩ,经过公式计算后得出 Ireg=500mA。


4. GPIO 引脚初始化

获取一个 GPIO 引脚并对其进行设置。pcb.chargeCmdPin() 用于获取充电命令引脚,gpio.setup 将引脚 GPIO1 设置为输出模式,且初始化电平为高,同时启用内部上拉。


5. 任务初始化

这部分是主任务的初始化。首先等待 1000 毫秒,然后通过 sensor.yhm27xx 函数与传感器进行通信,以获取设备信息。后面再进行传感器设备中各寄存器参数配置。


6. 传感器数据读取

通过 sensor.yhm27xx 函数调用来读取传感器的数据。 参数说明:gpi``o_pin 是传感器对应引脚,0x04 是传感器设备 ID,0x08 是设备信息寄存器的地址。等待 200 毫秒等待数据返回。


7. 设备存在检查

当检测到传感器存在时,会进行进一步的设置。此时根据不同寄存器的地址设置不同功能。


8. 电压跟随与快速充电电流设置

读取 I_CTRL 寄存器并设置电压跟随与快速充电电流。如果操作成功,将会再次读取配置寄存器并确认设置结果,记录相关的日志信息。 参数说明:gpio_pin 是传感器对应引脚,0x04 是芯片设备 ID 号,0x01 是 I_CTRL 寄存器地址,0x02 是设置电压跟随与快速充电电流为 0.5×Ireg。 特别说明:若需要在同一寄存器中设置多个参数,则需要将参数值进行或运算。(例如,要设置电压跟随和快速充电电流为 0.5×Ireg,则参数值为 0x02+0x00=0x02 。快速充电电流表可参考下方表格)

I_CTRL 寄存器地址前三位是设置快速充电电流,其余位是其他设置,默认为 0; Ireg 是电阻 Rsns 配置的电流值,Air8201 的电阻 Rsns 值为 1KΩ,通过公式 Ireg=500/Rsns,得出 Ireg=500mA。


9. 电池上限电压设置

读取 V_CTRL 寄存器并设置电池上限电压。如果操作成功,将会再次读取配置寄存器并确认设置结果,记录相关的日志信息。 参数说明:gpio_pin 是传感器对应引脚,0x04 是芯片设备 ID 号,0x00 是 V_CTRL 寄存器地址,0x00 是设置电池上限电压为 4.2V,可参考下方表格。


10. 异常处理

如果在读取传感器信息时返回结果为假,则说明传感器不存在,记录警告日志。

6.1.3 总结说明

这段代码的主要功能是与充电 IC 进行交互以监控其状态,配置其控制参数,并在不同情况下记录相关的日志信息。通过这种方式,系统能够检测充电 IC 的存在与状态,并进行相应的初始化与配置,以确保充电过程的正常进行。全程使用异步任务管理,提升系统响应能力。

6.2 pcb.lua 中代码介绍

该文件中的代码无需修改,大家直接调用这个文件就行。

6.2.1 代码说明

这段 Lua 代码定义了一个名为 pcb 的模块,其主要功能是管理和操作硬件的某些特性,特别是与 PCB(印刷电路板)相关的设置和状态。

6.2.2 代码逐步解析

1. 模块初始化和变量定义:

这里定义了一个表 pcb,用于存放后续的函数。定义了存储系统的 OTP 区域和硬件的默认版本号以及出厂测试结果的初始值。


2. 读取 OTP 存储区和解析硬件版本号的函数:

loadParam 函数首先检查 OTP 是否存在,然后读取 OTP 存储区中的数据,解码 JSON 格式的数据以获取硬件版本号和出厂测试结果。若解码失败或缺少数据,则根据设备型号进行版本号的设置。


3. GNSS 电源控制功能:

此函数根据硬件版本控制 GNSS 模块的电源状态。通过 GPIO 接口进行电源的开启或关闭。


4. ES8311 电源引脚的获取:

根据硬件版本返回 ES8311 控制器对应的电源引脚。


5. 充电 IC CMD 引脚的获取:

此函数根据硬件版本返回充电 IC 的命令引脚。


6. 出厂测试结果获取及版本号管理:

提供了获取当前硬件版本号和出厂测试结果的方法,以及设置硬件版本号的功能。

6.2.3 总结说明

整段代码的主要功能是提供对印刷电路板(PCB)相关硬件配置和状态的管理。通过读取 OTP 存储区,程序能够获取设备的特定参数(如版本号和出厂测试结果)。此外,它还实现对 GNSS 电源、ES8311 音频编解码器以及充电 IC 的控制接口,根据不同的硬件版本提供不同的引脚控制方案。

6.3 batteryManage.lua 中代码介绍

6.3.1 代码说明

这段代码是一个电池管理模块的实现,主要用于监控和管理电池状态,包括电压检测、充电状态判断、电量计算和自动关机功能。

6.3.2 代码逐步解析

1. 模块定义

创建一个名为 M 的模块,定义模块名称为“batteryManage”。


2. 引入库

引入了 sys 和 sysplus 库,这些库提供了系统和附加功能的支持。


3. 初始化状态变量

M.vbat: 当前电池电压。

M.batteryPercent: 电池电量百分比,初始为 50。

M.isCharge: 标识是否正在充电。

M.BATTERY_UPDATE_INTERVAL: 电池信息更新的时间间隔(秒)。

M.noChargeDuration: 记录未插入电源的时间。

M.CHARGE_THRESHOLD_TIME: 未充电持续时间的阈值(2 分钟)。

M.blueLed 和 M.redLed: 用于设置蓝灯和红灯的状态,分别用 GPIO 接口进行控制。


4. 电池放电曲线

定义一个电池放电曲线数组,该数组存储对应电量的电压值,用于通过电压推算电量百分比。


5. 重置未充电时长

重置未充电计时器的函数。


6. 关机函数

该函数用于发布关机信号,以请求系统关机。


7. 充电状态检测

使用 GPIO 中断回调来检测充电状态,如果通过 GPIO 引脚检测到充电状态发生变化,将更新充电状态并检查电池状态。


8. 电量百分比计算

根据当前电压 M.vbat 计算电池百分比。如果电压在放电曲线数组的范围内,则返回相应的电量百分比。


9. 定期检查电池状态

定期更新电池电量,读取电压并计算电量。如果电量低于 30%,且没有插入电源的时间超过 2 分钟,则调用关机函数。


10. 长按电源键关机

实现了长按电源键的关机逻辑,按下电源键 3 秒后进行关机,松开时取消关机。


6.3.3 总结说明

整体而言,该模块负责监控电池的电压和充电状态。它能够定期更新电量百分比,并在必要时自动关机。此外,该模块还允许用户通过长按电源键来手动关机。其主要功能是确保设备在电量过低时保护系统不受损坏,同时提供充电状态的实时反馈。

6.3 main.lua 中代码介绍

6.3.1 代码说明

该文件中的代码使用 Lua 语言编写,主要用于管理和监控设备的电源和电池状态。

6.3.2 代码逐步解析

1. 项目和版本信息

这部分定义了项目名称和版本,并记录日志信息,便于后续的调试和维护。


2. 库的引入

在这里,引入了多个必要的库文件,包括系统管理库 sys、电路板库 pcb、充电逻辑库和电池管理库。通过这些库,程序可以实现对系统的控制和管理。 特别说明:主要功能代码已经模块化到 batteryManage 库文件中。


3. 开机防抖

这部分代码用于防止开机时的抖动,并点亮红色指示灯,以表明设备正在启动。


4. GPIO 设置

通过 gpio.setup 配置了两个引脚:一个用于监测充电状态,另一个用于电源键的回调。


5. 关机处理

这段代码订阅了系统关机事件,当设备接收到关机信号时,会调用 pm.shutdown() 函数进行安全关机。


6. 启动初始检查

在系统启动时,首先进行一次电池充电状态检查,并设置一个定时器,每 60 秒更新一次电池电量信息。


7. 日志输出

此段代码设置了一个定时器,每隔 5 秒输出一次当前电池状态的日志信息,包括电压、电池电量及充电状态,便于监控和调试。


8. 程序运行

最后,sys.run() 函数用于启动系统的主循环,让程序保持运行状态。


6.3.3 总结说明

该代码的主要功能是管理和监控嵌入式设备的电源与电池状态,具备开机防抖、充电状态检测、定时更新电池电量和记录日志等功能。

6.4 完整代码展示

此处只展示 batteryManage.lua 和 main.lua。其余完整代码请下载源码查看。

batteryManage.lua


main.lua

6.5 运行结果展示

通过 Luatoos 工具查看


七、总结

本文介绍了电源管理系统的基本概念、目标以及在实际应用中的实现方式。通过深入分析电源管理的各个功能模块,我们了解了电量监测、充电检测、自动关机和用户接口等关键功能。这些功能共同构成了一个高效且智能的电源管理系统,能够显著提升设备的性能和用户满意度。

在电源管理实践中,合理的策略和有效的代码实施是成功的关键。通过实时监测电池状态和智能控制电源操作,不仅能够延长设备的使用时间,还能确保设备在关键时刻的稳定性与可靠性。这对于以移动设备和嵌入式系统为主的应用场景尤其重要。

未来,我们可以继续探索更为先进的电源管理技术,比如基于人工智能的预测分析和优化算法,以便进一步提高电源管理的智能化水平。这将为设备的使用者带来更佳的体验,使电源管理成为每一款电子设备中不可或缺的一部分。

八、常见问题

1. 设备无法开启或频繁自动关机

检查电池电量是否低于安全工作水平,确保设备充电。如果电量很低,请连接电源并充电一段时间再尝试开机。

2. 电池电量显示不准确

确保电池电压监测模块正常工作,检查 ADC 通道是否正确配置。如有必要,重新校准电池电量百分比计算的映射表。

3. 充电状态无法正确识别

检查充电检测的 GPIO 引脚连接是否正常,确认是否存在接触不良或线路损坏的问题。此外,确保所用充电器和数据线与设备兼容。

4. 系统在充电时无法正常运行

检查是否有其他程序或任务占用过多资源,导致系统不稳定。可以考虑优化系统任务的优先级或关闭不必要的功能模块。

5. 长按电源键无反应

确认电源键的 GPIO 引脚连接正常,确保其可被正常识别。如果仍然无效,请检查相关代码对电源键的事件处理是否正确。

6. 设备发热严重

设备发热可能是由于充电速率过高或设备运行负载过重引起的。建议降低负载、优化代码,或调整充电策略。

7. 无法更新固件或脚本

检查 USB 连接是否正常,确保 Luatools 工具正确识别设备。注意遵循烧录步骤,并确保所用的固件版本与硬件兼容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源视觉语言模型MiniMax-VL-01:动态分辨率+4M超长文本,性能比肩GPT-4o

在人工智能领域,构建能够像人类一样理解、思考和行动的智能体(AI Agent)一直是研究人员的终极目标之一。而实现这一目标的关键在于模型是否具备足够强大的感知能力、记忆能力和推理能力。近期,国内人工智能公司MiniMax重磅开源了其…

Java面试第十三山!《设计模式》

大家好,我是陈一。如果文章对你有帮助,请留下一个宝贵的三连哦~ 万分感谢! 一、设计模式入门指南 1. 什么是设计模式? 设计模式是可复用的解决方案模板,用于解决软件开发中常见的架构问题。如同建筑领域的…

vue 点击放大,图片预览效果

背景: 在使用vue框架element组件的背景下,我们对图片的展示需要点击放大(单张);如果是多张图片,要支持左右滑动查看多张图片(多张)。 单张图片放大,el-image图片组件,或者原生的img标签。 多张图片放大&…

笛卡尔轨迹规划之齐次变换矩阵与欧拉角、四元数的转化

一、笛卡尔轨迹规划需求 笛卡尔轨迹规划本质就是我们对机械臂的末端位置和姿态进行规划,其实也就是对末端坐标系的位姿进行规划。我们清楚末端坐标系的位姿是可以用齐次变换矩阵T来表示的,但这样表示的话,并不利于我们去做规划,所…

NPU上如何使能pytorch图模式

1 Pytorch的compile技术 PyTorch 的 torch.compile 是一个强大的功能,用于优化 PyTorch 模型的性能。它通过将 PyTorch 的动态图转换为静态图,并利用 Just-In-Time(JIT)编译技术,显著提高模型的推理速度和训练效率。 …

进制转换(c++)

由于进制转换属于基础且比较重要,所以我就写一个博客方便自己复习,过程中如有错误,还请指出。 常用的进制有二进制,八进制,十进制和十六进制。 常用的进制转换就是十进制转换成其他进制和其他进制转换成十进制 我们先…

2025-03-24 学习记录--C/C++-PTA 习题7-7 字符串替换

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题7-7 字符串替换 本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换&#…

为什么TCP需要三次握手?一次不行吗?

文章目录 1. 三次握手的过程2. 为什么需要三次握手?3. 握手过程中每一步的具体作用4. 简单比喻5. 为什么是三次握手,而不是两次或四次?6. 三次握手中的序列号有什么作用?7. 总结 1. 三次握手的过程 三次握手是建立 TCP 连接的过程…

SpringBoot2集成Elasticsearch8(使用spring-boot-starter-data-elasticsearch)

写在前面 使用spring-boot-starter-data-elasticsearch集成Elasticsearch8? What? 官方写的不支持啊?让我们来看下官方给出的版本建议。 官方地址: https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.…

【平台优化】持续调度参数在高负载大集群中的影响

持续调度参数在高负载大集群中的影响 背景介绍2种调度通信方式对集群的影响社区相关的讨论结论 背景介绍 这几年经历了我们大数据的Yarn集群的几次扩容,集群从原先的800多台增加到1300多台到现在的1600多台,在集群规模不断增加的过程中,有遇…

ElasticSearch 可观测性最佳实践

ElasticSearch 概述 ElasticSearch 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别(大数据时代)的数据。ES 也使用 Java 开…

(一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)

(这篇写的全是基矢变换矩阵)不是坐标变换矩阵,坐标变换矩阵的话转置一下,之后会有推导. 是通过M转置变换到P撇点.

基于Spring Boot + Vue的银行管理系统设计与实现

基于Spring Boot Vue的银行管理系统设计与实现 一、引言 随着金融数字化进程加速,传统银行业务向线上化转型成为必然趋势。本文设计并实现了一套基于Spring Boot Vue的银行管理系统,通过模块化架构满足用户、银行职员、管理员三类角色的核心业务需求…

数据库基础知识点(系列一)

1.数据库的发展历史分哪几个阶段?各有什么特点? 答:数据库技术经历了人工管理阶段、文件系统阶段和数据库系统三个阶段。 1)人工管理阶段 这个时期数据管理的特点是: 数据由计算或处理它的程序自行携带…

JVM常用概念之身份哈希码

问题 当我们调用Object.hashCode时,如果没有用户没有提供哈希码,会发生什么? System.identityHashCode如何工作?它是否获取对象地址? 基础知识 在 Java 中,每个对象都有equals和hashCode ,即…

vue 对接 paypal 订阅和支付

一个是支付一个是订阅,写的时候尝试把他们放到一个里面,但是会报错,所以分开写了 我们的页面,前三个为订阅最后一个是支付,我把他们放到一个数组里面循环展示的,所以我们判断的时候只要判断id是否为4&#…

基于javaweb的SpringBoot实习管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

流影---开源网络流量分析平台(一)(小白超详细)

目录 流影介绍 一、技术架构与核心技术 二、核心功能与特性 流影部署 流影介绍 一、技术架构与核心技术 模块化引擎设计 流影采用四层模块化架构:流量探针(数据采集)、网络行为分析引擎(特征提取)、威胁检测引擎&…

Oracle 数据库安全评估(DBSAT)简明过程

下载DBSAT 从这里下载。 实际是从MOS中下载,即:Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)。 最新版本为3.1.0 (July 2024),名为dbsat.zip,近45MB。 $ ls -lh dbsat.zip -rw-rw-r-- 1 oracle oins…

【T2I】Divide Bind Your Attention for Improved Generative Semantic Nursing

CODE: GitHub - boschresearch/Divide-and-Bind: Official implementation of "Divide & Bind Your Attention for Improved Generative Semantic Nursing" (BMVC 2023 Oral) ABSTRACT 新兴的大规模文本到图像生成模型,如稳定扩散(SD),已…