오늘 첫눈이 온다. 나한텐 처음이니까 처음이다.
새벽에 방문자가 적을 시간을 이용해 잽싸게 서버 컴퓨터 자동 부팅 모듈을 자작 해보았다.
모듈을 제작하게 된 이유는 외출했을때 갑작스러운 정전이나 실수로 서버 종료를 눌러버렸을때 자동으로 다시 켜지게 하기 위함이다.
우선 전원은 파워서플라이의 보라색 선 상시전원 (+5VSB) 와 철껍대기의 (-) 를 연결 해줬다.
연결하던 중에 전면부 led 를 과전류로 터트려버려서 직접 다시 단 led 로 상태를 확인 할 수 있다.
#define pstatus 2 // 파워 상태를 확인하기 위함 #define hstatus 3 // 하드 IO 를 확인하기 위함 #define powerrelay 6 // 컴퓨터를 켜기 위한 릴레이 스위치 #define hdd 12 // 하드 IO LED #define power 13 // 파워 LED unsigned long relay; void setup() { Serial.begin(9600); pinMode(pstatus, INPUT_PULLUP); // 파워 상태를 확인한다. pinMode(hstatus, INPUT_PULLUP); // 하드 상태를 확인한다. pinMode(powerrelay, OUTPUT); // 파워 스위치를 출력으로 설정. digitalWrite(powerrelay, 0); // 기본은 꺼져 있다. pinMode(hdd, OUTPUT); // 하드 LED digitalWrite(hdd, 0); // 기본은 꺼져 있다. pinMode(power, OUTPUT); // 파워 LED digitalWrite(power, 0); // 기본은 꺼져 있다. } void loop() { if (digitalRead(pstatus) == 0) { // 만약 파워 상태가 0 이라면, digitalWrite(powerrelay, 1); // 파워 스위치를 켠다. delay(23); // 딜레이 23ms digitalWrite(powerrelay, 0); // 파워 스위치를 끈다. digitalWrite(power, 0); // 파워 LED 를 끈다. } else { // 만약 파워 상태가 0 이 아니라면 if (millis() - relay >= 1000) { // 파워 LED 를 1초 주기로 점멸 한다. relay = millis(); digitalWrite(power, !digitalRead(power)); // 파워 LED 의 상태를 읽어서 그 반대 값을 power에 쓴다. } } // IF 문 종료 if (digitalRead(hstatus) == 1) { // 만약 하드 상태가 1 이라면, digitalWrite(hdd, 1); // 하드 LED 를 켠다. } else { // 하드 상태가 1 이 아니라면, digitalWrite(hdd, 0); // 하드 LED 를 끈다. } // IF 문 종료 }
화장실에 데스크탑에 달려있던 팬들 다 때서 일렬로 케이블 타이로 고정 해서 저렇게 안쓰는 카드로 고정 했다.
덕분에 응가 냄새 잘 빠진다 샤워할때 김도 잘 나가고 사이사이 구멍들만 실리콘으로 매꾸면 끝.
수정 전 |
수정 후 |
실내에서 담배 연기 배출되는 장면 |
실외에서 증기 배출되는 장면 |
댓글 달기