【毕业设计】基于STM32的智能鱼缸水质实时监测与自动调控系统

基于STM32的智能鱼缸控制器:从传感器到物联网的嵌入式实战 嵌入式系统是连接物理世界与数字世界的桥梁,其核心在于通过微控制器采集传感器数据,并驱动执行器完成控制。这一技术原理广泛应用于智能家居、工业自动化等领域,其价值在于实现设备的自动化、智能化管理,从而提升效率与可靠性。在物联网应用场景中,嵌入式设备常作为感知与控制的终端节点。本文聚焦于一个具体的工程实践案例——智能鱼缸控制器,详细阐述了如何利用STM32微控制器,结合DS18B20温度传感器、光电水位传感器、浊度传感器等模块,构建一个集环境监测、自动控制和远程管理于一体的完整系统。项目涵盖了硬件选型、电路设计、 阅读详情

1. 项目背景与需求分析

养鱼看似简单,实则是个技术活。水温高了鱼会缺氧,浊度大了影响观赏性,溶解氧不足更是直接威胁鱼类生存。传统养鱼需要频繁手动检测水质,不仅麻烦还容易出错。我记得刚开始养鱼时,就因为没及时换水,一缸孔雀鱼全军覆没,心疼了好久。

这个项目就是要解决这些痛点——用STM32做主控,搭配多种传感器,实现对鱼缸水质的24小时无人值守监测。温度、浊度、溶解氧这三个核心参数一旦异常,系统会自动触发增氧或换水装置。你还可以通过手机APP远程查看数据,接收报警信息,真正实现智能养鱼。

特别适合嵌入式入门者作为毕业设计选题:硬件成本控制在200元内,软件逻辑清晰,既能展示嵌入式系统设计能力,又具备实际应用价值。我当年做类似项目时,最大的成就感不是通过了答辩,而是半年后鱼缸里的红绿灯鱼居然开始繁殖了——这说明水质稳定真的至关重要。

2. 系统架构设计

2.1 整体方案设计

先看核心架构(表2-1)。系统采用分层设计,底层传感器采集数据,中间STM32处理决策,上层执行器动作反馈。这种设计最大的好处是模块化——哪个传感器坏了就换哪个,不影响整体运行。

表2-1 系统架构分层说明

层级组成模块功能说明通信方式
感知层温度/浊度/溶解氧传感器实时采集水质参数模拟量/I2C/单总线
控制层STM32F103C8T6数据处理与决策-
执行层水泵/电磁阀/增氧机执行调控动作GPIO控制继电器
交互层OLED屏+蓝牙模块本地显示与远程通信I2C+UART

我最初尝试过用Arduino开发,发现处理多路传感器数据时容易卡顿,后来换到STM32就顺畅多了。72MHz主频完全够用,DMA功能还能实现ADC采集时不占用CPU资源。

2.2 传感器选型要点

传感器选型是项目成败的关键。温度检测用DS18B20防水款最省心,直接扔进鱼缸就行,单总线协议只需要一根数据线。记得买不锈钢外壳的,我贪便宜买过环氧树脂封装的,被乌龟咬破就短路了。

溶解氧传感器建议用荧光法的,虽然比极谱式的贵几十元,但不用频繁校准。极谱式的每隔两周就得校准一次,麻烦得很。浊度传感器选TS-300B就行,输出模拟电压信号,注意安装时要避开直接光照,否则读数会漂。

水位检测可以用简单的电阻式探针,但容易氧化。更好的方案是超声波传感器,虽然贵点但非接触测量更可靠。我曾经用电阻式探针养海水鱼,三个月后探针全被腐蚀了。

3. 硬件设计实战

3.1 核心电路设计

主控采用STM32F103C8T6最小系统板,价格不到20元。为什么选这个型号?除了性价比高,更重要的是资料丰富。当你凌晨三点调试遇到问题时,网上能搜到上百个相关案例。

电源设计要特别注意:整个系统需要5V供电,但STM32需要3.3V。建议用AMS1117-3.3稳压芯片,最大提供800mA电流,足够带动所有外设。记得在电源入口加个自恢复保险丝,我有次水泵短路导致整个系统烧毁,就是少了这个保护。

传感器接口设计要预留冗余。我习惯多引出一组I2C和ADC接口,后期想加PH传感器或TDS检测仪时直接插上就能用。PCB布局时把模拟和数字部分分开,模拟信号走线尽量短,否则ADC读数会跳变。

