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

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

자동 플랜트 물주기 시스템 – 전체 소스 코드, 회로 및 프로젝트 보고서 – PDF 다운로드

소개

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

기본적으로 시스템은 센서의 수분 수준이 지정된 값보다 낮은 경우 토양 수분 센서가 특정 시간에 식물의 수분 수준을 감지하는 방식으로 설계 및 프로그래밍됩니다. 특정 식물의 물 필요량에 따라 미리 정의된 임계값의 다음 미리 정의된 임계값에 도달할 때까지 원하는 양의 물이 공급됩니다.

시스템은 현재 상태를 보고하고 식물에 물을 주고 탱크에 물을 추가하라는 알림 메시지를 보냅니다. 이 모든 알림은 Arduino GSM 실드를 사용하여 수행할 수 있습니다.

프로젝트 목표:

첨단 기술과 전자의 시대가 도래한 요즘, 인간의 라이프 스타일은 나보다 똑똑하고, 단순하고, 더 쉽고, 훨씬 더 편리해야 합니다. 그러므로; 일상 활동과 작업을 줄이기 위해 인간의 일상 생활에서 많은 자동화 시스템이 필요합니다. 여기에서 자동 식물 급수 시스템이라는 시스템에 대한 아이디어가 매우 유용합니다. 많은 사람들이 특히 집에서 멀리 떨어져 있을 때 정원에 있는 식물에 물을 주는 데 많은 문제에 직면하고 있습니다. 이 모델은 수백만 명의 사람들을 돕는 스마트 스위칭 장치를 만들기 위해 마이크로컨트롤러와 함께 센서 기술을 사용합니다.

가장 기본적인 형태로 시스템은 특정 시간에 식물의 수분 수준을 감지하는 토양 수분 센서가 센서의 수분 수준이 특정 식물에 따라 미리 정의된 임계값의 지정된 값보다 작으면 수분 수준이 미리 정의된 임계값에 도달할 때까지 식물에 공급되는 원하는 물의 양보다 작습니다. 시스템에는 시스템의 현재 대기를 추적하고 급수가 발생할 때 영향을 미치는 습도 및 온도 센서가 포함됩니다. 솔레노이드 밸브는 시스템의 물 흐름을 제어하고 Arduino가 수분 센서에서 값을 읽을 때 원하는 조건에 따라 솔레노이드 밸브를 트리거합니다. 또한 시스템은 현재 상태를 보고하고 물을 주는 식물에 대한 알림 메시지를 보내고 수신자로부터 SMS를 받습니다. 이 모든 알림은 Arduino GSM 실드를 사용하여 수행할 수 있습니다.

시스템 배경

식물이 여러 측면에서 모든 인류에게 매우 필수적이라는 것은 과학 책에서 학교에서 연구되었습니다. 신선한 산소를 수시로 생산하여 깨끗한 환경을 유지하기 때문입니다. 자동 식물 관수 시스템은 첨단 기술과 연결되는 일상적인 물건의 증가로 인해 훨씬 ​​더 많이 사용되는 것으로 나타났으며 이러한 시스템은 점점 더 많이 구현되고 있습니다. 집과 같은 장소와 산업 수준. 이러한 시스템의 주요 용도는 효율성과 사용 편의성입니다.

식물 관수 시스템은 다양한 유형의 센서 기술과 같은 효율적이고 신뢰할 수 있는 구성 요소를 사용하여 식물 애호가가 집에 없는 동안 집에 있는 식물을 가져갈 수 있는 기능을 제공합니다.

필요한 자동화 수준에 따라 실내 식물 관수 시스템에는 여러 가지/복잡하지 않은 유형이 있습니다.

최종 PDF 보고서(포스트 콘텐츠 끝에 무료 다운로드 링크 제공)에서 다음 섹션에 대해 자세히 설명합니다.

관련 프로젝트:ATMega 마이크로컨트롤러란 무엇이며 LED 프로젝트를 만드는 방법은 무엇입니까?

제품 및 구성 요소 사양

