物联网嵌入式开发实训室建设方案探讨(高职物联网应用技术专业实训室建设)

news2025/6/8 0:30:17

一、建设背景与目标

在当今数字化时代,物联网技术正以前所未有的速度改变着人们的生活和工作方式。从智能家居到工业自动化,从智能交通到环境监测,物联网的应用场景无处不在。根据市场研究机构的数据,全球物联网设备连接数量预计将在未来几年内达到数百亿,这一庞大的数字背后,是对物联网嵌入式开发人才的巨大需求。

嵌入式开发作为物联网技术的核心支撑,其重要性不言而喻。嵌入式系统广泛应用于各种智能设备中,负责控制硬件、处理数据以及实现设备间的通信。随着物联网的发展,嵌入式开发不仅需要掌握传统的硬件设计和软件开发技能,还需要融合通信技术、传感器技术、人工智能等多领域知识,以满足智能设备日益复杂的功能需求。

然而,当前物联网嵌入式开发人才的供应远远无法满足市场需求。一方面,物联网技术的快速发展使得企业对具备最新技术和实践经验的人才求贤若渴;另一方面,高校和职业教育机构的课程设置往往滞后于行业变化,培养出的学生难以直接胜任实际工作岗位。据相关统计,物联网相关的嵌入式工程师人才需求同比增速超过 46%,平均招聘薪酬达到 18132 元 ,人才紧缺程度高于其他技术职位。这一现状不仅制约了物联网产业的进一步发展,也为教育机构提出了新的挑战和机遇。

基于上述背景,本物联网嵌入式开发实训室的建设旨在搭建一个理论与实践相结合的教学平台,通过模拟真实的项目开发环境,让学生深入掌握物联网嵌入式开发的核心技能,包括嵌入式系统设计、硬件接口开发、传感器数据采集与处理、无线通信技术等。同时,实训室还将注重培养学生的创新思维和团队协作能力,使他们能够在毕业后迅速适应企业的工作需求,为物联网产业的发展输送高素质的应用型人才。

二、实训室整体规划

2.1 功能区域划分

1.实训操作区:这是实训室的核心区域,配备多张实训桌,每张桌子可满足 4 - 6 名学生同时进行实训操作。桌上放置嵌入式开发板、传感器模块、示波器、万用表等硬件设备 ,以及计算机用于编写和调试程序。操作区布局应合理,保证学生有足够的操作空间,同时便于教师巡视指导。

2.理论教学区:配备多媒体教学设备,如投影仪、电子白板、音响系统等,用于教师讲解物联网嵌入式开发的理论知识,包括嵌入式系统原理、编程语言、通信协议等内容。教学区可设置为阶梯教室形式,确保每个学生都能清楚地看到教学内容和演示。

3.研讨交流区:设置舒适的桌椅和讨论板,供学生进行小组讨论、项目策划和经验交流。在这个区域,学生可以分享自己在实训过程中的心得和遇到的问题,共同探讨解决方案。教师也可以在这里组织小组项目汇报和点评,促进学生之间的思想碰撞和团队协作。

4.设备存储区:用于存放备用的硬件设备、工具和耗材,如额外的开发板、传感器、芯片、线缆等。存储区应做好分类管理,方便设备的取用和归还,并定期进行盘点和维护,确保设备的完好性和可用性。

2.2 设备选型与采购

1.硬件设备

嵌入式开发板:选择主流的 ARM 架构开发板,如树莓派、STM32 开发板等。树莓派具有丰富的接口和强大的社区支持,适合进行物联网应用开发的快速原型搭建;STM32 开发板则以其高性能、低功耗和丰富的外设资源,适合深入学习嵌入式系统的硬件设计和底层驱动开发。例如,在进行智能家居项目实训时,树莓派可以作为智能网关,连接各种传感器和智能设备,实现数据的采集和控制;STM32 开发板可以用于开发智能传感器节点,负责数据的采集和初步处理 。