3.2 抗干扰设计

鱼缸环境电磁干扰很强,水泵和增氧机都是干扰源。硬件设计时要注意:

  • 所有IO口串联100Ω电阻
  • 模拟信号线并行走地线
  • 关键芯片电源引脚加0.1μF去耦电容

软件上采用数字滤波算法。比如溶解氧传感器读数波动大,可以用滑动平均滤波:

#define FILTER_DEPTH 10
uint16_t oxygen_filter(uint16_t new_value) {
    static uint16_t filter_buf[FILTER_DEPTH] = {0};
    static uint8_t filter_index = 0;
    static uint32_t filter_sum = 0;
    
    filter_sum -= filter_buf[filter_index];
    filter_buf[filter_index] = new_value;
    filter_sum += new_value;
    filter_index = (filter_index + 1) % FILTER_DEPTH;
    
    return (uint16_t)(filter_sum / FILTER_DEPTH);
}

这样处理后的数据就很平稳了,避免系统因瞬时波动误动作。

4. 软件实现详解

4.1 主程序逻辑设计

程序采用状态机模式(图4-1),这是嵌入式系统最可靠的架构。上电后先初始化各外设,然后进入主循环持续检测水质。当某个参数超标时,立即跳转到对应处理状态。

正常监测状态下,系统每5秒采集一次数据,OLED屏实时显示数值。我发现很多人喜欢用1秒的采集间隔,其实完全没必要——水质变化没那么快,频繁采集反而浪费功耗。

异常处理状态分为三级响应:溶解氧低于5mg/L启动增氧泵,浊度超标启动过滤泵,水位过低则打开电磁阀补水。每个动作执行后都会重新检测参数,直到恢复正常值。

typedef enum {
    STATE_NORMAL = 0,
    STATE_OXYGEN_LOW,
    STATE_TURBIDITY_HIGH,
    STATE_WATER_LOW
} SystemState;

void main_loop() {
    while(1) {
        switch(current_state) {
            case STATE_NORMAL:
                monitor_parameters();
                break;
            case STATE_OXYGEN_LOW:
                run_oxygen_pump();
                break;
            // 其他状态处理
        }
        delay_ms(100);
    }
}

4.2 传感器驱动开发

DS18B20温度传感器的驱动最麻烦,时序要求严格。写驱动程序时要注意:

float read_temperature() {
    if(ds18b20_init() != 0) return -1;
    
    ds18b20_write_byte(0xCC); // 跳过ROM
    ds18b20_write_byte(0x44); // 启动转换
    delay_ms(750);            // 等待转换完成
    
    ds18b20_init();
    ds18b20_write_byte(0xCC);
    ds18b20_write_byte(0xBE); // 读取寄存器
    
    uint8_t temp_l = ds18b20_read_byte();
    uint8_t temp_h = ds18b20_read_byte();
    
    int16_t temp_raw = (temp_h << 8) | temp_l;
    return temp_raw * 0.0625; // 转换为摄氏度
}

浊度传感器就简单多了,直接读取ADC值:

uint16_t read_turbidity() {
    uint16_t adc_value = adc_read(ADC_CHANNEL_3);
    // 将ADC值转换为NTU浊度单位
    return (uint16_t)(adc_value * 0.1234);
}

溶解氧传感器需要温度补偿,计算公式稍微复杂些:

float read_oxygen(float temperature) {
    uint16_t adc_value = adc_read(ADC_CHANNEL_1);
    float voltage = adc_value * 3.3 / 4096.0;
    
    // 温度补偿公式,不同传感器系数不同
    float oxygen = voltage * 10.0 + (temperature - 25) * 0.2;
    return oxygen > 0 ? oxygen : 0;
}

5. 手机APP远程监控

5.1 蓝牙通信实现

用HC-06蓝牙模块实现手机连接,成本才10元左右。STM32通过串口发送数据:

void bluetooth_send_data(float temp, float oxygen, uint16_t turbidity) {
    char buffer[64];
    sprintf(buffer, "T:%.1f,O:%.1f,TU:%d\n", temp, oxygen, turbidity);
    uart_send_string(USART2, buffer);
}

手机端可以用MIT App Inventor快速开发APP,拖拽组件就能做出监控界面(图5-1)。显示实时数据曲线,设置报警阈值,收到异常报警时推送通知。