요구사항 ID SRS-GSM-001
제목 GSM 모듈
설명 시스템에는 수신자에게 경고 SMS를 보내고 사용자로부터 SMS를 수신하는 GSM 모듈이 포함되어 있습니다.
버전 버전 1.0
요구사항 ID SRS-마이크로컨트롤러 -001
제목 ATmega328p
설명 시스템에는 일반적으로 Arduino Uno와 함께 제공되는 마이크로 컨트롤러가 포함되어 있습니다. 이 마이크로컨트롤러는 센서의 판독값을 읽고 전체 시스템을 제어합니다.
버전 버전 1.0
요구사항 ID SRS-온도 및 습도-001
제목 DHT11
설명 시스템에는 주변의 현재 온도 및 습도 값을 추적하고 판독값을 마이크로컨트롤러로 다시 보내는 온도 및 습도 센서가 포함되어 있습니다.
버전 버전 1.0
요구사항 ID SRS-Moisture-001
제목 그로브 토양 수분 센서
설명 시스템에는 토양 수분 센서가 포함되어 있습니다. 이 센서는 토양 수분에서 판독값을 가져와 마이크로컨트롤러로 다시 보냅니다.
버전 버전 1.0
요구사항 ID SRS-LCD-001
제목 히타치 16×2 LCD
설명 시스템에는 사용자를 위한 LCD 인터페이스가 포함되어 있어 시스템의 여러 센서에서 측정한 값을 표시합니다.
버전 버전 1.0

관련 게시물:Arduino 프로그래밍:Arduino란 무엇이며 어떻게 프로그래밍합니까?

Arduino 기반 자동 식물 관수 시스템:

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

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

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

확대하려면 이미지를 클릭하세요.

위 그림의 도식은 시스템의 전반적인 동작을 설명합니다. 프로젝트는 Arduino Uno를 사용하여 모터를 제어합니다. 그것은 서보 모터의 흐름, 즉 클럭 또는 반 클럭 방향을 제어하는 ​​H-브리지로 구성됩니다. 수분 센서는 토양의 수준을 측정하고 신호를 Arduino에 보내고 물을 주어야 하는 경우 Arduino는 서보 모터를 엽니다. 그런 다음 모터/워터 펌프는 원하는 수분 수준에 도달할 때까지 식물에 물을 공급합니다.

위 그림과 같이 프로토타입을 형성하는 수분 센서는 수분 수준을 감지하고 Arduino에 신호를 보내고 Arduino는 H-bridge의 도움으로 워터 펌프를 열고 특정 식물에 물을 줍니다. 이것은 Arduino IDE 소프트웨어를 사용하여 수행됩니다.

관련 프로젝트:IC 4017 &555 타이머를 이용한 신호등 제어 전자 프로젝트

프로젝트 디자인

이 섹션은 소프트웨어 디자인 및 하드웨어 디자인에서 완료된 작업에 대해 설명합니다. 또한 시스템에 포함된 내용과 완전히 완성된 자동 식물 관수 시스템을 만들기 위해 다른 구성 요소를 선택한 이유에 대한 통찰력을 제공합니다. 선택한 구성 요소를 사용하는 시스템의 기본 개념 모델을 보여주는 그림의 다이어그램을 고려하십시오.

자동 식물 관수 시스템의 위 그림에 표시된 블록 다이어그램의 기능은 다음과 같습니다.

자세한 구성 요소 세부 정보는 pdf 파일(아래)에서 찾을 수 있습니다.

관련 프로젝트:라즈베리 파이란? Raspberry Pi를 사용하여 프로젝트 생성

하드웨어 디자인

센서 회로도

아래 그림은 센서 회로의 개략도를 보여줍니다. Arduino 아날로그 핀 A0-A3에 연결된 모든 센서. 핀 A0은 온도 및 습도 센서용으로 예약되어 있는 반면 핀 A1-A3은 습기 센서용으로 예약되어 있습니다. 모든 센서는 회로도와 같이 공통 전원 5V와 접지를 갖습니다.

LCD 회로도 :

아래 그림은 LCD의 개략도를 보여줍니다. 디지털 핀 8 – 13은 회로도에 표시된 대로 LCD용으로 예약되어 있습니다. 핀 1과 핀 3은 전원 및 접지이고 핀 2는 대비를 제어하고 전위차계와 연결된 LCD의 대비 핀입니다. LCD를 연결할 때 명심해야 할 것은 Arduino의 디지털 핀과 LCD의 데이터 핀이 올바른 순서로 연결되어야 한다는 것입니다. 그렇지 않으면 LCD는 화면에 쓰레기만 표시합니다.

솔레노이드 회로도

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

