当前位置: 首页 > news >正文

【stm32项目】基于stm32智能宠物喂养(完整工程资料源码)

基于STM32宠物喂养系统

前言:

随着人们生活幸福指数的提高,越来越多的家庭选择养宠物来为生活增添乐趣。然而,由于工作等原因,许多主人无法及时为宠物提供充足的食物与水。为了解决这一问题,我设计了一款便捷的宠物喂养设备。该设备采用STM32单片机为核心控制单元,通过电驱动模块、光电传感器模块、温度传感器模块以及超声波检测水位,实现给宠物定时定量喂食喂水的功能。

目录:

目录:

一、项目背景与目标

1.1 项目背景:

1.2 项目目标:

1.3 国内外研究现状:

1.3.1 国外研究现状:

1.3.2 国内研究现状:

1.4 发展趋势:

二、硬件电路设计

2.1 总体电路设计:

2.2 主控单元

2.2.1 STM32单片机

2.2.2 电路设计

2.3 供电模块

2.4 传感器模块

2.4.1 温湿度传感器(DHT11)

2.4.2 红外测温传感器(MLX90614)

2.4.3 有害气体传感器:

2.4.4 水位传感器:

2.4.5 压力传感器(HX711)

2.4.6整体模块功能连接 

2.5 显示模块

2.6 控制模块

2.6.1 继电器模块:

2.6.2 蜂鸣器:

2.6.3 LED指示灯:

2.7 用户输入模块

2.8 外设接口

2.8.1 RTC模块(DS1302):

2.8.2 语音模块:

2.9 电路连接示意

2.10 PCB设计

2.11 实物整体效果

三、软件设计

3.1 主要模块

3.2 功能说明

3.3 分析

3.4 main函数代码:

四、开发环境:

4.1 Keil uVision5 

4.2 Altium Designer

详细资料源码:毕设&课设&项目&竞赛-基于STM32宠物喂养系统(源码+PCB+论文+完整设计材料资料).zip_fbp项目资源-CSDN文库

总目录:

AD软件打开电路图 

KEIL软件打开代码 

 电路图

​ 模块资料       

​屏幕说明+实物照片

上位机软件 

元器件清单 

源代码 


一、项目背景与目标

1.1 项目背景:

随着社会的发展和人们生活水平的不断提高,宠物已经成为越来越多家庭生活中的重要成员。宠物不仅给人们带来了欢乐,也成为了家庭成员之一。然而,随着工作节奏的加快和生活压力的增大,许多宠物主人面临着无法随时照顾宠物的难题。尤其是对于定时定量喂食喂水这样的基本生活需求,许多主人往往因为忙碌而无法满足。

为了解决这一实际问题,提高宠物主人的生活质量,同时也确保宠物能够得到良好的照顾,我们团队设计并开发了一款基于STM32单片机的智能宠物喂养设备。该设备旨在通过创新的技术手段,实现宠物的自动喂养,减轻主人的负担,提高宠物的生活质量。让宠物主人即使在忙碌的工作日也能确保宠物得到及时和适量的喂养。通过科学合理的喂养,确保宠物健康成长,减少因饮食不当导致的问题。通过智能化的互动,增进宠物主人与宠物之间的情感联系。为宠物行业提供创新的解决方案,引领行业向更加智能化、个性化的方向发展。

1.2 项目目标:

  1. 自动化喂养:通过智能设备,实现宠物的定时定量喂食喂水,确保宠物在主人不在家时也能得到充足的营养和水分。

  2. 提高便利性:为宠物主人提供一种便捷的喂养解决方案,让他们能够更加轻松地管理宠物的日常饮食。

  3. 增强安全性:通过传感器模块实时监测宠物的饮食环境,如温度、水位等,确保宠物在健康的环境中生活。

  4. 远程监控:利用移动应用程序,让宠物主人可以远程控制设备,随时了解宠物的饮食状况。

  5. 节能环保:设计时考虑节能环保,减少能源消耗,符合可持续发展的理念。

通过这款智能宠物喂养设备,我们不仅致力于为宠物主人提供一种更加人性化的宠物照顾方式,设备的设计旨在模拟自然喂养环境,通过精准控制食物和水量的供给,确保宠物获得均衡的营养,从而提升它们的生活品质。通过设备提供的实时监控和互动功能,主人可以更加直观地感受到宠物的需求,增强主人与宠物之间的情感联系。

我们的设备代表了宠物行业智能化、自动化的一个新趋势,鼓励行业内的其他企业和技术人员探索更多的创新解决方案。通过设备收集的数据,宠物主人可以更好地了解宠物的饮食习惯和健康状况,及时调整喂养策略,预防潜在的健康问题。通过提供更加便捷和有效的喂养方式,我们希望能够减少因为主人无法照顾宠物而导致的弃养现象,为社会和谐做出贡献。

我们的设备采用了节能技术,鼓励宠物主人从日常生活中践行环保理念,减少资源浪费。通过参与宠物照顾设备的研发和推广,我们希望能够培养公众对宠物福利的关注,提高社会对动物保护的意识。我们的智能宠物喂养设备可以作为平台,连接更多的智能宠物产品和服务,共同构建一个完整的智能宠物生态系统。

图1-1 光多拉猫咪自动喂食器猫碗猫食盆饮水机狗吃饭喝水投食猫粮器宠物用品 

1.3 国内外研究现状:

1.3.1 国外研究现状:

  1. 技术领先:国外在智能宠物设备领域的研究起步较早,技术相对成熟。许多产品已经实现了高度自动化,如自动喂食器、自动饮水机等。

  2. 功能多样:国外的智能宠物喂养设备通常功能丰富,不仅包括自动喂食和饮水,还可能包括宠物健康监测、行为分析等。

  3. 品牌竞争激烈:国际上有多个知名品牌在智能宠物喂养设备市场占据领先地位,如PetSafe、Petronics等。

  4. 重视用户体验:国外研究注重用户体验,设备设计更加人性化,操作简单,便于宠物主人使用。

1.3.2 国内研究现状:

  1. 快速发展:近年来,随着国内宠物经济的兴起,智能宠物喂养设备市场迅速发展,吸引了众多企业和研究机构的关注。

  2. 技术创新:国内在智能宠物喂养设备技术上不断取得突破,如利用人工智能、物联网等技术提升设备的智能化水平。

  3. 市场潜力巨大:由于国内宠物数量庞大,宠物主人的消费能力不断提升,智能宠物喂养设备市场潜力巨大。

  4. 政策支持:政府出台了一系列政策支持宠物产业发展,为智能宠物喂养设备的发展提供了良好的外部环境。

  5. 关注健康与安全:国内研究更加关注宠物的健康和安全,设备在设计和制造过程中更加注重宠物福利。

国内外在智能宠物喂养设备的研究上各有侧重,国外更注重技术的成熟和功能的多样性,而国内则更注重技术创新和市场拓展。随着技术的不断进步和市场需求的增长,智能宠物喂养设备有望在未来得到更广泛的应用和发展。

1.4 发展趋势:

