基于STM32智能遮雨棚系统的设计与实现(程序+原理图+PCB+APP)

 

基于STM32智能遮雨棚系统的设计与实现

摘要:本文设计了一种基于STM32的智能遮雨棚系统,该系统集成了光强采集、温湿度采集、雨滴检测、雨棚控制、OLED显示、蓝牙APP控制以及多种控制模式等功能。通过光敏电阻实时采集环境光强度数据,DHT11温湿度传感器采集环境温湿度,雨滴传感器检测雨滴,步进电机模拟雨棚驱动开闭。OLED显示屏实时显示当前时间、温湿度数据、模式信息,手机端蓝牙APP可远程显示数据。系统支持自动模式、手动模式、定时模式和遥控模块四种控制模式,可通过按键切换。该系统提高了遮雨棚的智能化水平和实用性,为人们提供了更加便捷、舒适的户外生活体验。

关键词:STM32;智能遮雨棚;光强采集;温湿度采集;雨滴检测;步进电机;OLED显示;蓝牙APP控制

一、引言

随着物联网技术的快速发展,智能家居产品逐渐渗透到人们的日常生活中,为生活带来了极大的便利。遮雨棚作为户外设施,广泛应用于阳台、露台、庭院等场景,为人们提供了遮阳避雨的功能。然而,传统的遮雨棚大多固定或需要人工操作,不够智能且使用不便。为了解决这些问题,本文设计并实现了一种基于STM32技术的智能遮雨棚系统,该系统能够根据环境参数自动展开或收回遮雨棚,提高了遮雨棚的智能化水平和实用性。

二、系统总体设计
2.1 系统功能概述

本系统旨在实现一种基于STM32的智能遮雨棚系统,具备以下功能:

  1. 光强采集:通过光敏电阻实时采集环境光强度数据,为系统提供光照强度信息。
  2. 温湿度采集:利用DHT11温湿度传感器采集环境温湿度,为系统提供环境温湿度信息。
  3. 雨滴检测:通过雨滴传感器检测雨滴,为系统提供降雨信息。
  4. 雨棚控制:使用步进电机模拟雨棚驱动开闭,实现遮雨棚的自动化控制。
  5. OLED显示:通过OLED显示屏实时显示当前时间、温湿度数据、模式信息,方便用户查看系统状态。
  6. 蓝牙APP控制:手机端蓝牙APP可远程显示数据,实现用户对遮雨棚的远程监控和控制。
  7. 控制模式:支持四种雨棚控制模式,包括自动模式、手动模式、定时模式和遥控模块,用户可通过按键切换控制模式。
2.2 系统硬件设计
2.2.1 核心控制器

本系统采用STM32F103系列单片机作为核心控制器。STM32F103系列单片机是基于ARM Cortex-M3内核的32位微控制器,具有丰富的外设资源和强大的处理能力,能够满足本系统对数据采集、处理和控制的要求。

2.2.2 传感器模块
  1. 光敏电阻:用于实时采集环境光强度数据。光敏电阻的阻值随光照强度的变化而变化,通过ADC转换获取光照强度值。
  2. DHT11温湿度传感器:用于实时检测环境温湿度。DHT11传感器采用单线制串行接口,与STM32单片机通信,读取温湿度数据。
  3. 雨滴传感器:用于检测雨滴。雨滴传感器采用接触式传感器,当雨滴落在传感器表面时,会改变传感器的电阻值,从而触发信号输出。
2.2.3 执行器模块
  1. 步进电机:用于模拟雨棚驱动开闭。步进电机具有定位精度高、运行平稳等优点,非常适合用于遮雨棚的驱动控制。本系统采用28BYJ-48步进电机,通过ULN2003步进电机驱动芯片实现电机的正反转控制。
  2. OLED显示屏:用于实时显示当前时间、温湿度数据、模式信息等。OLED显示屏具有自发光、对比度高、视角广等优点,适合用于本系统的信息显示。
  3. 蓝牙模块:用于实现手机端蓝牙APP的远程显示和控制功能。本系统采用HC-05蓝牙模块,通过串口与STM32单片机通信。
