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

SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템

부품 및 소모품

부품 수량
Arduino Mega 2560 1
3.2" TFT LCD 터치스크린 1

앱 및 온라인 서비스

프로젝트 소개

기존 알람 시스템들을 살펴보고 어떻게 작동하는지 분석한 후, 나만의 더 나은 시스템을 만들어보기로 했습니다. 컴퓨터 공학 전공자(학부생, 곧 졸업)로서 당연한 도전이었습니다.

이 프로젝트의 탄생

여러 시스템의 기능을 검토하고 내가 원하는 기능들을 단일 아두이노 보드에 통합해 알람 제어 패널로 만들기로 했습니다. 복잡한 건 없습니다. 보드와 3.2" 터치스크린만 구매하면 됩니다. 화면 구동을 위해 Henning Carlsen의 라이브러리(UTFT, URTouch)를 사용했습니다. 라이브러리 제공에 감사드립니다!

프로그램

완성하는 데 꽤 시간이 걸렸습니다. 코드가 복잡해 보여도 필요한 곳에 주석을 다 달아두었습니다!

알람 주요 기능

세 가지 다른 비밀번호를 구현했습니다: 4자리, 5자리, 6자리. 많아 보이지만 향후 업데이트에서 4자리 비활성화 옵션을 추가할 예정입니다.

자동 무장(Auto-arm) 기능: 5자리 코드 입력 후 카운트다운(기본 40초) 시작. 시간 초과 시 자동으로 다시 무장됩니다. 평소 알람 무장하는 걸 잊는 분들에게 유용합니다.

옵션 메뉴

옵션 메뉴에서 세 가지 비밀번호 모두 변경 가능하며, 자동 무장 시간도 설정할 수 있습니다.

향후 업데이트 예정 사항

시연 영상

(영상 링크)

코드

SERENA v.1.01 (아두이노)

아두이노 보드에 업로드만 하면 됩니다. 일부 주석은 그리스어로 되어 있는데 곧 변경할 예정입니다.


////////////////////////////////////////////////////////////////////////////////
// SERENA Alarm System
// Author: Michael Marinis
// Copyright (C)2016 Michael Marinis. All Rights Reserved
// Website: https://www.youtube.com/SauROnmiKE
//
// UTFT & URTouch 라이브러리(Henning Karlsen) 및 호환 LCD 실드 필요
////////////////////////////////////////////////////////////////////////////////

#include <UTFT.h>
#include <URTouch.h>

UTFT myGLCD(ITDB32WC, 38, 39, 40, 41);
URTouch myTouch(6, 5, 4, 3, 2);

extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

int x, y;
int armpass[4] = {1, 2, 3, 4};       // 4자리 무장 비번
int autopass[5] = {1, 2, 3, 4, 5};   // 5자리 자동무장/해제 비번
int manualpass[6] = {1, 1, 1, 1, 1, 1}; // 6자리 완전해제 비번
int timeinput[4], arminput[4], autoinput[5], manualinput[6];
int autolength = 0, manuallength = 0;
int buzzerpin = 8, systarm = 9, serenapin = 10, buttonpin = 13;
int autoarmtime = 40, autoarmtimemem = autoarmtime;
int month = 1, day = 1, year = 2016;

// ... 화면 그리기 함수들 (alarmtitle, drawbutton1, drawbuttons 등) ...

void setup() {
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_EXTREME);
  pinMode(buzzerpin, OUTPUT);
  pinMode(systarm, OUTPUT);
  pinMode(serenapin, OUTPUT);
  digitalWrite(buzzerpin, HIGH); delay(1000); digitalWrite(buzzerpin, LOW);
  title();
  drawoptions();
  drawarm();
}

void loop() {
  while (true) {
    mainmenu:
    if (myTouch.dataAvailable()) {
      myTouch.read();
      x = myTouch.getX(); y = myTouch.getY();
      
      // OPTIONS 버튼 터치 시
      if ((x >= 20) && (x <= 300) && (y >= 70) && (y <= 120)) {
        options: optionsmenu();
        // 비밀번호 변경 메뉴 진입 로직...
        // (코드 길이상 생략, 전체 코드는 다운로드 참조)
      }
      // ARM 버튼 터치 시 - 4자리 비번 입력 화면
      // DISARM 버튼 터치 시 - 5자리 비번 입력 화면
      // 완전 해제 - 푸시버튼으로 진입 (6자리 비번)
    }
  }
}

전체 코드는 길어 생략했습니다. 다운로드하여 확인하세요.

제조공정

  1. 안전성과 신뢰성을 위한 페일-세이프 제어 시스템 설계
  2. 자바 & Reactive Blocks로 모션 감지 알람 시스템 – 라즈베리 파이 배포 및 SMS 전송
  3. 아두이노만으로 DTMF 디코더 구축하기 – 추가 IC 불필요
  4. 아두이노 자동 식물 급수 시스템 – 떠날 때도 안심하는 스마트 가드닝
  5. 아두이노와 RF 모듈로 경보 시스템 보안 평가하기
  6. 스마트 지하실 환기 시스템: 아두이노 기반 습도 제어
  7. 파이썬 3로 아두이노 우노 제어하기 – 시리얼 통신 LED 제어 기초
  8. 아두이노와 구글 시트로 구현하는 실시간 RFID 출석 시스템
  9. 아두이노 기반 충돌 경고 시스템 – 시각/청각 알림으로 차량 안전 강화
  10. DS1302 RTC와 아두이노 우노로 만드는 신뢰할 수 있는 알람 시계