【单片机毕业设计选题24018】-基于STM32和阿里云的农业大棚系统
系统功能:
系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值
自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补
光,水位过低后自动开启水泵补水。手动模式下可以手动控制加热/除湿/补光/补水。

主要功能模块原理图:

传感器采集:

系统主要功能模块代码
初始化代码:
/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init */InitVar();/* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_ADC1_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 *///在HAL库初始化串口1后调用HAL_Delay(100);SetUart1RxToInput();HAL_Delay(50);//uart1打开接收中断HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);//uart2打开接收中断HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);InitOled();InitOledDisp();ResetDHT11();//初始化ESP8266ESP8266_Init(); /* USER CODE END 2 */
ESP8266接入阿里云代码:
//硬件复位ESP8266HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_RESET);HAL_Delay(250);HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_SET);HAL_Delay(500);//关闭板载LEDHAL_GPIO_WritePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin, GPIO_PIN_SET);ESP8266_Clear();//测试AT指令printf("AT Testing\r\n");while(ESP8266_SendCmd("AT\r\n", "OK", 200)){HAL_Delay(1000);}HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin); HAL_Delay(500);//设置为Station printf("set CWMODE\r\n");while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 200)){HAL_Delay(1000);}HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin); HAL_Delay(500);//上电不自动连接APprintf("set CWAUTOCONN\r\n");while(ESP8266_SendCmd("AT+CWAUTOCONN=0\r\n", "OK", 200)){HAL_Delay(1000);}HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin); HAL_Delay(500);//关闭回显printf("set ATE0\r\n");while(ESP8266_SendCmd("ATE0\r\n", "OK", 200)){HAL_Delay(1000);}HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin); HAL_Delay(500);//配置WIFIprintf("set Wifi\r\n");while(ESP8266_SendCmd("AT+CWJAP=\""WIFI_SSID"\",\""WIFI_PASSWD"\"\r\n", "OK", 500)){HAL_Delay(1000);} HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);HAL_Delay(500);//MQTT USER CONFIGprintf("mqtt config\r\n");while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,\""MQTT_CLIENT_ID"\",\""MQTT_USER_NAME"\",\""MQTT_PASSWD"\",0,0,\"\"\r\n", "OK", 500)){HAL_Delay(1000);} HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);HAL_Delay(1000);//MQTT连接服务器printf("mqtt broker\r\n");while(ESP8266_SendCmd("AT+MQTTCONN=0,\""BROKER_ASDDRESS"\",1883,0\r\n", "OK", 500)){HAL_Delay(1000);} HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);HAL_Delay(500);
读传感器数据:
//读传感器值,AD值void ReadSensorVal(void){getTempVal = DHT11_Data.temp_int;getHumiVal = DHT11_Data.humi_int;getLightVal = ReadADCChannel(ADC_CHANNEL_0);getWaterVal = ReadADCChannel(ADC_CHANNEL_4);//系统模式为自动模式if(sysMode==AUTO_MODE){//获取到的温度小于设定温度则开启加热 if(getTempVal<setTempVal){heatState = true;HEAT_ON();}else{heatState = false;HEAT_OFF();}//获取到的湿度大于设定湿度则开启通风 if(getHumiVal>setHumiVal){fanState = true;FAN_ON();}else{fanState = false;FAN_OFF();} //获取到的光照值大于设定光照值则开启补光 if(getLightVal>setLightVal){lightState = true;LED_ON();}else{lightState = false;LED_OFF();} //获取到的水位值大于设定水位值则开启水泵if(getWaterVal>setWaterVal){pumpState = true;PUMP_ON();}else{pumpState = false;PUMP_OFF();} } }
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。