随着人工智能、机器学习等技术的进步,智能宠物喂养设备将更加智能化。未来设备将能够通过学习宠物的饮食习惯和生活规律,自动调整喂食量和时间,甚至能够识别宠物的情绪变化,做出相应的调整。智能宠物喂养设备将集健康监测功能于一体,通过内置的传感器监测宠物的体重、饮食、运动等数据,结合大数据分析,为宠物提供个性化的健康管理建议。随着物联网技术的发展,智能宠物喂养设备将实现与移动设备的无缝连接,宠物主人可以通过手机APP远程控制喂食、喂水,实时查看宠物的健康状况,甚至进行视频通话。

未来的智能宠物喂养设备将提供更加个性化的服务。用户可以根据宠物的种类、年龄、体重等特征,自定义喂养计划,满足不同宠物的特殊需求。环保理念将贯穿智能宠物喂养设备的研发和生产过程。设备将采用更加节能的材料和设计,减少能源消耗,同时确保产品的可回收性和环保性。智能宠物喂养设备将不再局限于喂食和饮水功能,可能会集成宠物玩具、温度控制、空气净化等功能,打造一个完整的宠物生活解决方案。

用户体验将是产品设计的重要考虑因素。未来设备将更加注重人机交互界面设计,提供更加直观、易用的操作体验。随着数据收集和分析的增多,智能宠物喂养设备将面临数据安全和隐私保护的问题。因此,设备将需要更加严格的数据加密和安全措施,确保用户数据的安全。随着技术的成熟和规模化生产,智能宠物喂养设备的成本有望降低,使其更加普及,更多家庭能够负担得起。随着行业的快速发展,智能宠物喂养设备将需要更多的行业标准与认证,以确保产品的质量和安全性。智能宠物喂养设备的发展趋势将是多方面的,从技术创新到用户体验,都将朝着更加智能化、个性化和人性化的方向发展。
 

二、硬件电路设计

2.1 总体电路设计:

本方案旨在设计一款智能宠物喂养设备,核心由STM32单片机作为主控单元,负责处理所有传感器数据、执行控制逻辑以及与用户界面交互。供电模块采用稳压的DC-DC转换器,以保障STM32和其他外设所需的电压(如3.3V、5V等),并结合锂电池供电方案以实现高效能和便携性。传感器模块包括DHT11温湿度传感器、红外测温传感器(MLX90614)、有害气体传感器(MQ系列)、水位传感器(超声波或电阻式)和压力传感器(HX711),它们通过GPIO、ADC或I2C接口与STM32连接,实时采集环境数据。

显示模块使用OLED显示屏,通过I2C或SPI接口与STM32连接,展示温湿度、重量和水位等信息。控制模块包括继电器模块用于控制水泵开关,蜂鸣器发出警报音,LED指示灯用于状态指示,全部通过GPIO控制。用户输入模块由按键组成,用户可通过按键设置时间和喂养参数,连接至GPIO引脚,采用简单的按键扫描方式。外设接口包括RTC模块(DS1302)用于实时时间跟踪,采用SPI接口与STM32连接,以及音乐模块,通过PWM或DAC输出连接至STM32。电路连接示意中,STM32的GPIO引脚连接各类传感器、继电器、蜂鸣器、LED和按键,同时ADC引脚连接有害气体和水位传感器的模拟输出,I2C/SPI引脚连接OLED显示屏和红外测温传感器以及RTC模块。

在PCB设计中,需要合理布局电路以确保信号完整性,减少干扰,电源线和信号线应分开,并使用适当的去耦电容来减少电源噪声。最后,在设计完成后进行调试与测试,以确保各个模块正常工作,数据采集准确,控制响应及时。

图2-1 整体电路图设计 

2.2 主控单元

2.2.1 STM32单片机

STM32单片机在智能宠物喂养设备中担任核心控制器的角色。它负责实时处理来自各类传感器的数据,执行相应的控制逻辑,并与用户界面进行交互。STM32的多种接口(如GPIO、ADC、I2C、SPI等)使其能够灵活地连接温湿度传感器、红外测温传感器、水位传感器等外设,确保系统能够准确获取环境信息。此外,STM32还能够根据传感器的数据做出及时反应,如控制水泵的开关、发出警报信号以及更新OLED显示屏的信息。这种高效的处理能力和灵活的接口设计,使得STM32单片机成为智能宠物喂养设备的理想选择。

图2-2 STM32F103C8T6 实物图

2.2.2 电路设计

在智能宠物喂养设备中,主控芯片STM32的接线设计至关重要,确保各个模块能够有效地连接和通信。温湿度传感器(DHT11)数据引脚连接至STM32的任意GPIO引脚,例如PA0。VCC和GND引脚分别连接至电源和地。红外测温传感器(MLX90614)SDA(数据线)连接至STM32的I2C引脚(如PB7),SCL(时钟线)连接至STM32的I2C引脚(如PB6),VCC和GND连接至电源和地。有害气体传感器(MQ系列)模拟输出引脚连接至STM32的ADC引脚(如PA1)。VCC和GND连接至电源和地。

水位传感器模拟输出引脚连接至STM32的ADC引脚(如PA2),VCC和GND连接至电源和地,压力传感器(HX711),数据引脚(DT)连接至STM32的GPIO引脚(如PB0),时钟引脚(SCK)连接至STM32的GPIO引脚(如PB1),VCC和GND连接至电源和地。显示模块的连接OLED显示屏,SDA连接至STM32的I2C引脚(如PB7),SCL连接至STM32的I2C引脚(如PB6),VCC和GND连接至电源和地,控制模块的连接,继电器模块控制引脚连接至STM32的GPIO引脚(如PB2),用于控制水泵的开关。VCC和GND连接至电源和地。蜂鸣器连接至STM32的GPIO引脚(如PB3),用于发出警报音。VCC和GND连接至电源和地。

LED指示灯连接至STM32的GPIO引脚(如PB4),用于状态指示。VCC和GND连接至电源和地,用户输入模块的连接,按键模块按键引脚连接至STM32的GPIO引脚(如PA3、PA4、PA5、PA6),用于用户输入。VCC和GND连接至电源和地。外设接口的连接RTC模块(DS1302)数据引脚连接至STM32的任意GPIO引脚(如PB5)。CLK引脚连接至STM32的GPIO引脚(如PB5)。VCC和GND连接至电源和地。音乐模块连接至STM32的PWM引脚(如PA7)或DAC引脚(如PA8)。

电源所有模块的VCC引脚应连接至5V或3.3V的电源,GND引脚应接至公共地。考虑在电源线上添加去耦电容,以减少电源噪声对系统的影响。在设计PCB时,确保信号线与电源线分开布置,以降低干扰,适当使用接地平面,减少噪声和电磁干扰。通过上述接线设计,STM32能够有效地与各个传感器和控制模块进行交互,确保智能宠物喂养设备正常工作。

