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

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

자동 식물 급수 시스템 – 전체 소스 코드, 회로도 & 프로젝트 보고서 – PDF 다운로드

소개

식물 급수 관련 일상 작업은 가장 중요한 재배 관행이자 가장 노동 집약적인 작업입니다. 날씨가 너무 덥거나 춥거나, 너무 건조하거나 습하거나 상관없이 식물에 도달하는 물의 양을 제어하는 것은 매우 중요합니다. 따라서 식물이 필요할 때 물을 주는 자동 식물 급수 시스템 아이디어를 사용하는 것이 효과적입니다. 이 프로젝트의 중요한 측면은 "언제, 얼마나 물을 줄 것인가"입니다. 사람이 식물에 물을 주는 수작업을 줄이기 위해 식물 급수 시스템 아이디어가 채택되었습니다. 토양 수분 수준을 지속적으로 모니터링하고 급수가 필요한지, 식물 토양에 얼마나 많은 물이 필요한지 결정하는 방법이 사용됩니다. 이 프로젝트는 전원 공급, 릴레이, 솔레노이드 밸브, 아두이노 GSM 쉴드, 토양 수분 센서, LCD 등의 서브시스템으로 구성될 수 있습니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

본질적으로 시스템은 토양 수분 센서가 특정 시점에 식물의 수분 수준을 감지하고, 센서의 수분 수준이 특정 식물의 물 필요량에 따라 미리 정의된 임계값보다 낮으면 미리 정의된 임계값에 도달할 때까지 원하는 양의 물이 공급되도록 설계 및 프로그래밍되었습니다.

시스템은 현재 상태를 보고하고 식물 급수 알림 메시지 및 물탱크 물 보충 알림을 보냅니다. 이 모든 알림은 아두이노 GSM 쉴드를 통해 수행할 수 있습니다.

프로젝트 목적:

첨단 기술과 전자공학의 시대에 인간의 생활 방식은 더 스마트하고, 단순하며, 쉽고, 훨씬 더 편리해야 합니다. 따라서 인간의 일상 루틴에서 일상 활동과 일을 줄이기 위한 많은 자동화 시스템이 필요합니다. 여기 그런 시스템 중 하나인 자동 식물 급수 시스템 아이디어가 매우 유용합니다. 많은 사람들이 집을 비웠을 때 정원 식물에 물 주는 문제를 겪고 있습니다. 이 모델은 센서 기술과 마이크로컨트롤러를 사용하여 수백만 명의 사람들을 돕는 스마트 스위칭 장치를 만듭니다.

가장 기본적인 형태로, 시스템은 토양 수분 센서가 특정 시점에 식물의 수분 수준을 감지하고, 센서의 수분 수준이 특정 식물에 따라 미리 정의된 임계값보다 낮으면 식물의 수분 수준이 미리 정의된 임계값에 도달할 때까지 원하는 양의 물이 공급되도록 프로그래밍됩니다. 시스템에는 시스템의 현재 대기를 추적하고 급수 시점에 영향을 주는 온습도 센서가 포함됩니다. 솔레노이드 밸브가 시스템의 물 흐름을 제어하며, 아두이노가 수분 센서에서 값을 읽으면 원하는 조건에 따라 솔레노이드 밸브를 트리거합니다. 또한 시스템은 현재 상태를 보고하고 식물 급수 알림 메시지를 보내며 수신자로부터 SMS를 받습니다. 이 모든 알림은 아두이노 GSM 쉴드를 통해 수행됩니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

시스템 배경

과학 교과서에서 식물이 주기적으로 신선한 산소를 생성하여 환경을 깨끗하게 유지하는 등 인류에 여러 면에서 매우 중요하다는 것을 배웠습니다. 자동 식물 급수 시스템은 일상 사물이 첨단 기술과 연결됨에 따라 점점 더 많이 보급되고 있으며, 이러한 시스템은 가정 및 산업 수준에서 증가하는 속도로 구현되고 있습니다. 이러한 시스템의 주된 용도는 효율성과 사용 편의성입니다.