传感器模块:采购多种类型的传感器模块,包括温湿度传感器(如 DHT11、SHT30)、光照传感器(如 BH1750)、压力传感器(如 MPX4115)、人体红外传感器(如 HC - SR501)等。这些传感器可用于模拟不同的物联网应用场景,如环境监测、智能安防等。以环境监测项目为例,温湿度传感器可以实时采集环境的温度和湿度数据,光照传感器可以监测光照强度,压力传感器可以测量大气压力,这些数据通过嵌入式开发板处理后,可以上传到云端进行分析和展示。

仪器仪表:配备示波器(如普源 DS1054Z)、万用表(如胜利 VC890D)、逻辑分析仪(如 Saleae Logic 8)等仪器仪表,用于硬件电路的调试和分析。示波器可以观察信号的波形和参数,万用表可以测量电压、电流、电阻等物理量,逻辑分析仪可以捕捉和分析数字信号,帮助学生快速定位硬件故障和调试程序。

计算机:选用性能稳定、配置较高的台式计算机,满足编译程序、运行仿真软件和处理大量数据的需求。推荐配置为 Intel Core i5 及以上处理器、16GB 内存、512GB 固态硬盘,操作系统可选择 Windows 10 专业版。

2.软件工具

集成开发环境(IDE):安装 针对嵌入式开发的 IDE,支持 C、C++ 等编程语言的编写、编译和调试。

操作系统:除了 Windows 操作系统外,还应安装嵌入式 Linux 操作系统,用于嵌入式系统的开发和移植。

仿真软件:使用仿真软件,帮助学生在虚拟环境中设计和验证电路,降低硬件实验的成本和风险。

物联网平台:通过唯众物联网平台等,让学生学习如何将嵌入式设备连接到云端,实现数据的存储、分析和远程控制。

2.3 实训室规划设计图

三、实训教学内容

(一)基本输入输出实训

基本输入输出是嵌入式开发的基础,通过这一实训,学生将深入理解微控制器与外部设备之间的数据交互原理。以按键控制 LED 灯为例,学生首先需要了解开发板上按键和 LED 灯所连接的 GPIO(通用输入输出)引脚。比如,在 STM32 开发板中,按键可能连接到 PA0 引脚,LED 灯连接到 PB5 引脚 。

在硬件连接完成后,学生将使用 C 语言进行编程。代码编写过程中,首先要初始化 GPIO 引脚,设置按键引脚为输入模式,LED 引脚为输出模式。例如,使用 STM32 的标准库函数,代码如下:

#include "stm32f10x.h"

void GPIO_Init(void) {

GPIO_InitTypeDef GPIO_InitStructure;

// 使能GPIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

// 配置按键引脚PA0为输入模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

// 配置LED引脚PB5为输出模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

}

int main(void) {

GPIO_Init();

while (1) {

if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) {

GPIO_SetBits(GPIOB, GPIO_Pin_5);

} else {

GPIO_ResetBits(GPIOB, GPIO_Pin_5);

}

}

}

在上述代码中,GPIO_Init函数负责初始化 GPIO 引脚。在main函数的无限循环中,通过GPIO_ReadInputDataBit函数读取按键引脚的电平状态,如果按键被按下(引脚电平为低),则通过GPIO_SetBits函数点亮 LED 灯;否则,通过GPIO_ResetBits函数熄灭 LED 灯。通过这个简单的实验,学生可以直观地看到按键状态的变化如何控制 LED 灯的亮灭,从而掌握基本输入输出的原理和操作方法。

(二)中断实训

中断是嵌入式系统中一项关键的技术,它允许微控制器在特定事件发生时暂停当前任务,转而执行中断服务程序,提高了系统的实时响应能力。在中断实训中,首先要向学生介绍中断的概念、作用以及中断处理的流程 。

以按键中断实验为例,硬件连接与基本输入输出实训类似,但在软件编程上有较大区别。学生需要配置中断相关的寄存器,使能按键引脚的中断功能,并编写中断服务程序。以 STM32 为例,代码实现如下:

