家用养花滴灌系统基于单片机stm32的远
2025年02月18日 热点资讯
基于stm32的远程智控制浇花灌溉系统
难度系数:3分工作量:3分创新点:4分1 简介通过wifi模块,结合云服务,实现远程控制浇花。这对于经常需要出差,但有偏爱花草的人来说,比较便利。
2 主要器件STM32RBT6WiFi模块温湿度传感器电机驱动3 实现效果
4 设计原理系统框架
实现原理
本系统硬件主要部件由STM32单片机,WiFi模块,传感器,电机驱动四部分组成。
其中STM32是整套系统的主控制器,负责整个系统的工作。
WiFi模块内部烧录好能够连接云端的SDK,这样能够保证系统正常的连接到云端,顺利的将数据上传到云,并且WiFi模块能够接受远程设备推送来的消息,然后将其传给STM32,从而使整套系统可以与云端对话。
传感器是本套系统的触觉系统,能够感知花瓶土壤表面的温湿度信息。
电机驱动是本套系统的执行部分,负责完成远程的控制命令。
将这几部分结合到一起就实现了一个简单的智能系统。
工作过程
系统定时3S上传一次温度和湿度信息到云端,通过远程手机客户端便可以查看花瓶当前的温湿度情况。系统可以随时接手远程(手机客户端)发送来的控制命令,并且执行相应的命令。结合云端的阈值报警功能,可以设置湿度低于某一值之后通过邮件或者短信等形式告知用户,然后用户在决策要不要浇花,如果需要就可以打开手机客户端,立刻给心爱的花草浇水了。主要原理图
5 部分关键代码void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ static uint32_t eventTimeCount; //定时事件计数器 static uint32_t motorTimeCount;//监控事件计数器 static char ledState; //LED灯状态翻转 //tim1负责定时上传事件 if(htim->Instance == htim1.Instance) { eventTimeCount++; if(eventTimeCount >3000) { eventTimeCount = 0; eventIsRun = 1; //开始执行相应任务 } } //tim2负责浇水时间管理和液晶屏时间显示 if(htim->Instance == htim2.Instance) { motorTimeCount++; if(motorTimeCount >1000) { motorTimeCount =0; //翻转LED灯状态 ledState = ~ledState; if(ledState) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); if(flowerFlag)//是否有浇水命令,若有命令,启动浇水 { start_flower(); flowerCnt++; } if(flowerCnt > 4)//浇水时间到 { stop_flower(); flowerCnt = 0; flowerFlag = 0; } updateTimeCnt++; if(updateTimeCnt>10)//超时,则更新液晶屏时间 { updateLcdIsRun = 1; updateTimeCnt=0; } } }}
#include "led.h"#include "delay.h"#include "sys.h"#include "usart.h"#include "lcd.h"#include "key.h"#include "spi.h"#include "malloc.h" #include "DCConfig.h"#include "text.h" #if (COMMUNICATION_MODE==0)#include "common.h" #elif (COMMUNICATION_MODE==1)#include "bc26.h"#endif#include "usart2.h" #if (CODE_TYPE==2)#include "dht11.h"#include "soil.h"#include "light.h"#endif#if (CODE_TYPE==3)#include "fire.h" //Fire#include "mq_25.h" //MQ25#include "mq_135.h"#include "pm25.h"#endif int main(void) { // u8 key,fontok=0; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(115200); //串口初始化为9600 USART2_Init(115200); //初始化串口2波特率为115200 ,WIFI模块 SPI2_Init(); //初始化SPI LCD_Init(); //初始化液晶 LED_Init(); //LED初始化 KEY_Init(); //按键初始化 #if (CODE_TYPE==2) DHT11_GPIO_Config(); Adc_Init_Light(); Adc_Init_Soil(); #elif (CODE_TYPE==3) Adc_Init_Fire(); Adc_Init_MQ25(); Adc_Init_MQ135(); Adc_Init_PM25(); #elif (CODE_TYPE==4) #endif //初始化空气质量检测传感器 mem_init(); //初始化内存池 Lcd_Clear(WHITE); LCD_ShowString(5,20,128,16,16,"System Success!"); delay_ms(1500); Lcd_Clear(WHITE);//清屏 #if (COMMUNICATION_MODE==0) atk_8266_test(); //进入ATK_ESP8266测试 #elif (COMMUNICATION_MODE==1) Set_up_NBiot(); #endif}
完整代码可进群免费领取。
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料