식물 급수 시스템은 효율적이고 신뢰할 수 있는 다양한 센서 기술을 사용하여 식물 애호가들이 집을 비웠을 때 집 식물을 돌볼 수 있게 해줍니다.

필요한 자동화 수준에 따라 여러 가지 단순하고 직관적인 실내 식물 급수 시스템 유형이 있습니다.

최종 PDF 보고서(글 마지막에 무료 다운로드 링크 제공)에는 다음 섹션이 자세히 설명되어 있습니다.

제품 및 구성 요소 사양

요구사항 ID SRS-GSM-001
제목 GSM 모듈
설명 시스템에 GSM 모듈이 포함되어 수신자에게 알림 SMS를 보내고 사용자로부터 SMS를 수신합니다.
버전 Version 1.0
요구사항 ID SRS-Microcontroller-001
제목 ATmega328p
설명 시스템에 마이크로컨트롤러가 포함되어 있으며 보통 아두이노 우노와 함께 제공됩니다. 이 마이크로컨트롤러는 센서에서 읽기를 수행하고 전체 시스템을 제어합니다.
버전 Version 1.0
요구사항 ID SRS-Temperature and Humidity-001
제목 DHT11
설명 시스템에 온습도 센서가 포함되어 주변의 현재 온도와 습도 값을 추적하고 마이크로컨트롤러로 읽기를 전송합니다.
버전 Version 1.0
요구사항 ID SRS-Moisture-001
제목 그로브 토양 수분 센서
설명 시스템에 토양 수분 센서가 포함되어 토양의 수분 읽기를 수행하고 마이크로컨트롤러로 전송합니다.
버전 Version 1.0
요구사항 ID SRS-LCD-001
제목 히타치 16×2 LCD
설명 시스템에 사용자용 LCD 인터페이스가 포함되어 시스템의 다양한 센서가 수행한 읽기를 표시합니다.
버전 Version 1.0

아두이노 기반 자동 식물 급수 시스템:

자동 식물 급수 블록 다이어그램

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

자동 식물 급수 및 관개 시스템 회로도

이 시스템에는 수분 센서와 모터/워터 펌프라는 두 가지 기능적 구성 요소가 있습니다. 가장 기본적인 형태로 수분 센서가 토양 수분 수준을 감지하면 모터/워터 펌프가 식물에 물을 공급합니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

위 그림의 회로도는 시스템의 전반적인 동작을 설명합니다. 프로젝트는 아두이노 우노를 사용하여 모터를 제어합니다. H-브리지가 서보 모터의 흐름(시계 방향 또는 반시계 방향)을 제어합니다. 수분 센서가 토양 수준을 측정하고 아두이노에 신호를 보내면 아두이노가 급수가 필요한 경우 서보 모터를 엽니다. 그러면 모터/워터 펌프가 원하는 수분 수준에 도달할 때까지 식물에 물을 공급합니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

위 그림의 프로토타입에서 수분 센서가 수분 수준을 감지하고 아두이노에 신호를 보내면 아두이노가 H-브리지의 도움으로 워터 펌프를 열어 해당 식물에 물을 줍니다. 이는 아두이노 IDE 소프트웨어를 사용하여 수행됩니다.

프로젝트 설계

이 섹션은 소프트웨어 설계와 하드웨어 설계에서 완료된 작업에 대해 다룹니다. 또한 시스템에 포함된 내용과 완전 자동화 식물 급수 시스템을 만들기 위해 다양한 구성 요소가 선택된 이유에 대한 통찰을 제공합니다. 선택된 구성 요소를 사용한 시스템의 기본 개념 모델을 보여주는 다이어그램을 고려해 보세요.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

위 그림의 블록 다이어그램에 표시된 자동 식물 급수 시스템의 기능은 아래와 같습니다:

더 많은 구성 요소 세부 사항은 PDF 파일에서 확인할 수 있습니다(아래 참조).

하드웨어 설계

센서 회로도

