一种基于物联网的水管理系统,设计使用远程控制的水传感器进行智能数据库和管理。
项目背景:
这个项目的源头是使用智能的智能水管理。
通过使用自动化的水量值,我们可以测量个人。该显示的金额在网站上测量。如果在网站上发布更多给定的水量通知,显示过度使用。
用户可以通过网站连接到服务器,或者关闭服务器。
如果据此,并通过报告通知用户通知报告中的流量显示检测。
这可以说今天房屋里的水量可以衡量,因为里面的学生对他们使用的水量没有把握。通知他们的使用情况浪费了。
一个漏水的估计每年水量会增加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):");
串行打印(rssi);
Serial.println("dBm");
// 打印在浏览器中的去向:
Serial.print("要查看此页面,请打开浏览器访问 http://");
序列号.println(ip);
}
void serverPulse(intservo, int angle){ //servo.h 库没有运行,所以这个函数是用来控制舵机使用 pwm
pwm=(angle*11)+500;
数字写入(伺服,高);
延迟微秒(pwm);
数字写入(伺服,低);
延迟(50);
}
全部0条评论
快来发表一下你的评论吧 !