산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

MKR1000 및 ARTIK Cloud를 사용한 수질 모니터링

구성품 및 소모품

Arduino MKR1000
× 1
점퍼 와이어(일반)
× 1
DFRobot pH 측정기
× 1
저항 4.75k 옴
× 1
온도 프로브
× 1

앱 및 온라인 서비스

Samsung ARTIK Cloud for IoT
Arduino IDE

이 프로젝트 정보

I. 목표

이 프로젝트의 주요 목표는 Samsung ARTIK Cloud를 사용하여 수영장의 pH와 온도 수준을 모니터링하는 것입니다.

Ⅱ. ARTIK 클라우드 설정

1단계. 새 기기 만들기

ARTIK Cloud에 가입하세요. 개발자 사이트로 이동하여 새 "기기 유형"을 만듭니다.

원하는 디스플레이와 고유한 이름을 입력하십시오.

새 매니페스트 만들기

필드 이름 및 기타 설명 입력

저장을 클릭한 다음 매니페스트 탭 활성화로 이동합니다.

ACTIVE MANIFEST 버튼을 클릭하여 완료하면 여기로 리디렉션됩니다.

장치 유형 생성을 완료했습니다!

이제 해당 장치를 사용할 애플리케이션을 만들 수 있습니다.

2단계. 애플리케이션 만들기

ARTIK 클라우드 애플리케이션으로 이동합니다.

새 신청서 클릭

원하는 애플리케이션 이름과 인증 리디렉션 URL을 입력하세요.

인증 리디렉션 URL이 필요합니다. 이 응용 프로그램의 사용자를 인증하는 데 사용되므로 로그인이 필요한 경우 이 URL로 리디렉션됩니다.

샘플은 http://localhost/index/를 사용했습니다.

이제 읽기 및 쓰기에 대한 애플리케이션 권한을 설정하고 장치로 이동한 다음 저장하십시오.

축하합니다. 이제 지원이 완료되었습니다!

이제 해당 애플리케이션을 연결해 보겠습니다.

3단계. 기기 연결

내 기기로 이동하여 다른 기기 연결을 클릭합니다.

이전에 생성한 새 장치 유형을 클릭한 다음 장치 연결을 클릭하십시오.

연결된 기기 설정을 클릭합니다.

프로그램에서 필요하므로 이 정보를 기록해 두십시오.

이제 연결된 장치로 이동합니다.

ARTIK Cloud 설정을 완료했습니다. 하드웨어가 가동되면 차트에 데이터가 표시됩니다.

III. 하드웨어 센서 설정

1단계. 온도 및 pH 센서를 MKR1000에 연결합니다.

다음은 도표입니다:

<울>
  • 임시 GND에서 MRK1000 GND로
  • <울>
  • MKR1000 디지털 핀 1에 대한 온도 출력
  • <울>
  • VCC를 MKR1000 5V로 임시
  • <울>
  • 4.7K 저항을 Temp VCC 및 Temp OUT에 연결
  • <울>
  • pH GND ~ MRK1000 GND
  • <울>
  • MKR1000 아날로그 핀 1에 대한 pH 출력
  • <울>
  • pH VCC ~ MKR1000 5V
  • 여기 내 샘플 배선이 있습니다.

    온도 센서를 쉽게 분리할 수 있도록 오디오 잭을 추가했습니다. 그러나 이것은 선택 사항입니다.

    다음은 온도 센서를 잭에 연결하는 것입니다.

    2단계. 필요한 소프트웨어 설정

    Arduino IDE로 이동하여 MKR1000 보드를 추가합니다.

    mkr1000 검색 후 설치 클릭

    필요한 라이브러리 추가

    설치할 라이브러리 검색:

    <울>
  • ArduinoJson - JSON 데이터를 ARTIK Cloud로 보내는 데 사용할 것입니다.
  • <울>
  • ArduinoHttpClient - API 연결을 위한 호스트
  • <울>
  • OneWire - 온도 센서에서 디지털 입력을 읽는 데 필요
  • <울>
  • DallasTemperature - 달라스 온도 센서 필수 라이브러리
  • 필요한 소프트웨어 추가를 완료하십시오!

    3단계. 프로그램 업로드

    이제 MKR1000을 PC/노트북에 연결하십시오.

    여기에서 GitHub에서 소프트웨어를 다운로드하십시오.

    다음 정보를 변경하십시오.

    그런 다음 소프트웨어 코드를 MKR1000에 업로드하고 모니터링을 시작합니다.

    참고:WiFi가 인터넷에 연결되어 있어야 합니다.

    IV. 필드 테스트

    우리는 사설, 공립 및 학교 수영장에 대한 하드웨어 센서를 테스트했습니다. 이러한 응답자 풀에서 데이터를 수집하여 하드웨어 기능을 분석할 수 있었습니다.

    MKR1000과 센서를 상자에 놓고 수질 오염으로부터 멀리 떨어진 수영장에 놓을 수 있습니다. 이렇게 하면 물의 품질을 모니터링하고 원하는 화학 물질을 넣어 정상화할 수 있습니다.

    곧 우리는 이 상자 안에 모든 회로를 넣는 방법과 실제 테스트 장면에 대한 튜토리얼을 업로드할 것입니다.

    V. 결과

    이 튜토리얼이 사람들이 DIY 수영장 수질 모니터링 장치를 만드는 데 도움이 되기를 바랍니다. 사람들이 얼마나 안전한지 확인하는 대신 제공되는 편의 시설에 더 집중하는 경향이 있기 때문에 수영장 수질의 지속적인 악화에 대한 인식이 높아졌으면 합니다. 또한 불필요한 자원 희생 없이 수질 검사를 보다 효율적이고 효과적으로 수행할 수 있는 수단을 제공함으로써 지역 사회에 기여할 계획입니다.

    행복한 건물! :)

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 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 에 게시된 수질 장치 모니터링 .h>#include #include  #include  #include  #include #include /**온도 센서 초기화**/#define ONE_WIRE_BUS 1 // 데이터 와이어는 ArduinoOneWire의 디지털 포트 1에 연결됩니다. oneWire(ONE_WIRE_BUS); // 모든 OneWire와 통신하도록 oneWire 인스턴스를 설정합니다. //장치(Maxim/Dallas 온도 IC뿐만 아니라)DallasTemperature sensor(&oneWire); // 달라스 온도에 대한 oneWire 참조를 전달합니다. /** ARTIK Cloud REST 초기화 **/char server[] ="api.artik.cloud"; // Samsung ARTIK Cloud API Hostint 포트 =443; // HTTPS의 경우 443 char buf[200]; // ARTIK 클라우드로 보낼 JSON을 저장할 본문 데이터 String deviceID ="artik cloud device id"; // 튜토리얼에서 생성한 장치 ID를 여기에 입력합니다. String deviceToken ="artik cloud device token"; // 여기에 튜토리얼/**pH meter initialization**/#define SensorPin A1 // pH 측정기에서 생성한 장치 토큰을 여기에 넣습니다. // 수집 횟수int pHArray[ArrayLenth]; // 센서 feedback의 평균값을 저장합니다.int pHArrayIndex=0; int status =-1;int millis_start;/**Wifi 설정**/#define WIFI_AP "wifi ssid#define WIFI_PWD "wifi 암호"WiFiSSLClient wifi; HttpClient 클라이언트 =HttpClient(와이파이, 서버, 포트); 무효 설정(무효) { millis_start =millis(); Serial.begin(9600); 시작와이파이(); //와이파이 연결 시작}void loop(void) { /*현재 온도 구하기*/ float celsius =0; sensor.requestTemperatures(); // 온도를 구하는 명령을 보냅니다. celsius =sensor.getTempCByIndex(0); sensor.requestTemperatures(); // 온도를 구하는 명령을 보냅니다. celsius =sensor.getTempCByIndex(0); /*현재 pH 값 구하기*/ static unsigned long samplingTime =millis(); 정적 부호 없는 긴 printTime =millis(); 정적 부동 pH값, 전압; if(millis()-samplingTime> 샘플링 간격) { pHArray[pHArrayIndex++]=analogRead(SensorPin); if(pHArrayIndex==ArrayLenth)pHArrayIndex=0; 전압 =avergearray(pHArray, ArrayLenth)*5.0/1024; pH값 =3.5*전압+오프셋; 샘플링 시간=밀리(); } Serial.println("============================================); Serial.println("이 json 데이터를 보내드립니다."); //json 형식으로 출력 Serial.println("data:{ "); Serial.print("ph:"); Serial.print(pH값); Serial.print(" , temp:"); Serial.print(섭씨); Serial.println("} "); Serial.println(""); Serial.println("데이터 전송 시작"); 문자열 내용 유형 ="응용 프로그램/json"; 문자열 AuthorizationData ="Bearer" + deviceToken; //장치 토큰 int len ​​=loadBuffer(celsius,pHValue); Serial.println("보낸 온도:"+String(celsius) +" 및 ph:"+String(pHValue) ); Serial.println("ARTIK Cloud API에 POST 보내기"); 클라이언트.beginRequest(); client.post("/v1.1/messages"); //, contentType, buf client.sendHeader("Authorization", AuthorizationData); client.sendHeader("콘텐츠 유형", "응용 프로그램/json"); client.sendHeader("콘텐츠 길이", len); 클라이언트.endRequest(); client.print(buf); // API에서 응답을 인쇄합니다. int statusCode =client.responseStatusCode(); 문자열 응답 =client.responseBody(); Serial.println(""); Serial.print("상태 코드:"); Serial.println(상태 코드); Serial.print("응답:"); Serial.println(응답); 지연(1000); // 업데이트 지연 }/*Wifi 연결 초기화*/void startWifi(){ Serial.println("MKR1000을 네트워크에 연결하는 중..."); // 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;i최대){ 금액+=최대; //arr>최대 최대값=arr[i]; }else{ 금액+=arr[i]; //min<=arr<=max } }//if }//for avg =(double)amount/(숫자-2); }//if return avg;}/*REST에 보낼 버퍼*/int loadBuffer(float temp, float ph) { StaticJsonBuffer<200> jsonBuffer; // 메모리에 자리 예약 JsonObject&root =jsonBuffer.createObject(); // 루트 객체 생성 root["sdid"] =deviceID; 루트["유형"] ="메시지"; JsonObject&dataPair =root.createNestedObject("데이터"); // 중첩 객체 생성 dataPair["temp"] =temp; 데이터 쌍["ph"] =ph; root.printTo(buf, sizeof(buf)); // JSON-버퍼로 출력 return (root.measureLength()); // 길이도 반환 } 

    회로도

    MKR1000과 센서의 브레드보드 연결

    제조공정

    1. SaaS 및 클라우드를 사용하려면 신중한 데이터 랭글링이 필요합니다
    2. 무한한 클라우드를 넘어
    3. Cloud Application Monitoring과 귀하
    4. Cloud Linux 사용의 보안 및 중요한 이점
    5. Python 및 Raspberry Pi 온도 센서
    6. Moteino와 Raspberry Pi로 실내 온도 모니터링
    7. DIY:HomeBrew의 온도 모니터링 및 규정
    8. Raspberry Pi를 사용한 원격 날씨 모니터링
    9. 실내 공기질 및 쓰레기 모니터링 시스템
    10. 가스 모니터링 솔루션 사용의 적용 및 이점