많이

STONE 디스플레이를 사용한 시계 및 홈 오토메이션

내용

  1. 상품 설명
  2. GUI 디자인

3. 회로도

  1. 암호
  2. Video

상품 설명

이 프로젝트에서 우리는 집 조명을 켜거나 끌 수 있는 시계와 자동화 시스템을 설계할 것이며 시간과 날짜를 표시하는 시계도 있습니다.

이를 위해 우리는 사용하고 있습니다 TFT 디스플레이(STONE-HMI), 이 디스플레이에는 섹션 시계와 자동화를 모두 포함할 인터페이스를 설계할 것이므로 이 도움말을 사용하여 GUI 소프트웨어인 소프트웨어가 있습니다.GUI 소프트웨어 다운로드 여기를 클릭하세요

시계 부품 설계 :-

먼저 시계 부분을 디자인합시다. 먼저 폴더 클릭에 제공된 모든 이미지를 추가해야 합니다. 여기

왼쪽에서 볼 수 있듯이 모든 이미지가 그림 파일 섹션에 추가되었습니다. 이제 이미지 '14'를 클릭하면 이미지에서 보는 것과 같은 인터페이스가 나타납니다. 이제 시간 설정을 위해 터치 구성에서 'RTC'를 선택합니다. 날짜 및 날짜 및 이 모든 구성을 먼저 '페이지에' 이미지를 설정 시 사용할 이미지 번호 6으로 추가합니다. 이제 이미지 번호 6으로 이동하여 모든 버튼과 해당 키 값을 추가합니다. 이 값은 이 형식이어야 합니다.

'1'의 경우 — 0031

'2'의 경우 — 0031

'3'의 경우 — 0031

'4'의 경우 — 0031

'5'의 경우 — 0031

'6'의 경우 — 0031

'7'의 경우 — 0031

'8'의 경우 — 0031

'9'의 경우 — 0031

'0'의 경우 — 0030

'확인'의 경우 – 00F1

그런 다음 모든 버튼에 대해 이미지 nimber-7로 버튼 효과를 추가하므로 이 부분에서 시계 설정이 완료됩니다. 더 나아가 시계 바늘을 생성해 보겠습니다.

마찬가지로 맨 위에서 다이얼 시계를 추가하고 이를 위해 먼저 모든 ,시,분 및 초침을 추가합니다. 이 손에 대한 아이콘을 만들어야 하므로 아이콘 생성기로 이동하여 이 이미지를 선택하면 섹션에서 새 폴더를 찾을 수 있습니다. 여기에서 '아이콘 파일'의 손 요구 사항에 따라 모든 아이콘을 선택해야 합니다. 그런 다음 시계 바늘 요구 사항에 따라 모든 아이콘을 선택하고 이 절차를 통해 시계의 각 바늘 중심을 선택하는 것을 잊지 마십시오. 이제 자동화 부분으로 이동해야 하며 이를 위해 위 이미지에서 볼 수 있는 것처럼 자동화 기호를 추가했습니다. 이 선택 버튼에 대해 해당 버튼을 이 자동화 아이콘 영역에 넣은 다음 ' page switch'를 image-1로 하는 이유는 이것이 자동화를 위한 이미지이기 때문입니다. 이후 추가 설계를 위해 image-1을 선택합니다.

자동화 부품 설계 :-

이를 위해 Arduino가 특정 키 값을 주소를 통해 보내도록 요구한 자동화 부분을 설계해 보겠습니다. 여기서는 모든 키 값에 '0001'을 사용합니다. Fan(ON) 버튼의 경우 '0001' 키 값을 보내고 Fan(OFF)에 대해 '0002' 키 값을 보냅니다. ) 마찬가지로 'XNUMX' 키 값을 모든 기기에 대한 모든 특정 값으로 보내고 있습니다. 여기에 또한 이 인터페이스에서 시계 인터페이스로 이동하는 데 도움이 되는 시계 GUI로 전환하는 버튼을 추가했습니다.

페이지 전환의 경우 왼쪽 상단에 있는 '버튼'을 사용하고 자동화 버튼의 경우 위에서 언급한 것처럼 첫 번째는 주소 값이고 다른 하나는 키 값인 '리턴 누름 키 값' 기능을 사용하고 있습니다. 각 자동화 버튼에 대해 서로 다른 키 값을 사용합니다.