模块名称STM32连接引脚功能说明供电要求
温湿度传感器(DHT11)PA0读取环境温度和湿度VCC: 5V, GND: 0V
红外测温传感器(MLX90614)PB6 (SCL), PB7 (SDA)远程测量物体温度VCC: 3.3V, GND: 0V
有害气体传感器(MQ系列)PA1 (ADC)检测空气中有害气体浓度VCC: 5V, GND: 0V
水位传感器PA2 (ADC)检测水位高度VCC: 5V, GND: 0V
HX711压力传感器PB0 (DT), PB1 (SCK)读取物体重量VCC: 5V, GND: 0V
OLED显示屏PB6 (SCL), PB7 (SDA)显示温度、湿度、时间等信息VCC: 3.3V, GND: 0V
继电器模块PB2控制水泵的开关VCC: 5V, GND: 0V
蜂鸣器PB3发出声音警报VCC: 5V, GND: 0V
LED指示灯PB4状态指示灯VCC: 5V, GND: 0V
按键模块PA3, PA4, PA5, PA6用户输入按钮VCC: 5V, GND: 0V
RTC模块(DS1302)PB5实时时钟显示VCC: 3.3V, GND: 0V
音乐模块PA7 (PWM)播放音乐VCC: 5V, GND: 0V

图2-3 电路图设计 

2.3 供电模块

  • 电源管理:设计稳定的电源模块,通常采用DC-DC转换器,以保证STM32和其他外设所需的电压(如3.3V、5V等)。可以使用锂电池供电,并结合充电电路。
  • 电源管理:设计稳定的电源模块,通常采用DC-DC转换器,以保证STM32和其他外设所需的电压(如3.3V、5V等)。可以使用锂电池供电,并结合充电电路。

图2-4 稳压电路实物图 

 

2.4 传感器模块

2.4.1 温湿度传感器(DHT11)

温湿度传感器(DHT11)用于监测环境的温度和湿度。以下是该传感器的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
温湿度传感器(DHT11)监测环境温度和湿度GPIO数字信号PA0

详细说明

  • 功能:DHT11传感器能够提供环境的温度和湿度信息,适用于气候监测和室内环境控制等应用。
  • 连接方式:DHT11通过单根数据线与STM32进行通信,使用GPIO引脚读取传感器输出的数据。
  • 连接至STM32引脚:建议将DHT11的数据引脚连接至STM32的PA0引脚。同时,确保VCC和GND引脚正确连接至电源和地。

额外注意事项

  • 在使用DHT11时,建议在数据引脚和STM32引脚之间添加一个4.7kΩ的上拉电阻,以确保数据传输的稳定性。
  • DHT11的测量范围和精度:
    • 温度范围:0°C to 50°C,精度±2°C。
    • 湿度范围:20% to 80% RH,精度±5% RH。

这个信息可以帮助您更好地理解DHT11传感器的功能及其在智能宠物喂养设备中的应用。

图2-5 DHT11温湿度传感器实物图

图2-6 电路图设计

2.4.2 红外测温传感器(MLX90614)

红外测温传感器(MLX90614)用于非接触式温度测量。以下是该传感器的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
红外测温传感器(MLX90614)非接触式测量物体温度I2C通信接口PB6 (SCL), PB7 (SDA)

详细说明

  • 功能:MLX90614能够以非接触的方式测量目标物体的温度,非常适合用于宠物体温监测、工业温度检测及其他需要非接触测温的应用。
  • 连接方式:该传感器通过I2C通信接口与STM32进行连接,使用两根线(SCL和SDA)进行数据传输。
  • 连接至STM32引脚
    • SCL(时钟线)连接至STM32的PB6引脚。
    • SDA(数据线)连接至STM32的PB7引脚。

额外注意事项

  • 确保在I2C总线上添加适当的上拉电阻(通常为4.7kΩ)以确保信号稳定。
  • MLX90614的工作电压通常为3.0V至3.6V,确保供电符合要求。

图2-7 MLX90614实物图

图2-8 MLX90614电路设计图 

2.4.3 有害气体传感器

有害气体传感器(如MQ系列传感器)用于检测空气中有害气体的浓度。以下是该传感器的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
有害气体传感器(MQ系列)检测空气中有害气体浓度模拟信号输出PA1 (ADC)

详细说明

  • 功能:MQ系列传感器能够检测多种有害气体的浓度,如甲烷(CH4)、一氧化碳(CO)、氨气(NH3)等,适用于空气质量监测和安全检测等应用。
  • 连接方式:传感器通过模拟信号输出将气体浓度信息发送至STM32,STM32通过ADC(模拟数字转换器)引脚读取这些值。
  • 连接至STM32引脚
    • 将MQ传感器的模拟输出引脚连接至STM32的PA1引脚,用于ADC读取气体浓度。

额外注意事项

  • 在使用MQ系列传感器时,通常需要一个适当的电源和负载电阻以确保传感器的正常工作。
  • 传感器的校准是非常重要的,确保在使用之前进行适当的测试和校准,以提高检测的准确性。

图2-9 MQ 烟雾传感器实物图

2.10  MQ 烟雾传感器电路图

2.4.4 水位传感器

水位传感器可以采用超声波传感器或电阻式水位传感器,用于监测水体的水位。以下是水位传感器的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
超声波水位传感器(如HC-SR04)通过超声波测量水位数字信号输出PA2 (Trig), PA3 (Echo)
电阻式水位传感器通过电阻变化测量水位模拟信号输出PA4 (ADC)

详细说明

1. 超声波水位传感器(HC-SR04)

  • 功能:通过发射超声波并测量回波时间来计算水位,适用于水池、鱼缸等多种场景的水位检测。
  • 连接方式
    • Trig引脚用于触发超声波发射,连接至STM32的PA2引脚。
    • Echo引脚用于接收回波信号,连接至STM32的PA3引脚。

 

图2-11 HC-SR04 实物图

2. 电阻式水位传感器

  • 功能:通过浸入水中电阻的变化来检测水位,适用于简单的水位监测。
  • 连接方式:传感器的输出为模拟信号,连接至STM32的PA4引脚,用于ADC读取水位。

额外注意事项

  • 对于超声波传感器,确保传感器与水面保持适当距离,避免干扰。
  • 电阻式水位传感器应确保材料耐腐蚀,以适应水环境。
  • 校准传感器以确保测量准确性。

图 2.12 水位传感器实物图

2.4.5 压力传感器(HX711)

压力传感器(HX711)常用于重量测量,尤其是在与称重传感器(如应变片)结合使用时。以下是HX711模块的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
压力传感器(HX711)用于测量重量数字信号输出SCK, DT

详细说明

  • 功能:HX711模块用于将称重传感器的模拟信号转换为数字信号,适合用于秤、天平等重量测量应用。
  • 连接方式:HX711模块通过数字信号与STM32进行连接,通常使用两个引脚。
  • 连接至STM32引脚
    • SCK(时钟引脚)连接至STM32的某个数字引脚(例如PA5)。
    • DT(数据引脚)连接至STM32的另一个数字引脚(例如PA6)。

额外注意事项

  • 确保HX711模块的供电电压符合规格(通常为2.7V至5.5V),以避免损坏。
  • 使用适当的库(如HX711库)进行数据采集和处理,以简化编程过程。
  • 对于称重传感器,使用前需进行校准,以确保测量的准确性。

 

 图2.13 HX711压力传感器实物图

图 2.14 HX711压力传感器电路图

2.4.6整体模块功能连接 

