一種基于物聯網的水管理系統,設計使用遠程控制的水傳感器進行智能數據庫和管理。
項目背景:
這個項目的源頭是使用智能的智能水管理。
通過使用自動化的水量值,我們可以測量個人。該顯示的金額在網站上測量。如果在網站上發布更多給定的水量通知,顯示過度使用。
用戶可以通過網站連接到服務器,或者關閉服務器。
如果據此,并通過報告通知用戶通知報告中的流量顯示檢測。
這可以說今天房屋里的水量可以衡量,因為里面的學生對他們使用的水量沒有把握。通知他們的使用情況浪費了。
一個漏水的估計每年水量會增加400滴,相當于一升水。平均一個人每天 浪費
0-45分鐘。為了它,它是每人連接智能水量的30%。
是為主要城市或房屋定制型的(擁有大量用戶)并為用戶定制的系統,但,被創建為方便用戶定制的系統。
步驟
1:連接將舵的連接到終端的終端進行數據傳輸3,將傳感器的數據連接到終端的第4步。
第2步:在編輯連接的SSID和密碼后,將上傳到啟動板。
3步:到Web瀏覽器第一次瀏覽IP復制地址。
第4步:通過傳感器倒水,關閉頁面查看流量值是否正在發生變化。點擊和打開按鈕以移動服務器。
關于所用硬件的進一步評論
CC3220
應用子系統一個頻率為80 MHz的行業標準ARM Cortex內核。用于Wi-Fi網絡證書處理器包、Wi-Fi證書和憑證包含的MCU運行服務管理器。
借助上Wi-Fi、強大的安全協議,無需任何Wi-Fi硬件就可以提升魔梯速度。CC3220MOD將所有必須的系統級組件(包括時鐘、SPI設備、互聯網設備的)集成到射頻開關和無源設備LGA封裝指南,以實現實現組件和程序中的PCB設計。CC320MOD作為完整的平臺解決方案提供,軟件、示例應用、工具、用戶和編程、參考
CC3200000計數器(CC320000)立即調用(CC32000)上的輸出端。然后,這個函數計算到的總數(檢測)。
傳傳感器
這些水的實際測量需求太重要,因此測量水在中非常重要。有許多用于水的不同類型的水管測量系統的水量管理技術,但都涉及到水的流量管理,但都包含本文已經呈現出水感傳感器的劇情介紹,并在開發中幫助制作了水幕的英雄。
霍爾靜態水傳感器
經濟角度來看,是從非常被用于測量的系統翻譯 2 和 0 傳感器的性能證明。每個傳感器與水線轉水容易,并包含一個風傳感器用于,通過它的測量量。有一個集成的天線天線,圈傳感器,輸出一個車的電流。傳感器“脈沖”輸入根線:紅色/VCC(5-24V DC)/GND(0V)和OUT(輸出),黑色/黑色/GND(黑色)。通過計算/計算
根據傳感器的輸出,我們可以使用適當的小時轉換公式輕松計算出水流量(升/小時-L/)。
可以通過各種不同的技術預測確定水的速度。在這種基本情況下,流水關系是 Q=VxA,管道的水的總,流量的平均,A 是流量管道的管道(與管道的液體的粘度、密度和抑制力會影響水的接觸)。
? 頻率脈沖(Hz) = 4.5Q,Q 流量是升/分鐘為單位的
? (分鐘升/小時)頻率頻率 x 6.5Q
人:
? 傳感器頻率 (Hz) = 4.5* Q (升/分鐘)
? 時間升= Q分鐘*的(秒)/60(秒)
? 升頻率(脈沖/秒)4.5)*時間的時間/秒)/60
? 升 = 脈沖 / (4.5 *60)
將水流傳感器連接到CC(紅色)和0傳感器的連接。 P03。請注意,水流量傳感器不是耗電型;它在5V DC輸入時最大消耗15-20mA!
電機伺服器
Futaba S3003 - 伺服標準
制作:模擬
尺寸:4.8V:44.00 oz-in (3.17 kg-cm);6.0V:57.00 英寸(4.10公斤-厘米)
速度:4.8V:0.23 秒/60°;6.0V:0.19 秒/60°
尺寸:長度:1.57英寸(39.9毫米)
寬度:0.79 英寸(20.1 毫米)
高度:1.42英寸(36.1毫米)
齒輪類型:塑料
旋轉/支撐:襯套
旋轉范圍:60°
周期周期:30 ms
脈沖脈沖:500-3000 μs
連接器類型:J
因為電機使用反射來光的位置,所以您可以合理地使用伺服伺服器的位置,該位置被移動服務器非常地確定地光的、旋轉的視線、或移動機器人的傳感器、腿部、控制位置。等。伺服電機體積小,而且由于它們控制著其運動的電路,它們可以直接連接到CC3220。
具有以下連接的電機伺服器:
? 黑色/棕色地線。
? 紅色電源線(約5V)。
?黃色或白色PWM線。
在將電源和接地端連接到接地端 20 到 CC32 5VPWM 輸入端將連接到接地端。 CC 輸出端之一。
項目清單:
代碼:
#ifndef _CC3200R1M1RGC_
// 不包括 CC3200 LaunchPad 的 SPI
#include
#endif
#include
// 您的網絡名稱也稱為 SSID
char ssid[] = "Nikhil";
// 你的網絡密碼
char password[] = "m3ch4l1f3";
// 您的網絡密鑰索引號(僅 WEP 需要)
int keyIndex = 0;
詮釋伺服=3;
角度;
整數脈寬調制;
整數=0;
國際水=0;
volatile int flow_frequency;// 測量流量傳感器脈沖
unsigned int l_hour; // 計算的升/小時
unsigned int flowsensor = 4; // 傳感器輸入
unsigned long currentTime;
無符號長循環時間;
整數標志=0;//跟蹤當前抽頭狀態的變量 (ON/OFF)
int leak=0; //計算泄漏
WiFi服務器服務器(80);//連接服務器到80端口
void flow () //中斷函數
{
flow_frequency++;
}
void setup() {
Serial.begin(115200); // 初始化串行通信
pinMode(RED_LED, OUTPUT); // 設置 LED 引腳模式
pinMode(servo,OUTPUT); //將伺服引腳設置為輸出
//嘗試連接到Wifi網絡:
Serial.print(“嘗試連接到名為的網絡:”);
// 打印網絡名稱(SSID);
序列號.println(ssid);
// 連接到 WPA/WPA2 網絡。如果使用開放或 WEP 網絡,請更改此行:
WiFi.begin(ssid, password);
而(WiFi.status()!= WL_CONNECTED){
// 在我們等待連接時打印點
Serial.print(".");
延遲(300);
pinMode(流量傳感器,INPUT_PULLUP);
//digitalWrite(流量傳感器,高);// 可選內部上拉
attachInterrupt(digitalPinToInterrupt(4), flow, RISING); // 設置中斷
// 啟用中斷
}
Serial.println("\n你已連接到網絡");
Serial.println("等待IP地址");
while (WiFi.localIP() == INADDR_NONE) {
// 在我們等待 IP 地址時打印點
Serial.print(".");
延遲(300);
}
Serial.println("\n獲取IP地址");
// 你現在已經連接了,所以打印出狀態
printWifiStatus();
Serial.println("在 80 端口啟動網絡服務器");
server.begin(); // 在端口 80 上啟動 Web 服務器
Serial.println("Webserver 已啟動!");
}
無效循環(){
flow_frequency = 0;
中斷();
延遲(1000);//等待1秒
noInterrupts(); //禁用Arduino上的中斷
//開始數學
l_hour = (flow_frequency * 2.25); //將最后一秒的脈沖數乘以 2.25mL
// l_hour= l_hour* 60; //將秒轉換為分鐘,得到毫升/分鐘
//l_hour = l_hour / 1000; //將毫升轉換為升,得到升/分鐘
總計+=l_hour;//假設流量等于每秒離開水龍頭的平均水量,我們將每一秒的流量相加并將它們存儲在這個變量
water+=l_hour;
//Serial.println(flowRate); //將變量flowRate打印到Serial
Serial.print("流量頻率為:");
Serial.println(flow_frequency);
Serial.print("流速為:");
Serial.println(l_hour,DEC); // 打印毫升/小時
Serial.print("Total:");
序列號.println(總計);
//Serial.println("L/小時");
if (flag==0 && l_hour>0){
泄漏=1;
}
if(water>=2000){ //如果流出的水超過閾值,則關閉水龍頭
for(angle=60;angle>=0;angle-=5){
servoPulse(servo,angle);}
water=0;
標志=0;
}
int i = 0;
WiFiClient 客戶端 = server.available(); // 監聽傳入的客戶端
if (client) { // 如果你有一個客戶端,
Serial.println("new client"); // 從串口打印一條消息
char buffer[150] = {0}; // 創建一個緩沖區來保存傳入的數據
while (client.connected()) { // 在客戶端連接時循環
if (client.available()) { // 如果有字節要從客戶端讀取,
char c = client.讀(); // 讀取一個字節,然后
Serial.write(c); // 將其打印到串行監視器
if (c == '\n') { // 如果字節是換行符
// 如果當前行為空,則連續有兩個換行符。
// 這是客戶端 HTTP 請求的結束,所以發送一個響應:
if (strlen(buffer) == 0) {
// HTTP 標頭總是以響應代碼(例如 HTTP/1.1 200 OK)
// 和內容開頭-type 讓客戶端知道接下來會發生什么,然后是一個空行:
client.println("HTTP/1.1 200 OK");
client.println("內容類型:文本/html");
客戶端.println();
// HTTP 響應的內容跟在頭后面:
/*client.println("
");
client.println("
歡迎使用CC3200 WiFi Web服務器
");
client.print("紅色 LEDHIGH");
client.println("LOW
");*/
client.println(" ");
client.println("");
client.println("
雖然我們在海灘附近并且被水包圍,但我們在夏天缺水,哦,諷刺的是。SW(a)mp 提供了一些小解決方案來應對這些問題問題。
");
client.println("
控制點擊
開啟
");
client.println("
檢測到泄漏:");
client.println(泄漏);
client.println("
<
client.println("
請注意:過度使用
");
}
client.println("
");
// HTTP 響應以另一個空行結束:
client.println();
// 跳出while循環:
break;
}
else { // 如果有換行符,則清除緩沖區:
memset(buffer, 0, 150);
我 = 0;
}
}
else if (c != '\r') { // 如果你得到了除了回車符之外的任何東西,
buffer[i++] = c; // 將其添加到 currentLine 的末尾
}
// 檢查客戶端請求是 "GET /H" 還是 "GET /L":
if (endsWith(buffer, "GET /H")) {
digitalWrite(RED_LED, HIGH); // GET /H 打開 LED
for(angle=0;angle<=140;angle+=5){ // 切換到
servoPulse(servo,angle);}
flag=1;
}
if (endsWith(buffer, "GET /L")) {
digitalWrite(RED_LED, LOW); // GET /L 關閉 LED
for(angle=140;angle>=0;angle-=5){ //關閉抽頭
servoPulse(servo,angle);
標志=0;
}
}
}
}
// 關閉連接:
client.
Serial.println("客戶端斷開");
}
}
//
//一種檢查一個數組是否以另一個數組結尾的方法
//
boolean endsWith(char* inString, char* compString) {
int compLength = strlen(compString);
int strLength = strlen(inString); //比較inString int i
的最后一個“compLength”值; for (i = 0; i < compLength; i++) { ? ? char a = inString[(strLength - 1) - i]; ? ? char b = compString[(compLength - 1) - i]; ? ? if (a != b) { ? ? ? return false; ? ? } ? } ? 返回真; }
void printWifiStatus() {
// 打印您連接的網絡的 SSID:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// 打印你的 WiFi IP 地址:
IPAddress ip = WiFi.localIP();
Serial.print("IP地址:");
序列號.println(ip);
// 打印接收到的信號強度:
long rssi = WiFi.RSSI();
Serial.print("信號強度 (RSSI):");
串行打?。╮ssi);
Serial.println("dBm");
// 打印在瀏覽器中的去向:
Serial.print("要查看此頁面,請打開瀏覽器訪問 http://");
序列號.println(ip);
}
void serverPulse(intservo, int angle){ //servo.h 庫沒有運行,所以這個函數是用來控制舵機使用 pwm
pwm=(angle*11)+500;
數字寫入(伺服,高);
延遲微秒(pwm);
數字寫入(伺服,低);
延遲(50);
}
-
傳感器
+關注
關注
2551文章
51097瀏覽量
753529 -
物聯網
+關注
關注
2909文章
44634瀏覽量
373316 -
遠程控制
+關注
關注
4文章
630瀏覽量
34928 -
管理系統
+關注
關注
1文章
2498瀏覽量
35919
發布評論請先 登錄
相關推薦
評論