Проектирование интеллектуальной системы управления температурой и влажностью в овощных теплицах на базе STM32
Проектирование интеллектуальной системы управления температурой и влажностью в овощных теплицах на базе STM32

1. Предисловие

Поскольку внимание людей к здоровому и устойчивому образу жизни продолжает расти, овощные теплицы стали важной частью современного сельского хозяйства. Овощные теплицы обеспечивают контролируемую среду, которая позволяет фермерам выращивать овощи в любое время года и корректировать их по мере необходимости. Для оптимального роста овощей и получения урожая решающее значение имеет точный контроль условий окружающей среды, таких как температура и влажность.

Традиционное управление овощными теплицами обычно основано на ручном мониторинге и регулировании. У этого метода есть некоторые проблемы. Например, ручной мониторинг подвержен ошибкам и задержкам, а для крупных овощных теплиц объем ручной настройки огромен. Поэтому стало очень важным разработать решение по управлению температурой и влажностью для овощных теплиц на основе интеллектуальной системы управления.

Интеллектуальная система управления температурой и влажностью в овощной теплице на базе микроконтроллера STM32 используется для решения проблем традиционных методов управления и обеспечения автоматизированного решения. Система использует мощные вычислительные и управляющие возможности микроконтроллера STM32 в сочетании с датчиками и исполнительными механизмами температуры и влажности для достижения точного мониторинга и контроля окружающей среды в теплице.

С помощью этой системы фермеры могут контролировать температуру и влажность в овощных теплицах в режиме реального времени и автоматически регулировать ее в соответствии с заданным целевым диапазоном. Система может автоматически управлять таким оборудованием, как обогреватели, вентиляционное оборудование и увлажнители воздуха в теплице, для поддержания оптимальных условий выращивания. Цель проекта — повысить эффективность производства и качество овощных теплиц, снизить энергопотребление и снизить трудозатраты. Благодаря применению интеллектуальных систем управления фермеры могут добиться более устойчивого и эффективного сельскохозяйственного производства и обеспечить общество более здоровой овощной продукцией.

2. Процесс проектирования системы

2.1 Выбор оборудования

Выбор оборудования является важной частью проектирования интеллектуальной системы контроля температуры и влажности для овощных теплиц.

[1] Основной чип управления: STM32F103ZET6 В основном чипе управления используется STM32F103ZET6, который представляет собой высокопроизводительный микроконтроллер с ядром ARM Cortex-M3 с богатыми периферийными ресурсами и мощными вычислительными возможностями. Этот чип может удовлетворить требования этого проекта к управлению и обработке данных.

[2] Датчик температуры и влажности: DHT11 Датчик DHT11 используется для измерения температуры и влажности воздуха. Он использует цифровой выходной сигнал, отличается простотой, низкой стоимостью и хорошей точностью и подходит для мониторинга температуры и влажности в теплицах.

【3】Датчик влажности почвы: Датчик влажности почвы Датчик влажности почвы используется для сбора данных о влажности почвы, а данные о влажности почвы собираются через интерфейс аналого-цифрового преобразователя (АЦП). Датчик может точно измерять влажность почвы и обеспечивать необходимую поливную воду для сельскохозяйственных культур.

[4] Вентилятор: небольшой вентилятор 5 В + реле. Для обеспечения управления вентиляцией в качестве вентиляционного устройства выбирается небольшой вентилятор 5 В, а его состояние включения/выключения контролируется с помощью реле. В соответствии с данными о температуре и установленным пороговым значением верхний и нижний уровни реле контролируются через порт GPIO STM32 для реализации управления запуском и остановкой вентиляционного вентилятора.

【5】Освещение: светодиодный модуль белого света. Чтобы обеспечить соответствующие условия освещения, в качестве осветительного устройства выбирается светодиодный модуль белого света. Этот модуль использует порт GPIO STM32 для управления состоянием своего переключателя, включая и выключая свет.

【6】Оросительная система: насосный двигатель + реле. Оросительная система использует насосный двигатель в качестве источника воды и контролирует его открытие и закрытие через реле. Рабочее состояние насосного двигателя контролируется микроконтроллером, контролирующим высокий и низкий уровни реле для реализации автоматизированной работы ирригационной системы.

【7】Модуль дисплея: ЖК-дисплей. Чтобы облегчить пользователю наблюдение за текущей температурой, влажностью и другими данными, для отображения данных выбирается ЖК-дисплей. Общайтесь с ЖК-дисплеем через цифровой интерфейс STM32 и отображайте собранные данные на экране в режиме реального времени.

