系統功能:
檢測水溫,水溫過低開啟PTC加熱。檢測水位,水位過低開啟水泵抽水。檢測濕度,濕度過高則開啟風扇通風。
檢測PH值和渾濁度,TTS語音播報功能,OLED顯示系統信息,藍牙模塊連接手機APP。
系統上電后顯示“歡迎使用智能魚缸系統請稍后”兩秒后進入正常顯示頁面。
第一頁面第一行顯示“系統狀態信息”,第二行顯示溫濕度和水位信息,第三行顯示
渾濁度信息,第四行顯示PH值信息。
第一頁面下的按鍵操作:
短按B4按鍵可切換到第二頁面。
短按B7按鍵語音播報溫濕度水位渾濁度PH值。
第二頁面第一行顯示“溫度閾值設定”,第二行顯示獲取到的溫度值,第三行
顯示設置的溫度值,第四行顯示PTC開關狀態。
第二頁面下的按鍵操作:
短按B4按鍵可切換到第三頁面。
短按B5按鍵增加溫度設定閾值。
短按B6按鍵減小溫度設定閾值。
短按B7按鍵播報加熱器狀態。
第三頁面第一行顯示“濕度閾值設定”,第二行顯示獲取到的濕度值,第三行
顯示設置的濕度值,第四行顯示風扇開關狀態。
第三頁面下的按鍵操作:
短按B4按鍵可切換到第四頁面。
短按B5按鍵增加濕度設定閾值。
短按B6按鍵減小濕度設定閾值。
短按B7按鍵播報風扇狀態。
第四頁面第一行顯示“水位閾值設定”,第二行顯示獲取到的水位值,第三行
顯示設置的水位值,第四行顯示水泵開關狀態。
第四頁面下的按鍵操作:
短按B4按鍵可切換到第一頁面。
短按B5按鍵增加水位設定閾值。
短按B6按鍵減小水位設定閾值。
短按B7按鍵播報水泵狀態。
手機APP連接到藍牙模塊可以收到系統上報的傳感器數據。
主要功能模塊原理圖:
電源時鐘燒錄接口:
單片機和按鍵輸入電路:
傳感器采集電路:
繼電器輸出電路:
資料獲取地址
系統主要功能模塊代碼
初始化代碼:
/* 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);InitOled();InitOledDisp();ResetDHT11();/*if(InitDS18B20()==0){// printf("%s", "DS18B20初始化成功");//DS18B20在上電第一次讀取時顯示溫度為85℃,這是正常的。//85℃是DS18B20在上電復位后在溫度寄存器內的對應數字量,//這里DS18B20初始化成功后讀一次值,避免出現85℃DS18B20GetTemp_SkipRom();}*/
系統控制代碼;
?
//系統信息更新void SystemControl(void){static uint8_t updateCnt = 0;updateCnt++; if(updateCnt>=SYSTEM_UPDATE_INTER){updateCnt = 0;// ds18b20Temp = DS18B20GetTemp_SkipRom();if(DHT11ReadData()==0) //DHT11溫濕度讀取OK{;}UpdateBleData();}ReadSensorVal();}
藍牙模塊上報系統數據:
//更新BLE數據void UpdateBleData(void){printf("Temp:%02d Humi:%02d\r\n", getTempVal, getHumiVal); printf("Water:%04d\r\n", getWaterVal);printf("PH:%3.1f\r\n", getPhVal);printf("Thick:%04d\r\n", getThickVal); }
此設計提供的資料包含原理圖PCB(包含PDF,AD,立創EDA三個版本),源代碼,系統框圖,主程序流程圖,物料清單(包含使用到的器件手冊),功能操作說明等。
各功能模塊資料: