站内搜索
发作品签到
专业版

【STM32+ESP-01S+阿里云】远程智慧养殖场系统

工程标签

2.2k
0
0
19

简介

本智慧养殖系统基于STM32+ESP0S WiFi模块,接入阿里云IoT,可通过LCD显示屏监测温湿度、光照、氨气和烟雾浓度。系统可通过自动/手动/远程三端控制互不干扰,支持“云智能APP”远程监控。

简介:本智慧养殖系统基于STM32+ESP0S WiFi模块,接入阿里云IoT,可通过LCD显示屏监测温湿度、光照、氨气和烟雾浓度。系统可通过自动/手动/远程三端控制互不干扰,支持“云智能APP”远程监控。
复刻成本:106

开源协议

CC BY-NC 3.0

创建时间:2025-03-28 11:58:45更新时间:2025-05-26 11:32:34

描述

一、系统特点

1. **多功能集成**:系统集环境监测、远程监控、自动控制、手动控制和自定义阈值设置于一体,提供全面的智能家居解决方案。

2. **本地与远程监控**:通过1.44寸TFT_LCD显示屏实现本地数据展示,同时利用阿里云IoT平台和云智能APP实现远程监控,确保用户随时掌握环境信息。

3. **自动化控制**:系统能够根据环境参数自动调节照明、通风、加热和加湿,提高能效并确保环境舒适度。

4. **灵活的控制方式**:支持远程、自动和手动三种控制方式,确保系统在不同场景下的可用性和灵活性。

5. **用户自定义**:允许用户根据个人需求自定义环境参数阈值,如自动照明和通风的触发条件,增强系统的个性化和适应性。

6. **易于使用**:通过简单的物理按键和直观的APP界面,用户可以轻松操作和设置系统,降低了使用门槛。

7. **物联网集成**:通过ESP-01S WiFi模块与阿里云IoT平台的集成,实现设备间的互联互通,为智能家居生态系统的扩展提供了基础。

8. **扩展性强**:系统设计考虑了未来的迭代和升级,如采用EEPROM存储用户设置,以及通过蓝牙APP进行WiFi配对等,为后续功能扩展和优化提供了可能。

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

二、功能介绍

1、1.44寸TFT_LCD显示屏本地显示:

       温度(℃)、湿度(%RH)、光照强度(%)、氨气浓度(ppM)、烟雾浓度(ppM)

2、远程监控及远程控制:

      物联网平台:阿里云IoT

      手机端APP:云智能APP(可联动“天猫精灵”)

      远程监控:温度(℃)、湿度(%RH)、光照强度(%)、氨气浓度(ppM)、烟雾浓度(ppM)

      远程控制:照明、通风、加热

3、自动控制:

      ①自动照明:光照弱--->自动开灯;

      ②自动通风:温度/湿度/氨气/烟雾过高--->自动通风;

      ③自动加热:温度过低--->自动加热;

      ④自动加湿:湿度过低--->自动加湿。

4、手动控制:

       通过物理按键实现本地开/关灯、通风、加热、加湿(远程/自动/手动控制三端控制相互独立、互不影响),避免在离线状态无法正常使用系统功能的不良现象。

5、自定义阈值:

     能够自定义各项条件参数阈值,如自动高温通风阈值、自动照明阈值等。

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

三、使用说明

1、供电方式:Type-C ;

2、连接云端:开机自动连接云端,如若连接失败请重启 ;

3、进入主菜单:长按“确认/菜单”键进入主菜单,选择菜单列表进入相应子菜单 ;

4、执行设备连接:线对板螺钉插座可外接5V设备;

5、“云智能APP”接入设备:注册“云智能APP”账号后,扫描设备二维码可添加设备(需在设备在线状态),设备连接云端状态下可以远程监控与控制。

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

四、系统设计

Part 1:STM32F103C8T6单片机作为核心控制单元,负责执行软件和控制外部设备。

Part 2:系统通过DHT11温湿度传感器监测环境温湿度。

Part 3:通过光敏模块监测环境光照强度。

Part 4:MQ135气体传感器监测氨气浓度。

Part 5:MQ2烟雾传感器监测烟雾浓度。

Part 6:5个按键组成,用于进入菜单、选择和设置报警阈值。

Part 7:通过ESP-01S WiFi模块与阿里云IoT云端通信,实现远程数据上传和智能控制。

Part 8:包含AT24C02模块用于存储用户自定义的阈值(该版本未使用,待迭代)。

Part 9:TFT_1.44寸LCD显示屏用于本地数据显示。

Part 10:4路继电器模块控制灯光、通风、加湿和加热设备。

Part 11:蜂鸣器和LED用于声光指示,如报警、工作状态等。

图1  系统框图

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