2.2.4 其他模块
  1. 时钟模块:采用DS1302时钟模块,为系统提供时间基准。DS1302时钟模块具有高精度、低功耗等优点,适合用于本系统的时间显示功能。
  2. 按键模块:提供手动操作接口,用户可通过按键设置系统参数或切换工作模式。
  3. 电源模块:为整个系统提供稳定的工作电压。电源模块采用开关电源,将市电转换为系统所需的稳定直流电压。
2.3 系统软件设计
2.3.1 主程序流程

主程序首先进行系统初始化,包括初始化STM32单片机的各个外设(如ADC、GPIO、USART等)、初始化传感器和执行器以及设置初始参数等。然后,系统进入主循环,不断采集传感器数据并进行处理。根据处理结果,系统判断是否需要控制执行器动作,并通过OLED显示屏和手机端蓝牙APP实时显示监测信息。

2.3.2 数据采集与处理
  1. 光强数据采集与处理:通过光敏电阻采集环境光强度数据,并将其转换为数字信号供单片机处理。单片机将采集到的光强数据与设定阈值进行比较,用于判断是否需要展开或收回遮雨棚。
  2. 温湿度数据采集与处理:通过DHT11温湿度传感器采集环境温湿度数据,并将其发送给单片机。单片机将采集到的温湿度数据在OLED显示屏上显示,并用于判断是否需要启动相应的控制逻辑。
  3. 雨滴检测数据处理:通过雨滴传感器检测雨滴,当检测到雨滴时,向单片机发送信号。单片机根据雨滴信号判断是否需要展开遮雨棚。
2.3.3 控制逻辑设计

系统支持四种雨棚控制模式,包括自动模式、手动模式、定时模式和遥控模块。具体控制逻辑如下:

  1. 自动模式:系统根据光强数据、温湿度数据以及雨滴信号自动判断是否需要展开或收回遮雨棚。当光照强度低于设定阈值、温湿度超过设定范围或检测到雨滴时,系统控制步进电机展开遮雨棚;当光照强度高于设定阈值、温湿度恢复正常且未检测到雨滴时,系统控制步进电机收回遮雨棚。
  2. 手动模式:用户可通过按键手动控制遮雨棚的展开和收回。在手动模式下,用户按下展开按键时,系统控制步进电机展开遮雨棚;按下收回按键时,系统控制步进电机收回遮雨棚。
  3. 定时模式:用户可通过按键设置定时时间,系统根据定时时间自动展开或收回遮雨棚。在定时模式下,当到达设定的展开时间时,系统控制步进电机展开遮雨棚;当到达设定的收回时间时,系统控制步进电机收回遮雨棚。
  4. 遥控模块:手机端蓝牙APP可作为遥控模块,实现用户对遮雨棚的远程监控和控制。用户可通过蓝牙APP发送控制指令,系统接收到指令后执行相应的控制逻辑。
2.3.4 通信协议设计

本系统采用蓝牙通信协议实现单片机与手机端蓝牙APP之间的数据传输。蓝牙通信协议具有通信距离远、功耗低、抗干扰能力强等优点,适合用于本系统的远程监控和控制。在通信过程中,单片机将采集到的光强数据、温湿度数据以及遮雨棚状态等信息打包成数据帧,并通过蓝牙模块发送到手机端蓝牙APP进行显示。手机端蓝牙APP接收到数据帧后,解析数据帧并显示相应的监测信息。同时,手机端蓝牙APP也可向单片机发送控制指令,实现用户对遮雨棚的远程控制。

三、系统硬件实现
3.1 核心控制器电路

STM32F103系列单片机是本系统的核心控制器,其电路主要包括电源电路、时钟电路、复位电路以及各个外设的接口电路等。电源电路为单片机提供稳定的工作电压;时钟电路为单片机提供时钟信号;复位电路用于在单片机出现异常时进行复位操作;各个外设的接口电路用于连接传感器、执行器以及显示模块等。

3.2 传感器电路
3.2.1 光敏电阻电路

光敏电阻电路主要包括电源电路、信号调理电路以及输出接口电路等。电源电路为光敏电阻提供工作电压;信号调理电路用于将光敏电阻输出的微弱电压信号放大并转换为适合单片机处理的电压范围;输出接口电路用于连接单片机和光敏电阻之间的信号线。

