中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

可視化信息 網(wǎng)站個人如何在百度做廣告

可視化信息 網(wǎng)站,個人如何在百度做廣告,wordpress自動添加視頻播放器,廣東網(wǎng)站建設(shè)多少錢文章目錄 一、熱帶魚缸控制系統(tǒng)1.題目要求2.思路3.電路仿真3.1 未仿真3.2 開始仿真,顯示屏顯示水溫、渾濁度、光照強度等值3.3 當水溫低于閾值,開啟加熱并聲光報警3.4 當渾濁度高于閾值,開啟自動換水并聲光報警3.5 當光照低于閾值&#xff0c…

文章目錄

  • 一、熱帶魚缸控制系統(tǒng)
    • 1.題目要求
    • 2.思路
    • 3.電路仿真
      • 3.1 未仿真
      • 3.2 開始仿真,顯示屏顯示水溫、渾濁度、光照強度等值
      • 3.3 當水溫低于閾值,開啟加熱并聲光報警
      • 3.4 當渾濁度高于閾值,開啟自動換水并聲光報警
      • 3.5 當光照低于閾值,開啟補光并聲光報警
      • 3.6 手動開啟增氧和喂食
      • 3.7 遠程監(jiān)控水溫等數(shù)據(jù),遠程控制增氧喂食以及修改溫度閾值等
    • 4.仿真程序
      • 4.1 程序說明
      • 4.2 主程序
      • 4.3 OLED顯示程序
      • 4.4 串口指令程序
  • 二、總結(jié)



一、熱帶魚缸控制系統(tǒng)

1.題目要求

部件:
主控:STM32
顯示:OLED
溫度:防水型DS18B20
渾濁度:TSW-30
光照:光敏電阻
無線通信:藍牙
繼電器5(換水、加熱、增氧、喂食、補光)
聲光報警:蜂鳴器+LED
按鍵
5

主要功能需求:

1、實時監(jiān)測水溫、水體渾濁度、光照強度,并顯示在OLED屏幕上。

2、通過藍牙模塊將監(jiān)測到的各項數(shù)據(jù)傳輸?shù)绞謾CAPP,實現(xiàn)遠程監(jiān)控,同時可以通過手機進行遠程控制。

3、水溫、光照低于閾值或渾濁度高于閾值開啟聲光報警。當渾濁度超過閾值,自動開啟換水;光照低于閾值,開啟補光;水溫低于閾值,開啟加熱。

4、通過按鍵可以開啟增氧、喂食,以及修改溫度、渾濁度和光照強度的閾值。

2.思路

主控是STM32,這里我們選擇常用的STM32F103C8T6單片機

在這里插入圖片描述

顯示:OLED

顯示的內(nèi)容比較多1個界面可能不夠顯示,所以用多個界面,界面切換選擇按鍵切換

在這里插入圖片描述

溫度:防水型DS18B20

在這里插入圖片描述

渾濁度:TSW-30(proteus仿真沒有該傳感器,所以采用滑動變阻器模擬)

在這里插入圖片描述

光照:光敏電阻

在這里插入圖片描述

無線通信:藍牙

在這里插入圖片描述

繼電器*5(換水、加熱、增氧、喂食、補光)和 聲光報警:蜂鳴器+LED

在這里插入圖片描述

按鍵*5

通過按鍵手動開啟/關(guān)閉增氧,手動開啟/關(guān)閉喂食,這里兩個按鍵
要修改溫度,渾濁度,光照強度的閾值,一共3個閾值,選擇用1個按鍵來切換選擇的閾值,另外2個按鍵增大/減小閾值,這里三個按鍵。

在這里插入圖片描述

3.電路仿真

3.1 未仿真

在這里插入圖片描述

3.2 開始仿真,顯示屏顯示水溫、渾濁度、光照強度等值

在這里插入圖片描述

3.3 當水溫低于閾值,開啟加熱并聲光報警

在這里插入圖片描述

3.4 當渾濁度高于閾值,開啟自動換水并聲光報警

在這里插入圖片描述

3.5 當光照低于閾值,開啟補光并聲光報警

在這里插入圖片描述

3.6 手動開啟增氧和喂食

在這里插入圖片描述

3.7 遠程監(jiān)控水溫等數(shù)據(jù),遠程控制增氧喂食以及修改溫度閾值等

遠程監(jiān)控水溫,渾濁度,光照強度等數(shù)據(jù)

遠程控制打開增氧,關(guān)閉增氧

遠程控制打開喂食,關(guān)閉喂食

在這里插入圖片描述