传感器名称功能连接方式连接至STM32引脚
温湿度传感器(DHT11)监测环境温度和湿度GPIO数字信号PA0
红外测温传感器(MLX90614)非接触式温度测量I2C通信接口PB6 (SCL), PB7 (SDA)
有害气体传感器(MQ系列)检测空气中有害气体浓度模拟信号PA1 (ADC)
水位传感器检测水位高度(超声波或电阻式)模拟信号PA2 (ADC)
压力传感器(HX711)测量物体重量数字信号PB0 (DT), PB1 (SCK)

功能:描述每个传感器的主要用途。

连接方式:传感器如何与STM32进行连接。

连接至STM32引脚:指定传感器连接到STM32开发板上的具体引脚。

2.5 显示模块

OLED显示屏: 

OLED显示屏是一种常用的显示设备,能够以高对比度和低功耗的方式显示各种信息。以下是OLED显示屏的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
OLED显示屏显示温湿度、重量、水位等信息I2C或SPI接口I2C: SDA, SCL(如PB7, PB6)<br>SPI: MOSI, SCK, CS(如PB5, PB3, PA4)

详细说明

  • 功能:OLED显示屏可以用于实时显示温度、湿度、重量、水位等信息,适合用于智能设备和物联网应用。
  • 连接方式
    • I2C接口:通常使用两根引脚连接:
      • SDA(数据线)连接至STM32的PB7引脚。
      • SCL(时钟线)连接至STM32的PB6引脚。
    • SPI接口:通常使用三根引脚连接:
      • MOSI(主设备输出,从设备输入)连接至STM32的PB5引脚。
      • SCK(时钟线)连接至STM32的PB3引脚。
      • CS(片选线)连接至STM32的PA4引脚。

注意事项

  • 选择I2C或SPI接口时,要确保相应的引脚配置和库的支持。
  • OLED显示屏通常需要一个适当的供电电压(例如3.3V或5V),应根据具体型号选择。
  • 在编程时,可以使用相关的库(如Adafruit SSD1306或U8g2)来简化显示内容的设置和更新。

2.6 控制模块

2.6.1 继电器模块

继电器模块是用于控制高功率设备(如水泵)的重要组件,可以通过微控制器的GPIO引脚来控制其开关状态。以下是继电器模块的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
继电器模块控制水泵的开关GPIO控制任意GPIO引脚(如PA0)

详细说明

  • 功能:继电器模块通过继电器的开关动作来控制水泵的启动和停止,适用于自动化控制系统。
  • 连接方式
    • 继电器模块通常有一个控制引脚、供电引脚和公共接点。
    • 控制引脚连接至STM32的任意GPIO引脚(例如PA0)。
    • 供电引脚通常连接至VCC(一般为5V)。
    • GND引脚连接至地。

注意事项

  • 确保继电器的额定电流和电压满足所控制水泵的需求。
  • 在设计电路时,注意使用二极管(如1N4001)来防止反向电流对GPIO引脚造成损害,通常连接在继电器的线圈两端。
  • 在编程时,通过控制GPIO引脚的高低电平来实现继电器的开关控制,例如设置引脚为高电平以启动水泵,低电平以停止水泵。

图2.15 继电器传感器实物图

2.6.2 蜂鸣器

蜂鸣器是一种常用的声响设备,可用于发出警报音或提示音。以下是蜂鸣器的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
蜂鸣器发出警报音或提示音GPIO控制任意GPIO引脚(如PA1)

详细说明

  • 功能:蜂鸣器可用于发出警报声,适用于通知、提醒或警示用户,例如在温湿度超标或水位异常时发出声音提示。
  • 连接方式
    • 蜂鸣器有两个引脚,通常是正极和负极。
    • 将正极连接至STM32的任意GPIO引脚(如PA1),负极连接至地(GND)。

额外注意事项

  • 在选择蜂鸣器时,可以选择主动蜂鸣器(内置振荡器)或被动蜂鸣器(需要外部信号驱动),根据应用需求进行选择。
  • 在编程时,通过控制GPIO引脚的高低电平来控制蜂鸣器的发声,例如将引脚设置为高电平以启用蜂鸣器,低电平以关闭蜂鸣器。
  • 可以使用PWM信号来控制被动蜂鸣器的音调和音量。

 

 图2.16 蜂鸣器传感器实物图

 图2.16 蜂鸣器电路图

2.6.3 LED指示灯

LED指示灯是一种常用的指示设备,用于显示设备的工作状态或其他信息。以下是LED指示灯的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
LED指示灯状态指示(如电源状态、工作状态等)GPIO控制任意GPIO引脚(如PA2)

详细说明

  • 功能:LED指示灯用于实时显示设备的状态,例如正常工作、故障或待机状态。不同的颜色或闪烁方式可以表示不同的状态。
  • 连接方式
    • LED指示灯通常有两个引脚:阳极(正极)和阴极(负极)。
    • 将阳极连接至STM32的任意GPIO引脚(如PA2),阴极连接至GND。
    • 为了保护LED,可以在阳极和GPIO引脚之间串联一个限流电阻,通常为220Ω至1kΩ之间的电阻值。

额外注意事项

  • 在编程时,通过控制GPIO引脚的高低电平来控制LED的开关。例如,将引脚设置为高电平以点亮LED,设置为低电平以熄灭LED。
  • 可以通过PWM信号调节LED的亮度,适用于需要显示不同亮度的应用场景。
  • 可以组合多个LED指示灯,使用不同的引脚以指示不同状态。

 

 图2.18 LED实物图 

 图2.18 LED电路图 

2.7 用户输入模块

按键模块

按键模块是用于用户交互的重要组件,允许用户输入设置,例如时间和喂养参数。以下是按键模块的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
按键模块用户设置时间和喂养参数GPIO控制(按键扫描)任意GPIO引脚(如PA3)

详细说明

  • 功能:按键模块允许用户通过按下按钮来设置相关参数,例如喂养时间和数量。这对于用户友好的设备操作非常重要。
  • 连接方式
    • 按键模块通常有多个按键,每个按键可以连接至一个GPIO引脚。
    • 按键的一个引脚连接至STM32的GPIO引脚(如PA3),另一个引脚连接至GND。
    • 当按键被按下时,GPIO引脚将读到低电平(接地),否则为高电平(上拉)。

额外注意事项

  • 常用的按键扫描方式有两种:
    • 单按键扫描:读取单个按键的状态,适合简单应用。
    • 多按键扫描:通过矩阵方式连接多个按键,可以减少引脚使用,适合复杂设置。
  • 在编程时,需要实现按键去抖动算法,以确保按键的稳定读数,避免因抖动导致多个触发。
  • 可以使用上拉或下拉电阻来稳定按键输入,通常在STM32内置上拉电阻功能。

 图2.19 按键实物图

 

 图2.20 按键电路图

2.8 外设接口

2.8.1 RTC模块(DS1302):

RTC模块(DS1302)是一种实时时间跟踪模块,广泛用于需要时间记录的应用。以下是DS1302 RTC模块的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
DS1302 RTC模块实时时间跟踪SPI接口任意GPIO引脚(如PB5, PB6, PB7, PA4)