五、电路设计

  • STM32F103C8T6核心控制单元:STM32F103C8T6单片机作为系统的核心控制单元,通过其丰富的GPIO接口与各模块相连,实现数据采集与设备控制。单片机内部的微处理器根据预设程序运行,接收传感器信号并处理,再通过GPIO输出控制信号驱动继电器等设备,协调系统运行。具体电路如图2所示。

图2  STM32F103C8T6最小系统板电路图

  • 1.44寸TFT_LCD显示屏:TFT_LCD显示屏通过单片机的SPI总线通信引脚PB12、PB13、PB14、PB15、PB1和PA8引脚接收控制信号和数据。其驱动原理是利用液晶的电光效应,通过控制液晶分子的排列来调节光线的透过率,从而显示图像。单片机发送的数据信号控制显示屏上的像素点,实现温度、湿度等信息的图形化显示。具体电路如图3所示。

图3  LCD显示屏模块电路图

  • DHT11温湿度传感器:DHT11温湿度传感器通过单片机的PA1引脚与单片机相连,采用单总线通信协议。传感器内部集成了温湿度采集元件,通过电容式感湿元件和热敏电阻测量环境温湿度,并将数据转换为数字信号输出。单片机通过单总线协议读取数据,实现温湿度的实时监测。具体电路如图4所示。

图4  DHT11温湿度传感器模块电路图

  • 光敏模块:光敏模块通过单片机的PA4引脚与单片机相连,其核心元件是光敏电阻。光敏电阻的阻值随光照强度变化而变化,当光照强度改变时,通过分压电路将光敏电阻的阻值变化转换为电压信号输出。单片机读取该电压信号并转换为光照强度值,用于自动照明控制。具体电路如图5所示。

图5  光敏模块电路图

  • MQ135气体传感器:MQ135气体传感器通过单片机的PA5引脚与单片机相连,其工作原理是基于气敏元件的电阻变化。当气体浓度变化时,气敏元件的电阻值发生变化,通过电压分压电路将电阻变化转换为电压信号输出。单片机读取该电压信号并转换为氨气浓度值,实现氨气浓度的实时监测。具体电路如图6所示。

图6  MQ135气体传感器模块电路图

  • MQ2烟雾传感器:MQ2烟雾传感器通过单片机的PA6引脚与单片机相连,其工作原理与MQ135类似,也是基于气敏元件的电阻变化。当烟雾浓度变化时,气敏元件的电阻值发生变化,通过电压分压电路将电阻变化转换为电压信号输出。单片机读取该电压信号并转换为烟雾浓度值,实现烟雾浓度的实时监测。具体电路如图7所示。

图7  MQ2气体传感器模块电路图

  • 按键模块:按键模块由5个按键组成,通过单片机的PB5至PB9引脚与单片机相连。按键的原理是通过机械触点的闭合与断开实现电路的通断。当按键按下时,电路导通,单片机检测到低电平信号,从而识别按键动作,实现进入菜单、选择和设置报警阈值等功能。具体电路如图8所示。

图8  按键电路图

  • ESP-01S WiFi模块:ESP-01S WiFi模块通过单片机的PA2和PA3引脚与单片机相连,采用串口通信协议。其内部集成了WiFi芯片,通过无线网络与阿里云IoT云端通信。单片机将采集到的数据通过串口发送给ESP-01S,ESP-01S将数据上传至云端,并接收云端的控制指令,实现远程监控与控制功能。具体电路如图9所示。

图9  ESP-01S WiFi 模块电路图

  • AT24C02模块:AT24C02模块通过I2C接口与单片机的PB10和PB11引脚相连,采用I2C通信协议。其内部为EEPROM存储芯片,用于存储用户自定义的阈值等数据。单片机通过I2C协议读写AT24C02中的数据,实现数据的存储与读取功能,但该版本未使用,待后续迭代开发。具体电路如图10所示。

图10  AT24C02存储模块电路图

  • 继电器模块:继电器模块通过单片机的PA9至PA12引脚与单片机相连,由单片机输出的控制信号驱动。继电器内部由线圈和触点组成,当单片机输出高电平时,线圈通电产生磁场,吸引触点闭合,从而控制外部设备的开关,实现灯光、通风、加湿和加热设备的自动控制功能。具体电路如图11所示。

图11  继电器模块电路图

  • 蜂鸣器和LED:蜂鸣器和LED分别连接在PB0和PA7引脚,由单片机控制。蜂鸣器的工作原理是通过电磁驱动振膜振动发声,单片机通过控制引脚的电平变化产生脉冲信号驱动蜂鸣器发声。LED的工作原理是基于半导体发光原理,当电流通过LED时,电子与空穴复合释放能量产生光子发光。单片机通过控制引脚的电平状态,实现蜂鸣器的报警和LED的工作状态指示功能。具体电路如图12所示。

图12  蜂鸣器与LED电路图

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

六、云端配置

--> 云端配置旨在实现远程监控与智能控制功能,通过阿里云IoT平台进行数据的上传与指令的下达。配置包括环境监测与设备控制两大类属性。

--> 环境监测属性包括温度(Temp)、湿度(Humi)、光照值(Lux)、氨气(NH3)、烟雾(Smoke),分别以int32和float类型存储,确保数据的精确性与可靠性。这些数据通过STM32单片机采集,并通过ESP-01S模块上传至云端,实现远程环境监测。

--> 设备控制属性包括照明(Relay1)、通风(Relay2)、加热(Relay3),以bool类型存储,实现设备的远程开关控制。用户可通过云智能APP发送控制指令,指令通过云端下发至单片机,由单片机控制继电器模块实现设备的开关。

图13  阿里云端设备配置详情

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

 

七、程序设计

-----------------------------------------------【 Part.1  主程序 】-----------------------------------------------

主程序可以分为三大部分,依次是:读取传感器数据并显示在LCD显示屏上传数据到云端逻辑判定部分

读取传感器数据并显示在LCD显示屏:

        /******** 采集传感器的值 ********/
        KeyNum = Key_Scan ();
        DHT11_Read_Data(&temp, &humi);
        Lux = LightSensor_GetLux();
        NH3 = MQ135_GetData_PPM ();
        Smoke = MQ2_GetData_PPM ();
        
        /******** 映射采集传感器的值以方便LCD显示 ********/
        sprintf((char*)Show_Temp,  ":%d", temp);
        sprintf((char*)Show_Humi,  ":%d %%RH", humi);
        sprintf((char*)Show_Lux ,  ":%.2f %% ", Lux); 
        sprintf((char*)Show_NH3 ,  ":%.2f ppM", NH3); 
        sprintf((char*)Show_Smoke ,":%.2f ppM", Smoke); 
        
        LCD_ShowString(40, 25 , Show_Temp  , CYANBLUE, BLUE, 16, 0);
        LCD_ShowString(40, 45 , Show_Humi  , CYANBLUE, BLUE, 16, 0);
        LCD_ShowString(40, 65 , Show_Lux   , CYANBLUE, BLUE, 16, 0);
        LCD_ShowString(40, 85 , Show_NH3   , CYANBLUE, BLUE, 16, 0);
        LCD_ShowString(40, 105, Show_Smoke , CYANBLUE, BLUE, 16, 0);
        
        /******** 显示汉字 ********/
        LCD_ShowChinese(5,25,(u8*) "温度",CYANBLUE,BLUE,16,0);
        LCD_ShowChinese(70,25,(u8*) "℃",CYANBLUE,BLUE,16,0);
        LCD_ShowChinese(5,45,(u8*) "湿度",CYANBLUE,BLUE,16,0);
        LCD_ShowChinese(5,65,(u8*) "光照",CYANBLUE,BLUE,16,0);
        LCD_ShowChinese(5,85,(u8*) "氨气",CYANBLUE,BLUE,16,0);
        LCD_ShowChinese(5,105,(u8*)"烟雾",CYANBLUE,BLUE,16,0);

上传数据到云端:

  //发送温度信息
  printf("AT+MQTTPUB=0,\"/sys/a1xPYDE2j0X/Device1/thing/event/property/post\",\"{\\\"params\\\":{\\\"Temp\\\":%d}}\",1,0\r\n",temp);
  Delay_ms (600);
 
if(Return_Num == 1)
{
  // 与云端形成沟通,显示联网图标
  LCD_ShowPicture(105,5,16,16,gImage_1);
 
  //发送湿度信息
  printf("AT+MQTTPUB=0,\"/sys/a1xPYDE2j0X/Device1/thing/event/property/post\",\"{\\\"params\\\":{\\\"Humi\\\":%d}}\",1,0\r\n",humi);
  Delay_ms (600);
 
  //发送光照数据
  printf("AT+MQTTPUB=0,\"/sys/a1xPYDE2j0X/Device1/thing/event/property/post\",\"{\\\"params\\\":{\\\"Lux\\\":%.2f}}\",1,0\r\n",Lux);
  Delay_ms (600);
 
  //发送氨气浓度
  printf("AT+MQTTPUB=0,\"/sys/a1xPYDE2j0X/Device1/thing/event/property/post\",\"{\\\"params\\\":{\\\"NH3\\\":%.2f}}\",1,0\r\n",NH3);
  Delay_ms (600);
 
  //发送烟雾浓度
printf("AT+MQTTPUB=0,\"/sys/a1xPYDE2j0X/Device1/thing/event/property/post\",\"{\\\"params\\\":{\\\"Smoke\\\":%.2f}}\",1,0\r\n",Smoke);
  Delay_ms (600);
  }