3.2.2 DHT11温湿度传感器电路

DHT11温湿度传感器电路主要包括电源电路、数据线接口电路以及上拉电阻等。电源电路为传感器提供工作电压;数据线接口电路用于连接单片机和传感器之间的数据线;上拉电阻用于提高数据线的稳定性。

3.2.3 雨滴传感器电路

雨滴传感器电路主要包括电源电路、信号调理电路以及输出接口电路等。电源电路为传感器提供工作电压;信号调理电路用于将传感器输出的微弱电压信号放大并转换为适合单片机处理的电压范围;输出接口电路用于连接单片机和传感器之间的信号线。

3.3 执行器电路
3.3.1 步进电机电路

步进电机电路主要包括电源电路、驱动电路以及输出接口电路等。电源电路为步进电机提供工作电压;驱动电路采用ULN2003步进电机驱动芯片,用于控制步进电机的正反转;输出接口电路用于连接单片机和步进电机之间的控制线。

3.3.2 OLED显示屏电路

OLED显示屏电路主要包括电源电路、数据接口电路以及控制接口电路等。电源电路为显示屏提供工作电压;数据接口电路用于连接单片机和显示屏之间的数据线以传输显示数据;控制接口电路用于连接单片机和显示屏之间的控制线以控制显示屏的显示状态。

3.3.3 蓝牙模块电路

蓝牙模块电路主要包括电源电路、数据接口电路以及天线等。电源电路为蓝牙模块提供工作电压;数据接口电路用于连接单片机和蓝牙模块之间的数据线以传输通信数据;天线用于增强蓝牙信号的传输距离和稳定性。

3.4 其他模块电路
3.4.1 时钟模块电路

DS1302时钟模块电路主要包括电源电路、数据线接口电路以及晶振电路等。电源电路为时钟模块提供工作电压;数据线接口电路用于连接单片机和时钟模块之间的数据线以传输时间数据;晶振电路用于为时钟模块提供精确的时钟信号。

3.4.2 按键模块电路

按键模块电路主要包括电源电路、按键接口电路以及上拉电阻等。电源电路为按键提供工作电压;按键接口电路用于连接单片机和按键之间的控制线;上拉电阻用于提高按键接口的稳定性。

3.4.3 电源模块电路

电源模块电路主要包括输入电路、变换电路以及输出电路等。输入电路用于连接市电电源;变换电路采用开关电源技术,将市电转换为系统所需的稳定直流电压;输出电路用于为各个模块提供稳定的工作电压。

四、系统软件实现
4.1 主程序实现

主程序首先进行系统初始化操作,包括初始化STM32单片机的各个外设、初始化传感器和执行器以及设置初始参数等。然后,系统进入主循环,不断采集传感器数据并进行处理。主程序的具体实现流程如下:

  1. 系统初始化:初始化STM32单片机的时钟系统、GPIO端口、ADC模块、USART模块、定时器模块等外设;初始化传感器和执行器;设置初始参数(如光强阈值、温湿度阈值、定时时间等)。
  2. 主循环:不断采集光强数据、温湿度数据以及雨滴信号;对采集到的数据进行处理(如滤波、放大等);根据处理结果判断是否需要控制执行器动作;通过OLED显示屏和手机端蓝牙APP实时显示监测信息;检测按键状态并切换控制模式。
4.2 数据采集与处理子程序实现
4.2.1 光强数据采集与处理子程序

光强数据采集与处理子程序主要通过光敏电阻采集环境光强度数据,并将其转换为数字信号供单片机处理。子程序的具体实现流程如下:

  1. 初始化ADC模块:初始化STM32单片机的ADC模块,设置采样通道、采样时间等参数。
  2. 采集光强数据:通过ADC模块采集光敏电阻输出的电压信号,得到光强数据。
  3. 数据处理:对采集到的光强数据进行处理(如滤波、放大等),得到准确的光照强度值。
  4. 阈值比较:将处理后的光强数据与设定阈值进行比较,用于判断是否需要展开或收回遮雨棚。
4.2.2 温湿度数据采集与处理子程序