详细说明

  • 功能:DS1302模块用于记录当前日期和时间,提供年、月、日、时、分、秒等信息。它适用于需要时间数据的应用,如定时喂养和事件记录。
  • 连接方式
    • DS1302模块通常有三个主要引脚用于SPI通信:SCLK(时钟)、IO(数据)、CE(片选)。
    • 将这些引脚连接至STM32的GPIO引脚,例如:
      • SCLK连接到PB5
      • IO连接到PB6
      • CE连接到PB7
      • 接地(GND)和电源(VCC)引脚需要连接到相应的电源和地。

额外注意事项

  • DS1302模块通常需要一个备用电池,以在断电时保持时间。
  • 在编程时,可以使用SPI协议与DS1302进行通信,通过发送和接收数据来读取和设置时间。
  • 确保在使用中实现时间读取和设置的逻辑,提供用户设置和读取当前时间的功能。

 

 图2.21 DS1302模块实物图 

图2.22 DS1302模块电路图

2.8.2 语音模块

语音模块是一种用于播放语音或音效的设备,广泛应用于各种交互式电子项目。以下是语音模块的详细信息,包括功能说明、连接方式以及与STM32的连接引脚。

传感器名称功能连接方式连接至STM32引脚
语音模块播放语音或音效PWM输出或DAC输出任意GPIO引脚(如PA0, PA1)

详细说明

  • 功能:语音模块可用于播放提示音、语音信息或音效,增强设备的交互性和用户体验。
  • 连接方式
    • 语音模块支持PWM(脉冲宽度调制)或DAC(数字-模拟转换器)输出。
    • 如果使用PWM输出,将语音模块的输入引脚连接至STM32的相应GPIO引脚(如PA0),确保PWM信号能够控制音量和音调。
    • 如果使用DAC输出,可以将DAC引脚直接连接至STM32的DAC引脚(如PA4),以输出高质量的音频信号。

额外注意事项

  • 在编程时,需设置适当的PWM频率以匹配语音模块的要求,或者配置DAC以输出正确的电压范围。
  • 根据所使用的语音模块,可能需要特定的音频格式(如WAV或MP3),确保准备的音频文件与模块兼容。
  • 可以通过外部放大器连接扬声器以提高音频输出的音量。

 

图2.23 DS1302模块实物图  

2.9 电路连接示意

GPIO引脚:STM32的GPIO引脚连接各类传感器、继电器、蜂鸣器、LED和按键。

ADC引脚:连接有害气体传感器和水位传感器的模拟输出。

I2C/SPI引脚:连接OLED显示屏和红外测温传感器、RTC模块。

2.10 PCB设计

PCB布局:在设计PCB时,需要合理布置电路,确保信号完整性,减少干扰。电源线和信号线应分开布局,并使用适当的去耦电容减少电源噪声。

图2.24 PCB—2D制版图

图2.24 PCB—3D制版图 

2.11 实物整体效果

 图2.26 实物整体图

 图2.26 显示屏参数图

三、软件设计

完整的嵌入式系统程序,主要用于智能宠物喂养设备的功能实现,涉及多个传感器、模块和控制机制。以下是对这段代码的分析,分为主要模块、功能说明和流程图示意。

3.1 主要模块

  1. 初始化模块

    初始化各个传感器和模块,如延时、LED、按键、温湿度传感器、红外测温仪、音频模块、继电器、水位传感器、HX711等。
  2. 时间管理

    使用DS1302模块读取和设置实时时间,通过OLED显示。
  3. 传感器读取

    从红外测温传感器读取温度、从有害气体传感器读取浓度、从DHT11读取温湿度、从HX711读取物品重量、从水位传感器读取水位高度。
  4. 用户输入

    通过按键模块调整时间设置,进行特定的操控(如启动或停止喂食装置)。
  5. 控制逻辑

    根据传感器数据和用户输入控制水泵和蜂鸣器、LED灯的状态、通过PWM控制模块转动喂食装置。
  6. 报警机制

    当传感器数据超出阈值时,触发声光报警。

3.2 功能说明

  • 时间设置:用户可以通过按键设置时间,OLED实时显示当前时间。
  • 传感器数据展示:实时显示温度、湿度、有害气体浓度、物品重量和水位。
  • 水泵控制:根据水位传感器的读数控制水泵的开关。
  • 喂食控制:根据物品重量和设定时间自动喂食。
  • 声光报警:根据温度、湿度或有害气体浓度触发报警器。

3.3 分析

集成了多种传感器和控制模块,以满足智能宠物喂养的需求。系统通过实时读取环境数据和用户输入,控制喂食装置和报警机制,确保设备的高效和安全运行。