数据包格式设计很重要,我建议用JSON格式虽然STM32处理起来麻烦点,但手机端解析方便。最简单的格式是:

{"t":25.6,"o":6.8,"tu":12}

5.2 低功耗优化

系统要长期运行,功耗必须优化。我的经验是:

  • 采集间隔从1秒增加到5秒,功耗降低60%
  • OLED屏设置15秒后自动关闭
  • 蓝牙模块只在发送数据时使能

这样改造后,整个系统待机功耗不到0.5W,相当于普通鱼缸灯的十分之一。

6. 调试与优化经验

6.1 常见问题解决

传感器读数不准是最常见的问题。溶解氧传感器需要预热30分钟才能稳定,很多人刚上电就校准当然不准。校准方法很简单:把探头完全晾干时调节零点,放入饱和氧溶液中调节满量程。

电磁阀控制要加续流二极管,否则继电器通断时产生的感应电动势会损坏IO口。我就烧过一块STM32,后来在每个继电器线圈两端都反向并联了1N4007二极管。

电源干扰表现为ADC读数跳动。解决方法是在传感器电源端加π型滤波电路:10μF电解电容并联0.1μF瓷片电容,再串个10Ω电阻。

6.2 系统稳定性提升

要保证系统长期稳定运行,必须加入看门狗。STM32有硬件看门狗,初始化后每隔一段时间喂狗:

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(IWDG_Prescaler_256); // 40kHz/256=156Hz
IWDG_SetReload(0xFFF);                 // 约26秒
IWDG_ReloadCounter();
IWDG_Enable();

在主循环中定期喂狗:

while(1) {
    // 业务逻辑
    IWDG_ReloadCounter();
    delay_ms(100);
}

这样即使程序跑飞,26秒后也会自动复位。我还增加了数据异常判断:如果连续多次读数突变过大,就自动重启相关传感器。

7. 效果展示与改进方向

实际测试中,系统成功将鱼缸溶解氧维持在5mg/L以上,浊度控制在10NTU以内。当投入过量鱼食模拟污染时,系统在2分钟内启动过滤泵,10分钟后水质恢复正常。

成本核算:STM32核心板20元,传感器总计80元,执行器40元,其他零件30元,总成本170元。相比市售的智能鱼缸动辄上千元,这个方案极具性价比。

可以改进的地方还有很多:增加PH传感器监测酸碱度,加入TDS检测仪监测矿物质含量,甚至可以通过图像识别检测鱼类活动状态。我还想过加入自动喂食功能,但担心机械结构不可靠反而饿死了鱼。

最实用的改进是增加SD卡存储,记录长时间的水质变化趋势。这样就能分析出什么时候水质容易变差,提前采取预防措施。养鱼高手告诉我,看水质曲线比看实时数据更有用。

基于STM32的智能水质监测系统设计论文 基于STM32的智能水质监测系统设计论文基于STM32的智能水质监测系统设计论文基于STM32的智能水质监测系统设计论文基于STM32的智能水质监测系统设计论文基于STM32的智能水质监测系统设计论文 立即下载

相关推荐

基于STM32的智能水质检测系统的设计.pdf

基于STM32的智能水质检测系统的设计.pdf

【毕业设计】8-基于STM32的水质_浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)

本次系统主要有硬件和软件两个部分组成。硬件部分由STM32单片机最小系统单元,温度检测电路单元,水质检测单元报警单元,人机交互单元,电源单元,液晶显示器单元组成,在设计上硬件需要考虑到系统的稳定性以及可靠性。软件部分通过对系统软件总流程图绘制,并绘制各个子控制驱动再对驱动程序编写完成系统程序的设计。在硬件与软件的设计上选择按照功能性分区设计,使设计有条理运行可靠。系统设计制作实物调试完成。后完成了温度检测和水浊度检测,并可以调节阈值实现对系统的报警自定义设置防止误报。

transducer_1的博客 6461

基于STM32的水质监测系统(水质油度、PH检测、TDS)proteus+keil5

以STM32F103为控制核心,设计一种水质检测系统,具有水质油度、PH检测、TDS检测功能,并将这些参数显示在LCD1602上。系统利用水质油度、PH检测、TDS传感器采集水质参数信号,通过液晶屏进行显示,当参数超出正常值范围时报警灯开启。整个系统包括各传感器模块、报警灯、参数显示模块。