아래 그림은 센서 회로의 회로도입니다. 모든 센서가 아두이노 아날로그 핀 A0-A3에 연결되어 있습니다. 핀 A0는 온습도 센서용으로 예약되었고, 핀 A1-A3는 수분 센서용으로 예약되었습니다. 모든 센서는 회로도에 표시된 것처럼 공통 전원 5V와 그라운드를 가집니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

LCD 회로도:

아래 그림은 LCD 회로도입니다. 디지털 핀 8-13이 회로도에 표시된 것처럼 LCD용으로 예약되었습니다. 핀 1과 핀 3은 전원과 그라운드이고, 핀 2는 LCD의 대비 핀으로 대비도를 제어하며 가변저항과 연결됩니다. LCD 연결 시 아두이노 디지털 핀과 LCD 데이터 핀이 올바른 순서로 연결되어야 한다는 점을 명심하세요. 그렇지 않으면 LCD에 쓰레기 값만 표시됩니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

솔레노이드 회로도

아래 그림은 솔레노이드 회로의 회로도입니다. 디지털 핀 4-7이 솔레노이드용으로 예약되었습니다. 회로는 릴레이, 트랜지스터, 저항, LED로 구성되어 있습니다(CadStar에 솔레노이드 심볼이 없어 LED로 대체). 회로도에서 릴레이는 5V를 사용합니다. 5V는 릴레이의 NO 채널로도 들어가는데, 이는 회로도에서 LED가 솔레노이드를 대체하여 5V로 작동하고 220옴 저항이 뒤따르기 때문입니다.

트랜지스터 베이스에 전압이 가해지면 트랜지스터가 그라운드로 스위칭되어 릴레이 코일이 자화되고 NC 채널로 스위칭되어 해당 릴레이에 연결된 LED가 켜집니다. 트랜지스터 베이스에 가해진 전압이 떨어지면 트랜지스터가 정상으로 돌아가고 릴레이 코일이 탈자되어 NO 채널로 다시 스위칭되어 LED가 꺼집니다.

자동 식물 급수 및 관개 시스템: 회로 설계, 코드, 프로젝트 보고서

모든 회로 회로도를 마친 후 다음 단계는 베로보드에 구축하는 것입니다. 베로보드 레이아웃 계획 시트에 미리 회로를 설계하는 것이 중요합니다. 베로보드 회로 설계에는 다음과 같은 원칙이 있습니다:

  1. 베로보드 레이아웃 계획 시트 오른쪽 상단에 Vs와 GND 전원 라인을 먼저 표시하세요.
  2. IC 핀 사이의 트랙을 자르는 것을 기억하세요. 다이어그램에 X로 컷을 표시하세요.
  3. 저항과 축전기를 베로보드에 평평하게 놓으려고 노력하세요. 저항은 보통 4홀 간격, 커패시터는 8홀 간격이 필요합니다.
  4. 가능하면 IC 핀 번호를 매기세요. 베로보드 바닥면은 전압이 수평으로 흐르는 구리 트랙으로 구성됩니다. 위 회로도의 다양한 베로보드 설계가 아래에 표시되어 있습니다.

소프트웨어 설계

하드웨어가 완료되면 소프트웨어로 하드웨어를 테스트할 차례입니다. 이 섹션에서는 시스템 내에서 사용된 다양한 자동화/기술에 대한 소프트웨어 설계 구현을 자세히 설명합니다. 여기에는 작성되어 아두이노에 업로드된 아두이노 코드가 포함됩니다.

가장 먼저 한 일은 솔레노이드 회로가 작동하게 하고 마이크로컨트롤러 관점에서 솔레노이드가 어떻게 작동하는지 확인하는 것이었습니다. 이를 위해 작은 흐름도를 작성했으며 위 그림의 소프트웨어 흐름 섹션에서 볼 수 있습니다.