3.4 main函数代码:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "mlx90614.h"
#include "oled.h"
#include "lux.h"
#include "dht11.h"
#include "ds1302.h"
#include "HX711.h"
#include "timer.h"
#include "Relay.h"u8  PPM,Temperature,HUM;
int shi=0,fen=0,miao=0;
int  jishu=0;
extern u8 Flag_Error ;
extern unsigned long	Weight_Shiwu;
unsigned short int ADValue;
float Voltage=0;
double high=0;//转动90度
void  run()
{PWM2=2500;delay_ms(10);
}//恢复原来的位置
void  stop()
{PWM2=1500;delay_ms(10);
}int main(void)
{vu8 key=0;u8 time[15];u16 Integer,test_adc;float temp=0.0;char humidity;char temperature;int shiwu=0;delay_init();	    	 //延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级Timer_SRD_Init(20000-1,72-1);	   //定时器配置BEEP_Init();	//蜂鸣器初始化LED_Init();	   //LED灯初始化KEY_Init();   //按键初始化Adc1_Init();   //有害气体初始化SMBus_Init();  //红外测温初始化DHT11_Init();    //温湿度传感器初始化music_Init();   //音乐模块初始化Relay_Init();//继电器控制水泵OLED_Init();	 //显示屏模块初始化OLED_Clear();OLED_P6x8Str(0,0,"Temp:");OLED_P6x8Str(42,0,".");OLED_P6x8Str(62,0,"C");OLED_P6x8Str(0,1,"Harmful gas:");OLED_P6x8Str(0,2,"T:");OLED_P6x8Str(50,2,"H:");OLED_P6x8Str(0,6,"Weight:");OLED_P6x8Str(80,6,"g");OLED_F6x8Str1(75,4,shi,2);OLED_P6x8Str(87,4,":");OLED_F6x8Str1(93,4,fen,2);OLED_P6x8Str(105,4,":");OLED_F6x8Str1(111,4,miao,2);OLED_P6x8Str(0,7,"Water:");OLED_P6x8Str(80,7,"mm");InitioHX711();        //压力传感器初始化Get_Maopi();delay_ms( 100 );Get_Maopi();DS1302_Init();	 //时间模块初始化DS1302_Write_Time();	//写入时间函数while(1){//得到实时时间DS1302_Get_Time(time);OLED_F6x8Str1(0,3,time[0],1);OLED_F6x8Str1(6,3,time[1],1);OLED_F6x8Str1(12,3,time[2],1);OLED_F6x8Str1(18,3,time[3],1);OLED_P6x8Str(24,3,"-");OLED_F6x8Str1(30,3,time[4],1);OLED_F6x8Str1(36,3,time[5],1);OLED_P6x8Str(42,3,"-");OLED_F6x8Str1(48,3,time[6],1);OLED_F6x8Str1(54,3,time[7],1);OLED_P6x8Str(60,3,"-");OLED_F6x8Str1(66,3,time[8],1);OLED_F6x8Str1(0,4,time[9],1);OLED_F6x8Str1(6,4,time[10],1);OLED_P6x8Str(12,4,":");OLED_F6x8Str1(18,4,time[11],1);OLED_F6x8Str1(24,4,time[12],1);OLED_P6x8Str(30,4,":");OLED_F6x8Str1(36,4,time[13],1);OLED_F6x8Str1(42,4,time[14],1);//按键函数key=KEY_Scan(1);if(key){switch(key){case 1:if(jishu>3)jishu=1;elsejishu=jishu+1;if(jishu==1){OLED_P6x8Str(75,3,"-");OLED_P6x8Str(110,3," ");}if(jishu==2){OLED_P6x8Str(93,3,"-");OLED_P6x8Str(75,3," ");}if(jishu==3){OLED_P6x8Str(110,3,"-");OLED_P6x8Str(93,3," ");}break;case 2:if(jishu==1){if(shi>=24)shi=24;elseshi=shi+1;OLED_F6x8Str1(75,4,shi,2);}if(jishu==2){if(fen>=60)fen=60;elsefen=fen+1;OLED_F6x8Str1(93,4,fen,2);}if(jishu==3){if(miao>=60)miao=60;elsemiao=miao+1;OLED_F6x8Str1(111,4,miao,2);}break;case 3:if(jishu==1){if(shi<=0)shi=0;elseshi=shi-1;OLED_F6x8Str1(75,4,shi,2);}if(jishu==2){if(fen<=0)fen=0;elsefen=fen-1;OLED_F6x8Str1(93,4,fen,2);}if(jishu==3){if(miao<=0)miao=0;elsemiao=miao-1;OLED_F6x8Str1(111,4,miao,2);}break;case 4:run();break;case 5:stop();break;}}//得到红外测温传感器测量的数据temp=SMBus_ReadTemp();Integer=temp;OLED_F6x8Str1(30,0,Integer,2);	  //红外测温数据的整数temp-=Integer;temp*=100;OLED_F6x8Str1(47,0,temp,2);	//红外测温数据的小数//有害气体浓度数据test_adc = Get_Adc_Average1(1,20);//读取通道1的AD值,读取20次的平均值PPM=test_adc*99/4096;PPM = PPM >= 99? 99: PPM;OLED_F6x8Str1(70,1,PPM,2);	  //红外测温数据的整数//水位传感器ADValue=Get_Adc_Average1(2,20);Voltage=(float)ADValue*3.3*10000/33/4095;high = (Voltage-20)/1.2 ;    //总量程是4cmif(high<0)OLED_F6x8Str1(50,7,0,4);elseOLED_F6x8Str1(50,7,high/10,4);//开启水泵if(high<250){Relay_ON();delay_ms(500);Relay_OFF();}//读取空气中的温度、湿度DHT11_Read_Data(&Temperature,&HUM);//读取温湿度值OLED_F6x8Str1(15,2,Temperature,2);OLED_F6x8Str1(65,2,HUM,2);//HX711压力传感器Get_Weight();  //得到物体重量if ( Flag_Error == 0 ){shiwu = Weight_Shiwu / 1000;}else{shiwu=0;}OLED_F6x8Str1(50,6,shiwu,4);//声光报警if((PPM>65)||(Temperature>35)||(HUM>75)||(Integer>30)){BEEP=1;LED=0;}else{BEEP=0;LED=1;}//时间计算对比if((time[9]==(shi/10))&&(time[10]==(shi%10))&&(time[11]==(fen/10))&&(time[12]==(fen%10))&&(time[13]==(miao/10))&&(time[14]==(miao%10))){MUSIC=0;delay_ms(1);
//						MUSIC=1;if((0<shiwu)&&(shiwu<=1000)){run();delay_ms(500);delay_ms(500);stop();}else if((1000<shiwu)&&(shiwu<=2500)){run();delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);stop();}else if((2500<shiwu)&&(shiwu<=4000)){run();delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);stop();}else if((4000<shiwu)&&(shiwu<=5000)){run();delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);delay_ms(500);stop();}else{MUSIC=1;delay_ms(1);}}}
}

四、开发环境:

4.1 Keil uVision5 

Keil uVision5 是一款广泛使用的集成开发环境(IDE),专门用于开发基于 ARM、Cortex-M、8051、C166 和其他微控制器的嵌入式系统。它由 Arm 公司提供,支持多种编程语言,主要是 C 和汇编语言。uVision5 提供了一整套的工具,包括代码编辑器、编译器、调试器以及项目管理工具,使开发者能够高效地进行嵌入式应用的开发。

uVision5 提供了直观易用的用户界面,使得项目创建和管理变得方便。支持语法高亮、代码完成、代码折叠等功能,提高了开发效率。内置 C/C++ 编译器,支持多种优化选项,生成高效的可执行代码。支持多种调试器,包括仿真器和硬件调试器,提供断点设置、变量监视、实时跟踪等功能,帮助开发者快速排查问题。

图4-1 Keil uVision5开发环境

允许用户轻松地管理多个项目,支持库文件和外部文件的引用。提供软件仿真功能,允许在没有实际硬件的情况下测试和调试代码。提供了大量的示例代码和驱动库,帮助用户快速启动项目。支持多种微控制器架构和系列,适合不同类型的嵌入式开发。

uVision5 可以从 Arm 官网下载并安装,支持 Windows 操作系统。用户在安装后可以通过创建新项目、选择目标设备、编写代码并进行编译和调试来开始开发。Keil uVision5 是一个功能强大、易于使用的嵌入式开发环境,适用于各种嵌入式项目的开发和调试,特别是对于 ARM 和 Cortex-M 系列微控制器的开发。

4.2 Altium Designer

Altium Designer 是一款领先的电子设计自动化(EDA)软件,广泛用于电路设计、PCB(印刷电路板)设计以及嵌入式系统的开发。它由 Altium 公司开发,提供了一整套强大的工具和功能,旨在提高电子设计工程师的生产力和效率。

Altium Designer 提供了一个统一的设计环境,集成了电路原理图设计、PCB 布局、仿真和文档生成等功能。直观的图形用户界面使得设计流程更加流畅,用户可以轻松访问各种工具和功能。支持层次化设计和大型项目管理,允许用户轻松创建复杂的电路原理图。提供先进的布局和路由工具,包括自动布线、规则检查和设计验证,确保PCB设计的高效和准确。

支持实时的3D视图,用户可以在设计阶段可视化PCB,检查元件布局和间距。集成了多种仿真工具,支持电路仿真、信号完整性分析和热分析等,帮助工程师优化设计。提供强大的元件库管理功能,用户可以轻松管理和创建元件库,确保设计的一致性和准确性。支持团队协作功能,允许多个工程师同时工作,并提供版本控制,以便于跟踪设计更改。能够自动生成生产所需的文件,如Gerber文件、组装图和BOM(物料清单),简化生产准备流程。