基于STM32的水质在线监测系统(论文+源码)

本次水质在线监测系统选用STM32单片机作为整个系统的主控制器,整个系统集成了温度传感器、浊度传感器、PH传感器,用于对环境内部的水温、水质、水资源的PH值来进行实际数据的检测工作,

2541

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 420

NV 英伟达2022数字芯片笔试题

作者:数字IC打工人 链接:【开卷】第27期 NV 英伟达2022数字芯片笔试题_笔经面经_牛客网 来源:牛客网 1、Single Choice: Given thefollowing FIFO and rules, how deep does the FIFO need to be to preventunderflow or overflow? RULES: clk_A=25MHz; clk_B=100MHz; en_B is periodically asserted: period.

weixin_44072819的博客 6396

基于STM32的智能水质监测系统设计-毕业设计

同时,水资检测是保护水资源的重要手段之一,对人们的身体健康有着良好的保障,对国家的发展有着重要意义。本设计以 STM32 为核心,外接液晶显示模块、PH 传感器、浑浊度传感器、WIFI模块实现检测水质 PH 值和浑浊度,STM32 单片机通过 PH 传感器以及浑浊度传感器获取电压信号,然后单片机获取信号再将具体数据计算结果,将结果通过程序显示在 LCD1602,同时单片机利用 WIFI 模块发送水质的 PH 值和浑浊度数据,手机应用获取到具体数据并显示出来,具体程序流程图如图 4.1。

m0_73485055的博客 2万+

运放相位补偿的180°秘密:为什么你的电路在阶跃信号下会抽风?

本文深入探讨了运放电路在阶跃信号下产生振荡的根本原因——相位裕度不足,并揭示了相位补偿技术的核心秘密。通过分析稳态与瞬态响应的差异,结合反馈电路设计中的实际案例,详细讲解了滞后补偿、超前补偿等方法的原理与应用,帮助工程师精准解决电路“抽风”问题,确保系统动态稳定性。

xxx12的博客 642

【计算机毕业设计单片机案例】基于 STM32 或 51 单片机的 WiFi 通信鱼缸智能管控系统设计与实现 基于 STM32 或 51 单片机的鱼缸定时作业与水质异常处理系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

16

告别专业软件!用QGIS+GDAL免费搞定S-57电子海图,附全套符号库和样式文件

本文详细介绍了如何利用免费开源工具QGIS和GDAL处理S-57电子海图,包括数据转换、符号库配置和专业可视化方案。通过实战指南,用户无需依赖昂贵的商业软件,即可实现从S-57到SHP的转换及专业级海图制作,特别适合预算有限的个人和小型机构。

weixin_33701294的博客 391

适航文章汇总:知识体系全面梳理

无论您是行业新手还是经验丰富的专业人士,都可以通过本篇文章快速查找相关资料,提高对适航认证、机载系统、软件及硬件等领域的理解。本部分详细解析ARP 4754A、ARP 4761、DO-178C、DO-254等核心标准,并介绍其在机载系统开发中的应用。介绍FAA、EASA、CCAR等主要航空管理机构的适航规章体系,并说明各类飞行器(如固定翼、旋翼机、无人机等)的适航要求。本部分还探讨硬件设计、验证与确认过程中的挑战。从系统架构设计到机载设备的集成与管理,本部分介绍机载系统的研发体系及适航管理的最佳实践。

qq_41854911的博客 1454

【单片机毕业设计推荐】基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统设计 基于 STM32 或 51 单片机的水族箱多参数监测与远程控制平台设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

bishe7_is_vx的博客 379

打开 AI 投研新时代 —— 深度解析 GitHub 高星项目 daily_stock_analysis

GitHub热门开源项目"daily_stock_analysis"是一款AI驱动的智能股票分析工具,能自动抓取行情数据、分析新闻语义并生成结构化报告。该项目采用Python开发,通过GitHub Actions实现全自动运行,支持邮件、企业微信等多渠道推送。核心功能包括AI决策仪表盘、多数据源整合和零成本部署方案,特别适合需要自动化投研辅助的个人投资者。项目强调其仅为分析工具而非投资建议,提醒用户注意AI模型的潜在误差。该工具通过智能化处理重复工作,帮助投资者提升决策效率,成为量化投资

陈奕昆的博客 1530

基于物联网的鱼缸自动化生态监测与管理系统设计与实现(源码+电路图+硬件实物+论文)~电子信息单片机物联网专业毕业设计毕设论文选题题目项目程序源码开发仿真实物定制定做代做

本文设计了一种基于物联网的鱼缸自动化生态监测系统,采用STM32C8T6作为主控芯片,集成DS18B20温度传感器、TDS浑浊度传感器、光敏电阻等多种传感模块。系统能实时监测水温、水质和光照等参数,通过加热棒、水泵、LED补光等执行机构自动调控鱼缸环境。采用LCD1602显示屏显示实时数据,配备按键设置阈值参数,异常时触发蜂鸣器报警。通过HC-05蓝牙模块实现手机远程监控,构建了完整的鱼缸生态自动化管理系统。

15年开发经验,擅长 管理系统/网站/app/小程序等,单片机/物联网/机械/土木等 411

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2270

【Unity大规模RTS/攻城战框架】Large Scale Combat System - RTS Sieges深度解析

本文介绍了Unity专业级大规模RTS战斗框架Large Scale Combat System(LSCS)。该系统通过Job System+Burst技术解决了万人级单位的性能问题,提供完整的RTS操作体系、动态阵型系统、战术AI和攻城战功能。其亮点包括可破坏城门、行走城墙、战术AI配置系统,支持URP渲染管线,适用于Total War风格的大规模兵团对战项目。LSCS不仅提供核心战斗系统,还包含UI、小地图等配套模块,是Unity中少有的专业级RTS解决方案,特别适合需要深度战术玩法和大规模战斗的开发者

2403_88403568的博客 1336

单片机计算机毕设之基于 STM32 或 51 单片机的水族箱手动自动双模式智能控制系统设计 基于 STM32 或 51 单片机的鱼缸定时增氧与水质监测系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

18

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

单片机毕设选题推荐:基于 STM32 或 51 单片机的鱼缸光照补偿与恒温控制系统设计 基于 STM32 或 51 单片机的多传感器融合鱼缸自动运维系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

项目帮 11

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【单片机毕设案例分享】基于 STM32 或 51 单片机的智能水族设备手机端监控系统设计 基于 STM32 或 51 单片机的鱼缸水位补水与排水控制系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

QQ_2876970413的博客 10

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机单片机毕设实战-基于 STM32 或 51 单片机的多传感器鱼缸智能养护装置设计与实现 基于 STM32 或 51 单片机的水质水位监测及自动换水增氧系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

项目帮 13

【单片机毕业设计】基于 STM32 或 51 单片机的鱼缸环境感知与声光告警系统设计 基于 STM32 或 51 单片机的 WiFi 远程智能水族管理系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

程序猿的博客 13

【单片机课程设计/毕业设计】基于 STM32 或 51 单片机的鱼缸定时投喂与环境参数调控系统设计 基于 STM32 或 51 单片机的水族箱浑浊度检测与自动维护系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

15

单片机毕设项目:基于 STM32 或 51 单片机的多传感器融合鱼缸自动运维系统设计 基于 STM32 或 51 单片机的水族箱手动自动双模式智能控制系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

2501_91703032的博客 142

单片机毕业设计-基于 STM32 或 51 单片机的鱼缸自动投喂换水恒温控制系统设计 基于 STM32 或 51 单片机的水族环境智能监测与手机 APP 控制系统设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

我的个人博客:https://bishe666.top 103

【单片机课设毕设项目】基于 STM32 或 51 单片机的水族环境采集与自动养护装置设计 基于 STM32 或 51 单片机的鱼缸多维度环境监测智能终端设计(025208)

针对传统水族箱人工养护繁琐、环境参数监测滞后、缺少自动化运维手段的问题,本文设计一套基于 STM32 或 51 单片机的智能鱼缸监控与自动养护系统。系统集成 DS18B20 温度传感器、水位传感器、TSW-30 浑浊度传感器、光敏电阻采集水体与环境信息,搭载 DS1302 时钟芯片实现定时任务调度,利用舵机、水泵、PTC 加热片、增氧泵、补光灯完成投喂、换水、恒温、增氧、补光等操作。

103
上一篇: ROS2实战:两种方法集成自定义.so外部链接库
下一篇: 智能电视救砖实战:从硬件线材制作到软件镜像恢复的全流程指南
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值