按下切換按鍵,切換為設(shè)置溫度閾值界面,更改溫度閾值為50

在這里插入圖片描述

按下切換按鍵,切換為設(shè)置渾濁度閾值界面,更改溫度閾值為66

在這里插入圖片描述
按下切換按鍵,切換為設(shè)置光照閾值界面,更改溫度閾值為80
在這里插入圖片描述

4.仿真程序

4.1 程序說明

主控芯片:STM32F103C8
HSI:64MHZ
Systick: 1ms

渾濁度傳感器:ADC(PA0)

光照傳感器:LDR(PA2)

DS18B20溫度傳感器:DAT(PA4)

模擬藍牙模塊(Uart1):9600(PA9:tx1,PA10:rx1)

聲光報警:BUZZER(PA15)

按鍵:
KEY1(PB0)
KEY2(PB1)
KEY3(PB2)
KEY2(PB3)
KEY5(PB4)

換水:RELAY1(PB6)
加熱:RELAY2(PB7)
增氧:RELAY3(PB8)
喂食:RELAY4(PB9)
補光:RELAY5(PB10)

OLED顯示屏:SCL(PB14),SDA(PB15)

在這里插入圖片描述

串口協(xié)議
舉例如發(fā)送*Temp50,即設(shè)置溫度閾值位50度
*TempXX 設(shè)置溫度閾值 XX取值為0-99
*MuddXX 設(shè)置渾濁度閾值 XX取值為0-99
*IlluXX 設(shè)置光照閾值 XX取值為0-99
*oxygX 開啟/關(guān)閉增氧 X取值為0-1
*feedX 開啟/關(guān)閉喂食 X取值為0-1
*Read 遠程監(jiān)控水溫、水體渾濁度、光照強度等數(shù)據(jù),

4.2 主程序

/* Includes ------------------------------------------------------------------*/
#include "Drv_UserSystem.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
/*** @brief  main function.* @param  none* @retval none*/
int main(void)
{UserSystemInit();//用戶配置初始化		while (1){			if(stSysTime.flg._10ms + TEN_MILLISECOND < Time_millis()) //10ms{stSysTime.flg._10ms = Time_millis();	Key_Scan();//按鍵掃描					}	if(stSysTime.flg._50ms + FIFTY_MILLISECOND < Time_millis()) //50ms{stSysTime.flg._50ms = Time_millis();ADC_Scan();//采集渾濁度和光照強度				}				if(stSysTime.flg._100ms + BEST_MILLISECOND < Time_millis()) //100ms{stSysTime.flg._100ms = Time_millis();		DS18B20_Collect_data();//DS18B20采集溫度數(shù)據(jù)					OLED_Handel();//OLED顯示			Forewarning_Handel();//預(yù)警函數(shù)		Receive_data_Handel();//數(shù)據(jù)接收判斷				IWDG_ReloadCounter();//清開門狗 				}				}
}

4.3 OLED顯示程序