图4-2 Altium Designer开发环境 

Altium Designer 可以从 Altium 官方网站下载并安装,支持 Windows 操作系统。安装后,用户可以通过创建新项目、进行原理图设计、PCB 布局和仿真来开始使用。

Altium Designer 是一个功能全面且强大的电子设计工具,适合从初学者到专业工程师的各种用户。它通过提供集成的设计环境和强大的功能,帮助用户提高设计效率,确保产品的高质量和可靠性。

详细资料源码:毕设&课设&项目&竞赛-基于STM32宠物喂养系统(源码+PCB+论文+完整设计材料资料).zip_fbp项目资源-CSDN文库

总目录:

 

AD软件打开电路图 

KEIL软件打开代码 

 电路图

 模块资料       

 屏幕说明+实物照片

上位机软件 

元器件清单 

源代码 

相关文章:

【stm32项目】基于stm32智能宠物喂养(完整工程资料源码)

基于STM32宠物喂养系统 前言&#xff1a; 随着人们生活幸福指数的提高&#xff0c;越来越多的家庭选择养宠物来为生活增添乐趣。然而&#xff0c;由于工作等原因&#xff0c;许多主人无法及时为宠物提供充足的食物与水。为了解决这一问题&#xff0c;我设计了一款便捷的宠物喂…...

选择Maya进行3D动画制作与渲染的理由

如果你对3D动画充满热情并追求成为专业3D动画师的梦想&#xff0c;你一定听说过Maya——近年来3D动画的行业标准。Maya被3D艺术家广泛使用&#xff0c;你是否想知道为什么Maya总是他们的首选&#xff1f;下面一起来了解下。 一、什么是Maya&#xff1f; 由Autodesk开发的Maya是…...

Promise应用