else
{
  // 未与云端形成沟通,显示断网图标
  LCD_ShowPicture(105,5,16,16,gImage_2);
}
逻辑判定部分:
// 开关灯控制
if(Lux < Lux_Alarm | Relay1_Mode == 1 | Relay1_ModeAct == 1)
{
Relay1_ON ();
}
else
{
Relay1_OFF ();
}
 
// 排风控制
if(temp > Temp_High | humi > Humi_High | NH3 > NH3_Alarm | Smoke > Smoke_Alarm | Relay2_Mode == 1 | Relay2_ModeAct == 1)
{
Relay2_ON ();
}
else
{
Relay2_OFF ();
}
 
// 加热控制
if(temp < Temp_Low | Relay3_Mode == 1 | Relay3_ModeAct == 1)
{
Relay3_ON ();
}
else
{
Relay3_OFF ();
}
 
// 加湿控制
if(humi < Humi_Low | Relay4_Mode == 1 | Relay4_ModeAct == 1)
{
Relay4_ON ();
}
else
{
Relay4_OFF ();
}
-----------------------------------------------【 Part.2  菜单.h文件函数 】-----------------------------------------------
// .c程序太多,详见附件
void Menu_Dispose(void);
void Menu_Temp(void);
void Menu_Humi(void);
void Menu_Lux(void);
void Menu_NH3(void);
void Menu_Smoke(void);
void Menu_SetSystem(void);
-----------------------------------------------【 Part.3  连接云端IoT程序 】-----------------------------------------------
void IoT_Init(void)
{
LCD_ShowChinese(25,85,(u8*)"云端连接中",CYANBLUE,BLUE,16,0);
 
printf("%s", ESP_Test);
Delay_ms (500);
 
printf("%s", ESP_Rst);//重启ESP
Delay_ms (3000);
 
printf ("%s", ESP_Mode);//设置模式
Delay_ms (2000);
 
printf ("%s", CIP_Mode);//设置模式
Delay_ms (2000);
 
printf ("%s",WiFiSSID_Passwd);//连接WiFi
Delay_ms (6000);//等待连接WiFi
 
//设置MQTT用户属性·要素①
printf ("%s",MQTTUser_Passwd);
Delay_ms (2000);
 
//设置Client ID·要素②
printf("%s",MQTT_ClientID);
Delay_ms (2000);
 
//连接MQTT·要素③
printf("%s",MQTT_Url);
Delay_ms (2000);
 
//订阅主题
printf("%s",MQTTSub);
Delay_ms (2000);
 
if(Return_Num == 1)
{
LCD_Fill(0,105,130,121,CYANBLUE);
LCD_ShowChinese(25,105,(u8*)"连接成功!",BLUE,CYANBLUE,16,0);
BEEP_ON ();
LED_ON ();
Delay_ms (1000);
BEEP_OFF ();
LED_OFF ();
}
else
{
LCD_Fill(0,105,130,121,RED);
LCD_ShowChinese(2,105,(u8*)"连接失败请重启!",WHITE,RED,16,0);
BEEP_alarm ();
LED_flashing ();
}
}

八、调试部分(见附件视频)

九、不足与迭代方向

(一)不足:

          (1)时间延迟:在将数据上传至云端后由于等待ESP-01S的反馈信息,Delay了500ms,导致5条数据就是3秒的延迟。同时下发命令也会有一定的延迟。

          (2)阈值管理:由于未采用EEPROM,导致每次重启系统后都会导致将用户设置的阈值自动恢复为默认阈值。

          (3)WiFi 配对:若用户需连接自己的WiFi需要修改程序内WiFi名,导致用户极不方便配对自己的WiFi。

(二)迭代方向:

          (1)时间延迟方面:尝试缩减Delay时间,在现有的基础上尝试缩短延迟的时间周期。

          (2)阈值管理方面:采用EEPROM,将用户自定义的数据存储至EEPROM,并让系统读取EEPROM内的自定义阈值数据。

          (3)WiFi 配对方面:【1】系统将用户通过按键自定义WiFi名及密码存储至EEPROM,每次连接WiFi时读取已存的WiFi信息,若首次开机无WiFi信息则提醒用户设置WiFi信息。【2】通过蓝牙APP让用户输入WiFi信息并保存至EEPROM,后续系统运行与方法【1】同理。

 

--------------------------------------------------------     分     界     线     --------------------------------------------------------

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
程序部分.zip
117
2
硬件部分.zip
62
3
物料清单.xlsx
56
4
演示视频.mp4
63
克隆工程
添加到专辑
0
0
分享
Logo GIF0
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航