2.2 Идеи дизайна программного обеспечения

Идеи дизайна кода для этого проекта можно разделить на следующие ключевые части:

【1】Настройки инициализации: сначала необходимо выполнить настройки инициализации основного чипа управления, включая конфигурацию контактов, настройки часов и т. д. При этом ЖК-дисплей также необходимо инициализировать и настроить для последующего отображения данных.

【2】Сбор данных датчиков: используйте соответствующие библиотечные функции или коды для считывания данных с датчика DHT11 и датчика влажности почвы. Общайтесь с основным чипом управления через соответствующие интерфейсы для получения значений температуры, влажности и влажности почвы.

【3】Обработка и оценка данных: Выполните соответствующую обработку данных и оценку на основе собранных значений температуры, влажности и влажности почвы. Определить, превышает ли текущая температура заданный диапазон, и находится ли влажность почвы ниже установленного порога и т. д.

【4】Управление исполнительными механизмами: на основе результатов обработки и оценки данных управляйте соответствующими исполнительными механизмами, такими как вентиляторы, освещение и ирригационные системы. При установке соответствующего уровня контакта или срабатывании реле привод включается или выключается.

【5】ЖК-дисплей: собранные значения температуры, влажности и влажности почвы отображаются на ЖК-дисплее, чтобы пользователи могли контролировать их в режиме реального времени.

【6】Взаимодействие с пользователем: пользователь взаимодействует с системой посредством ввода с клавиатуры или другими методами. Установите пороговые значения влажности почвы, отрегулируйте диапазоны температур и многое другое.

[7] Работа в контуре: Организуйте вышеуказанные шаги в программу работы в контуре, чтобы обеспечить возможность системы непрерывно собирать данные, обрабатывать решения и контролировать работу привода.

3. Реализация кода

3.1 Показания температуры и влажности DHT11

Считайте температуру и влажность окружающей среды с датчика DHT11 и распечатайте их через последовательный порт.

Язык кода:javascript
копировать
#include "stm32f10x.h"
#include "stdio.h"

// Определить DHT11данные пины
#define DHT11_PIN   GPIO_Pin_0
#define DHT11_PORT  GPIOA

// Функция инициализации DHT11
void DHT11_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    // Включить часы GPIOA
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // Конфигурация Вывод DHT11 — двухтактный выход.
    GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
}

// Функция задержки, единица измерения — микросекунды.
void Delay_us(uint32_t nCount)
{
    uint32_t i;
    for(i=0; i<nCount; i++);
}

// Функция программной задержки, единица измерения — миллисекунды.
void Delay_ms(uint32_t nCount)
{
    uint32_t i;
    for(i=0; i<nCount*1000; i++);
}

// Чтение одного бита из DHT11
uint8_t DHT11_ReadBit(void)
{
    uint8_t retries = 0;
    
    while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_RESET)
    {
        if (retries++ > 100) return 0;
        Delay_us(1);
    }
    
    Delay_us(40);   // Задержка 40 мкс
    
    if (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_SET)
        retries = 100;  // флаг тайм-аута
    else
        retries = 0;

    while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_SET)
    {
        if (retries++ > 100) return 0;
        Delay_us(1);
    }

    return 1;
}

// Прочитайте байт из данных DHT11.
uint8_t DHT11_ReadByte(void)
{
    uint8_t i, temp = 0;
    
    for(i=0; i<8; i++)
    {
        temp <<= 1;
        temp |= DHT11_ReadBit();
    }
    
    return temp;
}

// Прочтите значение температуры и влажности DHT11.
uint8_t DHT11_ReadData(uint8_t* temperature, uint8_t* humidity)
{
    uint8_t data[5], checksum;

    // Хост переводит шину в низкий уровень минимум на 18 мс.
    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DHT11_PORT, &GPIO_InitStructure);

    GPIO_ResetBits(DHT11_PORT, DHT11_PIN);
    Delay_ms(20);
    GPIO_SetBits(DHT11_PORT, DHT11_PIN);
    Delay_us(30);

    // Установить в режим ввода
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
    
    // ждать DHT11 ответ
    if (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_RESET)
    {
        while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_RESET);
        while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == Bit_SET);
        
        // Чтение 5 байт данных
        for(uint8_t i=0; i<5; i++)
            data[i] = DHT11_ReadByte();
        
        // Чтение контрольной суммы
        checksum = DHT11_ReadByte();

        // 校验данные        if((data[0] + data[1] + data[2] + data[3]) != checksum)
            return 0;
        
        *humidity = data[0];
        *temperature = data[2];

        return 1;
    }
    else
    {
        return 0;
    }
}