그래서, 전압이 트랜지스터의 베이스에 적용될 때. 트랜지스터는 접지로 전환되어 릴레이의 코일이 자화되고 자체적으로 일반적으로 닫힌 채널로 전환됩니다. 이로 인해 해당 특정 릴레이에 연결된 LED가 켜지고 트랜지스터 베이스에 적용된 전압이 떨어지면 트랜지스터는 다시 정상으로 전환됩니다. 릴레이의 코일이 자화되지 않고 릴레이가 다시 NO 채널로 전환되어 LED가 다시 꺼집니다.

회로의 모든 Schematic을 완성한 후 다음 단계는 Veroboard에서 구성하는 것입니다. Veroboard에서 회로를 설계하는 데는 다음과 같은 특정 원칙이 있기 때문에 미리 스트립보드 레이아웃 계획 시트에 회로를 설계하는 것이 중요합니다.

  1. 스트립보드 레이아웃 계획 시트의 오른쪽 상단에서 Vs 및 GND 전력선을 먼저 표시합니다.
  2. IC의 핀 사이에서 트랙을 자르는 것을 잊지 마십시오. 도표의 절단 부분을 X로 표시하십시오.
  3. 저항과 축 커패시터가 스트립보드에 평평하게 놓이도록 하십시오. 저항은 일반적으로 4홀 간격, 커패시터에는 8홀 간격이 필요합니다.
  4. 가능한 경우 IC의 핀 번호를 지정합니다. Veroboard의 하단은 전압이 수평으로 흐르는 구리 트랙으로 구성됩니다. 위 회로도의 다양한 Veroboard 디자인은 다음과 같습니다.

관련 프로젝트:SRF04를 사용한 전자동 수위 조절기

소프트웨어 디자인

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

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

Arduino IDE는 Arduino에 소프트웨어를 업로드하는 데 사용되었습니다. 기본 솔레노이드 회로의 경우 기본적으로 1초마다 LED를 깜박이는 간단한 프로그램을 작성했습니다. 디지털 핀 4, 5, 6 및 7은 프로그램과 회로를 테스트하는 초기에 정의되었습니다. 따라서 프로그램이 실행되면 모든 기본 초기화를 수행하고 void 설정()에서 모든 출력 핀을 정의한 다음 void 루프()로 점프하여 지속적으로 실행되고 1초마다 LED를 깜박입니다.

그 후에 다른 센서에서 판독값을 가져와 LCD에 인쇄하는 작은 프로그램이 작성되어 Arduino에 업로드되었습니다. 이를 위해 주어진 그림의 소프트웨어 흐름 섹션에서도 볼 수 있는 작은 순서도가 수행되었습니다. 프로그램이 void 루프()에 들어가면 센서에서 판독값을 가져와 모든 기본 계산을 수행하고 LCD에 인쇄합니다.

관련 기본 전자 프로젝트:LDR 및 BC 547 트랜지스터를 사용한 자동 가로등 제어 시스템

다음은 GSM 모듈용 소프트웨어를 Arduino에 업로드하는 것입니다. 이를 통해 GSM은 마이크로 컨트롤러와 통신할 수 있습니다. 모뎀 테스트는 GSM에 대한 모든 기본 초기화 및 라이브러리를 수행하고 IMEI 번호를 가져오고 Arduino와 통신을 시작하면 모뎀이 제대로 작동하는지 확인하는 초기에 수행되었습니다. 다음 단계는 기본적으로 GSM을 초기화하고 GSM 모듈이 지원할 수 있는 다른 모든 네트워크를 표시하는 네트워크 연결 테스트입니다.

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

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

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

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

관련 프로젝트:LabVIEW에서 기본적인 전기 및 전자 프로젝트를 만드는 방법은 무엇입니까?

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

모든 하드웨어 및 소프트웨어 설계를 성공적으로 마친 후에는 프로젝트 구성 및 테스트를 할 차례입니다. 보고서의 이 섹션에서는 다양한 하드웨어 설계가 구현되고 테스트되는 방법에 대해 자세히 설명합니다. 이 섹션에서는 또한 문제를 해결하고 대피하고 프로젝트를 성공적으로 빌드하는 데 중요한 소프트웨어 코드 내에 숨겨진 문제가 있는지에 대해 설명합니다. 단계별 프로세스는 건설 및 테스트 절차와 같은 아래 제공된 pdf 파일의 전체 프로젝트 보고서에서 볼 수 있습니다.