#include "stm32f10x.h"

void GPIO_Init(void) {

GPIO_InitTypeDef GPIO_InitStructure;

// 使能GPIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

// 配置按键引脚PA0为输入模式,并使能上拉电阻

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

// 配置LED引脚PB5为输出模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void NVIC_Init(void) {

NVIC_InitTypeDef NVIC_InitStructure;

// 配置中断优先级分组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

// 配置按键中断

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

void EXTI0_IRQHandler(void) {

if (EXTI_GetITStatus(EXTI_Line0) != RESET) {

if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) {

GPIO_SetBits(GPIOB, GPIO_Pin_5);

} else {

GPIO_ResetBits(GPIOB, GPIO_Pin_5);

}

EXTI_ClearITPendingBit(EXTI_Line0);

}

}

int main(void) {

GPIO_Init();

NVIC_Init();

// 配置EXTI中断线

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line = EXTI_Line0;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

while (1) {

// 主循环可以执行其他任务

}

}

在这段代码中,GPIO_Init函数负责初始化 GPIO 引脚;NVIC_Init函数配置中断向量控制器(NVIC),设置按键中断的优先级并使能中断;EXTI0_IRQHandler是中断服务程序,当按键按下(触发下降沿中断)时,在中断服务程序中读取按键状态并控制 LED 灯的亮灭,最后清除中断标志位。在main函数中,除了初始化 GPIO 和 NVIC 外,还配置了外部中断线(EXTI),设置触发方式为下降沿触发。通过这个实验,学生可以掌握中断编程的方法,理解中断如何提高系统的实时性。

(三)定时器实训

定时器在嵌入式系统中有着广泛的应用,如定时任务调度、PWM 信号生成、时间测量等。在定时器实训中,首先要向学生讲解定时器的工作原理,包括定时器的计数模式、时钟源选择、预分频器的作用等内容 。

以定时闪烁 LED 灯为例,使用 STM32 的定时器 TIM2 来实现。硬件连接上,LED 灯连接到一个 GPIO 引脚上,这里假设为 PB5。软件编程方面,代码如下:

#include "stm32f10x.h"

void GPIO_Init(void) {

GPIO_InitTypeDef GPIO_InitStructure;

// 使能GPIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

// 配置LED引脚PB5为输出模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void TIM2_Init(void) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

// 使能TIM2时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

// 定时器基本配置

TIM_TimeBaseStructure.TIM_Period = 9999;

TIM_TimeBaseStructure.TIM_Prescaler = 7199;

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

// 使能TIM2中断

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

// 启动TIM2

TIM_Cmd(TIM2, ENABLE);

}