创建一个 Promise 对象 let promise showLabelText() {return new Promise((resolve, reject) > {axios({method: "post",url: "/code/expose/interface/queryActionPlan",data: { situationOneId: 19999, labels: [1, 2, 3] }}).then(response > {…...

51单片机嵌入式开发:13、STC89C52RC 之 RS232与电脑通讯

STC89C52RC 之 RS232与电脑通讯 第十三节课&#xff0c;RS232与电脑通讯1 概述2 Uart介绍2.1 概述2.2 STC89C52UART介绍2.3 STC89C52 UART寄存器介绍2.4 STC89C52 UART操作 3 C51 UART总结 第十三节课&#xff0c;RS232与电脑通讯 1 概述 RS232&#xff08;Recommended Stand…...

当代政治制度(练习题)

当代政治制度&#xff08;练习题&#xff09; Rz整理 仅供参考 干部鉴定必须坚持德才兼备原则&#xff0c;考核内容包括&#xff08;A.德 B.廉 C.能 D.勤 F.绩 &#xff09; A.德 B.廉 C.能 D.勤 E.信 F.绩我国干部任用的方式主要包括&#xff08;A.考任 C.委任 D.聘任 F.选任…...

前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录 跳转方式微信小程序&#xff08;我以uniapp为例&#xff09;pc api接入说明关于签名计算成功示例 跳转方式 没有任何开发成本&#xff0c;直接一键接入 可以直接看官方文档 https://www.kuaidi100.com/openapi/api_wxmp.shtml 微信小程序&#xff08;我以uniapp为例…...

电脑永久性不小心删除了东西还可以恢复吗 电脑提示永久性删除文件怎么找回 怎么恢复电脑永久删除的数据

永久删除电脑数据的操作&#xff0c;对于很多常用电脑设备的用户来说&#xff0c;可以说时有发生&#xff01;但是&#xff0c;因为这些情况大都发生在不经意间&#xff0c;所以每每让广大用户感觉到十分苦恼。永久删除也有后悔药&#xff0c;轻松找回电脑中误删的文件。恢复文…...

LeetCode热题100刷题16:74. 搜索二维矩阵、33. 搜索旋转排序数组、153. 寻找旋转排序数组中的最小值、98. 验证二叉搜索树

74. 搜索二维矩阵 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int row matrix.size();int col matrix[0].size();for(int i0;i<row;i) {//先排除一下不存在的情况if(i>0&&matrix[i][0]>target…...

C++仿函数

在C中&#xff0c;我们经常需要对类中的元素进行比较&#xff0c;例如在排序、查找等操作中。为了使类更加灵活&#xff0c;我们可以通过自定义比较函数来实现不同的比较方式。在本文中&#xff0c;我们将探讨如何在类中使用仿函数和 Lambda 表达式来定义自定义比较函数。 1. …...

文献阅读:tidyomics 生态系统:增强组学数据分析

文献介绍 文献题目&#xff1a; The tidyomics ecosystem: enhancing omic data analyses 研究团队&#xff1a; Stefano Mangiola&#xff08;澳大利亚沃尔特和伊丽莎霍尔医学研究所&#xff09;、Michael I. Love&#xff08;美国北卡罗来纳大学教堂山分校&#xff09;、Ant…...

MySQL运维实战之Clone插件(10.1)使用Clone插件

作者&#xff1a;俊达 clone插件介绍 mysql 8.0.17版本引入了clone插件。使用clone插件可以对本地l或远程的mysql实例进行clone操作。clone插件会拷贝innodb存储引擎表&#xff0c;clone得到的是原数据库的一个一致性的快照&#xff0c;可以使用该快照数据来启动新的实例。cl…...

【系统架构设计】数据库系统(三)

数据库系统&#xff08;三&#xff09; 数据库模式与范式数据库设计备份与恢复分布式数据库系统分布式数据库的概念特点分类目标 分布式数据库的架构分布式数据库系统与并行数据库系统 数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 备份与恢复 分布式数据库系统…...

免费视频批量横版转竖版

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具&#xff0c;提供高效便捷的视频批量横转竖&#xff0c;主要功能&#xff1a; 导入与删除文件&#xff1a;轻松导入多个视频文件&#xff0c;删除不必要的文件。暂停与继续处理&#xff1a;随时暂停和继续处理。…...

内存管理(知识点)

c语言与c对于内存管理的区别 c语言中动态内存管理方式 malloc\calloc\realloc\free c内存管理方式 c兼容c语言所以c语言中的方式也可以使用 但是用起来太麻烦 所以通过new和delete操作符竞选动态内存管理 单个对象 c语言: int* p2(int*)malloc(sizeof(int)) c : int*p3 new…...

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel 简介熔断降级什么是熔断什么是降级相同点不同点 整合Sentinel自定义sentinel流控返回数据使用Sentinel来保护feign远程调用自定义资源给网关整合Sentinel参考 简介 熔断降…...

防范UDP Flood攻击的策略与实践

UDP Flood攻击是一种常见的分布式拒绝服务&#xff08;DDoS&#xff09;攻击手段&#xff0c;通过向目标服务器发送大量无效的UDP数据包&#xff0c;消耗其网络带宽和处理资源&#xff0c;最终导致合法的网络服务无法正常运行。本文将深入探讨UDP Flood攻击的原理、常见的防御策…...

昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换

通过深入学习CycleGAN模型&#xff0c;我对无监督图像到图像的转换技术有了更深的理解。CycleGAN不仅能在没有成对训练样本的情况下实现域之间的转换&#xff0c;而且在保持内容结构的同时成功转换图像风格&#xff0c;这在许多应用中都非常有用&#xff0c;如艺术风格转换、季…...

Leetcode 2520. 统计能整除数字的位数

问题描述&#xff1a; 给你一个整数 num &#xff0c;返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 &#xff0c;则认为整数 val 可以整除 nums 。 示例 1&#xff1a; 输入&#xff1a;num 7 输出&#xff1a;1 解释&#xff1a;7 被自己整除&#xff0…...

WEB前端08-综合案例(动态表格)

使用 HTML、CSS 和 JavaScript 创建动态表格 在本教程中&#xff0c;我们将创建一个动态表格&#xff0c;允许用户添加行、选择项目&#xff0c;并执行批量操作&#xff0c;如全选或删除选中的行。我们将通过 HTML、CSS 和 JavaScript 来实现这一功能。让我们逐步了解每个部分…...

【面试题】Redo log和Undo log

Redo log 介绍Redo log之前我们需要了解一下&#xff0c;mysql数据操作的流程&#xff1a; 上述就是数据操作的流程图&#xff0c;可以发现sql语句并不是直接操作的磁盘而是通过操作内存&#xff0c;然后进行内存到磁盘的一个同步。这里我们必须要了解一些区域&#xff1a; 缓…...

开发实战经验分享:互联网医院系统源码与在线问诊APP搭建

作为一名软件开发者&#xff0c;笔者有幸参与了多个互联网医院系统的开发项目&#xff0c;并在此过程中积累了丰富的实战经验。本文将结合我的开发经验&#xff0c;分享互联网医院系统源码的设计与在线问诊APP的搭建过程。 一、需求分析 在开发任何系统之前&#xff0c;首先要…...

springboot系列教程(十六):配置Actuator组件,实现系统监控

一、Actuator简介 1、监控组件作用 在生产环境中&#xff0c;需要实时或定期监控服务的可用性。Spring Boot的actuator&#xff08;健康监控&#xff09;功能提供了很多监控所需的接口&#xff0c;可以对应用系统进行配置查看、相关功能统计等。 2、监控分类 Actuator 提供…...

单臂路由组网实验,单臂路由的定义、适用情况、作用

一、定义 单臂路由是指通过在路由器的一个接口上配置许多子接口,从而实现原来相互隔离的不同VLAN之间的互通。 子接口:把路由器上的实际的物理接口划分为多个逻辑上的接口,这些被划分的逻辑接口就是子接口。 二、适用情况 用在没有三层交换机,却要实现不同VLAN之间的互…...

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello&#xff01;很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束&#xff0c;Show Time&#xff01; 1、…...

SpringBoot接入JPA连接数据库H2或MySQL例子

一&#xff0c;JPA相关的常用注解和对象 Entity&#xff0c;用于实体类声明语句之前&#xff0c;‌指出该Java类为实体类&#xff0c;‌将映射到指定的数据库表&#xff1b;Table&#xff0c;当实体类与其映射的数据库表名不同名时需要使用。‌该标注与Entity标注并列使用&…...

持续集成05--Gogs的安装与使用

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的旅程中&#xff0c;版本控制系统是不可或缺的一环。当我们在使用jenkins&#xff0c;想要达到测试脚本有更新&#xff0c;就让项目自动去进行构建&#xff0c;或者当开发脚本有更新&#xff0c;也可以自动去构建的效果…...

C++--fill

把[first,last)之间的元素填充为val。 template<class ForwardIterator, class Type> void fill( ForwardIterator first, //起始迭代器 ForwardIterator last, //结束迭代器 const Type& val //设置的值 );源码剖析 template<class ForwardIterator, c…...

Java:对比一个对象更新前后具体被修改了哪些值

Java&#xff1a;对比一个对象更新前后具体被修改了哪些值 Zyyyyu 的个人博客 遇到一个需求就是要记录每行数据被修改更新后&#xff0c;要记录下当前值和修改前的值 那有人就会说写个if去判断值是否被修改了&#xff0c;然后记录下来不就行了&#xff0c;这是一个思路&#x…...

GO——GMP 好文整理

GMP相关好文推荐&#xff1a; Golang 调度器设计思想、GMP 协程调度模型详解 Golang的协程调度器原理及GMP设计思想 Golang调度器GMP原理与调度全分析...

园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现

随着现代园区规模的不断扩大与功能的日益复杂&#xff0c;传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫&#xff0c;造成寻路上的时间浪费。园区AR导航系统以创新的技术手段&#xff0c;破解了私域地…...

市住房住房城乡建设委官方网站/重庆优化seo

softmax回归的从零开始实现 xiaoyao 动手学深度学习 tensorflow2.1.0 这一节我们来动手实现softmax回归。首先导入本节实现所需的包或模块。 import tensorflow as tf import numpy as np import sys print(tf.__version__)2.1.0获取和读取数据 使用Fashion-MNIST数据集&am…...

网络营销方案500字/漯河seo推广

Hue版本&#xff1a;hue-3.9.0-cdh5.5.4 需要编译才能使用&#xff08;联网&#xff09; 说给大家的话&#xff1a;大家电脑的配置好的话&#xff0c;一定要安装cloudera manager。毕竟是一家人的。同时&#xff0c;我也亲身经历过&#xff0c;会有部分组件版本出现问题安装起…...

wordpress英文网赚站/北京seo公司wyhseo

文章目录写在开头的话ZStack产品与解决方案介绍00. Zstack 愿景0.1 云计算在企业应用中的价值与意义0.2 企业建设云平台过程中的典型问题0.3 Zstack愿景01. 解决方案1.1 ZStack 产品图谱1.2 ZStack云平台1.3 ZStack 云平台应用场景1.4 ZStack Mini一体机1.5 ZStack Mini 适用场…...

网站收录原创文章/上海关键词推广公司

jQuery自己定义绑定 首先让我们来看看jQuery的自己定义绑定的用法&#xff0c;你能够使用bind或者live来订阅一个事件&#xff08;当然1.7以后也能够使用on了&#xff09;&#xff0c;代码例如以下&#xff1a; $("#myElement").bind(customEventName,function(e){ .…...

网站建设实施计划包括/千峰培训多少钱

首先大家先看下Struts2中的源码 472行 container.inject(explicitResult); } } } 如果resultType实现了Result接口&#xff0c;则执行 container.inject(explicitResult); 现在我们来定义一个接口&#xff08;JsonResult&#xff0…...

wordpress 站点错误/如何推广网站

题目连接&#xff1a; https://acm.bnu.edu.cn/v3/statments/jag2016.pdf 分析&#xff1a; 直接判断‘%’到‘’和最近的‘$’的距离&#xff0c;如果 ‘%’到‘’小于%’到最近的‘$’的距离则输出YES否则输出NO AC代码&#xff1a; #include <iostream> #include…...