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

헬륨 및 DFRobot이 있는 무선 토양 수분 프로브

구성품 및 소모품

헬륨 원자 Xbee 모듈
× 1
헬륨 요소 액세스 포인트
× 1
DFRobot 중력:아날로그 정전식 토양 수분 센서
× 1
헬륨 Arduino/mbed 어댑터
× 1
Arduino UNO
× 1

앱 및 온라인 서비스

Arduino IDE
헬륨 대시보드

이 프로젝트 정보

무선 토양 수분 센서로 식물에 음성 제공

현실을 직시하자. 식물은 물이 부족하여 항상 죽습니다. 당신은 바쁘고 그 양치류는 바짝 말랐을 때 손을 들지 않을 것입니다. 따라서 이동 중인 식물 애호가를 위해 이 프로토타입 토양 수분 프로브는 행복하고 건강한 양치류와 무화과나무로 가는 티켓입니다.

다룰 내용

이 전체 가이드를 끝내는 데 약 60분이 소요됩니다. 우리가 다룰 내용은 다음과 같습니다.

<울>
  • DF 로봇 중력 용량성 토양 수분 센서, 헬륨 원자 프로토타이핑 모듈, 헬륨 Arduino 어댑터 및 Arduino 보드를 사용하여 완전한 토양 수분 프로브를 구성합니다(우리는 UNO를 사용했습니다).
  • <울>
  • Helium 대시보드에 헬륨 원소 및 헬륨 원자 프로토타이핑 모듈 등록 자체 저전력 광역 무선 네트워크 구축
  • <울>
  • Arduino IDE를 통해 토양 수분 프로브 프로그래밍 그 과정에서 Helium 도 설치할 것입니다. 및 ArduinoJson Arduino 라이브러리;
  • <울>
  • 토양 수분 데이터를 측정하여 거의 실시간으로 플랜트에서 헬륨 대시보드로 전송합니다. Helium HTTP 채널에 파이프합니다.
  • 괜찮은. 해보자. 구해야 할 양치류가 있습니다.

    토양 수분 프로브 구성

    먼저 감지 장치를 만들어야 합니다. 이것은 빠르고 쉽습니다. 완료되면 전체 프로브는 다음과 같아야 합니다.

    이것을 구축하려면:

    <울>
  • 먼저 Helium Atom Prototyping Module을 Helium Arduino 어댑터에 고정한 다음 이 결합된 장치를 선택한 Arduino 보드에 연결합니다. 구성해야 합니다. RX TX 점퍼 사용중인 보드에 따라. 올바른 점퍼 구성과 함께 이러한 모든 보드를 함께 고정하는 방법에 대한 자세한 내용은 여기에서 찾을 수 있습니다. 살펴보고 완료하고 돌아오십시오.
  • <울>
  • 다음으로 DF 로봇 토양 수분 프로브와 함께 제공된 3선 점퍼 케이블을 사용하여 실제 토양 수분 프로브를 헬륨 Arduino 어댑터에 연결해야 합니다. 세 가지 와이어 색상은 검정입니다. , 빨간색 , 및 파란색 . 헬륨 Arduino 어댑터에서 검은색 와이어는 GND에 연결됩니다.; 빨간색 와이어는 5V에 연결됩니다.; 및 파란색 와이어는 ADO에 연결됩니다. 헤더. 이 연결이 작동하는 방식에 대한 DFRobot 팀의 훌륭한 다이어그램이 있습니다. 배선이 올바르게 완료되면 보드는 다음과 같습니다.
  • <울>
  • 마지막으로 점퍼 케이블의 흰색 헤더를 DF 로봇 토양 수분 프로브에 연결합니다. 이것은 약간 까다로울 수 있지만 최소한의 노력으로 바로 맞아야 합니다.
  • 헬륨 원소 배포

    이제 자신만의 헬륨 네트워크를 구축할 차례입니다. 약 30초 정도 소요됩니다. (Helium에서 종단 간 응용 프로그램을 구성하는 방법과 무선 네트워킹 구성 요소를 처리하는 방법에 대해 자세히 알고 싶다면 이 아키텍처 개요부터 시작하십시오.)

    Element를 배포하고 Atom 기반 센서에 대한 네트워크 범위를 생성하려면 제공된 코드를 사용하여 전원과 라이브 이더넷 포트에 연결하기만 하면 됩니다. (참고:셀룰러 지원 요소가 있는 경우 이더넷 연결을 사용하는 것은 선택 사항이지만 백업으로 권장됩니다. ) 연결되면 일부 LED 활동이 표시됩니다. 전면 LED가 녹색으로 바뀌면 요소가 연결됩니다. (이더넷 연결 신호 ) 또는 청록색 (셀룰러 연결용 ). 여기에서 Element에 대한 짧은 비디오와 연결 방법을 볼 수 있습니다.

    헬륨 대시보드에 헬륨 원소 및 원자 등록

    이제 감지 장치가 구축되고 Helium 네트워크가 배포되었으므로 Helium 대시보드에 하드웨어를 등록할 차례입니다. 대시보드는 연결된 하드웨어 배포를 모니터링하고 관리하기 위한 Helium의 호스팅 사용자 인터페이스입니다. Helium이 배송하는 모든 하드웨어는 이미 시스템에 등록되어 있지만 누가 배포하는지 알아야 합니다.

    <울>
  • 먼저, Helium Dashboard 계정을 아직 ​​생성하지 않았다면 생성하십시오.
  • <울>
  • Atom을 등록하려면 먼저 새 Atom을 선택하세요. . UI에서 이름을 추가합니다(예:Fern Saver ) 그런 다음 MAC 주소의 마지막 4개를 입력합니다. 4자리 HVV 코드 . 저장 누르기 그리고 당신은 끝났습니다.
  • <울>
  • Element 등록도 똑같은 방법으로 하면 됩니다. 새 요소 선택 그런 다음 이름, MAC 주소의 마지막 4개를 제공합니다. 4자리 HVV 코드 . 또한 Dashboard가 지도에 표시할 수 있도록 요소의 위치를 ​​입력해야 합니다.
  • 상태 및 신호 를 보면 요소가 온라인 상태인지 확인할 수 있습니다. 대시보드:

    Helium HTTP 채널 배포

    Helium 플랫폼의 주요 기능은 채널입니다. 이는 웹 서비스(예:AWS IoT, Google Cloud IoT 및 Azure IoT) 및 프로토콜(예:MQTT)에 대한 사전 구축된 커넥터입니다. 및 HTTP ). Channels를 통해 Helium은 이러한 웹 서비스 또는 프로토콜 중 하나와 통합할 때 모든 어려운 작업을 수행했습니다. 토양 수분 프로브인 Fern Saver의 경우 HTTP 채널을 가동해 보겠습니다. 이렇게 하면 HTTP를 통해 데이터를 허용하는 모든 웹 서비스로 데이터를 파이프할 수 있습니다. 예를 들어 HTTP 채널을 사용하여 이 데이터를 IFTTT로 보내고 Fern Saver가 특정 수준 이하의 수분을 보고할 때마다 텍스트를 수신할 수 있습니다.

    이 예에서는 HTTP 서비스 테스트를 위한 편리한 무료 웹 서비스인 requestb.in으로 데이터를 보내는 HTTP 채널을 설정합니다. 아래에서 Arduino에 Sketch를 업로드할 때 이 채널 이름을 참조하게 됩니다. HTTP , 코드에서 데이터를 보낼 위치를 알 수 있습니다.

    이 채널을 얼마나 빠르고 쉽게 설정할 수 있는지는 다음과 같습니다.

    Arduino IDE 구성 및 스케치 업로드

    이제 Arduino IDE를 구성하고 필요한 라이브러리를 가져올 수 있습니다. 시작하려면:

    <울>
  • 최신 Arduino IDE를 다운로드했는지 확인합니다. 필요한 경우 여기에서 가져옵니다.
  • <울>
  • 그런 다음 두 개의 라이브러리를 추가해야 합니다. HeliumArduinoJson . 스케치 로 이동하여 IDE 내에서 라이브러리를 추가할 수 있습니다. -> 라이브러리 포함 -> 라이브러리를 관리합니다. "헬륨"을 검색하고 선택하고 설치를 누르십시오. . "ArduinoJson" 라이브러리에 대해 이와 동일한 설치 프로세스를 따르십시오. (기록할 토양 수분 날짜가 JSON 형식이기 때문에 이 라이브러리가 필요합니다.)
  • 이 작업이 완료되면 실제 Arduino 프로그래밍을 수행할 차례입니다. 업로드할 Sketch의 전체 소스는 여기 GitHub에서 찾을 수 있습니다. 다음은 완전한 Soil_Humidity.ino입니다. 스케치.

    /* * Copyright 2017, Helium Systems, Inc. * All Rights Reserved. 라이선스 정보는 LICENCE.txt를 참조하십시오. * * SEN0192 정전식 습도 * 센서를 사용하여 습도 판독값을 가져옵니다. 배선 지침:* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Sketch->Manage Libraries를 통해 다음 라이브러리를 설치합니다. * - ArduinoJson * - Helium */ #include "Board.h " #include  #include  #include  #include  // 이 채널 이름은 Helium에 배포한 채널과 일치해야 합니다. // 대시보드를 수집하여 데이터. #define CHANNEL_NAME "HTTP" // 1초 동안 지연 #define CHANNEL_DELAY 5000 // 매우 60주기(초) 보내기 #define CHANNEL_SEND_CYCLE 12 Helium helium(&atom_serial); 채널 채널(헬륨); int channel_counter;void report_status(int 상태, int 결과 =0) { if (helium_status_OK ==status) { if (result ==0) { Serial.println(F("성공")); } else { Serial.print(F("실패 - ")); Serial.println(결과); } } else { Serial.println(F("실패")); } } 무효 connect() { 동안 (!helium.connected()) { Serial.print(F("연결 중 - ")); int 상태 =helium.connect(); report_status(상태); if (helium_status_OK !=상태) { 지연(1000); } } } 무효 channel_create(const char * channel_name){ int8_t 결과; 정수 상태; do { // 연결되었는지 확인하십시오. connect(); Serial.print(F("채널 생성 - ")); 상태 =channel.begin(channel_name, &result); // 상태 및 결과 출력 report_status(status, result); if (helium_status_OK !=상태) { 지연(1000); } } 동안 (helium_status_OK !=상태 || 결과 !=0); } 무효 channel_send(const char * channel_name, 무효 const * 데이터, size_t len) { int 상태; int8_t 결과; do { // Serial.print(F("Sending - ")); 상태 =channel.send(데이터, len, &result); report_status(상태, 결과); // 서비스 오류가 반환되면 채널을 생성합니다. if (status ==helium_status_OK &&result !=0) { channel_create(channel_name); } else if (상태 !=헬륨_상태_OK) { 지연(1000); } } 동안 (helium_status_OK !=상태 || 결과 !=0); } 무효 설정() { Serial.begin(9600); Serial.println(F("시작")); 헬륨.begin(HELIUM_BAUD_RATE); channel_create(CHANNEL_NAME); 채널 카운터 =0; } #define DRY_VALUE 536 // 공기 중 촬영 #define WET_VALUE 303 // 물속에서 촬영 #define HUM_RANGE (DRY_VALUE - WET_VALUE) void loop() { Serial.print(F("Reading - ")); 부동 읽기 =analogRead(A0); 부동 백분율 =100 * (1 - (읽기 - WET_VALUE) / HUM_RANGE); Serial.print(읽기); Serial.print(" - "); Serial.println(백분율); if (--channel_counter <=0) { StaticJsonBuffer jsonBuffer; JsonObject 및 루트 =jsonBuffer.createObject(); root[F("값")] =읽기; root[F("퍼센트")] =퍼센트; 문자 버퍼[HELIUM_MAX_DATA_SIZE]; size_t 사용 =root.printTo(버퍼, HELIUM_MAX_DATA_SIZE); channel_send(CHANNEL_NAME, 버퍼, 사용됨); channel_counter =CHANNEL_SEND_CYCLE; } 지연(CHANNEL_DELAY); } 

    헬륨 사용 및 ArduinoJson 라이브러리 설치, 새 스케치 만들기(파일 -> 새로 만들기 Arduino IDE 내에서) 위의 코드를 붙여넣습니다. 그런 다음 USB 케이블을 통해 워크스테이션에 연결된 완전한 토양 수분 프로브 하드웨어 패키지로 업로드를 누르십시오. 단추.

    Atom Prototyping Module의 LED는 잠시 후 깜박이기 시작해야 합니다. 이것은 Helium 네트워크에 연결하는 Atom입니다(이전에 배포한 Element를 통해). 코드를 업로드할 때 Arduino IDE에서 오류가 발생하지 않으면 성공한 것이며 토양 수분 프로브가 이제 판독값을 생성하는 것입니다.

    토양 수분 데이터에 대한 참고 사항

    위에서 언급했듯이 이 스케치는 토양 수분 데이터를 캡처하고 JSON으로 인코딩합니다. <코드> 헬륨 플랫폼으로 보내기 전에. 위의 Sketch를 사용하면 하나의 데이터 포인트가 다음과 같이 보일 것입니다(예:JSON ):

    { "값":433, "퍼센트":55.5 } 

    DFRobot Gravity Capacitive Soil Moisture Sensor가 실제로 이러한 판독값을 보정된 건식 판독값과 습식 판독값 사이의 아날로그 판독값으로 캡처한다는 점은 주목할 가치가 있습니다. 여기에서 구현 및 보정 방법에 대한 자세한 내용을 확인할 수 있습니다. 보정을 약간 조정할 수 있습니다.

    Helium 대시보드에서 센서 연결 및 데이터 확인

    이제 센서가 배포되었으므로 센서가 온라인 상태이고 데이터를 전송하는지 확인할 수 있습니다. Dashboard 내에서 Atom UI를 통해 몇 가지 방법으로 이 작업을 수행할 수 있습니다. 방금 배포한 센서에 대한 보기입니다.

    <울>
  • Atom이 온라인 상태인 경우 Dashboard에 상태 및 신호가 표시됩니다. , 상태에 대한 다양한 기타 메타 데이터와 함께. 다음과 같이 보일 것입니다:
  • <울>
  • 동일한 Atom 인터페이스 아래에는 이벤트 로그 도 표시됩니다. 센서의 각 데이터 포인트와 헬륨 채널로 성공적으로 전송되었는지 여부를 보여줍니다. 위에서 언급했듯이 이들은 웹 서비스 또는 원시 프로토콜에 대한 사전 구축된 커넥터입니다. 이전에 Helium 조직을 위한 HTTP 채널을 배포했습니다. 그리고 위의 스케치는 HTTP라고 하는 이 채널로 데이터를 보내도록 토양 수분 프로브에 지시합니다. . 그러나 아래 그림의 이 예에서는 데이터를 Helium HTTP 채널로 보내고 있습니다.
  • <울>
  • 또한 디버그 들어오는 대로 판독값을 표시할 각 Atom에 대한 인터페이스입니다(이 옵션을 활성화한 경우). 다음은 대시보드 디버그 뷰어의 토양 수분 데이터입니다.
  • 다음 단계 및 도움말

    축하합니다! 여기까지가 이 가이드의 끝입니다. 이제 무선 토양 수분 프로브로 고사리의 미래를 대비할 수 있습니다. 이것은 큰 문제입니다. 당신의 양치류 감사합니다.

    헬륨과 이 하드웨어와 소프트웨어를 사용하여 센서를 프로토타이핑하는 방법에 대해 자세히 알아보려면 여기에서 시작하십시오.

    <울>
  • 헬륨 개발자 문서
  • <울>
  • 헬륨 개발자 Slack
  • <울>
  • 헬륨 개발자 포럼
  • <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Soil_Humidity.ino
  • Soil_Humidity.inoC/C++
    센서에서 헬륨 채널로 토양 수분 데이터를 보내기 시작하는 완전한 Arduino 스케치.
    /* * Copyright 2017, Helium Systems, Inc. * All Rights Reserved. 라이선스 정보는 LICENCE.txt를 참조하십시오. * * SEN0192 정전식 습도 * 센서를 사용하여 습도 판독값을 취합니다. 배선 지침:* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Sketch->Manage Libraries를 통해 다음 라이브러리를 설치합니다. * - ArduinoJson * - Helium */#include "Board.h "#include #include #include #include #define CHANNEL_NAME "Helium MQTT"// 1초 지연#define CHANNEL_DELAY 5000// 매우 보내기 60주기(초)#define CHANNEL_SEND_CYCLE 12Helium helium(&atom_serial);Channel channel(&helium);int channel_counter;voidreport_status(int status, int result =0){ if (helium_status_OK ==status) { if (result ==0) { Serial.println(F("성공")); } else { Serial.print(F("실패 - ")); Serial.println(결과); } } else { Serial.println(F("실패")); }}voidconnect(){ while (!helium.connected()) { Serial.print(F("연결 중 - ")); 정수 상태 =helium.connect(); report_status(상태); if (helium_status_OK !=상태) { 지연(1000); } }}voidchannel_create(const char * channel_name){ int8_t 결과; 정수 상태; do { // 연결되었는지 확인하십시오. connect(); Serial.print(F("채널 생성 - ")); 상태 =channel.begin(channel_name, &result); // 상태 및 결과 출력 report_status(status, result); if (helium_status_OK !=상태) { 지연(1000); } } while (helium_status_OK !=상태 || 결과 !=0);}voidchannel_send(const char * channel_name, void const * 데이터, size_t len){ int status; int8_t 결과; do { // Serial.print(F("Sending - ")); 상태 =channel.send(데이터, len, &result); report_status(상태, 결과); // 서비스 오류가 반환되면 채널을 만듭니다. if (status ==helium_status_OK &&result !=0) { channel_create(channel_name); } else if (상태 !=헬륨_상태_OK) { 지연(1000); } } 동안 (helium_status_OK !=상태 || 결과 !=0);}voidsetup(){ Serial.begin(9600); Serial.println(F("시작")); 헬륨.begin(HELIUM_BAUD_RATE); channel_create(CHANNEL_NAME); channel_counter =0;}#define DRY_VALUE 536 // 공기 중 촬영#define WET_VALUE 303 // 물 속에서 촬영#define HUM_RANGE (DRY_VALUE - WET_VALUE)voidloop(){ Serial.print(F("Reading - ")); 부동 읽기 =analogRead(A0); 부동 백분율 =100 * (1 - (읽기 - WET_VALUE) / HUM_RANGE); Serial.print(읽기); Serial.print(" - "); Serial.println(백분율); if (--channel_counter <=0) { StaticJsonBuffer jsonBuffer; JsonObject 및 루트 =jsonBuffer.createObject(); root[F("값")] =읽기; 루트[F("백분율")] =백분율; 문자 버퍼[HELIUM_MAX_DATA_SIZE]; size_t 사용 =root.printTo(버퍼, HELIUM_MAX_DATA_SIZE); channel_send(CHANNEL_NAME, 버퍼, 사용됨); channel_counter =CHANNEL_SEND_CYCLE; } 지연(CHANNEL_DELAY);}

    제조공정

    1. 토양 수분 센서 작동 및 응용
    2. QR, RFID 및 온도 확인을 통한 출입 통제
    3. 라즈베리 파이 토양 수분 센서
    4. Raspberry Pi 및 습도 센서를 사용한 수경재배
    5. Raspberry Pi 및 Python으로 로봇 구축
    6. 인내와 끈기로 이끌다
    7. Portenta 및 열전쌍 센서(MAX6675 포함)
    8. Arduino 및 MPU6050으로 서보 모터 제어
    9. U-blox LEA-6H 02 GPS 모듈(Arduino 및 Python 포함)
    10. 토양 수분을 모니터링하는 표준 디지털 카메라 및 AI