温湿度数据采集与处理子程序主要通过DHT11温湿度传感器采集环境温湿度数据,并将其发送给单片机。子程序的具体实现流程如下:

  1. 初始化DHT11传感器:按照DHT11传感器的通信协议初始化传感器,使其进入工作状态。
  2. 发送温湿度转换命令:向DHT11传感器发送温湿度转换命令,使其开始采集环境温湿度数据。
  3. 读取温湿度数据:等待一段时间后(根据DHT11的转换时间),从传感器读取转换后的温湿度数据。
  4. 数据处理与显示:将读取到的温湿度数据进行处理(如滤波、放大等),并在OLED显示屏上显示。
4.2.3 雨滴检测数据处理子程序

雨滴检测数据处理子程序主要通过雨滴传感器检测雨滴,并向单片机发送信号。子程序的具体实现流程如下:

  1. 初始化GPIO端口:初始化STM32单片机的GPIO端口,设置雨滴传感器的输入引脚为输入模式。
  2. 检测雨滴信号:读取雨滴传感器的输出引脚状态,判断是否有雨滴信号。
  3. 信号处理:对检测到的雨滴信号进行处理(如去抖、滤波等),得到准确的雨滴状态。
  4. 控制逻辑判断:根据雨滴状态判断是否需要展开遮雨棚。
4.3 控制逻辑子程序实现

控制逻辑子程序主要根据采集到的数据和处理结果判断是否需要控制执行器动作,并实现四种控制模式的切换。子程序的具体实现流程如下:

  1. 自动模式控制逻辑:根据光强数据、温湿度数据以及雨滴信号判断是否需要展开或收回遮雨棚。当满足展开条件时,控制步进电机展开遮雨棚;当满足收回条件时,控制步进电机收回遮雨棚。
  2. 手动模式控制逻辑:检测按键状态,当用户按下展开按键时,控制步进电机展开遮雨棚;当用户按下收回按键时,控制步进电机收回遮雨棚。
  3. 定时模式控制逻辑:根据设定的定时时间判断是否需要展开或收回遮雨棚。当到达设定的展开时间时,控制步进电机展开遮雨棚;当到达设定的收回时间时,控制步进电机收回遮雨棚。
  4. 遥控模块控制逻辑:接收手机端蓝牙APP发送的控制指令,并根据指令执行相应的控制逻辑。
4.4 通信协议实现

本系统采用蓝牙通信协议实现单片机与手机端蓝牙APP之间的数据传输。通信协议的具体实现流程如下:

  1. 初始化蓝牙模块:按照蓝牙模块的通信协议初始化模块,使其进入工作状态。
  2. 数据打包:将采集到的光强数据、温湿度数据以及遮雨棚状态等信息打包成数据帧。数据帧的格式可以根据实际需求进行设计,一般包括帧头、数据长度、数据类型、数据内容以及校验和等部分。
  3. 数据发送:通过蓝牙模块将数据帧发送到手机端蓝牙APP。在发送过程中,需要确保数据的完整性和准确性。
  4. 数据接收与解析:手机端蓝牙APP接收到数据帧后,解析数据帧并提取出光强数据、温湿度数据以及遮雨棚状态等信息进行显示。同时,手机端蓝牙APP也可向单片机发送控制指令,实现用户对遮雨棚的远程控制。
五、系统测试与结果分析
5.1 系统测试

为了验证本系统的性能和可靠性,进行了以下测试:

  1. 功能测试:分别测试光强采集、温湿度采集、雨滴检测、雨棚控制、OLED显示、蓝牙APP控制以及四种控制模式等功能是否正常工作。通过模拟不同的环境条件(如不同光照强度、不同温湿度、有无雨滴等),观察系统是否能够准确检测到异常并启动相应的控制逻辑。
  2. 性能测试:测试系统的响应速度、准确性以及稳定性等性能指标。通过多次重复测试,统计系统的响应时间、控制准确率以及运行稳定性等数据,并进行分析和评估。
  3. 通信测试:测试单片机与手机端蓝牙APP之间的通信是否正常。通过模拟不同的通信距离和干扰环境,观察系统是否能够稳定地进行数据传输和显示。
5.2 结果分析