// Инициализировать USART1
void USART1_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    // Включите часы USART1 и GPIOA.
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

    // КонфигурацияUSART1 контакт
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  // TX
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  // RX
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // КонфигурацияUSART1
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStructure);

    // Включить USART1
    USART_Cmd(USART1, ENABLE);
}

// Отправка символов в USART1
void USART1_SendChar(char ch)
{
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    USART_SendData(USART1, (uint8_t)ch);
}

// Отправить строку в USART1
void USART1_SendString(const char* str)
{
    while(*str)
    {
        USART1_SendChar(*str++);
    }
}

int main(void)
{
    uint8_t temperature, humidity;

    // Инициализируйте DHT11 и USART1
    DHT11_Init();
    USART1_Init();

    while(1)
    {
        if (DHT11_ReadData(&temperature, &humidity))
        {
            // Отправка данных о температуре и влажности на последовательный порт
            char buffer[50];
            sprintf(buffer, "Temperature: %d°C, Humidity: %d%%\r\n", temperature, humidity);
            USART1_SendString(buffer);
        }

        Delay_ms(2000);  // Чтение данных раз в 2 секунды
    }
}

Загрузите код на плату разработки STM32F103ZET6 и подключите ее к DHT11. При успешной работе данные о температуре и влажности окружающей среды будут распечатаны через последовательный порт USART1.

3.2 Считайте значение влажности почвы

Соберите значение влажности датчика почвы через канал 1 АЦП1 и распечатайте его в последовательный порт.

Язык кода:javascript
копировать
#include "stm32f10x.h"
#include "stdio.h"

// функция声明
void ADC_Configuration(void);
void UART_Configuration(void);
void USART1_SendChar(char ch);

int main(void)
{
    // Инициализируйте АЦП и последовательный порт
    ADC_Configuration();
    UART_Configuration();

    while (1)
    {
        // Начать преобразование АЦП
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);

        // преобразование ожидания завершено
        while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));

        // Чтение значения АЦП
        uint16_t adcValue = ADC_GetConversionValue(ADC1);

        // Преобразование значения АЦП в процент влажности
        float humidity = (float)adcValue / 4095 * 100;

        // Распечатать значение влажности в последовательный порт
        char buffer[20];
        sprintf(buffer, "Humidity: %.2f%%\r\n", humidity);
        for (int i = 0; buffer[i] != '\0'; i++)
        {
            USART1_SendChar(buffer[i]);
        }

        // задержаться на некоторое время
        for (int i = 0; i < 1000000; i++);
    }
}

// ADCКонфигурация
void ADC_Configuration(void)
{
    ADC_InitTypeDef ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    // Включите тактовую частоту ADC1 и GPIOA.
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);

    // КонфигурацияGPIOA.1 — аналоговый вход.
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // ADCКонфигурация
    ADC_DeInit(ADC1);
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

    // Канал 1 конфигурацииADC1 является каналом выборки.
    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);

    // Включить АЦП1
    ADC_Cmd(ADC1, ENABLE);

    // Калибровка АЦП
    ADC_ResetCalibration(ADC1);
    while (ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while (ADC_GetCalibrationStatus(ADC1));
}

// последовательный порт Конфигурация
void UART_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    // Включите часы USART1 и GPIOA.
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA,ДАВАТЬ ВОЗМОЖНОСТЬ);

    // КонфигурацияUSART1приколоть    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed ​​= GPIO_Speed_50 МГц;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // USARTКонфигурация
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStructure);

    // Включить USART1
    USART_Cmd(USART1, ENABLE);
}

// Отправка символов в USART1
void USART1_SendChar(char ch)
{
    USART_SendData(USART1, (uint8_t)ch);
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}

В приведенном выше коде используетсяSTM32Стандартная библиотекафункцияруководить Конфигурацияи операции。существоватьADC_Configurationфункция中руководитьADCИнициализация Конфигурация,включатьGPIOприколоть Конфигурация、Включение часов АЦП, конфигурация каналов и т. д. существоватьUART_Configurationфункция中руководитьпоследовательный портUSART1Инициализация Конфигурация,Включая контакты GPIO. Конфигурация, настройки скорости передачи данных и т. д.

