項目成品圖片:
01
—
項目簡介
1.功能詳解
功能如下:
溫濕度采集:使用DHT11溫濕度傳感器采集環境溫濕度
土壤濕度采集:通過土壤濕度模塊采集土壤濕度
光照強度采集:通過光敏電阻采集環境光照強度
土壤溫度采集:通過DS18B20傳感器采集土壤溫度
風扇控制:可自動模式下根據環境溫度觸發或手動模式下APP開閉
水泵控制:可自動模式下根據土壤濕度觸發或手動模式下APP開閉
LED照明燈控制:可自動模式下根據環境光強觸發或手動模式下按鍵開閉
OLED顯示:將檢測到的環境數據顯示在oled屏幕上
蜂鳴器報警:危險情況下本地蜂鳴器觸發報警
APP功能:使用機智云APP,包括功能有控制并顯示風扇、水泵、通風口和補光燈狀態,選擇工作模式為手動或自動模式,顯示當前環境溫濕度、土壤溫濕度以及光照強度和二氧化碳濃度信息
2.材料清單
STM32F103C8T6最小系統板
DHT11溫濕度傳感器
OLED顯示屏(4針I2C協議)
WiFi模塊(ESP8266-01s)
土壤濕度傳感器
DS18B20溫度傳感器
28BYJ51步進電機
二氧化碳傳感器
光敏傳感器
5V風扇模塊
5V水泵模塊
蜂鳴器
LED燈
02
—
原理圖設計
03
—
PCB硬件設計
1.PCB圖
04
—
程序設計
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) { casedisplay_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 *)¤tDataPoint); //數據上傳至機智云 }}
05
—
實驗效果
-
STM32
+關注
關注
2273文章
10926瀏覽量
357767 -
智慧農業
+關注
關注
4文章
789瀏覽量
19942 -
機智云
+關注
關注
2文章
591瀏覽量
26464
發布評論請先 登錄
相關推薦
機智云2016~2017優秀項目盤點
stm32項目搭建基礎
機智云AIoT開發平臺在智慧漁業工業化養殖系統中的應用
【IoT畢業設計】機智云IoT+智慧生態水質pH值監測系統
開發者案例:基于機智云物聯網、RT-Thread智慧農業?設計
STM32項目分享:智慧農業(機智云)系統
![<b class='flag-5'>STM32</b><b class='flag-5'>項目</b>分享:<b class='flag-5'>智慧</b><b class='flag-5'>農業</b>(<b class='flag-5'>機智</b><b class='flag-5'>云</b>)<b class='flag-5'>系統</b>](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
STM32項目實戰:基于STM32U5的智能燈光控制系統(LVGL),附項目教程/源碼
![<b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的智能燈光控制<b class='flag-5'>系統</b>(LVGL),附<b class='flag-5'>項目</b>教程/源碼](https://file1.elecfans.com/web2/M00/0B/F7/wKgaomcsfiCAViRnAADVdnLw4X4123.png)
STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼
![<b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的火災報警<b class='flag-5'>系統</b>(LVGL),附<b class='flag-5'>項目</b>教程/源碼](https://file1.elecfans.com/web1/M00/F3/F3/wKgaoWch0G-AQMAiAADiP0TvLE8120.png)
STM32項目實戰:基于STM32U5的智能大棚溫控系統(LVGL),附項目教程/源碼
![<b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的智能大棚溫控<b class='flag-5'>系統</b>(LVGL),附<b class='flag-5'>項目</b>教程/源碼](https://file1.elecfans.com/web1/M00/F3/AE/wKgaoWcbMkOACK3bAADR97jANBQ879.png)
評論