void NVIC_Init(void) {

NVIC_InitTypeDef NVIC_InitStructure;

// 配置中断优先级分组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

// 配置TIM2中断

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

void TIM2_IRQHandler(void) {

if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {

GPIO_SetBits(GPIOB, GPIO_Pin_5);

TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

TIM_SetCounter(TIM2, 0);

while (TIM_GetCounter(TIM2) < 5000);

GPIO_ResetBits(GPIOB, GPIO_Pin_5);

}

}

int main(void) {

GPIO_Init();

TIM2_Init();

NVIC_Init();

while (1) {

// 主循环可以执行其他任务

}

}

在上述代码中,GPIO_Init函数初始化 LED 引脚为输出模式;TIM2_Init函数配置定时器 TIM2,设置定时器的周期为 9999,预分频器为 7199,这样定时器的计数频率为 1kHz,每 1ms 产生一次中断。同时使能定时器中断并启动定时器;NVIC_Init函数配置中断向量控制器,使能 TIM2 中断;TIM2_IRQHandler是定时器中断服务程序,在中断服务程序中,先点亮 LED 灯,然后清除中断标志位,重置定时器计数器,并通过一个简单的延时控制 LED 灯亮的时间,最后熄灭 LED 灯。通过这个实验,学生可以掌握定时器的使用方法,学会如何利用定时器实现定时控制任务。

(四)总线接口读取传感器数据实训

在物联网应用中,传感器数据的采集是关键环节。不同的传感器通常通过各种总线接口与微控制器进行通信,常见的总线接口包括 I2C、SPI、UART 等 。

以温度传感器 SHT30 为例,它采用 I2C 总线接口与微控制器通信。在硬件连接上,SHT30 的 SCL 引脚连接到微控制器的 I2C 时钟引脚(如 STM32 的 PB6),SDA 引脚连接到 I2C 数据引脚(如 STM32 的 PB7) 。

软件编程方面,首先要初始化 I2C 总线,然后编写函数来读取 SHT30 的温度数据。以 STM32 为例,使用 HAL 库实现代码如下:

#include "stm32f10x_hal.h"

I2C_HandleTypeDef hi2c1;

void I2C_Init(void) {

hi2c1.Instance = I2C1;

hi2c1.Init.ClockSpeed = 100000;

hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;

hi2c1.Init.OwnAddress1 = 0;

hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;

hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;

hi2c1.Init.OwnAddress2 = 0;

hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;

hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;

if (HAL_I2C_Init(&hi2c1) != HAL_OK) {

Error_Handler();

}

}

float Read_Temperature(void) {

uint8_t data[6];

float temperature;

// 发送测量命令

uint8_t cmd[2] = {0x2C, 0x06};

if (HAL_I2C_Master_Transmit(&hi2c1, 0x44 << 1, cmd, 2, 1000) != HAL_OK) {

Error_Handler();

}

HAL_Delay(50);

// 读取测量数据

if (HAL_I2C_Master_Receive(&hi2c1, 0x44 << 1, data, 6, 1000) != HAL_OK) {

Error_Handler();

}

// 数据解析

uint16_t temp_raw = (data[0] << 8) | data[1];

temperature = -45 + 175 * (float)temp_raw / 65535;

return temperature;

}

int main(void) {

HAL_Init();

I2C_Init();

while (1) {

float temp = Read_Temperature();

// 这里可以将温度数据进行处理或上传,例如通过串口打印

printf("Temperature: %.2f C\n", temp);

HAL_Delay(1000);

}

}

void Error_Handler(void) {

while (1) {

}

}

在这段代码中,I2C_Init函数初始化 I2C1 总线,设置时钟速度为 100kHz 等参数;Read_Temperature函数负责与 SHT30 进行通信,发送测量命令并读取测量数据,然后对数据进行解析得到实际的温度值;在main函数中,初始化 I2C 总线后,在无限循环中不断读取温度数据并通过串口打印输出(这里假设已配置好串口打印功能)。通过这个实验,学生可以掌握 I2C 总线接口的使用方法,学会如何读取传感器数据并进行处理,为物联网应用开发打下基础。

四、教学方法与实施

(一)项目驱动教学法

在物联网嵌入式开发实训教学中,项目驱动教学法是一种行之有效的教学方式。以智能家居系统项目为例,这个项目涵盖了多个物联网嵌入式开发的关键知识点和技能点。

在项目开始阶段,教师首先提出项目需求,比如构建一个具备环境监测、家电控制和安防报警功能的智能家居系统。学生需要根据这个需求进行需求分析,确定系统所需的硬件设备和软件功能。在硬件方面,可能会选用温湿度传感器来监测室内温湿度,人体红外传感器实现安防监测,智能插座控制家电电源等 ,并通过 Wi-Fi 模块或蓝牙模块实现数据传输和远程控制。

在软件编程方面,学生需要运用之前所学的知识。例如,利用基本输入输出控制各个设备的工作状态,通过中断机制实现安防报警的实时响应,使用定时器来定时采集环境数据。在数据传输过程中,需要编写相应的通信程序,实现设备与智能终端(如手机)之间的通信,以便用户能够通过手机 APP 远程监控和控制家居设备。

通过这样一个完整的项目实践,学生不仅能够将所学的理论知识应用到实际项目中,还能在项目实施过程中遇到各种实际问题,如硬件兼容性问题、软件调试问题等。在解决这些问题的过程中,学生能够深入理解物联网嵌入式开发的原理和方法,提高自己的实践能力和解决问题的能力。

(二)分组协作学习

分组协作学习是培养学生团队合作精神和沟通能力的重要方式。在分组时,遵循 “同组异质、异组同质” 的原则 。

“同组异质” 是指将不同能力水平、知识背景和性格特点的学生分在同一组。例如,有的学生编程能力较强,有的学生硬件设计能力突出,还有的学生具有较强的沟通和组织能力。将这些学生组合在一起,能够实现优势互补。在小组协作过程中,编程能力强的学生可以负责软件代码的编写和调试,硬件设计能力好的学生负责硬件电路的设计和搭建,沟通能力强的学生则负责小组与教师之间的沟通以及小组内部的协调工作。

“异组同质” 则是保证各个小组之间的整体实力相当,这样有利于组际之间的公平竞争和交流。在项目实践过程中,各小组可以互相分享经验和成果,共同探讨遇到的问题。例如,在进行智能家居系统项目时,一个小组在温湿度传感器数据采集和处理方面有独特的方法,另一个小组在智能插座的控制算法上有创新之处,通过组际交流,两个小组都能学习到对方的优点,从而提升自己的项目水平。

在小组协作过程中,每个成员都要明确自己的职责,定期进行小组讨论和汇报,确保项目的顺利进行。教师也要定期对小组进行指导和评价,及时发现问题并给予建议,促进小组协作的有效性。

(三)实践教学安排

为了确保实训教学的顺利进行,合理安排理论与实践教学时间至关重要。以下是一个为期 16 周的实训课程表示例:

在这个课程表中,理论教学与实践教学紧密结合,每周都安排了相应的实践内容,让学生能够及时将所学理论知识应用到实践中。同时,随着课程的推进,实践项目的难度逐渐增加,从简单的基础实训到复杂的智能家居系统项目,逐步提升学生的实践能力和综合素养。

五、师资队伍建设

(一)教师能力要求

专业知识:教师应具备扎实的物联网和嵌入式开发专业知识。在物联网方面,要深入理解物联网的体系架构,包括感知层、网络层和应用层的相关技术,如传感器原理与应用、无线通信协议(Wi-Fi、蓝牙、ZigBee 等)、云计算与大数据在物联网中的应用等。在嵌入式开发领域,需掌握嵌入式微处理器的体系结构,如 ARM、MIPS 等,熟悉常见的嵌入式操作系统,如嵌入式 Linux、RT-Thread、FreeRTOS 等,精通 C、C++ 等编程语言,能够进行底层驱动开发和应用程序编写。

实践经验:拥有丰富的项目实践经验是教师的重要能力之一。教师应参与过实际的物联网嵌入式项目开发,如智能家居系统的设计与实现、工业自动化设备的嵌入式软件开发、智能穿戴设备的研发等。通过这些项目经验,教师能够将实际工作中的问题和解决方案融入到教学中,使学生更好地了解行业实际需求,掌握实用的开发技能。例如,在讲解传感器数据采集时,教师可以分享在项目中遇到的传感器校准、抗干扰等实际问题及解决方法,让学生明白理论知识与实际应用之间的差距和联系。

(二)教师培训与发展

制定定期的教师培训计划,安排教师参加专业培训机构或高校举办的物联网嵌入式开发培训课程。这些课程可以涵盖最新的技术发展趋势、行业标准和最佳实践等内容。同时,鼓励教师参加在线学习平台上的相关课程,利用碎片化时间进行知识更新。

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

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

相关文章

集成学习三种框架

集成学习通过组合多个弱学习器构建强学习器&#xff0c;常见框架包括Bagging&#xff08;装袋&#xff09;、Boosting&#xff08;提升&#xff09; 和Stacking&#xff08;堆叠&#xff09; 一、Bagging&#xff08;自助装袋法&#xff09; 核心思想 从原始数据中通过有放回…

在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新

​原因​&#xff1a;未重新编译UI文件​​ Qt的UI文件&#xff08;.ui&#xff09;需要通过​​uic工具&#xff08;Qt的UI编译器&#xff09;​​生成对应的ui_*.h头文件。如果你在Qt Designer中修改了对象名&#xff0c;但没有​​重新构建&#xff08;Rebuild&#xff09;…

Neovim - 常用插件,提升体验(三)

文章目录 nvim-treelualineindent-blanklinetelescopegrug-far nvim-tree 官方文档&#xff1a;https://github.com/nvim-tree/nvim-tree.lua 以前我们都是通过 :e 的方式打开一个 buffer&#xff0c;但是这种方式需要记忆文件路径&#xff0c;因此这里可以通过 nvim-tree 插…

SOC-ESP32S3部分:31-ESP-LCD控制器库

飞书文档https://x509p6c8to.feishu.cn/wiki/Syy3wsqHLiIiQJkC6PucEJ7Snib ESP 系列芯片可以支持市场上常见的 LCD&#xff08;如 SPI LCD、I2C LCD、并行 LCD (Intel 8080)、RGB/SRGB LCD、MIPI DSI LCD 等&#xff09;所需的各种时序。esp_lcd 控制器为上述各类 LCD 提供了一…

【云安全】以Aliyun为例聊云厂商服务常见利用手段

目录 OSS-bucket_policy_readable OSS-object_public_access OSS-bucket_object_traversal OSS-Special Bucket Policy OSS-unrestricted_file_upload OSS-object_acl_writable ECS-SSRF 云攻防场景下对云厂商服务的利用大同小异&#xff0c;下面以阿里云为例 其他如腾…

读文献先读图:GO弦图怎么看?

GO弦图&#xff08;Gene Ontology Chord Diagram&#xff09;是一种用于展示基因功能富集结果的可视化工具&#xff0c;通过弦状连接可以更直观的展示基因与GO term&#xff08;如生物过程、分子功能等&#xff09;之间的关联。 GO弦图解读 ①内圈连线表示基因和生物过程之间的…

怎么让大语言模型(LLMs)自动生成和优化提示词:APE

怎么让大语言模型(LLMs)自动生成和优化提示词:APE https://arxiv.org/pdf/2211.01910 1. 研究目标:让机器自己学会设计提示词 问题:大语言模型(如GPT-3)很强大,但需要精心设计的“提示词”才能发挥最佳效果。过去靠人工设计提示词,费时费力,还可能因表述差异导致模…

实现单例模式的常见方式

前言 java有多种设计模式&#xff0c;如下图所示&#xff1a; 单例模式它确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 1、单例模式介绍 1.1、使用原因 为什么要使用单例模式&#xff1f; 1. 控制资源访问 核心价值&#xff1a;确保对共享资源&#xff08;如…

day20 leetcode-hot100-38(二叉树3)

226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 1.广度遍历 思路 这题目很简单&#xff0c;就是交换每个节点的左右子树&#xff0c;也就是相当于遍历到某个节点&#xff0c;然后交换子节点即可。 具体步骤 &#xff08;1&#xff09;创建队列&#xff0c;使用广…

OpenVINO环境配置--OpenVINO安装

TOC环境配置–OpenVINO安装 本节内容 OpenVINO 支持的安装方式有很多种&#xff0c;每一种操作系统以及语言都有对应的安装方法&#xff0c;在官网上有很详细的教程&#xff1a;   我们可以根据自己的需要&#xff0c;来点选环境配置和安装方法&#xff0c;然后网页会给出正…

黑龙江云前沿服务器租用:便捷高效的灵活之选​

服务器租用&#xff0c;即企业直接从互联网数据中心&#xff08;IDC&#xff09;提供商处租赁服务器。企业只需按照所选的服务器配置和租赁期限&#xff0c;定期支付租金&#xff0c;即可使用服务器开展业务。​ 便捷快速部署&#xff1a;租用服务器能极大地缩短服务器搭建周期…

论文解读:Locating and Editing Factual Associations in GPT(ROME)

论文发表于人工智能顶会NeurIPS(原文链接)&#xff0c;研究了GPT(Generative Pre-trained Transformer)中事实关联的存储和回忆&#xff0c;发现这些关联与局部化、可直接编辑的计算相对应。因此&#xff1a; 1、开发了一种因果干预方法&#xff0c;用于识别对模型的事实预测起…

学习设计模式《十二》——命令模式

一、基础概念 命令模式的本质是【封装请求】命令模式的关键是把请求封装成为命令对象&#xff0c;然后就可以对这个命令对象进行一系列的处理&#xff08;如&#xff1a;参数化配置、可撤销操作、宏命令、队列请求、日志请求等&#xff09;。 命令模式的定义&#xff1a;将一个…

十三、【核心功能篇】测试计划管理:组织和编排测试用例

【核心功能篇】测试计划管理&#xff1a;组织和编排测试用例 前言准备工作第一部分&#xff1a;后端实现 (Django)1. 定义 TestPlan 模型2. 生成并应用数据库迁移3. 创建 TestPlanSerializer4. 创建 TestPlanViewSet5. 注册路由6. 注册到 Django Admin 第二部分&#xff1a;前端…

手撕 K-Means

1. K-means 的原理 K-means 是一种经典的无监督学习算法&#xff0c;用于将数据集划分为 kk 个簇&#xff08;cluster&#xff09;。其核心思想是通过迭代优化&#xff0c;将数据点分配到最近的簇中心&#xff0c;并更新簇中心&#xff0c;直到簇中心不再变化或达到最大迭代次…

SmolVLA: 让机器人更懂 “看听说做” 的轻量化解决方案

&#x1f9ed; TL;DR 今天&#xff0c;我们希望向大家介绍一个新的模型: SmolVLA&#xff0c;这是一个轻量级 (450M 参数) 的开源视觉 - 语言 - 动作 (VLA) 模型&#xff0c;专为机器人领域设计&#xff0c;并且可以在消费级硬件上运行。 SmolVLAhttps://hf.co/lerobot/smolvla…

day45python打卡

知识点回顾&#xff1a; tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战&#xff1a;MLP和CNN模型 效果展示如下&#xff0c;很适合拿去组会汇报撑页数&#xff1a; 作业&#xff1a;对resnet18在cifar10上采用微调策略下&#xff0c;用tensorbo…

AIGC赋能前端开发

一、引言&#xff1a;AIGC对前端开发的影响 1. AIGC与前端开发的关系 从“写代码”到“生成代码”传统开发痛点&#xff1a;重复性编码工作、UI 设计稿还原、问题定位与调试...核心场景的AI化&#xff1a;需求转代码&#xff08;P2C&#xff09;、设计稿转代码&#xff08;D2…

Web 3D协作平台开发案例:构建制造业远程设计与可视化协作

HOOPS Communicator为开发者提供了丰富的定制化能力&#xff0c;助力他们在实现强大 Web 3D 可视化功能的同时&#xff0c;灵活构建符合特定业务需求的工程应用。对于希望构建在线协同设计工具的企业而言&#xff0c;如何在保障性能与用户体验的前提下实现高效开发&#xff0c;…

AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent

开篇 AI Agent2025确定是进入了爆发期,到处都在冒出各种各样的实用AI Agent。很多人、组织都投身于开发AI Agent。 但是从3月份开始业界开始出现了一种这样的声音: AI开发入门并不难,一旦开发完后没法用! 经历过至少一个AI Agent从开发到上线的小伙伴们其实都听到过这种…