亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 MKR1000 和 ARTIK Cloud 进行水质监测

组件和用品

Arduino MKR1000
× 1
跳线(通用)
× 1
DFRobot pH 计
× 1
电阻 4.75k ohm
× 1
温度探头
× 1

应用和在线服务

Samsung ARTIK Cloud for IoT
Arduino IDE

关于这个项目

一、目的

该项目的主要目标是使用三星 ARTIK Cloud 监测游泳池的 pH 值和温度水平。

二、 ARTIK 云设置

第 1 步。创建您的新设备

注册 ARTIK Cloud。转到开发者网站并创建新的“设备类型”。

输入您想要的显示和唯一名称。

创建新的清单

输入字段名称和其他说明

单击保存,然后导航到激活清单选项卡

单击 ACTIVE MANIFEST 按钮完成,您将被重定向到此处

设备类型创建完成!

现在让我们创建将使用该设备的应用程序。

第 2 步。创建您的应用程序

导航到 ARTIK Cloud 应用程序。

点击新申请

输入您想要的应用程序名称和身份验证重定向 URL。

请注意,身份验证重定向 url 是必需的。它用于验证此应用程序的用户,因此如果需要登录,将重定向到此 url。

我们使用 http://localhost/index/ 作为示例。

现在设置您的应用程序读写权限,导航到您的设备然后保存。

恭喜你现在有了你的应用程序!

现在让我们连接该应用程序。

第 3 步。连接您的设备

导航到我的设备,然后点击连接其他设备。

点击之前创建的新设备类型,然后点击连接设备。

点击您连接的设备设置。

记下这些信息,因为您将在程序中需要这些信息。

现在导航到您连接的设备

完成 ARTIK Cloud 设置。一旦你的硬件启动,图表就会有数据。

三、硬件传感器设置

步骤 1. 将温度和 pH 传感器连接到 MKR1000。

示意图如下:

  • 温度 GND 到 MRK1000 GND
  • 温度输出到 MKR1000 数字引脚 1
  • 温度 VCC 至 MKR1000 5V
  • 将 4.7K 电阻连接到 Temp VCC 和 Temp OUT
  • pH GND 到 MRK1000 GND
  • pH OUT 至 MKR1000 模拟引脚 1
  • pH VCC 至 MKR1000 5V

这是我的示例接线

如果您注意到我们添加了一个音频插孔,以便轻松拆卸温度传感器。但这是可选的。

这是温度传感器与插孔的连接。

步骤 2. 设置所需软件

转到 Arduino IDE 并添加 MKR1000 板。

搜索 mkr1000 并点击安装

添加需要的库

搜索要安装的库:

  • ArduinoJson - 我们将使用它向 ARTIK Cloud 发送 JSON 数据
  • ArduinoHttpClient - 用于连接 API 的主机
  • OneWire - 需要从温度传感器读取数字输入
  • DallasTemperature - 达拉斯温度传感器所需的库

完成添加所需软件!

步骤 3. 上传程序

现在将 MKR1000 插入您的 PC/笔记本电脑。

在此处下载 GitHub 上的软件

更改以下信息:

然后将软件代码上传到 MKR1000 并开始监控。

注意:您的 WiFi 必须有互联网连接。

四、现场测试

我们已经对私人、公共和学校游泳池的硬件传感器进行了测试。从这些受访者池中收集数据使我们能够分析硬件的功能。

您可以将 MKR1000 和传感器放在一个盒子上,然后将其放在您的游泳池上,远离水污染。通过这样做,您可以监控水的质量并通过放置所需的化学品来使它们正常化。

很快我们将上传有关如何将所有电路放入此盒子中的教程以及测试的实际镜头。

五、结果

希望本教程可以帮助人们制作自己的DIY游泳池水质监测装置。可能会增加对游泳池水质持续恶化的认识,因为人们倾向于更多地关注所提供的便利设施,而不是检查它们的安全性。他们还打算通过提供一种方法来提高水质检测的效率和效果,而无需不必要地牺牲资源,从而为社区做出贡献。

快乐建筑! :)

代码

  • Arduino MKR1000 代码
Arduino MKR1000 代码C/C++
将此代码上传到您的 Arduino MKR1000