经过测试,本系统能够准确地采集环境光强度、温湿度以及雨滴信号等数据,并根据处理结果控制步进电机实现遮雨棚的自动化控制。OLED显示屏能够实时显示当前时间、温湿度数据、模式信息等,方便用户查看系统状态。手机端蓝牙APP能够远程显示数据并实现远程控制功能,提高了系统的智能化水平和实用性。在性能测试方面,系统的响应速度较快、准确性较高且运行稳定。在通信测试方面,单片机与手机端蓝牙APP之间的通信正常,能够稳定地进行数据传输和显示。

六、结论与展望
6.1 结论

本文设计了一种基于STM32的智能遮雨棚系统,该系统集成了光强采集、温湿度采集、雨滴检测、雨棚控制、OLED显示、蓝牙APP控制以及多种控制模式等功能。通过系统测试验证了系统的性能和可靠性,表明该系统能够准确地采集环境参数并根据处理结果控制遮雨棚的展开和收回。同时,系统还支持多种控制模式,方便用户根据实际需求进行选择。该系统提高了遮雨棚的智能化水平和实用性,为人们提供了更加便捷、舒适的户外生活体验。

6.2 展望

虽然本系统已经实现了智能遮雨棚的基本功能,但仍存在一些不足之处和改进空间。例如,可以进一步优化系统的算法以提高检测的准确性和稳定性;可以增加更多的传感器类型以扩大系统的监测范围;可以设计更加人性化的用户界面以提高用户体验等。此外,还可以考虑将本系统与其他智能家居系统进行集成,实现更加智能化的家居控制。未来,我们将继续对系统进行改进和完善,以提高其性能和可靠性,并探索其在更多领域的应用。

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AD.h"
#include "dht11.h"
#include "usart.h"
#include "led.h"
#include "key.h"

#include "Motor.h"
u8 Humi,Temp;
u8 Yan,Co;

u8 Yan_N=50;   //光照浓度阈值
u8 Co_N=50;    //雨滴阈值
u8 Temp_N=40;  //温度阈值
u8 Key_mode=0; //按键模式