회로도

연결에서 볼 수 있듯이 1개의 LED 라이트-2, 라이트-1가 있으며 팬의 경우 LED만 사용하고 있지만 실제 기기를 여기에 연결할 수 있습니다. 라이트-6은 Arduino, 라이트-의 핀 -D2에 연결합니다. 7는 Arduino의 핀 D5에 연결하고 유사한 팬은 Arduino와 D2에 연결합니다. 그리고 회로도에 따라 Rx 및 Tx에 대한 연결을 수행합니다. 여기에서 우리는 다음과 같이 Arduino의 핀 3에 Rx를, 핀 XNUMX에 Rx를 연결했습니다. Arduino 코드에 따라. 코드와 함께 작동하는 방법을 더 자세히 살펴보겠습니다.

직렬 통신에는 여러 유형이 있습니다. 프로젝트에서 Arduino 보드를 사용할 때 Arduino 보드 내부의 UART에서 표준 직렬 핀을 Arduino 소프트웨어 직렬 Rx Tx로 선택할 수 있으므로 직렬 TTL이라고 합니다. 이 경우 하드웨어 직렬.h 라이브러리를 사용하지만 일부 추가 핀은 Rx 또는 Tx로 작동할 수 있습니다. 예를 들어, SPI 통신 핀은 MISO, MOSI 및 선택(SC)으로 작동할 수 있지만 디지털 입력 또는 디지털 출력으로도 작동할 수 있는 핀입니다. 또는 필요한 경우 소프트웨어 직렬을 사용하여 해당 핀을 Rx, Tx로 사용할 수 있습니다. .h 라이브러리. 

코드가 어떻게 작동하는지 더 알아보자. 

코드 :- 

#포함하다 //소프트웨어 직렬 라이브러리

소프트웨어 직렬 max232(2,3);

문자 데이터; 

문자열 mystring;

정수 f = 5; // 팬용 핀

정수 l1 = 6; // light-1용 핀

정수 l2 = 7; // 라이트-2용 핀

무효 설정 ()

{

Serial.begin(115200); //여기서 Baudrate는 115200입니다.

max232.begin(115200);

핀모드(f, 출력);     

디지털 쓰기(f, LOW); 

핀모드(l1, 출력);    

디지털 쓰기(l1, LOW);

핀모드(l2, 출력);    

디지털 쓰기(l2, LOW);

}

무효 루프 ()

{

if (max232.available()>0)

 {

   데이터 = max232.read();

   mystring = mystring + 바이트(데이터) ; 

   지연 (10);

 }

else if (mystring.endsWith("101")) //팬 ON 조건

  {

    mystring = ""; 

   디지털 쓰기(f, 높음);

  }

else if (mystring.endsWith("102")) //팬 OFF 조건

  {

   mystring = ""; 

   디지털 쓰기(f,LOW);

  }

else if (mystring.endsWith("103")) // Light-1 ON 조건

  {

  mystring = ""; 

  디지털 쓰기(l1, 높음);

  }

else if (mystring.endsWith("104")) // Light-1 OFF 조건

  {

   mystring = ""; 

   디지털 쓰기(l1,LOW);

  }

else if (mystring.endsWith("105")) // Light-2 ON 조건

  {

  mystring = ""; 

  디지털 쓰기(l2, 높음);

  }

else if (mystring.endsWith("106")) // Light-2 OFF 조건

  {

   mystring = ""; 

   디지털 쓰기(l2,LOW);

  }

else if (mystring.endsWith("107")) //모든 기기에 대한 조건 ON

  {

   mystring = ""; 

   디지털 쓰기(l1, 높음);

   디지털 쓰기(l2, 높음);

   디지털 쓰기(f, 높음);

  }

else if (mystring.endsWith("108")) //모든 기기에 대한 조건 OFF

  {

   mystring = ""; 

   디지털 쓰기(l1,LOW);

   디지털 쓰기(l2,LOW);

   디지털 쓰기(f,LOW);

  }

}

일하고있는 :-

