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);	//从指定页的地址读FLASH
	Sensorthreshold.luxValue = FLASH_R(FLASH_START_ADDR+2);	//从指定页的地址读FLASH
	Sensorthreshold.tempValue = FLASH_R(FLASH_START_ADDR+4);	//从指定页的地址读FLASH
	Sensorthreshold.humiValue = FLASH_R(FLASH_START_ADDR+6);	//从指定页的地址读FLASH
	Sensorthreshold.soilTempValue = FLASH_R(FLASH_START_ADDR+8);	//从指定页的地址读FLASH
	Sensorthreshold.soilHumiValue = FLASH_R(FLASH_START_ADDR+10);	//从指定页的地址读FLASH
	GENERAL_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时,显示设置页面1
			if (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);	//数据上传至机智云					
	}
}

六、实验效果 

七、资料内容

项目分享

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值