아두이노 IDE를 사용하여 소프트웨어를 아두이노에 업로드했습니다. 기본 솔레노이드 회로의 경우 1초마다 LED를 깜빡이는 간단한 프로그램을 작성했습니다. 디지털 핀 4, 5, 6, 7을 초기에 정의하여 프로그램과 회로를 테스트했습니다. 프로그램이 실행되면 모든 기본 초기화를 수행하고 void setup()에서 모든 출력 핀을 정의한 후 void loop()로 이동하여 1초마다 LED를 계속 깜빡입니다.

그 후, 다양한 센서에서 읽기를 가져와 LCD에 출력하는 작은 프로그램을 작성하여 아두이노에 업로드했습니다. 이를 위해 작은 흐름도를 작성했으며 위 그림의 소프트웨어 흐름 섹션에서도 볼 수 있습니다. 프로그램이 void loop()에 들어가면 센서에서 읽기를 가져와 기본 계산을 수행하고 LCD에 출력합니다.

다음으로 GSM 모듈 소프트웨어를 아두이노에 업로드하여 GSM이 마이크로컨트롤러와 통신할 수 있게 했습니다. 초기 모뎀 테스트를 수행하여 GSM의 기본 초기화와 라이브러리를 수행하고 IMEI 번호를 가져와 모뎀이 아두이노와 통신을 시작하면 제대로 작동하는지 확인했습니다. 다음 단계는 네트워크 연결 테스트로, 기본적으로 GSM을 초기화하고 GSM 모듈이 지원하는 다른 모든 네트워크를 표시합니다.

GSM 모듈이 테스트되어 제대로 작동하면 수신자와 통신하는 데 GSM 모듈을 사용할 차례입니다. 즉, 수신자에게 SMS를 보내고 그들로부터 SMS를 받습니다. 이를 위해 또 다른 간단한 아두이노 배선 프로그램을 작성하여 아두이노에 업로드했습니다. 프로그램은 GSM을 초기화하고 수신자에게 SMS를 보내는 반면, 또 다른 아두이노 프로그램은 GSM이 최종 사용자로부터 SMS를 수신하도록 작성되었습니다.

마지막으로 모든 소프트웨어 설계가 완료되면 모든 소프트웨어 설계를 병합하여 시스템을 위한 최종 작동 소프트웨어를 구축할 차례입니다. 위 그림의 소프트웨어 흐름 섹션에서 볼 수 있는 다양한 알고리즘 접근 방식이 적용되어 최종 소프트웨어가 작동하고 해야 할 일을 수행하게 했습니다. 위 그림은 읽기 수행, SMS 발송, SMS 수신, 이전 작업 반복 등 최종 소프트웨어의 작동을 보여줍니다.

참고: 모든 소프트웨어 코드는 아래 부록에서 볼 수 있습니다.

참고: 모든 소프트웨어 코드는 부록에서 볼 수 있습니다. 모뎀 테스트와 네트워크 연결 테스트의 출력은 실제 보고서가 하드웨어 제출 후에 작성되었기 때문에 보고서에 포함되지 않았습니다.

프로젝트 구축 및 소프트웨어 테스트

모든 하드웨어와 소프트웨어 설계가 성공적으로 완료되면 프로젝트 구축 및 테스트 단계입니다. 이 보고서 섹션에서는 다양한 하드웨어 설계가 어떻게 구현되고 테스트되었는지에 대한 세부 사항을 제공합니다. 이 섹션은 또한 소프트웨어 코드 내에 문제 해결과 제거가 필요했던 숨겨진 문제가 있었는지, 그리고 프로젝트를 성공적으로 구축하기 위해 어떤 과정이 있었는지 다룹니다. 단계별 과정은 아래 PDF 파일의 전체 프로젝트 보고서에서 확인할 수 있습니다(구축 및 테스트 절차).

소프트웨어 테스트

