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);	//数据上传至机智云					}
}

六、实验效果 

七、资料内容

项目分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 54 之 继承中同名的静态成员处理

#include <iostream> using namespace std;// 父类 class Base07{ public:static int m_a; // 静态成员&#xff0c;类内定义static void fun(){cout << "Base中的fun"<< endl;}static void fun(int a){cout << "Base中的fun(int a)&qu…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)时间序列预测,python预测全家桶...

截止到本期&#xff0c;一共发了8篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

旅行商问题要点和难点以及具体应用案例

旅行商问题(Travelling Salesman Problem, TSP)是一个经典的组合优化问题,涉及给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。这个问题在运筹学和理论计算机科学中非常重要,并且在多个领域有实际应用,如交通运输、电路板线路设计…

【MySQL】索引(上)

https://www.wolai.com/curry00/fzTPy3kSsMDEgEcdvo4G5w https://www.bilibili.com/video/BV1Kr4y1i7ru/?p69 https://jimhackking.github.io/%E8%BF%90%E7%BB%B4/MySQL%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E7%B4%A2%E5%BC%95 索引是一种用于快速查询和检索数据的数据结构…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化)

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

深入解析数据结构之B树:平衡树中的王者

在计算机科学中&#xff0c;数据结构是算法和程序设计的基础。而在众多数据结构中&#xff0c;B树作为一种平衡树&#xff0c;在数据库和文件系统中有着广泛应用。本文将详细介绍B树的概念、特点、操作、优缺点及其应用场景&#xff0c;帮助读者深入理解这一重要的数据结构。 …

linux笔记8--安装软件

文章目录 1. PMS和软件安装的介绍2. 安装、更新、卸载安装更新ubuntu20.04更新镜像源&#xff1a; 卸载 3. 其他发行版4. 安装第三方软件5. 推荐 1. PMS和软件安装的介绍 PMS(package management system的简称)&#xff1a;包管理系统 作用&#xff1a;方便用户进行软件安装(也…

窗口信息保存

读取 QSettings settings("MyOrganization", "MyApp"); QString savedText settings.value("lineEditText", "").toString(); _ui->lineEdit->setText(savedText); 写入 QSettings settings("MyOrganiz…

[leetcode 141环形链表]双指针解决环形链表

Problem: 141. 环形链表 文章目录 思路Code 思路 首先想到如果链表为空直接返回false 其次想到用双指针,一个一回走一步,另一个一回走两步 如果是环形,总有一个时刻,两指针会指向同一个节点,而且该结点不能为空(空是快指针遍历完单链表了) Code /*** Definition for singly-li…

【深度学习】解析Vision Transformer (ViT): 从基础到实现与训练

之前介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132061304 文章目录 背景实现代码示例解释 训练数据准备模型定义训练和评估总结 Vision Transformer&#xff08;ViT&#xff09;是一种基于transformer架构的视觉模型&#xff0c;它最初是由谷歌研究…

blender bpy将顶点颜色转换为UV纹理vertex color to texture

一、关于环境 安装blender的bpy&#xff0c;不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…

【车载开发系列】汽车嵌入式开发常用工具介绍

【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍一. ChipON IDE For KungFu32二. ChipON PRO KF32三. GIT四. JLink五. S32DS六. parasoft ctest七. TCANLINPro八. vector Canoe 一. Chip…

【Python入门与进阶】综合练习题:学生成绩管理系统

综合练习题&#xff1a;学生成绩管理系统 题目描述&#xff1a; 请你设计一个简单的学生成绩管理系统&#xff0c;要求能够进行以下操作&#xff1a; 添加学生信息&#xff08;包括姓名和学号&#xff09;添加学生的成绩&#xff08;包括科目和成绩&#xff09;查询学生的平…

BerkeleyDB练习

代码; #include <db.h> #include <stdio.h>int main() {DB *dbp;db_create(&dbp, NULL, 0);printf("Berkeley DB version: %s\n", db_version(NULL, NULL, NULL));dbp->close(dbp, 0);return 0; } 编译运行

4-异常-log4j配置日志滚动覆盖出现日志丢失问题

4-异常-log4j配置日志打印滚动覆盖出现日志丢失问题(附源码分析) 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯技术文&…

Java学习 - MySQL数据库中 变量 和 流程控制 实例

变量 变量分类 系统变量 全局变量&#xff1a;对于服务器所有的连接有效会话变量&#xff1a;只在当前连接有效 自定义变量 用户变量&#xff1a;只在当前连接有效局部变量&#xff1a;仅在 BEGIN-END 中有效 系统变量 查看所有的系统变量 SHOW GLOBAL|SESSION VARIABLES;查…

决策树算法介绍 - 原理与案例实现

引言 决策树是一种重要的机器学习算法&#xff0c;广泛应用于分类和回归任务中。它的直观性和易解释性使其成为许多实际应用中的首选算法。本文将详细介绍决策树算法的基本原理、构建过程&#xff0c;并通过一个具体的案例实现&#xff0c;帮助读者全面理解这一算法。 决策树…

C#应用程序与数据库的集成几种方法

前言 应用程序集成数据库是许多软件项目的关键方面。无论构建的是Web应用程序、桌面应用程序还是移动应用程序&#xff0c;高效无缝地与数据库集成&#xff0c;对于存储、检索和操作数据都至关重要。本文将介绍数据库与C#应用程序集成的几种方法与使用注意事项。 数据库 开发…

LeetCode热题3.无重复的最长字串

前言: 经过前序的一系列数据结构和算法学习后&#xff0c;开始用leetCode热题练练手。 . - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为…