논의한 바와 같이 소프트웨어 직렬 라이브러리를 사용하여 주소를 통해 키 값을 전송하고 있습니다. 이를 위해 다음을 추가했습니다. 이 코드에서 이것은 Arduino와 STON-HMI 디스플레이를 연결하기 위한 인터페이스를 제공합니다. 그 후 우리는 LED와 팬에 사용하는 모든 출력 핀을 선언했습니다. 이러한 장치의 경우 이러한 핀을 OUTPUT으로 선언한 다음 Baud rate를 설정합니다. 소프트웨어 직렬 라이브러리의 경우. 이 모든 작업은 void 설정 부분에서 완료되었습니다. 이제 우리가 사용하는 장치에 대한 조건을 만들기 위해 이동하겠습니다. 이 부분은 void 루프에 추가됩니다. 왜냐하면 이것이 여러 번 반복될 것이기 때문입니다. 버튼을 누릅니다.

무효 루프 섹션에는 장치에 대한 네 가지 조건이 있습니다. 첫 번째 조건은 팬 켜기 및 끄기에 대한 것입니다. 여기서는 ON 조건에 대해 '0001' 키 값을 보내고 주소 '0002'을 통해 꺼짐 조건에 대해 '0001'를 보냅니다. 이 주소는 모든 장치에 대해 동일합니다. light-1용인 두 번째 장치의 경우 켜짐 상태에 대해 '0003'을, 꺼짐 상태에 대해 '0004'를 전송합니다. 마찬가지로 조명 2에 대해 켜짐 상태에 대해 '0005', 꺼짐 상태에 대해 '0006'을 보내므로 이러한 방식으로 이러한 조건은 개별 장치에 대해 작동합니다.

이를 위해 한 번에 모든 장치를 끄거나 켜는 조건이 하나 더 있습니다. ON에는 '0007'을 사용하고 OFF에는 '0008'을 사용합니다.

출력 비디오 :-

이것은 이 비디오에서 이 프로젝트의 출력 비디오로 먼저 시계 설정을 보여주고 비디오에서 볼 수 있듯이 자동화 작업이 있습니다.

이것은 해당 비디오를 클릭하여 다운로드할 수 있는 출력 비디오입니다. GUI 설계에 대해 의심이 가는 경우 이와 관련된 모든 데이터를 추가했습니다. 이 경우 프로젝트 파일을 다운로드하고 직접 열 필요가 없습니다. GUI를 디자인하면 우리가 만든 디자인을 얻을 수 있습니다. 그러나 다른 GUI를 디자인하려면 모든 단계를 따라야 합니다.

암호

//이 프로젝트에 대한 자세한 정보는 다음을 방문하십시오:- wwww.electrocircuit.net //

#포함

소프트웨어 직렬 max232(2,3);

문자 데이터; 

문자열 mystring;

정수 f = 5; 

정수 l1 = 6; 

정수 l2 = 7;  

무효 설정 ()

{

Serial.begin (115200); 

max232.begin(115200);

핀모드(f, 출력); /////////빨간색////////

디지털 쓰기(f, LOW); 

핀모드(l1, 출력); ////////초록///////

디지털 쓰기(l1, LOW);

핀모드(l2, 출력); ///////파란색/////////

디지털 쓰기(l2, LOW);

}

무효 루프 ()

{

if (max232.available()>0)

 {

   데이터 = max232.read();

   mystring = mystring + 바이트(데이터) ; 

   지연 (10);

 }

else if (mystring.endsWith("101"))

  {

    mystring = ""; 

   디지털 쓰기(f, 높음);

  }

else if (mystring.endsWith("102"))

  {

   mystring = ""; 

   디지털 쓰기(f,LOW);

  }

else if (mystring.endsWith("103"))

  {

  mystring = ""; 

  디지털 쓰기(l1, 높음);

  }

else if (mystring.endsWith("104"))

  {

   mystring = ""; 

   디지털 쓰기(l1,LOW);

  }

else if (mystring.endsWith("105"))

  {

  mystring = ""; 

  디지털 쓰기(l2, 높음);

  }

else if (mystring.endsWith("106"))

  {

   mystring = ""; 

   디지털 쓰기(l2,LOW);

  }

else if (mystring.endsWith("107"))

  {

   mystring = ""; 

   디지털 쓰기(l1, 높음);

   디지털 쓰기(l2, 높음);

   디지털 쓰기(f, 높음);

  }

else if (mystring.endsWith("108"))

  {

   mystring = ""; 

   디지털 쓰기(l1,LOW);

   디지털 쓰기(l2,LOW);

   디지털 쓰기(f,LOW);

  }

}

출처 : Plato Data Intelligence