资料获取地址
相关文章:
【单片机毕业设计选题24018】-基于STM32和阿里云的农业大棚系统
系统功能: 系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值 自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补 光,水位过低后自动开启水泵…...
【计算机毕业设计】206校园顺路代送微信小程序
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...
9、PHP 实现调整数组顺序使奇数位于偶数前面
题目: 调整数组顺序使奇数位于偶数前面 描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数ÿ…...
iOS开发工具-网络封包分析工具Charles
一、Charles简介 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求…...
7、PHP 实现矩形覆盖
题目: 矩形覆盖 描述: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? <?php function rectCover($number) {$prePreNum 1;$preNum 2;$temp 0;i…...
鸿蒙开发通信与连接:【@ohos.wifiext (WLAN)】
WLAN 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 该文档中的接口只供非通用类型产品使用,如路由器等,对于常规类型产品,不应该使用这些接口。 导入模块 …...
Ps:脚本事件管理器
Ps菜单:文件/脚本/脚本事件管理器 Scripts/Script Events Manager 脚本事件管理器 Script Events Manager允许用户将特定的事件(如打开、存储或导出文件)与 JavaScript 脚本或 Photoshop 动作关联起来,以便在这些事件发生时自动触…...
redis哨兵模式下业务代码连接实现
目录 一:背景 二:实现过程 三:总结 一:背景 在哨兵模式下,真实的redis服务地址由一个固定ip转变为可以变化的ip,这样我们业务代码在连接redis的时候,就需要判断哪个主redis服务地址,哪个是从…...
Java中将文件转换为Base64编码的字节码
在Java中,将文件转换为Base64编码的字节码通常涉及以下步骤: 读取文件内容到字节数组。使用java.util.Base64类对字节数组进行编码。 下面是一个简单的Java示例代码,演示如何实现这个过程: import java.io.File; import java.io…...
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:初步了解 二叉搜索树 🌹🌹期待您的关注 🌹🌹 ❀map与set 📒1.…...
cd 命令特殊路径符 mkdir命令
cd 特殊路径符 cd . 表示当前目录,比如 cd ./Desktop表示切换到当前目录下的Desktop目录内,和 cd Desktop效果一致。cd … 表示上一级目录,比如 cd … 即可切换到上一级目录,cd…/…切换到上二级目录。cd ~ 表示 HOME 目录&#…...
Mongodb UPDATE, 使用$position指定向数组中插入新元素的位置
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第72篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…...
【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08
【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据 1. Kafka Broker 工作流程1.1 Zookeeper 存储的 Kafka 信息1.2 Kafka Broker总体工作流程1.2.1 Controller介绍 1.3 Broker 重要参数 2. 节点服役与退役3. Kafka副本 1. Kafka Broker 工作流程 …...
如何恢复未格式化分区数据?看这里!
什么是未格式化分区? 未格式化或RAW文件系统的分区无法被Windows操作系统识别和挂载,因此,Windows会提示你进行格式化以创建新的文件系统。注意,不要进行格式化。通常,文件系统变为未格式化或RAW会出现以下常见错误消…...
通过“BOSS”精通比特币,深入认识私钥、账户和钱包
来源:币界原创 作者:636Marx 无论当今数字货币技术如何发展,认识区块链技术幕后的关键机制至关重要。无论您是新手还是经验丰富的数字货币从业者,掌握钱包地址、公钥和私钥的复杂性都有无可替代重要性。进入 BOSS Wallet,这是一款尖端的 Web…...
进程与线程的区别
进程(Process) 1:进程是操作系统分配资源的基本单位 2:每个进程都有自己独立的虚拟地址空间,虚拟地址空间映射真实物理地址 3:进程之间相互隔离,某一个进程的崩溃不会影响到其它进程 4&…...
【AI基础】第五步:纯天然保姆喂饭级-安装并运行chatglm3-6b
类似于 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b,有一些细节不一样。 此系列文章列表: 【AI基础】概览 【AI基础】第一步:安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步:安装…...
【学习笔记】Elastic-Job和Quartz 实现企业级定时任务
Elastic-Job和Quartz 实现企业级定时任务 知识拆解框架整合Java高级玩法定时任务案例 第1章 课程介绍 课程的总体介绍,定时任务的应用场景和发展趋势,以及分布式走时任务的介绍 1-1、导学 1-2、为什么学习定时任务 1-3、定时任务技术发展趋势 1-4、主…...
舒适佩戴,享受沉浸式音乐体验,西圣AVA2耳机体验
平时不管是听音乐,还是打电话,戴上一副耳机都可以让我们获得更好的隐私性,并且在公共场所,比如办公室、车厢里,也可以获得属于自己的空间。现在市面上耳机的选择非常多,音质、续航和佩戴的舒适度是我们选择…...
c++学习-----内存管理
1. C/C内存分布 我们先来看下面的一段代码和相关问题 答案揭晓: 这里很多人会误认为*char2在常量区,这其实是错误的 因为: 首先在内存字符常量区分配一块内存空间放下”abcd\0”,然后在栈中分配一块连续的内存空间,…...
如何从零开始使用Logisim-Evolution?数字逻辑电路设计全流程指南
如何从零开始使用Logisim-Evolution?数字逻辑电路设计全流程指南 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution Logisim-Evolution是一款免费开源的数字逻辑…...
Generalized Mask-aware IoU for Anchor Assignment for Real-time Instance Segmentation—面向实时实例分割的锚点分配方法
《广义掩膜感知IoU:面向实时实例分割的锚点分配方法》主要研究并解决实时实例分割任务中锚点分配不准确的问题。其核心创新在于提出了一种新的度量标准——广义掩膜感知交并比,并将其应用于锚点的正负样本分配,从而显著提升了模型的性能与效率…...
Hunyuan-MT-7B真实案例集:电商商品描述多语言生成效果
Hunyuan-MT-7B真实案例集:电商商品描述多语言生成效果 1. 引言:当电商遇上多语言翻译 想象一下这个场景:你是一家跨境电商公司的运营,手头有一款新品的英文描述,需要快速翻译成法语、西班牙语、德语、日语等十几种语…...
HRNet代码逐行解析:从BasicBlock到HighResolutionNet,手把手教你读懂多分辨率融合
HRNet代码深度解析:从基础模块到多分辨率融合实战 在计算机视觉领域,HRNet(High-Resolution Network)因其独特的并行多分辨率架构而备受关注。与传统的串行降采样网络不同,HRNet在整个前向传播过程中始终保持高分辨率表…...
从理论到拟合:如何让ADS差分线前仿真结果更贴近实际PCB?我的经验复盘
从理论到拟合:如何让ADS差分线前仿真结果更贴近实际PCB?我的经验复盘 在高速数字电路设计中,差分传输线的信号完整性仿真一直是工程师面临的挑战。许多团队投入大量时间进行前仿真,却发现仿真结果与实测数据存在显著差异。这种差距…...
为什么你的FastAPI AI接口在K8s里流式失败?——基于eBPF追踪的12层网络栈+ASGI生命周期时序图(含cgroup内存隔离失效证据)
第一章:FastAPI 2.0 异步 AI 流式响应对比评测报告FastAPI 2.0 原生强化了对 async/await 的深度支持,尤其在处理大语言模型(LLM)的逐 token 流式生成场景中,显著提升了吞吐量与首字节延迟(TTFB)…...
圣女司幼幽-造相Z-Turbo多模态生成:从文本到视频脚本的连贯创作
圣女司幼幽-造相Z-Turbo多模态生成:从文本到视频脚本的连贯创作 最近在尝试一些新的内容创作工具,发现了一个挺有意思的现象:很多工具要么只能做图,要么只能写文案,想把它们串起来做个完整的视频,中间总得…...
OrangePi 镜像烧录全攻略:从工具选择到实战避坑
1. 烧录工具选择与对比 第一次接触OrangePi开发板时,最让我头疼的就是镜像烧录工具的选择。市面上工具五花八门,每个教程推荐的软件都不一样。经过多次实测,我总结出三款最靠谱的烧录工具,它们各有特点: Win32DiskImag…...
Qwen3-TTS-12Hz-1.7B-CustomVoice惊艳效果:葡萄牙语足球解说+俄语天气预报语音集
Qwen3-TTS-12Hz-1.7B-CustomVoice惊艳效果:葡萄牙语足球解说俄语天气预报语音集 1. 多语言语音合成的突破性进展 语音合成技术正在经历一场革命性的变革,而Qwen3-TTS-12Hz-1.7B-CustomVoice无疑是这场变革中的佼佼者。这个模型不仅在技术架构上实现了重…...
OFA-Image-Caption赋能Android应用:移动端图像智能描述实战
OFA-Image-Caption赋能Android应用:移动端图像智能描述实战 你有没有想过,手机拍下一张照片,它就能立刻告诉你照片里有什么?对于视障朋友来说,这不仅仅是便利,更是打开世界的一扇窗。而对于内容平台&#…...