소프트웨어 테스트 단계도 프로젝트 개발의 중요한 측면입니다. 소프트웨어 테스트는 소프트웨어 버그를 찾는 것을 목표로 프로그램이나 애플리케이션을 실행하는 절차입니다. 또한 소프트웨어 프로그램이나 애플리케이션이 기술적 요구 사항을 충족하고, 예상대로 작동하며, 유사한 특성으로 실행될 수 있는지 검증하고 확인하는 과정으로 표현할 수 있습니다. 소프트웨어 테스트를 위해 다양한 접근 방식이 채택되었습니다. 소프트웨어 요구사항 명세서(SRS) 문서를 작성하여 소프트웨어 시스템의 예상 동작을 완전히 다루었습니다.

요구사항 ID SRS-Sensor-010
제목 센서
설명 시스템의 센서가 읽기를 수행하고 마이크로컨트롤러로 다시 전송합니다.
버전 V 1.0
요구사항 ID SRS-Data-020
제목 데이터 표시
설명 사용자가 시스템에서 읽기를 가져오려 할 때. 디스플레이는 사용자에게 데이터를 표시해야 합니다. 예: 온습도 값 다음에 수분 읽기.
버전 V1.0
요구사항 ID SRS-Microcontroller-030
제목 마이크로컨트롤러
설명 시스템의 마이크로컨트롤러는 시스템의 두뇌 역할을 하며 시스템의 모든 것을 관리합니다.
버전 V1.0
요구사항 ID SRS-Latch-040
제목 래치
설명 시스템의 래치는 마이크로컨트롤러의 디지털 핀을 확장합니다.
버전 V1.0
요구사항 ID SRS-GSM-050
제목 GSM
설명 마이크로컨트롤러가 지시할 때마다 시스템은 수신자에게 SMS 알림을 보내 반응합니다.
버전 V1.0

SRS 문서 작성 후 소프트웨어 설계는 정적 테스트 단계로 이동했으며, 여기에는 문서 검토가 포함됩니다. 이곳에서 요구사항 검증이 발생합니다. 네 가지 다양한 검증 방법이 아래에 정의되어 있습니다:

  1. 검사 (I): 제어 또는 시각적 검증
  2. 분석 (A): 분석적 증거 기반 검증
  3. 시연 (D): 정량적 측정 없이 운영 특성 검증
  4. 테스트 (T): 정량적 측정을 통한 정량적 특성 검증. SRS 문서의 각 요구사항에 대해 I, A, D, T 약어로 검증 방법이 정의됩니다.

검증:

요구사항 ID 요구사항 제목 방법
REQ-010 시스템 센서가 읽기를 가져오는지 확인 I
REQ-020 데이터가 화면에 표시되는지 확인 D
REQ-030 시스템 마이크로컨트롤러가 모든 요청에 100% 결과로 제대로 관리/작동하는지 확인 D
REQ-040 래치 회로가 3개 입력을 받아 8개 핀을 출력하는지 확인 A
REQ-050 GSM이 SMS를 발송하고 수신했는지 확인 D

결과

모든 테스트가 만족스러운 결과로 완료되었습니다. 문서화해야 할 특별한 결과는 없습니다. 시스템은 현재 실내 온도와 습도에 따라 읽기를 수행하는 수분 및 DHT11(온습도) 센서와 함께 작동합니다. 회로의 수분 센서 읽기도 식물의 현재 수분 수준에 따라 달라집니다. 전반적으로 기능 측면에서 회로에서 나온 결과는 동기 부여 측면에서 좋았습니다.

자동 식물 급수 및 관개 시스템 최종 전체 소프트웨어 코드

참고: 솔레노이드 밸브 테스트용 샘플 코드, 시스템 센서 테스트 코드, GSM 모뎀 테스트 코드, GSM 네트워크 연결 코드, GSM SMS 알림 발송 코드, GSM SMS 수신 코드 등 프로젝트 관련 더 많은 코드는 PDF 파일에서 확인할 수 있습니다.

최종 자동 식물 급수 프로젝트 코드