소프트웨어 테스팅

소프트웨어 테스트 단계도 프로젝트 개발의 중요한 측면입니다. 소프트웨어 테스팅은 소프트웨어 버그를 찾는 것을 목표로 프로그램이나 응용 프로그램을 실행하는 절차입니다. 마찬가지로 소프트웨어 프로그램이나 응용 프로그램이 기술 요구 사항을 충족하고 승인된 대로 작동하며 유사한 상표로 실행할 수 있는지 확인하고 확인하는 프로세스로 표현될 수 있습니다. 소프트웨어 테스트를 수행하기 위해 다양한 접근 방식이 채택되었습니다. 소프트웨어 시스템의 예상되는 동작을 완전히 설명한 SRS(소프트웨어 요구 사항 사양) 문서가 작성되었습니다.

관련 프로젝트:555 타이머를 사용한 박수 스위치 회로 전자 프로젝트

요구사항 ID SRS- 센서 -010
제목 센서
설명 시스템의 센서가 판독값을 가져와 마이크로컨트롤러로 다시 보냅니다.
버전 V 1.0
요구사항 ID SRS- 데이터 -020
제목 데이터 표시
설명 사용자가 시스템에서 판독값을 가져오려고 할 때. 디스플레이는 사용자에게 데이터를 표시해야 합니다(예:온도 및 습도 값 다음에 수분 판독값).
버전 V1.0
요구사항 ID SRS- 마이크로컨트롤러 -030
제목 마이크로컨트롤러
설명 시스템의 마이크로컨트롤러는 시스템의 모든 것을 관리하는 시스템의 두뇌 역할을 합니다.
버전 V1.0
요구사항 ID SRS- 래치 -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 시스템 센서가 판독값을 받는지 확인
REQ-020 데이터가 화면에 표시되는지 확인합니다. D
REQ-030 모든 요청에 ​​대해 100% 결과를 제공하므로 시스템의 마이크로 컨트롤러가 제대로 관리 또는 작동하는지 확인합니다. D
REQ-040 래치 회로가 해야 할 일을 하고 있는지 확인하십시오. 그것은 sin 3 입력을 받고 8 핀을 뱉어냅니다. A
REQ-050 GSM에서 SMS를 보내고 받았는지 확인 D

결과

모든 테스트가 만족스러운 결과로 완료되었습니다. 문서화해야 하는 특정 결과가 없기 때문입니다. 시스템은 습기와 현재 실내 온도 및 습도에 따라 읽는 DHT11(온도 및 습도) 센서와 함께 작동합니다. 회로에 있는 수분 센서의 판독값은 식물의 현재 수분 수준에 따라 달라집니다. 그렇지 않으면 기능면에서 회로에서 나오는 전반적인 결과가 동기 부여에 좋았습니다.

관련 게시물:Arduino PWM 프로그래밍 및 Arduino의 기능

자동 급수 설비 및 관개 시스템을 위한 최종 및 전체 소프트웨어 코드

참고: 프로젝트와 관련된 더 많은 코드는 솔레노이드 밸브를 테스트하기 위한 샘플 코드, 시스템 센서 테스트를 위한 코드, GSM 모뎀 테스트 코드, GSM 네트워크 연결 코드, GSM에서 SMS 알림 코드 보내기, GSM SMS 코드 받기,<와 같은 pdf 파일에서 찾을 수 있습니다. /P>

최종 자동 관수 플랜트 프로젝트 코드

#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);
}

Full Project Report Automatic Watering Plants System (PDF) Free Download

Automated Plant Watering System PDF 4.18MB 77 Here

관련 게시물:PCB 설계 방법(단계별 및 그림 보기)

About the author

-Department of Engineering School of Informatics &Engineering Institute of Technology, Blanchardstown Dublin 15


산업기술

  1. 검증된 시스템에서 발생할 수 있는 오류
  2. 동작 감지 자동 도어 개방 시스템 회로 및 작동
  3. Arduino 알람 시스템:SERENA
  4. Arduino를 사용한 자동 식물 관수 시스템
  5. 가정용 식물 관수 시스템
  6. 자동 급수 시스템
  7. 제어 시스템 마이그레이션 프로젝트에서 살아남기
  8. 알아두어야 할 일반적인 전기 규정 위반
  9. 자동변속기의 이해
  10. 자동 윤활 시스템의 이해