在 GitHub 上访问此> https://github.com/imjeffparedes/iot-water-quality-artik
/********************这是我的代码水质设备监测发布于 https://www.hackster.io/animo/water-quality-moniroting-840fea********************/#include #include #include  #include  #include  #include #include /**温度传感器初始化**/#define ONE_WIRE_BUS 1 // 数据线插入ArduinoOneWire oneWire(ONE_WIRE_BUS)的数字端口1; // 设置 oneWire 实例以与任何 OneWire //设备通信(不仅仅是 Maxim/Dallas 温度 IC)DallasTemperature sensor(&oneWire); // 将我们的 oneWire 引用传递给达拉斯温度。 /** ARTIK Cloud REST 初始化 **/char server[] ="api.artik.cloud"; // 三星 ARTIK Cloud API Hostint 端口 =443; // 443 for HTTPS char buf[200]; // 存储要发送到 ARTIK 云的 JSON 的正文数据 String deviceID ="artik cloud device id"; // 把你的设备 id 放在这里,从教程 String deviceToken ="artik cloud device token"; // 将您的设备令牌从教程中创建/**pH 计初始化**/#define SensorPin A1 // pH 计模拟输出到 Arduino 模拟输入 1#define Offset 0.00 // 偏差补偿#define samplingInterval 20#define ArrayLenth 40 // 收集次数int pHArray[ArrayLenth]; // 存储传感器反馈的平均值int pHArrayIndex=0; int status =-1;int millis_start;/**Wifi Setting**/#define WIFI_AP "your wifi ssid"#define WIFI_PWD "wifi password"WiFiSSLClient wifi; HttpClient 客户端 =HttpClient(wifi, server, port);void setup(void) { millis_start =millis(); Serial.begin(9600); startWifi(); //开始连接wifi}void loop(void) { /*获取当前温度*/ float celsius =0;传感器.requestTemperatures(); // 发送获取温度的命令 celsius =sensor.getTempCByIndex(0);传感器.requestTemperatures(); // 发送获取温度的命令 celsius =sensor.getTempCByIndex(0); /*获取当前pH值*/ static unsigned long samplingTime =millis();静态无符号长打印时间 =毫秒();静态浮点 pH 值,电压; if(millis()-samplingTime>samplingInterval) { pHArray[pHArrayIndex++]=analogRead(SensorPin); if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;电压 =avergearray(pHArray, ArrayLenth)*5.0/1024; pHValue =3.5*电压+偏移量;采样时间=毫秒(); } Serial.println("==========================================); Serial.println("我们将发送这些json数据"); //打印成json格式 Serial.println("data:{ "); Serial.print("ph:"); Serial.print(pHValue); Serial.print(" , temp:"); Serial.print(摄氏度); Serial.println("} "); Serial.println(""); Serial.println("开始发送数据"); String contentType ="application/json"; String AuthorizationData ="Bearer " + deviceToken; //设备令牌 int len =loadBuffer(celsius,pHValue); Serial.println("发送温度:"+String(celsius) +" and ph:"+String(pHValue)); Serial.println("发送 POST 到 ARTIK Cloud API");客户端开始请求(); client.post("/v1.1/messages"); //, contentType, buf client.sendHeader("Authorization", AuthorizationData); client.sendHeader("Content-Type", "application/json"); client.sendHeader("Content-Length", len); client.endRequest();客户端打印(缓冲); // 从 api 打印响应 int statusCode =client.responseStatusCode();字符串响应 =client.responseBody(); Serial.println(""); Serial.print("状态码:"); Serial.println(statusCode); Serial.print("响应:"); Serial.println(响应);延迟(1000); // 更新延迟 }/*Init Connection to Wifi*/void startWifi(){ Serial.println("Connecting MKR1000 to network..."); // WiFi.begin(); // 尝试连接到 Wifi 网络:while ( status !=WL_CONNECTED ) { Serial.print("Attempting to connect to WPA SSID:"); Serial.println(WIFI_AP); WiFi.begin(WIFI_AP, WIFI_PWD); // 等待 10 秒连接:delay(10000);状态 =WiFi.status(); }}/*DfRobot pH计源*/double avergearray(int* arr, int number){ int i;整数最大值,最小值;双平均;多头数量=0; if(number<=0){ Serial.println("数组平均的错误号!/n");返回0; } if(number<5){ //小于5,直接计算统计 for(i=0;imax){ 数量+=max; //arr>max max=arr[i]; }else{ 金额+=arr[i]; //min<=arr<=max } }//if }//for avg =(double)amount/(number-2); }//if return avg;}/*Buffer to send on REST*/int loadBuffer(float temp, float ph ) { StaticJsonBuffer<200> jsonBuffer; // 在内存中保留位置 JsonObject&root =jsonBuffer.createObject(); // 创建根对象 root["sdid"] =deviceID; root["type"] ="message"; JsonObject&dataPair =root.createNestedObject("data"); // 创建嵌套对象 dataPair["temp"] =temp;数据对[“ph”] =ph; root.printTo(buf, sizeof(buf)); // JSON-print to buffer return (root.measureLength()); // 也返回长度 } 

示意图

MKR1000 和传感器的面包板连接

制造工艺

  1. 使用 SaaS 和云需要仔细的数据整理
  2. 云无限,以及超越
  3. 云应用监控与您
  4. 使用 Cloud Linux 的安全性和重要好处
  5. Python 和 Raspberry Pi 温度传感器
  6. 使用 Moteino 和 Raspberry Pi 监测室温
  7. DIY:HomeBrew 的温度监控和调节
  8. 使用树莓派远程监测天气
  9. 室内空气质量和垃圾监测系统
  10. 使用 Arduino 和智能手机的 DIY 电压表
  11. 使用 Alexa 和 Arduino IoT Cloud 完全控制您的电视
  12. 使用气体监测解决方案的应用和好处