基于STM32和人工智能的智能仓储管理系统

news2024/11/28 10:38:17

目录

  1. 引言
  2. 环境准备
  3. 智能仓储管理系统基础
  4. 代码实现:实现智能仓储管理系统
    • 4.1 数据采集模块
    • 4.2 数据处理与分析
    • 4.3 控制系统
    • 4.4 用户界面与数据可视化
  5. 应用场景:智能仓储管理与优化
  6. 问题解决方案与优化
  7. 收尾与总结

1. 引言

智能仓储管理系统通过结合STM32嵌入式系统和人工智能技术,实现对仓库环境的实时监测、库存管理和自动控制,提升仓储效率和管理水平。本文将详细介绍如何在STM32嵌入式系统中结合人工智能技术实现一个智能仓储管理系统,包括环境准备、系统架构、代码实现、应用场景及问题解决方案和优化方法。

2. 环境准备

硬件准备

  • 开发板:STM32F407 Discovery Kit
  • 调试器:ST-LINK V2或板载调试器
  • 温湿度传感器:如DHT22
  • 重量传感器:如HX711
  • RFID模块:用于物品识别
  • 摄像头:用于实时监控
  • 显示屏:如OLED显示屏
  • 电机控制模块:用于货架控制
  • 按键或旋钮:用于用户输入和设置
  • 电源:12V或24V电源适配器

软件准备

  • 集成开发环境(IDE):STM32CubeIDE或Keil MDK
  • 调试工具:STM32 ST-LINK Utility或GDB
  • 库和中间件:STM32 HAL库、TensorFlow Lite
  • 人工智能模型:用于数据分析和预测

安装步骤

  1. 下载并安装 STM32CubeMX
  2. 下载并安装 STM32CubeIDE
  3. 配置STM32CubeMX项目并生成STM32CubeIDE项目
  4. 安装必要的库和驱动程序
  5. 下载并集成 TensorFlow Lite 库

3. 智能仓储管理系统基础

控制系统架构

智能仓储管理系统由以下部分组成:

  • 数据采集模块:用于采集环境和库存数据(温湿度、重量、物品识别等)
  • 数据处理与分析:使用人工智能算法对采集的数据进行分析和预测
  • 控制系统:根据分析结果控制仓库设备(如货架、电机等)
  • 显示系统:用于显示仓储状态和系统信息
  • 用户输入系统:通过按键或旋钮进行设置和调整

功能描述

通过温湿度传感器、重量传感器、RFID模块和摄像头采集仓库环境和库存数据,并使用人工智能算法进行分析和预测,实时控制仓库设备,实现智能化的仓储管理。用户可以通过按键或旋钮进行设置,并通过显示屏查看当前状态和系统信息。

4. 代码实现:实现智能仓储管理系统

4.1 数据采集模块

配置DHT22温湿度传感器
使用STM32CubeMX配置GPIO接口:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的GPIO引脚,设置为输入模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

初始化DHT22传感器并读取数据:

#include "stm32f4xx_hal.h"
#include "dht22.h"

#define DHT22_PIN GPIO_PIN_0
#define GPIO_PORT GPIOA

void GPIO_Init(void) {
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = DHT22_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}

void DHT22_Init(void) {
    DHT22_Init(DHT22_PIN, GPIO_PORT);
}

void Read_Temperature_Humidity(float* temperature, float* humidity) {
    DHT22_ReadData(temperature, humidity);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    DHT22_Init();

    float temperature, humidity;

    while (1) {
        Read_Temperature_Humidity(&temperature, &humidity);
        HAL_Delay(1000);
    }
}

配置HX711重量传感器
使用STM32CubeMX配置GPIO接口:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的GPIO引脚,设置为输入和输出模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

初始化HX711传感器并读取数据:

#include "stm32f4xx_hal.h"
#include "hx711.h"

#define HX711_SCK_PIN GPIO_PIN_1
#define HX711_DT_PIN GPIO_PIN_2
#define GPIO_PORT GPIOA

void GPIO_Init(void) {
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = HX711_SCK_PIN | HX711_DT_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}

void HX711_Init(void) {
    HX711_Init(HX711_SCK_PIN, HX711_DT_PIN, GPIO_PORT);
}

