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

식물 커뮤니케이터

구성품 및 소모품

Arduino MKR IoT 번들
× 1

앱 및 온라인 서비스

자피어
ThingSpeak API

이 프로젝트 정보

참고:이 튜토리얼은 오래되었을 수 있습니다. 여기 최신 버전의 경우

소개

영국 시인 윌리엄 워즈워스가 한 번 말했듯이

"당신의 마음은 정원이고, 당신의 생각은 씨앗이며, 수확은 꽃이나 잡초가 될 수 있습니다."

당신의 식물을 살아있게 유지하는 것은 의사 소통이 매우 나쁘기 때문에 꽤 어려울 수 있습니다.

그들을 행복하게 하는 한 가지 방법은 식물을 가져오는 것입니다. 하지만 겨울 재킷 주머니에서 튀어나온 큰 선인장이나 고사리를 들고 다니고 싶지 않을 수도 있습니다. 또한 대부분의 식물은 추위를 싫어합니다.

Spider Plant와 통신하기 위해 몇 달을 보낸 후, 우리는 포기하고 MKR IoT Bundle 구성 요소를 사용하여 대신 모든 식물의 웰빙을 원격으로 조사하는 장치를 만들었습니다.

간단히 말해서:

이 실험에서는 식물을 보호하는 방법과 Arduino 마술을 사용하여 식물이 생존하는지 확인하는 방법을 배웁니다.

수분, 온도 및 빛을 모니터링하여 식물이 행복한지 확인할 수 있습니다. 매일 이메일과 그래프를 보내고 필요 사항을 알릴 수 있습니다.

구성 요소

<울>
  • TMP36 온도 센서
  • <울>
  • 포토트랜지스터
  • <울>
  • DIY 수분 센서
  • 학습 목표

    <울>
  • Zapier 인터넷 서비스 소개
  • <울>
  • HTTP 요청 보내기
  • <울>
  • 실시간 시계 및 알람 관리
  • <울>
  • DIY 수분 센서 만들기
  • <울>
  • thingSpeak #ProTips로 값 표시하기
  • <울>
  • HTML 및 CSS로 이메일 스타일 지정 #ProTips
  • <울>
  • PostMan으로 API 테스트 #ProTips
  • 더 알고 싶으십니까?

    이 자습서는 MKR1000 및 IoT에 익숙해지는 일련의 실험 중 일부입니다. 모든 실험은 MKR IoT 번들에 포함된 구성 요소를 사용하여 구축할 수 있습니다.

    <울>
  • 러브 유 베개
  • <울>
  • 퍼즐 상자
  • <울>
  • 파블로프의 고양이
  • <울>
  • 너드
  • <울>
  • 식물 커뮤니케이터
  • Zapier 설정

    Zapier는 다른 앱의 API를 쉽게 관리할 수 있는 온라인 자동화 도구입니다. 여러 작업을 결합하거나 사용하려는 앱에 Arduino에서 관리할 수 없는 복잡한 API가 있는 경우 훌륭한 도구입니다.

    우리의 경우 Arduino에서 검색한 데이터를 이메일로 보내는 데 사용할 것입니다.

    다음 몇 가지 간단한 단계에 따라 자신만의 zap을 만드십시오!

    계속하려면 먼저 주어진 URL을 복사하는 후크를 테스트한 다음 계속을 눌렀을 때 표시되는 테스트 및 검토 버튼을 선택해야 합니다. 다음 매개변수를 URL에 추가하십시오.

    custom_webhook_URL?temperature=0&moisture=0&light=0&warning=0

    이제 이 URL을 복사하여 새 브라우저 페이지에 붙여넣기만 하면 됩니다.

    다음과 같은 응답이 표시되어야 합니다.

    축하합니다! 방금 http 요청을 보냈습니다!

    이것이 바로 우리가 Arduino 보드로 할 일입니다. 그러나 해당 URL을 브라우저 페이지에 붙여넣는 대신 Zapier 서버로 직접 보냅니다. 또한 이제 센서 값으로 0으로 설정된 매개변수 값을 수정할 것입니다.

    API를 테스트하고 작업하는 고급 방법은 #프로팁 페이지 하단에 있습니다.

    요청을 테스트한 후 Zap 생성을 진행할 수 있습니다.

    할 일...을 사용하여 편집을 진행합니다.

    Zapier에서 생성된 이메일을 보려면 사서함을 확인하세요. Gmail 구성의 첫 번째 단계에서 사용한 계정에서 가져옵니다.

    이사회 설정

    모든 기능을 구현하기 위해 다음 라이브러리를 사용할 것입니다.

    <울>
  • WiFi101 // 인터넷에 연결하고 네트워크를 스캔합니다.
  • <울>
  • RTCZero // 시간 트리거 이벤트 관리
  • 이 가이드에 설명된 대로 라이브러리 관리자에서 다운로드할 수 있습니다.

    Zapier의 API를 사용하려면 먼저 인증서를 업로드해야 합니다. MKR1000에서. 이는 대부분의 온라인 서비스 및 API에 적용됩니다!

    WiFi101 라이브러리에서 펌웨어 업데이터 예제를 업로드하고 hooks.zapier.com을 추가합니다. 도메인으로 이동합니다.

    > 예제> WiFi101> FirmwareUpdater  

    Arduino 웹 편집기를 사용하는 경우 이 기능은 아직 구현되지 않았으므로 Arduino 데스크톱 애플리케이션.

    HTTP 요청 보내기

    이제 Arduino 보드에서 HTTP 요청을 보낼 준비가 되었습니다.

    지금은 매개변수에 임의의 값을 설정하고 나중에 실제 센서 값으로 대체됩니다.

     부동 온도 =22; 정수 수분 =150; int 빛 =40; String warning ="경고 메시지입니다"; warning.replace(" ", "%20");  

    문자열을 인코딩해야 합니다 , HTTP 요청에서 공백을 보낼 수 없기 때문입니다. 모든 공백은 인코딩된 동등한 %20으로 대체됩니다.

    매개변수를 설정한 후 send_email()을 호출합니다. 모든 것을 문자열로 변환하고 이전에 사용한 것과 동일한 URL을 다시 작성하는 함수 그런 다음 Zapier 서버에 게시합니다.

    WiFi 자격 증명과 Zapier에서 받은 URL로 이 스케치를 채우고 업로드하세요.

    #include  #include const char* ssid =SECRET_SSID; // 네트워크 SSID(이름) const char* 암호 =SECRET_PSWD; // 네트워크 비밀번호 String httpsRequest =SECRET_REQUEST; // Zapier URL const char* host ="hooks.zapier.com"; WiFiSSL클라이언트 클라이언트; 무효 설정() { Serial.begin(9600); 동안 (! 직렬); 지연(2000); Serial.print("와이파이 연결 중:"); Serial.println(ssid); 동안 (WiFi.begin(ssid, 암호) !=WL_CONNECTED) { Serial.print("."); 지연(500); } 직렬.println(""); Serial.println("와이파이 연결됨"); } 무효 루프() { 부동 온도 =22; 정수 수분 =150; int 빛 =40; String warning ="경고 메시지입니다"; warning.replace(" ", "%20"); send_email(온도, 습기, 빛, 경고); delay(20000) } void send_email(float temperature, int 습기, int light, String warning) { // 값을 String으로 변환 String String _temperature =String(온도); 문자열 _수분 =문자열(수분); 문자열 _light =문자열(빛); 문자열 _warning =경고; if (client.connect(host, 443)) { client.println("POST" + httpsRequest + "?temperature=" + _temperature + "&moisture=" + _moisture + "&light=" + _light + "&warning=" + _warning + " HTTP/1.1"); client.println("호스트:" + 문자열(호스트)); client.println("연결:닫기"); 클라이언트.println(); 지연(1000); while (client.available()) { // 서버의 응답을 콘솔에 출력 char c =client.read(); Serial.write(c); } 클라이언트.스톱(); // 서버 연결 끊기 } else { Serial.println("클라이언트 연결 실패"); } }  

    20초마다 선택한 주소로 이메일이 전송됩니다.

    요청에 주의하십시오. Zapier는 한 달에 100건의 무료 요청만 허용합니다.

    RTC 및 알람

    MKR1000의 실시간 시계를 사용하여 매일 특정 시간에 이메일을 보낼 수 있습니다.

    이 스케치는 2017년 12월 4일 16:00에 시간과 날짜를 설정하고 매일 16:01에 알람을 트리거합니다.

    알람이 인터럽트 기능 지연을 포함할 수 없습니다 하지만 부울 변수를 사용하여 loop()에서 작업을 트리거할 수 있습니다.

    #include  RTCZero rtc; // RTC 객체 생성 /* 이 값을 변경하여 현재 초기 시간을 설정합니다. */ const byte seconds =0; const 바이트 분 =0; const 바이트 시간 =16; /* 이 값을 변경하여 현재 초기 날짜를 설정합니다. */ const byte day =4; const 바이트 월 =12; const 바이트 연도 =17; 부울 email_already_sent =거짓; 무효 설정() { Serial.begin(9600); 동안 (! 직렬); 지연(2000); rtc.begin(); // RTC 24H 형식 초기화 rtc.setTime(시, 분, 초); rtc.setDate(일, 월, 년); rtc.setAlarmTime(16, 1, 0); // Arduino가 이메일을 보낼 시간을 설정합니다. rtc.enableAlarm(rtc.MATCH_HHMMSS); rtc.attachInterrupt(alarmMatch); } 무효 루프() { if (!email_already_sent) { // send_email(); email_already_sent =사실; } } void alarmMatch() { // 알람이 울리면 트리거됩니다. Serial.println("Alarm Match!"); email_already_sent =거짓; }  

    DIY 토양 수분 센서

    토양 화분에 배치된 두 개의 전선은 토양 수분에 따라 저항이 달라지는 가변 저항기를 형성합니다. .

    이 가변저항은 분압기 구성으로 연결되며, 아두이노는 2선 사이의 저항에 비례하여 전압을 수집합니다.

    즉, 토양이 습할수록 Arduino에서 측정되는 전압이 낮아집니다.

    1 메가 옴 저항기 사용 그리고 두 개의 전선으로 DIY 토양 수분 센서를 만들 수 있습니다!

    다음 스케치를 업로드하면 센서 값을 읽을 수 있으므로 먼저 건조한 토양에서 테스트를 시작하는 것이 좋습니다. 그리고 읽은 값을 기록해 두십시오.

    해당 값은 임계값을 설정하는 데 사용됩니다. Arduino가 식물에 물이 필요할 때를 알고 긴급 이메일을 보낼 수 있도록 합니다.

    int 습기 핀 =A2; // 사용한 저항에 따라 이 threeshold를 설정합니다. // 이 값을 보정하는 가장 쉬운 방법은 건조 및 젖은 토양 모두에서 센서를 테스트하는 것입니다. int threeshold =800; 무효 설정() { Serial.begin(9600); 동안 (! 직렬); 지연(2000); } 무효 루프() { Serial.println(get_average_moisture()); 지연(5000); } int get_average_moisture() { // 더 정확한 값을 위해 평균 10개 값을 만듭니다. int tempValue =0; // 임시로 수분 값을 저장하는 변수 for (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); 지연(100); } 반환 tempValue / 10; }  

    온도 및 광 센서 추가

    두 개의 센서를 연결하려면 아래 회로도를 참조하십시오. 다음 두 함수를 사용하여 센서에서 값을 읽습니다.

    float get_temperature(){ int 판독 =analogRead(A1); 부동 전압 =판독값 * 3.3; 전압 // 1024.0; // 온도를 섭씨로 인쇄 float temperatureC =(전압 - 0.5) * 100; //도당 10mv에서 500mV 오프셋으로 변환 // 화씨로 변환 float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; 반환 온도C; } int get_light(){ int light_value=analogRead(A0); light_value를 반환합니다. }  

    temperatureF를 반환하여 화씨 단위를 사용할 수 있습니다. 온도C 대신

    #ProTip:ThingSpeak를 사용하여 값 표시

    제어 괴물 모두를 위해 수집된 모든 데이터를 다음과 같은 아름다운 그래프로 표시하는 지침이 있습니다.

    ThingSpeak 플랫폼을 사용하여 그래프를 그릴 것입니다. 시작하려면 다음 단계를 따르세요.

    ThingSpeak 라이브러리를 다운로드하고 시작해 보겠습니다. 아래 스케치는 1분마다 센서 값을 클라우드에 업로드합니다. WiFi 자격 증명과 채널의 API 키를 입력하고 업로드하기만 하면 됩니다.

    #include  #include #include "ThingSpeak.h" const char* ssid =SECRET_SSID; // 네트워크 SSID(이름) const char* 암호 =SECRET_PSWD; // 네트워크 비밀번호 WiFiClient ThingSpeakClient; 서명되지 않은 긴 myChannelNumber =356392; const char * myWriteAPIKey =SECRET_WRITE_API; int lightPin =A0; // 광 센서가 연결된 아날로그 핀 int tempPin =A1; // 아날로그 핀 TMP36의 Vout(감지) 핀은 int 습기 핀 =A2에 연결됩니다. 무효 설정() { Serial.begin(9600); 동안 (! 직렬); 지연(2000); Serial.print("와이파이 연결 중:"); Serial.println(ssid); 동안 (WiFi.begin(ssid, 암호) !=WL_CONNECTED) { Serial.print("."); 지연(500); } 직렬.println(""); Serial.println("와이파이 연결됨"); ThingSpeak.begin(ThingSpeakClient);} 무효 루프() { ThingSpeak.setField(1, get_light()); ThingSpeak.setField(2, get_temperature()); ThingSpeak.setField(3, get_average_moisture()); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); Serial.println("클라우드로 전송된 메시지"); 지연(60000); // 1분마다 값 전송 } float get_temperature() { int reading =analogRead(tempPin); 부동 전압 =판독값 * 3.3; 전압 // 1024.0; // 온도를 섭씨로 인쇄 float temperatureC =(전압 - 0.5) * 100; //도당 10mv에서 500mV 오프셋으로 변환 // 화씨로 변환 float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; 반환 온도C; }int get_average_moisture() { // 더 정확한 값을 위해 평균 10개 값을 만듭니다. int tempValue =0; // 임시로 수분 값을 저장하는 변수 for (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); 지연(10); } 반환 tempValue / 10; } int get_light() { int light_value =analogRead(A0); light_value를 반환합니다. }  

    아래의 전체 Pro 스케치에서 이 업로드를 1분마다 트리거되는 RTC 알람에 첨부하는 방법을 볼 수 있습니다.

    안타깝게도 Gmail은 삽입을 허용하지 않습니다. 그래프 iframe 이메일 본문에 있지만 아름다운 버튼으로 이메일을 통해 링크를 보낼 수 있습니다. 아래 팁을 참조하세요.

    우리는 ThingSpeak를 선택했지만 거기에는 수많은 대안이 있습니다! 예를 들어 Dweet.io 및 freeboard.io를 살펴보십시오.

    #ProTip:이메일 스타일 지정

    Zapier를 사용하면 본문에 일부 html 및 css 코드를 삽입할 수 있습니다. 이메일의. 이를 사용하여 다음과 같이 스타일리시한 이메일을 보낼 수 있습니다.

    이 결과를 얻으려면 본문 유형을 html로 변경하십시오. Zapier 인터페이스에서 맞춤 HTML 및 CSS를 추가합니다.

    이 템플릿을 복사하여 붙여넣기:

           

    HELLO !

    다음은 정원 및 #9752;

    ♨ 온도:{{querystring__temperature}} C
    ☔ 수분:{{_querystring__moisture}}
    ☀ 조명:​​{{querystring__light}}
    {{querystring__warning}}
    그래프 보기

    #ProTip:PostMan으로 API 테스트

    HTTP 요청으로 작업하는 것은 어려울 수 있습니다. 다행히도 필요한 URL을 구축하는 데 도움이 되는 많은 도구가 있습니다.

    우편 배달부가 좋은 예입니다.

    Zapier에서 제공한 초기 URL을 붙여넣고 매개변수를 추가한 후 전송하면 됩니다. 서버의 응답을 인쇄하고 URL을 작성합니다.

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

    코드

    전체 스케치
    #ProTips 전체 스케치

    회로도


    제조공정

    1. 회로 구성요소
    2. 비료
    3. 집적 회로
    4. 신뢰할 수 있는 공장 소개
    5. MOSMusic
    6. 식물 유지 관리란 무엇입니까?
    7. 대량 화학 공장에서 최대한 활용하기
    8. 드릴링 머신의 구성 요소
    9. 플랜트 유지보수 이해
    10. 내연 기관의 구성 요소