컴퓨터 전원을 원격으로 제어하기

ESP8266으로 컴퓨터 전원 제어 가능하게 만들어 보았습니다. 실제로 컴퓨터에 연결해서 테스트 하기는 번거롭고 해서 그냥 아두이노를 컴퓨터처럼 설정해 놓고 테스트 해 보았습니다.

https://www.hackster.io/zvonko-bockaj/wemos-esp8266-remote-pc-switch-062c7a

위의 링크를 참조해서 만들었습니다. 몇가지 빼고 만들긴 했지만 기본적으로 똑같다고 보면 됩니다. *** 아두이노 나노에 있는 Red Led가 컴퓨터에 들어오는 Led라고 생각하시면 됩니다.

BC337 트랜지스터 말고 2N2222 트랜지스터를 사용했습니다. 트랜지스터의 핀의 위치가 달라서 그것에 맞춰 조정했습니다. 

간단히 만들려고 DS18B20 온도 센서와 LED 2개는 설치 안했습니다. 

스마트폰의 MQTT Dash 어플로 아래와 같이 State 버튼 눌러서 컴퓨터의 전원을 제어합니다. State 버튼을 누르면 아래와 같이 전원이 켜지면서 불이 들어 옵니다.

컴퓨터 여러대 연결해서 전원 관리 시스템도 만들 수 있겠네요.

2N2222 NPN 트랜지스터 사용하기

Base에는 4.7K 저항이고 LED에는 470저항입니다. 베타값이 100이니깐 이거 계산해서 콜렉터에 걸리는 전압과 전류 계산해서 사용해야 합니다. 

콜렉터 -> 에미터로 흘러가고 콜렉터 전에 Load가 걸리게 만들어 줘야 합니다.

코드는 베이스를 제어해서 LED를 on/off 하게 테스트 용으로 해 보았네요. 

int ledPin = 7;

void setup() {
   pinMode(ledPin, OUTPUT);

}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

화면 감추기 – 월급루팡

몰래 컴퓨터 화면 보고 있는데 누가 들어오면 깜짝 놀라겠지요. 움직임을 감지해서 컴퓨터 화면이 바탕화면으로 돌아가게 만들면 어떨까 해서 셋팅해 보았습니다.

집에서 게임하고 있을때에

회사에서 쇼핑하고 있을때에

남들이 보면 좀 그러니깐 이런거 설치하면 좋을듯 합니다.

RCWL-0516 센서와 ATtiny85보드를 사용하여 간단하게 만들어 보았습니다.

To Do:

  1. PCB 만들어서 좀 더 모양새 있게 만들기
  2. 외부에는 플라스틱으로 씌어서 위장하기
  3. 한쪽을 막아서 방향을 한쪽으로만 되게 조정

초음파 센서 hc-sr04

거리 측정용 센서로 많이 쓰이는 초음파 센서 hc-sr04 모델입니다. Trigger에서 초음파 내보내고 echo쪽에서 반사되는 초음파로 거리를 측정합니다.

const int trigPin = 9;
const int echoPin = 8;

long duration;
int distance;

void setup() {
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  Serial.begin(9600); 
}
void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  
  // Calculating the distance
  distance = duration * 0.034 / 2;
  
  // Prints the distance on the Serial Monitor
  Serial.print("Distance: ");
  Serial.println(distance);
}

ChronoDot RTC DS3231

Adafruit에서 나온 ChronoDot의 중국 버전입니다. 사진에서 보면 ChronoDor로 끝자가 t가 아니고 r이네요.

아래 사진 보면 풀업 저항 달수 있게 되어 있습니다. I2C에 이미 저항이 설치되어 있으면 또 필요가 없기 때문에 기본으로는 안 달고 나왔네요.

PCF8574로 입출력 확장하기

입출력이 부족할 때 사용하기 좋습니다. 595, 164,164칩 이용하는것 보다 PCF8574 이용하면 I2C 방식이라서 작업이 편합니다. 

어드레스는 A0,A1,A2로 정합니다. 전부 GND에 연결하면 20h이고 0,0,1로 연결하면 24h가 됩니다.

8개의 버튼과 8개의 LED가 있습니다.

하나의 칩이 8개의 input/output이 가능합니다. 8개의 칩 연결이 가능하니 64개의 입출력이 가능하네요.

#include "Arduino.h"
#include "PCF8574.h"

PCF8574 pcf1(0x20);
PCF8574 pcf2(0x24);

void setup() {
  Serial.begin(9600);

  pcf1.pinMode(P0, INPUT);
  pcf1.pinMode(P1, INPUT);
  pcf1.pinMode(P2, INPUT);
  pcf1.pinMode(P3, INPUT);
  pcf1.pinMode(P4, INPUT);
  pcf1.pinMode(P5, INPUT);
  pcf1.pinMode(P6, INPUT);
  pcf1.pinMode(P7, INPUT);

  pcf2.pinMode(P0, OUTPUT);
  pcf2.pinMode(P1, OUTPUT);
  pcf2.pinMode(P2, OUTPUT);
  pcf2.pinMode(P3, OUTPUT);
  pcf2.pinMode(P4, OUTPUT);
  pcf2.pinMode(P5, OUTPUT);
  pcf2.pinMode(P6, OUTPUT);
  pcf2.pinMode(P7, OUTPUT);


  pcf1.begin();
  pcf2.begin();

}

void loop() {

    pcf1.digitalRead(P0)==HIGH? pcf2.digitalWrite(P0, LOW) : pcf2.digitalWrite(P0, HIGH);
    pcf1.digitalRead(P1)==HIGH? pcf2.digitalWrite(P1, LOW) : pcf2.digitalWrite(P1, HIGH);
    pcf1.digitalRead(P2)==HIGH? pcf2.digitalWrite(P2, LOW) : pcf2.digitalWrite(P2, HIGH);
    pcf1.digitalRead(P3)==HIGH? pcf2.digitalWrite(P3, LOW) : pcf2.digitalWrite(P3, HIGH);
    pcf1.digitalRead(P4)==HIGH? pcf2.digitalWrite(P4, LOW) : pcf2.digitalWrite(P4, HIGH);
    pcf1.digitalRead(P5)==HIGH? pcf2.digitalWrite(P5, LOW) : pcf2.digitalWrite(P5, HIGH);
    pcf1.digitalRead(P6)==HIGH? pcf2.digitalWrite(P6, LOW) : pcf2.digitalWrite(P6, HIGH);
    pcf1.digitalRead(P7)==HIGH? pcf2.digitalWrite(P7, LOW) : pcf2.digitalWrite(P7, HIGH);

  delay(100);
}