STM32项目分享:智慧农业(机智云)系统

2024-06-16 07:52

本文主要是介绍STM32项目分享:智慧农业(机智云)系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1Rw4m117jv/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

STM32基于机智云的智能温室大棚系统。功能如下:

  1. 温湿度采集:使用DHT11温湿度传感器采集环境温湿度
  2. 土壤湿度采集:通过土壤湿度模块采集土壤湿度
  3. 光照强度采集:通过光敏电阻采集环境光照强度
  4. 二氧化碳浓度采集:通过CO2气敏传感器检测二氧化碳浓度
  5. 土壤温度采集:通过DS18B20传感器采集土壤温度
  6. 风扇控制:可自动模式下根据环境温度触发或手动模式下APP开闭
  7. 水泵控制:可自动模式下根据土壤湿度触发或手动模式下APP开闭
  8. LED照明灯控制:可自动模式下根据环境光强触发或手动模式下按键开闭
  9. 通风口:通过步进电机模拟通风口
  10. OLED显示:将检测到的环境数据显示在oled屏幕上。
  11. 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
  12. APP功能:使用机智云APP,包括功能有控制并显示风扇、水泵、通风口和补光灯状态,选择工作模式为手动或自动模式,显示当前环境温湿度、土壤温湿度以及光照强度和二氧化碳浓度信息

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(4针I2C协议)
  • WiFi模块(ESP8266-01s)
  • 土壤湿度传感器
  • 二氧化碳传感器
  • DS18B20温度传感器
  • 28BYJ51步进电机
  • 5V风扇模块
  • 5V水泵模块
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

int main(void)
{ADCX_Init();Timer2_Init(9,14398);Uart2_Init(9600);Uart1_Init(115200);Uart3_Init();IWDG_Init();	//初始化看门狗LDR_Init();YL69_Init();OLED_Init();DHT11_Init();LED_Init();Buzzer_Init();Relay_Init();MOTOR_Init();Key_Init();Sensorthreshold.CO2Value = FLASH_R(FLASH_START_ADDR);	//从指定页的地址读FLASHSensorthreshold.luxValue = FLASH_R(FLASH_START_ADDR+2);	//从指定页的地址读FLASHSensorthreshold.tempValue = FLASH_R(FLASH_START_ADDR+4);	//从指定页的地址读FLASHSensorthreshold.humiValue = FLASH_R(FLASH_START_ADDR+6);	//从指定页的地址读FLASHSensorthreshold.soilTempValue = FLASH_R(FLASH_START_ADDR+8);	//从指定页的地址读FLASHSensorthreshold.soilHumiValue = FLASH_R(FLASH_START_ADDR+10);	//从指定页的地址读FLASHGENERAL_TIM_Init();userInit();		//完成机智云初始赋值gizwitsInit();	//开辟一个环形缓冲区while (1){IWDG_ReloadCounter(); //重新加载计数值 喂狗SensorScan();	//获取传感器数据switch (menu){case display_page1:SensorDataDisplay1();	//显示传感器1数据OLED_Menu1();	//显示主页面1固定信息if (KeyNum == KEY_2)	//是否按下按键2{KeyNum = 0;OLED_Clear();	//清屏menu = display_page2;	//menu = 主页面2}MotorOperation();break;case display_page2:		SensorDataDisplay2();	//显示传感器2数据		OLED_Menu2();	//显示主页面2固定信息if (KeyNum == KEY_2)	//是否按下按键2{KeyNum = 0;OLED_Clear();	//清屏menu = display_page1;	//menu = 主页面1}MotorOperation();break;case settingsPage://从主页面跳转至设置页面时进行一次清屏if (OLED_Clear_Flag){OLED_Clear_Flag = 0;	//清除清屏标志位OLED_Clear();	//清屏}ThresholdModification(SetSelection());	//调节传感器阈值OLED_Option(SetSelection());	//获取按键次数,从而判断“>”显示位置//按键次数小于等于4时,显示设置页面1if (SetSelection() <= 4)		{settingsThresholdDisplay1();	//显示传感器阈值1数据	OLED_settingsPage1();	//显示阈值设置界面1固定信息}else	//否则显示设置页面2{settingsThresholdDisplay2();	//显示传感器阈值2数据	OLED_settingsPage2();	//显示阈值设置界面2固定信息}if (KeyNum == KEY_2)	//判断用户是否按下退出按键{KeyNum = 0;OLED_Clear();	//清屏menu = display_page1;	//回到主页面1//存储修改的传感器阈值至flash内FLASH_W(FLASH_START_ADDR, Sensorthreshold.CO2Value, Sensorthreshold.luxValue,Sensorthreshold.tempValue, Sensorthreshold.humiValue,Sensorthreshold.soilTempValue, Sensorthreshold.soilHumiValue);}break;default: break;}userHandle();	//更新机智云数据点变量存储的值gizwitsHandle((dataPoint_t *)&currentDataPoint);	//数据上传至机智云					}
}

六、实验效果 

七、资料内容

项目分享

这篇关于STM32项目分享:智慧农业(机智云)系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065878

相关文章

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于