float Read_Weight(void) {
    return HX711_GetValue();
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    HX711_Init();

    float weight;

    while (1) {
        weight = Read_Weight();
        HAL_Delay(1000);
    }
}

配置RFID模块
使用STM32CubeMX配置SPI接口:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的SPI引脚,设置为SPI模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

初始化RFID模块并读取数据:

#include "stm32f4xx_hal.h"
#include "rfid.h"

SPI_HandleTypeDef hspi1;

void SPI_Init(void) {
    __HAL_RCC_SPI1_CLK_ENABLE();

    hspi1.Instance = SPI1;
    hspi1.Init.Mode = SPI_MODE_MASTER;
    hspi1.Init.Direction = SPI_DIRECTION_2LINES;
    hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
    hspi1.Init.NSS = SPI_NSS_SOFT;
    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    hspi1.Init.CRCPolynomial = 10;
    HAL_SPI_Init(&hspi1);
}

void RFID_Init(void) {
    RFID_Init(&hspi1);
}

void Read_RFID_Data(uint8_t* id) {
    RFID_ReadID(id);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    SPI_Init();
    RFID_Init();

    uint8_t rfid_id[10];

    while (1) {
        Read_RFID_Data(rfid_id);
        HAL_Delay(1000);
    }
}

4.2 数据处理与分析

集成TensorFlow Lite进行数据分析
使用STM32CubeMX配置必要的接口,确保嵌入式系统能够加载和运行TensorFlow Lite模型。

代码实现:

初始化TensorFlow Lite:

#include "tensorflow/lite/c/common.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/micro/micro_error_reporter.h"
#include "tensorflow/lite/micro/micro_mutable_op_resolver.h"
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow/lite/version.h"
#include "model_data.h"  // 人工智能模型数据

namespace {
    tflite::MicroErrorReporter micro_error_reporter;
    tflite::MicroInterpreter* interpreter = nullptr;
    TfLiteTensor* input = nullptr;
    TfLiteTensor* output = nullptr;
    constexpr int kTensorArenaSize = 2 * 1024;
    uint8_t tensor_arena[kTensorArenaSize];
}

void AI_Init(void) {
    tflite::InitializeTarget();

    static tflite::MicroMutableOpResolver<10> micro_op_resolver;
    micro_op_resolver.AddFullyConnected();
    micro_op_resolver.Add```c
    micro_op_resolver.AddSoftmax();

    const tflite::Model* model = tflite::GetModel(model_data);
    if (model->version() != TFLITE_SCHEMA_VERSION) {
        TF_LITE_REPORT_ERROR(&micro_error_reporter,
                             "Model provided is schema version %d not equal "
                             "to supported version %d.",
                             model->version(), TFLITE_SCHEMA_VERSION);
        return;
    }

    static tflite::MicroInterpreter static_interpreter(
        model, micro_op_resolver, tensor_arena, kTensorArenaSize,
        &micro_error_reporter);
    interpreter = &static_interpreter;

    interpreter->AllocateTensors();

    input = interpreter->input(0);
    output = interpreter->output(0);
}

void AI_Run_Inference(float* input_data, float* output_data) {
    // 拷贝输入数据到模型输入张量
    for (int i = 0; i < input->dims->data[0]; ++i) {
        input->data.f[i] = input_data[i];
    }

    // 运行模型推理
    if (interpreter->Invoke() != kTfLiteOk) {
        TF_LITE_REPORT_ERROR(&micro_error_reporter, "Invoke failed.");
        return;
    }

    // 拷贝输出数据
    for (int i = 0; i < output->dims->data[0]; ++i) {
        output_data[i] = output->data.f[i];
    }
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    AI_Init();
    DHT22_Init();
    HX711_Init();
    RFID_Init();

    float input_data[INPUT_SIZE];
    float output_data[OUTPUT_SIZE];
    float temperature, humidity;
    float weight;
    uint8_t rfid_id[10];

    while (1) {
        // 获取传感器数据并填充 input_data 数组
        Read_Temperature_Humidity(&temperature, &humidity);
        weight = Read_Weight();
        Read_RFID_Data(rfid_id);

        // 假设 input_data 数组的结构为 {temperature, humidity, weight, rfid_id[0], ... , rfid_id[9]}
        input_data[0] = temperature;
        input_data[1] = humidity;
        input_data[2] = weight;
        for (int i = 0; i < 10; ++i) {
            input_data[3 + i] = rfid_id[i];
        }

        // 运行AI推理
        AI_Run_Inference(input_data, output_data);

        // 根据模型输出数据执行相应的操作
        HAL_Delay(1000);
    }
}

4.3 控制系统

配置GPIO控制电机和货架
使用STM32CubeMX配置GPIO:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的GPIO引脚,设置为输出模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

初始化电机和货架控制引脚:

#include "stm32f4xx_hal.h"

#define MOTOR_PIN GPIO_PIN_0
#define SHELF_PIN GPIO_PIN_1
#define GPIO_PORT GPIOB

void GPIO_Init(void) {
    __HAL_RCC_GPIOB_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = MOTOR_PIN | SHELF_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}

void Control_Motor(uint8_t state) {
    HAL_GPIO_WritePin(GPIO_PORT, MOTOR_PIN, state ? GPIO_PIN_SET : GPIO_PIN_RESET);
}

void Control_Shelf(uint8_t state) {
    HAL_GPIO_WritePin(GPIO_PORT, SHELF_PIN, state ? GPIO_PIN_SET : GPIO_PIN_RESET);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    AI_Init();

    float input_data[INPUT_SIZE];
    float output_data[OUTPUT_SIZE];
    float temperature, humidity;
    float weight;
    uint8_t rfid_id[10];

    while (1) {
        // 获取传感器数据并填充 input_data 数组
        Read_Temperature_Humidity(&temperature, &humidity);
        weight = Read_Weight();
        Read_RFID_Data(rfid_id);

        // 假设 input_data 数组的结构为 {temperature, humidity, weight, rfid_id[0], ... , rfid_id[9]}
        input_data[0] = temperature;
        input_data[1] = humidity;
        input_data[2] = weight;
        for (int i = 0; i < 10; ++i) {
            input_data[3 + i] = rfid_id[i];
        }

        // 运行AI推理
        AI_Run_Inference(input_data, output_data);

        // 根据AI输出控制电机和货架
        uint8_t motor_state = output_data[0] > 0.5; // 假设模型输出0代表是否启动电机
        uint8_t shelf_state = output_data[1] > 0.5; // 假设模型输出1代表是否控制货架

        Control_Motor(motor_state);
        Control_Shelf(shelf_state);

        HAL_Delay(1000);
    }
}

4.4 用户界面与数据可视化

配置OLED显示屏
使用STM32CubeMX配置I2C接口:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的I2C引脚,设置为I2C模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

首先,初始化OLED显示屏:

#include "stm32f4xx_hal.h"
#include "i2c.h"
#include "oled.h"

void Display_Init(void) {
    OLED_Init();
}

然后实现数据展示函数,将仓储数据展示在OLED屏幕上:

void Display_Warehouse_Data(float* output_data) {
    char buffer[32];
    sprintf(buffer, "Motor: %s", output_data[0] > 0.5 ? "ON" : "OFF");
    OLED_ShowString(0, 0, buffer);
    sprintf(buffer, "Shelf: %s", output_data[1] > 0.5 ? "ON" : "OFF");
    OLED_ShowString(0, 1, buffer);
    sprintf(buffer, "Temp: %.2f C", output_data[2]);
    OLED_ShowString(0, 2, buffer);
    sprintf(buffer, "Humidity: %.2f %%", output_data[3]);
    OLED_ShowString(0, 3, buffer);
    sprintf(buffer, "Weight: %.2f g", output_data[4]);
    OLED_ShowString(0, 4, buffer);
}

在主函数中,初始化系统并开始显示数据:

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    DHT22_Init();
    HX711_Init();
    RFID_Init();
    AI_Init();
    Display_Init();

    float input_data[INPUT_SIZE];
    float output_data[OUTPUT_SIZE];
    float temperature, humidity;
    float weight;
    uint8_t rfid_id[10];

    while (1) {
        // 获取传感器数据并填充 input_data 数组
        Read_Temperature_Humidity(&temperature, &humidity);
        weight = Read_Weight();
        Read_RFID_Data(rfid_id);

        // 假设 input_data 数组的结构为 {temperature, humidity, weight, rfid_id[0], ... , rfid_id[9]}
        input_data[0] = temperature;
        input_data[1] = humidity;
        input_data[2] = weight;
        for (int i = 0; i < 10; ++i) {
            input_data[3 + i] = rfid_id[i];
        }

        // 运行AI推理
        AI_Run_Inference(input_data, output_data);

        // 显示仓储数据和AI结果
        Display_Warehouse_Data(output_data);

        // 根据AI结果控制电机和货架
        uint8_t motor_state = output_data[0] > 0.5;
        uint8_t shelf_state = output_data[1] > 0.5;

        Control_Motor(motor_state);
        Control_Shelf(shelf_state);

        HAL_Delay(1000);
    }
}

⬇帮大家整理了单片机的资料

包括stm32的项目合集【源码+开发文档】

点击下方蓝字即可领取,感谢支持!⬇

点击领取更多嵌入式详细资料

问题讨论,stm32的资料领取可以私信!

5. 应用场景:智能仓储管理与优化

自动化仓储

智能仓储管理系统可以应用于自动化仓库,通过实时监测和控制,提高库存管理效率,减少人工操作。

物流中心

在物流中心,智能仓储管理系统可以帮助管理人员实时监控货物状态,优化货物存储和取货流程,提高物流效率。

医药仓库

在医药仓库,智能仓储管理系统可以监控药品存储环境,确保药品在合适的温度和湿度条件下存放,保障药品质量。

冷链物流

智能仓储管理系统在冷链物流中可以监控冷库环境,确保食品和药品在运输和存储过程中保持在合适的温度范围内,保证质量和安全。

6. 问题解决方案与优化

常见问题及解决方案

  1. 传感器数据不准确:确保传感器与STM32的连接稳定,定期校准传感器以获取准确数据。

    • 解决方案:检查传感器与STM32之间的连接是否牢固,必要时重新焊接或更换连接线。同时,定期对传感器进行校准,确保数据准确。
  2. 设备响应延迟:优化控制逻辑和硬件配置,减少设备响应时间,提高系统反应速度。

    • 解决方案:优化传感器数据采集和处理流程,减少不必要的延迟。使用DMA(直接存储器访问)来提高数据传输效率,减少CPU负担。选择速度更快的处理器和传感器,提升整体系统性能。
  3. 显示屏显示异常:检查I2C通信线路,确保显示屏与MCU之间的通信正常,避免由于线路问题导致的显示异常。

    • 解决方案:检查I2C引脚的连接是否正确,确保电源供电稳定。使用示波器检测I2C总线信号,确认通信是否正常。如有必要,更换显示屏或MCU。
  4. RFID读取不稳定:确保RFID模块和天线的连接正常,优化RFID读取算法。

    • 解决方案:检查RFID模块与天线的连接,确保接线正确、牢固。使用更高性能的RFID模块和天线,提高读取范围和稳定性。优化RFID读取算法,减少误读和漏读现象。
  5. 电池续航时间短:优化系统功耗设计,提高电池续航时间。

    • 解决方案:使用低功耗模式(如STM32的STOP模式)降低系统功耗。选择容量更大的电池,并优化电源管理策略,减少不必要的电源消耗。

优化建议

  1. 数据集成与分析:集成更多类型的传感器数据,使用大数据分析和机器学习技术进行仓储环境和库存状态的预测和优化。

    • 建议:增加更多环境和库存传感器,如光照传感器、气体传感器等。使用云端平台进行数据分析和存储,提供更全面的仓储管理服务。
  2. 用户交互优化:改进用户界面设计,提供更直观的数据展示和更简洁的操作界面,增强用户体验。

    • 建议:使用高分辨率彩色显示屏,提供更丰富的视觉体验。设计简洁易懂的用户界面,让用户更容易操作。提供图形化的数据展示,如实时图表、库存地图等。
  3. 智能化控制提升:增加智能决策支持系统,根据历史数据和实时数据自动调整仓储管理策略,实现更高效的仓储管理。

    • 建议:使用人工智能技术分析仓储数据,提供个性化的控制建议。结合历史数据,预测可能的库存短缺和需求变化,提前调整管理策略。

7. 收尾与总结

本教程详细介绍了如何在STM32嵌入式系统中结合人工智能技术实现智能仓储管理系统,从硬件选择、软件实现到系统配置和应用场景都进行了全面的阐述。通过合理的技术选择和系统设计,可以构建一个高效且功能强大的智能仓储管理系统。

总结

  1. 系统设计:结合STM32和多种传感器,实现全面的仓储环境监测和库存管理。
  2. 人工智能:使用TensorFlow Lite进行数据分析和预测,提高系统智能化水平。
  3. 用户界面:通过OLED显示屏提供直观的数据展示,提升用户体验。
  4. 优化和扩展:通过硬件和软件的优化,不断提升系统性能和可靠性。

 

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

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

相关文章

阿里巴巴橙点同学达摩院认证证书

网址&#xff1a;https://orange-class.com/ 为竞争激烈的职业做好充分的准备&#xff0c;无需相关经验立即开始学习。 阿里达摩院组织背书认证。 内容包括八个职业方向&#xff0c;涉及AI、开发、营销、设计等不同岗位&#xff1a; 其中&#xff0c;AI的高级认证情况如下&…

游戏开发丨基于Tkinter的五子棋小游戏

文章目录 写在前面Tkinter五子棋系列文章写在后面 写在前面 本期内容&#xff1a;基于tkinter的五子棋小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700190 实验环境 python3.11及以上pycharmtkinter Tkinter Tkinter是Python的一个标准…

通信系统概述

1.定义 通信系统&#xff08;也称为通信网络&#xff09;是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展&#xff…

dnsReaper:一款功能强大的子域名接管检测工具

关于dnsReaper dnsReaper是一款功能强大的子域名接管检测工具&#xff0c;该工具专为蓝队研究人员和漏洞猎人设计&#xff0c;并且能够在保证运行速度的情况下&#xff0c;提供较高的检测准确率。 该工具每秒大约可以扫描50个子域名&#xff0c;并能针对每个子域名执行50次接…

前端组件样式穿透修改

背景&#xff1a; 在style经常用scoped属性实现组件的私有化时&#xff0c;要改变element-ui某个深层元素&#xff08;例如.el-input__inner&#xff09;或其他深层样式&#xff0c; 但是element-ui 并没有提供修改的接口。 这时&#xff0c;就是需要手动修改样式。 解决方法…

UE5近战对抗系统Tutorial

文章目录 BP_Character 组合攻击Notify State 检测攻击BP_Character 攻击反馈BP_Character 生命系统BP_Character 死亡效果BP_Character 武器系统BP_Enemy 初始化和行为树 BP_Character 组合攻击 首先我们获取攻击动画&#xff0c;在这里使用的是 Easy Combo Buffering 的攻击…

2024全国高校名单发布,电子版下载!

今天&#xff0c;教育部网站发布了《全国高等学校名单》。截至2024年6月20日&#xff0c;全国高等学校共计3117所&#xff0c;其中&#xff1a;普通高等学校2868所&#xff0c;含本科学校1308所、高职&#xff08;专科&#xff09;学校1560所&#xff1b;成人高等学校249所。本…

游戏本地化以拓展海外市场

Logrus IT Korea的总监元庆燕&#xff08;KyoungYeon Won&#xff09;发表了一场关于“游戏本地化”的讲座&#xff0c;讲述了独立游戏开发者如何在梦想拓展海外市场的过程中&#xff0c;正确地本地化他们的游戏以满足国际市场的期望&#xff0c;以及实现这一重要任务的过程。 …

集合:泛型深入

一.泛型的好处 1.统一了数据类型 2.把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。 二.泛型的细节 1.泛型中不能写基本数据类型 2.指定泛型的具体类型后,传递数据时,可以传入该类类型或者该类的子类类型 3.如果不…

智能血压计,让健康“听”得见- WT588F02B血压计语音方案

一、语音血压计开发背景&#xff1a; 在快节奏的现代生活中&#xff0c;健康成为了我们最宝贵的财富。而血压&#xff0c;作为反映人体健康状态的重要指标之一&#xff0c;更是需要我们时刻关注。传统的血压计虽然能够为我们提供准确的血压数据&#xff0c;但往往因为操作复杂…

全外显子测序分析流程1 - Fastq质控与去接头、低质量和引物序列

全外显子测序分析流程1 - Fastq质控与去接头、低质量和引物序列 1. 运行实例 # -d 样本根目录 # -s 样本名称 python trim_fastq.py -d /result/WES/sample -s sample2. fastqc质控报告与去接头、低质量序列主程序 对raw fastq和clean fastq生成质控QC报告trim_galore去接头、…

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程

文章目录 问题&#xff1a;无法在AMD平台打开Android studio 虚拟机&#xff0c;已解决平台&#xff1a;AMD 5700g系统&#xff1a;win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题&#xff1a;无法在AMD平台打开Android studio 虚拟…

京东云 AX1800 Pro 路由器 亚瑟 R2242 u-boot 和 OpenWrt 刷机教程

上周末陪媳妇儿逛街的时候无意中看到了一篇 OpenWrt 的公众号文章&#xff1a;百元京东亚瑟wifi6路由器真香&#xff0c;支持刷OpenWrt系统。 然后&#xff0c;就开启了将近一周的苦逼刷机过程&#xff0c;因为最近工作忙只能利用晚上的时间来搞&#xff0c;刷机用了一天多搞定…

代码随想录算法训练营第30天| 122.买卖股票的最佳时机II、55. 跳跃游戏、 45.跳跃游戏II、 1005.K次取反后最大化的数组和

122.买卖股票的最佳时机II 题目链接&#xff1a;122.买卖股票的最佳时机II 文档讲解&#xff1a;代码随想录 状态&#xff1a;so easy 思路&#xff1a;不用考虑操作的次数&#xff0c;其实只要有赚就拿下就行了。 题解&#xff1a; class Solution {public int maxProfit(in…

大数据经典sql

一、连续登录问题 问题&#xff1a;1&#xff09;、每个用户连续登录最大天数 2&#xff09;、连续登录大于三天的用户数 分析&#xff1a;本质都是计算用户连续登录天数 方案一&#xff1a;利用排序窗口 select a.user_id,a.date_rslt,count(1) as cnt from (select t.…

概率论与数理统计期末复习

概率论常考知识点汇总 总括 1. 基础概率论 概率定义&#xff1a;理解概率是事件发生的可能性度量&#xff0c;范围从0&#xff08;不可能&#xff09;到1&#xff08;必然发生&#xff09;。概率公理&#xff1a;掌握概率的三大公理&#xff0c;即非负性、规范性和可加性。条…

Linux【实操篇-时间日期类 用户和用户组管理】

06 【实操篇-时间日期类 用户和用户组管理】 1.时间日期类 1.1 显示当前日期 基本语法 date (功能描述:显示当前时间)date %Y(功能描述:显示当前年份)date %m(功能描述:显示当前月份)date %d (功能描述:显示当前是哪一天)date "%Y-%m-%d %H:%M:%S" (功能描述:显示…

视频监控平台功能介绍:内部设备管理(rtsp、sdk、onvif、ehome/ISUP、主动注册协议等)

一、功能概述 AS-V1000视频平台是一套集成了用户设备权限管理、视音频监控、大容量存储、电子地图的系统平台软件。它结合了现代视频技术、网络通讯技术、计算机控制技术、流媒体传输技术的综合解决方案&#xff0c;为用户提供了强大的、灵活的组网和应用能力。 AS-V1000管理端…

项目实践---Windows11中安装Zookeeper3.5.5/Hadoop2.7.2/Hive2.3.7

1.背景 项目第一版本使用大数据组件核心版本均为2.x&#xff0c;需要在个人电脑搭建相关大数据环境&#xff0c;这次提供Hadoop2.7.2 Hive2.3.7版本的环境搭建。 2.相关安装包下载 链接&#xff1a;https://pan.baidu.com/s/1tkYr1UpqMKKVJHY5cfvVSw?pwddcxd 提取码&…

基于STM32的智能插座项目

本项目基于stm32f103c8t6芯片通过集成众多模块和元器件&#xff0c;通过ESP01-S和阿里云平台实现智能插座的项目开展。资料获取到咸&#x1f41f;&#xff1a;xy591215295250 \\\或者联系wechat 号&#xff1a;comprehensivable 随着电子科学与技术的快速发展&#xff0c;软硬件…