u8 Key1=0; //按键标志
u8 Key2=0; //按键标志
u8 Key3=0; //按键标志
u8 Key4=0; //按键标志
u16 i;
u8 z=0; //按键标志
u8 motor=0; //按键标志
u8 motor1=0; //按键标志
int main(void)
{
	/*模块初始化*/
	OLED_Init();				//OLED初始化
	AD_Init();					//AD初始化
	DHT11_UserConfig();
	Motor_Init();
  LED_Init();
	uart1_init(9600);
	Key_Init();
	
	/*显示静态字符串*/
	
	
	//显示“温度:  C”
	OLED_ShowChinese(1,1,0);
	OLED_ShowChinese(1,2,5);
	OLED_ShowChar(1,5,':');
	OLED_ShowChar(1,8,'C');
	
	//显示“湿度:   %”
	OLED_ShowChinese(1,5,1);
	OLED_ShowChinese(1,6,5);
	OLED_ShowChar(1,13,':');	
	OLED_ShowChar(1,16,'%');
	
	//显示“烟雾:”
	OLED_ShowChinese(2,1,2);
	OLED_ShowChinese(2,2,3);
	OLED_ShowChar(2,5,':');
	OLED_ShowString(2,8,"%");

	//显示“雨滴:”
	OLED_ShowChinese(3,1,12);
	OLED_ShowChinese(3,2,13);
	OLED_ShowChar(3,5,':');
	OLED_ShowString(3,8,"%");
	
	
	
	//显示“阈值:”
	OLED_ShowChinese(3,5,14);
	OLED_ShowChinese(3,6,15);
	OLED_ShowChar(3,13,':');
	OLED_ShowString(3,16,"%");
	
		//显示“阈值:”
	OLED_ShowChinese(2,5,14);
	OLED_ShowChinese(2,6,15);
	OLED_ShowChar(2,13,':');
	OLED_ShowString(2,16,"%");
	
	
	//显示“温度:  C”
	OLED_ShowChinese(4,1,0);
	OLED_ShowChinese(4,2,5);
	OLED_ShowChinese(4,3,14);
	OLED_ShowChinese(4,4,15);
	OLED_ShowChar(4,9,':');
	OLED_ShowChar(4,12,'C');
	
	
	i=0;
	while (1)
	{


			
			
		i++;
		if(i>=500)
		{
	
			i=0;
//			LED1_Turn();
			//显示 DHT11温湿度数据
		DHT11_Read_Data(&Humi,&Temp);
		OLED_ShowNum(1,6,Temp,2);
		OLED_ShowNum(1,14,Humi,2);

		 Yan = 100 * AD_Value[0] / 4095.f;
		 Co = 100 * AD_Value[2] / 4095.f;
		OLED_ShowNum(2,6,Yan,2);      //显示 光照数据
    OLED_ShowNum(3,6,100-Co,2);       //显示 水滴数据
			
		OLED_ShowNum(2,14,Yan_N,2);    //显示 光照阈值数据
    OLED_ShowNum(3,14,Co_N,2);     //显示 水滴阈值数据	
		OLED_ShowNum(4,10,Temp_N,2);   //显示温度阈值数据	
		OLED_ShowNum(4,16,Key_mode,1);   //显示温度阈值数据	
			
		printf("\n");
		printf("温度: %d\n",Temp);
		printf("湿度: %d\n",Humi);
		printf("光照: %d\n",Yan);
		printf("雨滴: %d\n",100-Co);

	  }
		
		if (100-Co > Co_N)
		{
			motor=1;
		}
		else
		{
		motor=2;
		}
		
		 if (Yan > Yan_N)
		{
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);	
		}
		else
		{
	  GPIO_SetBits(GPIOC, GPIO_Pin_13);	
			
		}
		
		
	  if (Temp > Temp_N)
		{
		GPIO_SetBits(GPIOB, GPIO_Pin_12);	
		GPIO_SetBits(GPIOB, GPIO_Pin_14);	
		}
		else
		{
	  GPIO_ResetBits(GPIOB, GPIO_Pin_12);	
		GPIO_ResetBits(GPIOB, GPIO_Pin_14);	
		}
		
		
		
		
		if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4) == 0)
		{
		  Key1=1;
		}
		else if(Key1==1)
		{
			Key1=0;
		 Key_mode++;
			if(Key_mode==4)
			{
			Key_mode=0;
			}
		}
		
		if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5) == 0)
		{
		  Key2=1;
		}
		else if(Key2==1)
		{
			Key2=0;
			if(Key_mode==1)
			{
				Yan_N++;
				if(Yan_N==100)
				{
				Yan_N=99;
				}
		  }
			if(Key_mode==2)
			{
				Co_N++;
				if(Co_N==100)
				{
				Co_N=99;
				}
		  }
			if(Key_mode==3)
			{
				Temp_N++;
				if(Temp_N==100)
				{
				Temp_N=99;
				}
		  }
		}
		
		
		if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6) == 0)
		{
		  Key3=1;
		}
		else if(Key3==1)
		{
			Key3=0;
			if(Key_mode==1)
			{
				Yan_N--;
				if(Yan_N<0)
				{
				Yan_N=0;
				}
		  }
			if(Key_mode==2)
			{
				Co_N--;
				if(Co_N<0)
				{
				Co_N=0;
				}
		  }
			if(Key_mode==3)
			{
				Temp_N--;
				if(Temp_N<0)
				{
				Temp_N=0;
				}
		  }
		}
		
		
		
			if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7) == 0)
		{
		  Key4=1;
		}
		else if(Key4==1)
		{
		  Key4=0;
			motor++;
			if(motor==3)
			{
			motor=0;
			}
			
		}
		
		
		
		
		
		

		
		if((motor==1)&&(motor1==0))
		{
		  for(int j=0;j<=(4*64);j++)        //8次循环电机旋转一周,外轴减速比1:64,还需要*64
			{
				Motor_One(2);
			}
			motor=0;
			motor1=1;
		 }
		else	if((motor==2)&&(motor1==1))
		{
		  for(int j=0;j<=(4*64);j++)        //8次循环电机旋转一周,外轴减速比1:64,还需要*64
			{
				Motor_two(2);
			}
			motor=0;
			motor1=0;
		 }
		else
		{
		 	GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_4 | GPIO_Pin_6 | GPIO_Pin_5);	
		}
		
		
		
		
		Delay_ms(1);							//延时100ms,手动增加一些转换的间隔时间
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科创工作室li

你的鼓励将是大学生的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值