#include <dht.h> #define dht_dpin A0 dht DHT; //———————–
#include <LiquidCrystal.h> LiquidCrystal lcd (8, 9, 10, 11, 12, 13); //———————————-
int plantPotMoisture[3] = {A1, A2, A3}; //———————
#include <GSM.h> #define PINNUMBER “” GSM gsmAccess; // include a ‘true’ parameter for debug enabled GSM_SMS sms;
char remoteNumber[] = “0899506304”;
String moistureMessage = “Moisture is Low on sensor: “;
String SMS_Alert = “Sending SMS!”;
String humidityMsg = “Humidity is High. Open All Solenoids”;
String tempMsg = “Temperature is too HIGH!..Open ALl Solenoids “;
String messageBuffer = “”;
char senderNumber[20];
String stringOne = “Opens1”;
String stringTwo = “Opens2”;
String stringThree = “Opens3”;
String stringFour = “OpenAll”;
//—————
#define solenoidData 5
#define solenoidClockster 4
#define solenoidLatch 6
//—————
const int master = 0;
const int slave1 = 1;
const int slave2 = 2;
const int slave3 = 3;
boolean takeReadings = true;
int serialSolenoidOutput = 0;
void setup() {
pinMode(solenoidData, OUTPUT);
pinMode(solenoidClockster, OUTPUT);
pinMode(solenoidLatch, OUTPUT);
digitalWrite(solenoidLatch, HIGH);
digitalWrite(solenoidLatch, LOW);
shiftOut(solenoidData, solenoidClockster, MSBFIRST, 0);
digitalWrite(solenoidLatch, HIGH);
//————————-
Serial.begin(9600);
lcd.begin (16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Wait Until”);
lcd.setCursor(0, 1);
lcd.print(“GSM Initialized!”);
boolean notConnected = true;
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) notConnected = false;
else {
Serial.println(“Not connected”);
delay(1000);
}
}
}
void loop() {
if (takeReadings) {
moistureSensor();
TempAndHumidity ();
if (DHT.humidity > 50 || DHT.temperature > 25 && takeReadings ) {
takeReadings = false;
if (DHT.humidity > 50) {
sendSMS(humidityMsg);
} else if (DHT.temperature > 25) {
sendSMS(tempMsg);
}
while (!takeReadings) recieveSMS();
}
if (plantPotMoisture[0] > 30 || plantPotMoisture[1] > 30 || plantPotMoisture[2] > 30 && takeReadings) {
takeReadings = false;
if (plantPotMoisture[0] > 30) {
sendSMS(moistureMessage + “1”);
} else if (plantPotMoisture[1] > 30) {
sendSMS(moistureMessage + “2”);
} else {
sendSMS(moistureMessage + “3”);
}
while (!takeReadings) recieveSMS();
}
}
}
void moistureSensor() {
for (int i = 0 ; i < 3; i++) {
lcd.clear();
plantPotMoisture[i] = analogRead(i);
plantPotMoisture[i] = map(plantPotMoisture[i], 550, 0, 0, 100);
Serial.print(“Mositure” + i );
lcd.print(“Mositure” + i);
Serial.print(plantPotMoisture[i]);
lcd.print(plantPotMoisture[i]);
Serial.println(“%”);
lcd.print(“%”);
delay(1000);
}
}
void TempAndHumidity () {
DHT.read11(dht_dpin);
lcd.setCursor(0, 0);
lcd.print(“Humidity=”);
Serial.print(“Current humidity = “);
Serial.print(DHT.humidity);
lcd.print(DHT.humidity);
lcd.print(“%”);
Serial.print(“%”);
Serial.print(“temperature = “);
Serial.print(DHT.temperature);
Serial.println(“C”);
lcd.setCursor(0, 1);
lcd.print(“temp=”);
lcd.print(DHT.temperature);
lcd.print(“C “);
delay(1000);
lcd.clear();
}
void sendSMS(String messageToSend) {
Serial.print(“Sending a message to mobile number: “);
Serial.println(remoteNumber);
Serial.println(“SENDING”);
lcd.print(SMS_Alert);
Serial.println();
Serial.println(“Message:”);
Serial.println(messageToSend);
sms.beginSMS(remoteNumber);
sms.print(messageToSend);
sms.endSMS();
Serial.println(“\nCOMPLETE!\n”);
lcd.clear();
lcd.print(“Completed!!!”);
}
void recieveSMS() {
char c;
if (sms.available()) {
lcd.clear();
lcd.print(“Message received from:”);
delay(800);
lcd.clear();
sms.remoteNumber(senderNumber, 20);
lcd.print(senderNumber);
while (c = sms.read()) {
Serial.println(c);
messageBuffer += c;
}
Serial.println(messageBuffer);
if (messageBuffer == stringOne) {
toggleSolenoid1();
takeReadings = true;
} else if (messageBuffer == stringTwo) {
toggleSolenoid2();
takeReadings = true;
} else if (messageBuffer == stringThree) {
toggleSolenoid3();
takeReadings = true;
} else if (messageBuffer == stringFour) {
toggleAll();
takeReadings = true;
} else {
takeReadings = true;
}
messageBuffer = “”;
Serial.println(“\nEND OF MESSAGE”);
// Delete message from modem memory
sms.flush();
Serial.println(“MESSAGE DELETED”);
}
delay(1000);
}
void toggleSolenoid1() {
solenoidWrite(master, HIGH);
delay(1000);
solenoidWrite(slave1, HIGH);
delay(1000);
solenoidWrite(slave1, LOW);
delay(1000);
solenoidWrite(master, LOW);
delay(1000);
}
void toggleSolenoid2() {
solenoidWrite(master, HIGH);
delay(1000);
solenoidWrite(slave2, HIGH);
delay(1000);
solenoidWrite(slave2, LOW);
delay(1000);
solenoidWrite(master, LOW);
delay(1000);
}
void toggleSolenoid3() {
solenoidWrite(master, HIGH);
delay(1000);
solenoidWrite(slave3, HIGH);
delay(1000);
solenoidWrite(slave3, LOW);
delay(1000);
solenoidWrite(master, LOW);
delay(1000);
}
void toggleAll() {
solenoidWrite(master, HIGH);
delay(1000);
solenoidWrite(slave1, HIGH);
delay(1000);
solenoidWrite(slave2, HIGH);
delay(1000);
solenoidWrite(slave3, HIGH);
delay(1000);
solenoidWrite(slave1, LOW);
delay(1000);
solenoidWrite(slave2, LOW);
delay(1000);
solenoidWrite(slave3, LOW);
delay(1000);
solenoidWrite(master, LOW);
delay(1000);
}
void solenoidWrite(int pin, bool state) {
if ( pin >= 0 && pin < 8) {
if (state) serialSolenoidOutput |= (1 << pin);
else serialSolenoidOutput &= ~(1 << pin);
}
digitalWrite(solenoidLatch, LOW);
shiftOut(solenoidData, solenoidClockster, MSBFIRST, serialSolenoidOutput);
digitalWrite(solenoidLatch, HIGH);
}

자동 식물 급수 시스템 전체 프로젝트 보고서 (PDF) 무료 다운로드

저자 소개

-공학부 정보학 및 공학부 기술 연구소, 블랜차드스타운 더블린 15

산업기술

  1. 검증된 전기 시스템의 흔한 고장 모드
  2. PIR 센서 구동 자동문 개방 시스템: 회로, 작동 및 응용
  3. SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템
  4. 아두이노 자동 식물 급수 시스템 – 떠날 때도 안심하는 스마트 가드닝
  5. 아두이노 나노 기반 스마트 홈 식물 자동 급수 시스템
  6. 아두이노 기반 스마트 자동 급수 시스템: 토양 수분 감지·솔레노이드 밸브 제어
  7. 제어 시스템 마이그레이션 성공: 원활한 전환을 위한 전문가 전략
  8. 가정 안전을 위해 반드시 피해야 할 주요 전기 코드 위반 사항
  9. 자동 변속기 시스템 종합 가이드: 종류, 부품, 작동 원리
  10. 자동 급유 시스템(ALS) 완벽 가이드: 종류·구성·작동·장단점 총정리