В основной функции введите бесконечный цикл. В цикле запустите преобразование АЦП и дождитесь завершения преобразования. проходитьADC_GetConversionValueфункциячитатьADCРезультат конвертации,Переведите его в процент влажности.。 использоватьsprintfфункция Форматировать значение влажности в виде строки,并использоватьUSART1_SendCharфункция Отправьте строку посимвольно вUSART1последовательный порт。 Используйте функцию задержки для задержки на определенный период времени, чтобы контролировать скорость печати.

3.3 Управление освещением в теплице

Ниже приведен код для использования STM32F103ZET6 для считывания выходной интенсивности света датчиком освещенности BH1750 и управления переключателем заполняющего светодиодного освещения в соответствии с пороговым значением:

Язык кода:javascript
копировать
#include "stm32f10x.h"
#include "i2c.h"
#include "delay.h"

#define BH1750_ADDRESS 0x23

void BH1750_Init()
{
    // Инициализируйте шину I2C
    I2C_Init();
}

void BH1750_Start()
{
    // Запуск измерения BH1750
    uint8_t cmd = 0x01; // Режим одиночного кадра с высоким разрешением
    I2C_Start();
    I2C_SendByte(BH1750_ADDRESS);
    I2C_WaitAck();
    I2C_SendByte(cmd);
    I2C_WaitAck();
    I2C_Stop();
}

uint16_t BH1750_Read()
{
    // Прочитайте результаты измерений BH1750
    uint16_t lux;
    I2C_Start();
    I2C_SendByte(BH1750_ADDRESS + 1); // Отправить команду чтения
    I2C_WaitAck();
    lux = I2C_ReceiveByte() << 8; // Прочитать старший байт
    I2C_Ack();
    lux |= I2C_ReceiveByte(); // Прочитать младший байт
    I2C_NAck();
    I2C_Stop();
    return lux;
}

void LED_Control(uint8_t state)
{
    // Управляющий светодиодный выключатель освещения
    if (state)
        GPIO_SetBits(GPIOA, GPIO_Pin_8); // Включите светодиод
    else
        GPIO_ResetBits(GPIOA, GPIO_Pin_8); // Выключить светодиод
}

int main(void)
{
    // Инициализируйте порт GPIO
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // Инициализируйте датчик BH1750
    BH1750_Init();

    while (1)
    {
        // Начать измерение
        BH1750_Start();

        // Измерение задержки завершено
        DelayMs(200);

        // Прочтите интенсивность света
        uint16_t lux = BH1750_Read();

        // Определить порог и управлять светодиодом
        if (lux > 1000)
            LED_Control(1); // Интенсивность света выше порога,Включите светодиод
        else
            LED_Control(0); // Интенсивность света ниже порога,Выключить светодиод
    }
}

в коде Инициализируйте шину I2CиBH1750датчик,проходитьBH1750_Init()функциявыполнить。существовать主循环中,Начать измерение Измерение задержки завершено。использоватьBH1750_Read()функциячитать测量结果,Это интенсивность света. Определите, превышает ли интенсивность света установленное значение на основе порогового значения.,проходитьLED_Control()функцияконтрольLEDстатус переключения。

4. Резюме

В данном проекте реализована интеллектуальная система контроля температуры и влажности овощных теплиц на базе микроконтроллера STM32. В качестве основного управляющего чипа системы используется STM32F103ZET6, который используется для контроля и координации работы каждого аппаратного модуля. Система включает в себя модуль измерения температуры и влажности воздуха (DHT11), модуль измерения влажности почвы (интерфейс ADC), вентиляционный вентилятор (маленький вентилятор 5 В + релейное управление), освещение (модуль светодиодного белого света), систему орошения (двигатель насоса + релейное управление). и ЖК-дисплей.

В функции системы входит мониторинг температуры и влажности в режиме реального времени, определение влажности почвы, автоматическое управление вентиляторами, автоматическое управление системами орошения и отображение данных. Установите порог влажности почвы, нажав кнопку, чтобы реализовать функцию автоматического полива. Когда влажность почвы ниже порогового значения, система автоматически включает систему орошения для полива. При этом, в соответствии с установленным температурным порогом, система автоматически управляет вентилятором вентиляции для охлаждения.

Интеллектуальная система управления температурой и влажностью в овощной теплице использует микроконтроллеры STM32 и различные датчики для мониторинга и контроля параметров окружающей среды, что повышает автоматизацию и эффективность производства овощной теплицы. В то же время, благодаря автоматическому управлению системами орошения и вентиляции, оно может лучше удовлетворять потребности выращивания овощей и повышать урожайность и качество сельскохозяйственных культур.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода