제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
|
무선 토양 수분 센서로 식물에 음성 제공
현실을 직시하자. 식물은 물이 부족하여 항상 죽습니다. 당신은 바쁘고 그 양치류는 바짝 말랐을 때 손을 들지 않을 것입니다. 따라서 이동 중인 식물 애호가를 위해 이 프로토타입 토양 수분 프로브는 행복하고 건강한 양치류와 무화과나무로 가는 티켓입니다.
다룰 내용
이 전체 가이드를 끝내는 데 약 60분이 소요됩니다. 우리가 다룰 내용은 다음과 같습니다.
<울>괜찮은. 해보자. 구해야 할 양치류가 있습니다.
토양 수분 프로브 구성
먼저 감지 장치를 만들어야 합니다. 이것은 빠르고 쉽습니다. 완료되면 전체 프로브는 다음과 같아야 합니다.
이것을 구축하려면:
<울>RX
및 TX
점퍼 사용중인 보드에 따라. 올바른 점퍼 구성과 함께 이러한 모든 보드를 함께 고정하는 방법에 대한 자세한 내용은 여기에서 찾을 수 있습니다. 살펴보고 완료하고 돌아오십시오. GND
에 연결됩니다.; 빨간색 와이어는 5V
에 연결됩니다.; 및 파란색 와이어는 ADO
에 연결됩니다. 헤더. 이 연결이 작동하는 방식에 대한 DFRobot 팀의 훌륭한 다이어그램이 있습니다. 배선이 올바르게 완료되면 보드는 다음과 같습니다.<울>
헬륨 원소 배포
이제 자신만의 헬륨 네트워크를 구축할 차례입니다. 약 30초 정도 소요됩니다. (Helium에서 종단 간 응용 프로그램을 구성하는 방법과 무선 네트워킹 구성 요소를 처리하는 방법에 대해 자세히 알고 싶다면 이 아키텍처 개요부터 시작하십시오.)
Element를 배포하고 Atom 기반 센서에 대한 네트워크 범위를 생성하려면 제공된 코드를 사용하여 전원과 라이브 이더넷 포트에 연결하기만 하면 됩니다. (참고:셀룰러 지원 요소가 있는 경우 이더넷 연결을 사용하는 것은 선택 사항이지만 백업으로 권장됩니다. ) 연결되면 일부 LED 활동이 표시됩니다. 전면 LED가 녹색으로 바뀌면 요소가 연결됩니다. (이더넷 연결 신호 ) 또는 청록색 (셀룰러 연결용 ). 여기에서 Element에 대한 짧은 비디오와 연결 방법을 볼 수 있습니다.
헬륨 대시보드에 헬륨 원소 및 원자 등록
이제 감지 장치가 구축되고 Helium 네트워크가 배포되었으므로 Helium 대시보드에 하드웨어를 등록할 차례입니다. 대시보드는 연결된 하드웨어 배포를 모니터링하고 관리하기 위한 Helium의 호스팅 사용자 인터페이스입니다. Helium이 배송하는 모든 하드웨어는 이미 시스템에 등록되어 있지만 누가 배포하는지 알아야 합니다.
<울>MAC 주소
의 마지막 4개를 입력합니다. 4자리 HVV 코드
. 저장 누르기 그리고 당신은 끝났습니다. 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를 구성하고 필요한 라이브러리를 가져올 수 있습니다. 시작하려면:
<울>Helium
및 ArduinoJson
. 스케치 로 이동하여 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를 통해 몇 가지 방법으로 이 작업을 수행할 수 있습니다. 방금 배포한 센서에 대한 보기입니다.
<울>HTTP
라고 하는 이 채널로 데이터를 보내도록 토양 수분 프로브에 지시합니다. . 그러나 아래 그림의 이 예에서는 데이터를 Helium HTTP 채널로 보내고 있습니다.
다음 단계 및 도움말
축하합니다! 여기까지가 이 가이드의 끝입니다. 이제 무선 토양 수분 프로브로 고사리의 미래를 대비할 수 있습니다. 이것은 큰 문제입니다. 당신의 양치류 감사합니다.
헬륨과 이 하드웨어와 소프트웨어를 사용하여 센서를 프로토타이핑하는 방법에 대해 자세히 알아보려면 여기에서 시작하십시오.
<울>섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
/* * 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);}
제조공정
이 Arduino 튜토리얼에서는 최대 1.8km의 거리에서 여러 Arduino 보드 간에 장거리 무선 통신을 할 수 있는 HC-12 무선 직렬 통신 모듈을 사용하는 방법을 배웁니다. 자세한 내용은 다음 동영상을 보거나 아래에 작성된 튜토리얼을 참조하세요. 개요 이 튜토리얼에서는 HC-12 모듈을 연결하고 두 Arduino 간의 기본 통신을 만드는 방법을 설명하는 두 가지 기본 예제와 첫 번째 Arduino에서 가속도계 센서를 사용하여 두 번째 Arduino에서 스테퍼의 위치를 무선으로 제어하는 추가 예제를 만들었습니다.
Arduino 기반 스마트 관개 시스템 인도는 인구의 70%가 생계를 농업에 의존하는 국가입니다. 오늘날 모든 작업은 기계를 사용하여 가장 쉬운 방법으로 수행됩니다. 의심할 여지 없이 자동화는 생산성을 높이고 많은 시간과 노력을 절약합니다. 관개는 농업 분야에 대한 투자로부터 최대의 이익을 얻기 위한 농업의 가장 중요한 부분입니다. 그러나 농부들이 작업을 쉽게 하기 위해 농업 분야에서 사용할 수 있는 몇 가지 기계가 있습니다. 불행히도, 그러한 기계는 높은 비용으로 인해 농부들이 감당할 수 없습니다. 농업용으로 쉽게 사용할 수 있