/******************************************************************************** 函數(shù)名:OLED_Handel* 描述  :OLED顯示* 輸入  :void* 輸出  :void* 調(diào)用  :初始化* 備注  :100ms
*******************************************************************************/
void OLED_Handel(void)
{  	if(ADC_Flag){	if(Threshold_switching == 0){OLED_Show_Character(1,1,0,16);//水OLED_Show_Character(1,2,1,16);//溫		OLED_Show_Character(1,3,2,16);//:	OLED_ShowNum(1,7,Temp_High,2);	OLED_ShowString(1, 9, ".");	OLED_ShowNum(1,10,Temp_Low,1);	OLED_Show_Character(1,6,3,16);//°OLED_ShowString(1, 13, "C");OLED_Show_Character(2,1,4,16);//渾OLED_Show_Character(2,2,5,16);//度OLED_Show_Character(2,3,6,16);//度				OLED_Show_Character(2,4,2,16);//:OLED_ShowNum(2,9,ADC1_Value,2);	OLED_ShowString(2, 11, "%");			OLED_Show_Character(3,1,7,16);//光OLED_Show_Character(3,2,8,16);//照OLED_Show_Character(3,3,9,16);//強OLED_Show_Character(3,4,10,16);//度		OLED_Show_Character(3,5,2,16);//:		OLED_ShowNum(3,11,ADC2_Value,2);	OLED_ShowString(3, 13, "%");}else if(Threshold_switching == 1){OLED_Show_Character(1,1,0,16);//水OLED_Show_Character(1,2,1,16);//溫		OLED_Show_Character(1,3,11,16);//閾OLED_Show_Character(1,4,12,16);//值					OLED_Show_Character(1,5,2,16);//:	OLED_ShowNum(1,11,Temp_Threshold,2);	OLED_Show_Character(1,7,3,16);//°OLED_ShowString(1, 15, "C");				}else if(Threshold_switching == 2){OLED_Show_Character(1,1,4,16);//渾OLED_Show_Character(1,2,5,16);//度OLED_Show_Character(1,3,6,16);//度		OLED_Show_Character(1,4,11,16);//閾OLED_Show_Character(1,5,12,16);//值					OLED_Show_Character(1,6,2,16);//:	OLED_ShowNum(1,13,ADC1_Threshold,2);	OLED_ShowString(1, 15, "%");				}	else if(Threshold_switching == 3){	OLED_Show_Character(1,1,7,16);//光OLED_Show_Character(1,2,8,16);//照					OLED_Show_Character(1,3,11,16);//閾OLED_Show_Character(1,4,12,16);//值					OLED_Show_Character(1,5,2,16);//:	OLED_ShowNum(1,13,ADC2_Threshold,2);	OLED_ShowString(1, 15, "%");				}			}			
}

4.4 串口指令程序

/******************************************************************************** 函數(shù)名:Send_Cmd1* 描述  :設(shè)置溫度閾值* 輸入  :void* 輸出  :void* 調(diào)用  :需要時調(diào)用* 備注  :舉例如發(fā)送*Temp50,即設(shè)置溫度閾值位50度*******************************************************************************/
void Send_Cmd1(void)
{uint8_t i = 0; variable1 = (AsciiToHex(uart1_rx_buf[i+5])*10+AsciiToHex(uart1_rx_buf[i+6]));if(variable1 < 99){Temp_Threshold = variable1;printf("手機設(shè)置的溫度閾值 = %d\r\n",Temp_Threshold);	}else{printf("手機設(shè)置的溫度閾值超出設(shè)置范圍 \r\n");			}
}/******************************************************************************** 函數(shù)名:Send_Cmd2* 描述  :設(shè)置水體渾濁度閾值* 輸入  :void* 輸出  :void* 調(diào)用  :需要時調(diào)用* 備注  :*******************************************************************************/
void Send_Cmd2(void)
{uint8_t i = 0;variable2 = (AsciiToHex(uart1_rx_buf[i+5])*10+AsciiToHex(uart1_rx_buf[i+6]));if(variable2 < 99){ADC1_Threshold = variable2;printf("手機設(shè)置的水體渾濁度閾值 = %d\r\n",ADC1_Threshold);	}	else{printf("手機設(shè)置的水體渾濁度閾值超出設(shè)置范圍 \r\n");			}	
}/******************************************************************************** 函數(shù)名:Send_Cmd3* 描述  :設(shè)置光照閾值* 輸入  :void* 輸出  :void* 調(diào)用  :需要時調(diào)用* 備注  :*******************************************************************************/
void Send_Cmd3(void)
{uint8_t i = 0;variable3 = (AsciiToHex(uart1_rx_buf[i+5])*10+AsciiToHex(uart1_rx_buf[i+6]));if(variable3 < 99){ADC2_Threshold = variable3;printf("手機設(shè)置的光照閾值 = %d\r\n",ADC2_Threshold);}		else{printf("手機設(shè)置的光照閾值超出設(shè)置范圍 \r\n");			}	
}/******************************************************************************** 函數(shù)名:Send_Cmd4* 描述  :開啟/關(guān)閉增氧 * 輸入  :void* 輸出  :void* 調(diào)用  :需要時調(diào)用* 備注  :*******************************************************************************/
void Send_Cmd4(void)
{uint8_t i = 0;variable4 = AsciiToHex(uart1_rx_buf[i+5]);if(variable4 == 0){Relay3_Off();	printf("關(guān)閉增氧\r\n");}		else if (variable4 == 1){Relay3_On();			printf("打開增氧 \r\n");			}	else {printf("手機設(shè)置的供氧模式超出設(shè)置范圍 \r\n");			}
}/******************************************************************************** 函數(shù)名:Send_Cmd5* 描述  :開啟/關(guān)閉喂食* 輸入  :void* 輸出  :void* 調(diào)用  :需要時調(diào)用* 備注  :*******************************************************************************/
void Send_Cmd5(void)
{uint8_t i = 0;variable5 = AsciiToHex(uart1_rx_buf[i+5]);if(variable5 == 0){Relay4_Off();	printf("關(guān)閉喂食\r\n");}		else if (variable5 == 1){Relay4_On();			printf("打開喂食 \r\n");			}	else {printf("手機設(shè)置的喂食模式超出設(shè)置范圍 \r\n");			}
}/******************************************************************************** Function    : Receive_data_Handel* Description : 數(shù)據(jù)接收判斷* Input       : 無* Return      : 無* Call        : 100ms* Others      :*******************************************************************************/
void Receive_data_Handel(void)
{uint8_t i = 0;if(uart1_rx_finsh){	  for(i = 0;i< 20; i++){if(uart1_rx_buf[i] == '*')	{switch(uart1_rx_buf[i+1]){case  'T':Send_Cmd1();break;//*TempXX		case  'M':Send_Cmd2();break;//*MuddXXcase  'I':Send_Cmd3();break;//*IlluXX		case  'o':Send_Cmd4();break;//*oxygX		case  'f':Send_Cmd5();break;//*feedX		case  'R':Printf_Task();break;//*Read							default:break;							}							}}uart1_rx_finsh = 0;	uart1_rx_count = 0;memset(uart1_rx_buf,0,RX_MAX_NUM);				}	
}/******************************************************************************** Function    : Printf_Task* Description : 打印數(shù)據(jù)任務(wù)* Input       : 無* Return      : 無* Call        : 1s* Others      :*******************************************************************************/
void Printf_Task(void)
{if(ADC_Flag){	printf("水溫=%d.%d 水體渾濁度=%d 光照強度=%d\r\n",Temp_High,Temp_Low,ADC1_Value,ADC2_Value);	}
}

二、總結(jié)

今天主要講了基于STM32的熱帶魚缸控制系統(tǒng)的設(shè)計。

感謝你的觀看!

在這里插入圖片描述

http://www.risenshineclean.com/news/43000.html

相關(guān)文章:

  • 網(wǎng)站網(wǎng)站制作400多少錢百度app大全
  • 網(wǎng)站如何留住用戶關(guān)鍵詞代發(fā)排名首頁
  • 自己制作wordpress主題成都網(wǎng)站seo性價比高
  • 儋州網(wǎng)站建設(shè)網(wǎng)站查詢域名解析
  • node.js 做網(wǎng)站全媒體運營師報名費多少錢
  • 建站公司網(wǎng)站用什么好色目人
  • 天津網(wǎng)站建設(shè)報價登錄百度app
  • 做淘寶的批發(fā)網(wǎng)站有哪些百度sem
  • 日語網(wǎng)站建設(shè)需要注意什么seo快速排名網(wǎng)站優(yōu)化
  • 安徽省建設(shè)法治協(xié)會網(wǎng)站google play官網(wǎng)入口
  • 自然志wordpress百度網(wǎng)盤seo優(yōu)化
  • 網(wǎng)絡(luò)營銷推廣方法結(jié)論紹興網(wǎng)站快速排名優(yōu)化
  • 門戶網(wǎng)站做壓力測試搜索引擎的工作原理是什么?
  • python做網(wǎng)站入門寧波網(wǎng)站建設(shè)
  • 做網(wǎng)頁一個頁面多少錢重慶seo職位
  • 網(wǎng)站交互功能萬網(wǎng)是什么網(wǎng)站
  • 旅游電商網(wǎng)站建設(shè)方案優(yōu)速網(wǎng)站建設(shè)優(yōu)化seo
  • wordpress 菜單 圖片汕頭網(wǎng)站建設(shè)方案優(yōu)化
  • 建設(shè)網(wǎng)站前期準備工作河南品牌網(wǎng)絡(luò)推廣外包
  • wordpress 主題設(shè)計百度seo自動優(yōu)化
  • 網(wǎng)站建設(shè)經(jīng)驗總結(jié)百度今日小說搜索風云榜
  • 湘潭企業(yè)網(wǎng)站建設(shè)微信推廣多少錢一次
  • 靜態(tài)網(wǎng)站開發(fā)預(yù)期效果經(jīng)典軟文
  • 怎么幫公司做網(wǎng)站建設(shè)如何創(chuàng)建公司網(wǎng)站
  • 找工程承包app排名優(yōu)化seo
  • 建設(shè)銀行個人官方網(wǎng)站百度應(yīng)用app下載
  • 多語言網(wǎng)站怎么實現(xiàn)的推廣公眾號的9種方法
  • 網(wǎng)站的內(nèi)連接如何做天津百度推廣公司
  • 網(wǎng)站域名備案seo網(wǎng)址大全
  • 在日本怎樣做網(wǎng)站網(wǎng)站建設(shè)詳細方案