옆방 연구실에 스탠드형 에어컨이 설치되어있는데 냉각수 배수구가 없어서 수조에 받아서 물이 차면 버리면서 쓰는 중.

 

하지만 적절한 시기를 놓쳐서 맨날 넘친다고...

 

안타까워하면서 간단한 장치를 만들어주었다. 

 

이거에 굳이 아두이노를 쓴 걸 전기공학 하는 사람이 알았다가는 뒤통수를 맞을꺼 같지만 트렌지스터로 회로 설계하기에는 귀찮았기에.

 

Analog input 받아다가 물 안에서 합선되고 5초 뒤에도 합선되어 있으면 경보가 울리는 방식이다. 

 

처음 테스트 환경에서는 물 안에서 합선이 되면 0.3V가 잡히길래 200mV를 기준으로 잡고 이걸 넘으면 합선으로 봤는데 

 

실제 환경에서 작동을 안하더라. 

 

냉각수라고 온도가 낮으면 더 전도가 잘 되어야 하는거 아닌가?

 

아니면 테스트 환경은 머그컵이라 두 도선간의 거리가 짧아서 그랬나.

 

여튼 15mV로 기준을 잡았더니 이젠 너무 자주 울린다. RF noise가 껴서 그런듯. 

 

5초동안 합선되게 잡았더니 문제가 없더라.

 

20분 정도 걸린 프로젝트라 굳이 올려도 아무도 쓸 사람이 없을듯 하지만 그냥 버리긴 아깝기에 코드와 스케메틱을 올려둔다.

 

 

boolean sensorOn;
void setup() {
  pinMode(5,OUTPUT);
  pinMode(LED_BUILTIN,OUTPUT);
  sensorOn = false;
}

void loop() {
  if(analogRead(5) > 15){ // short detected
    digitalWrite(LED_BUILTIN,HIGH);
    if(sensorOn){ // short detected and this was sustained for 5 sec
      // alert
      tone(5,800,1000);
      delay(3000);
      tone(5,800, 1000);
      delay(3000);
      sensorOn = false; // reset
    }
    else { // short detected but this was the first detection
      sensorOn = true; // toggle on
      delay(5000); // wait 5 sec and check the sensor state again
    }
  }
  else { // reset toggle
    sensorOn = false;
    digitalWrite(LED_BUILTIN,LOW);
  }
  delay(500);
}

'취미 > Programming' 카테고리의 다른 글

에어컨 냉각수 수위 경보기  (0) 2019.07.26
파이썬 가상 환경에서 구동  (0) 2017.10.13
Posted by Knowblesse

대학교 1학년 2학기부터 지금까지 자취를 한지 7년이 지나가고 있다. 


다행히 좋은 집에서 자취를 했었기에 거쳐간 집은 두 곳. 


이사 경험이 적어서 짐을 싸거나 자취용품을 구입하려고 고민하거나 한 기억이 별로 없다.


예전에 친구들이 새로 자취를 시작한다고 조언을 구하면서 필요한 물품들이 뭐가 있냐고 물어본 적이 있는데 그때 작성했던 생필품 리스트가 꽤나 요긴하게 쓰이는 것 같아서 온라인에 올려둔다.


- 정말 생존에 필수적인 물품 위주로 작성을 하였다. 

- 자취방 특성에 따라서 가전제품의 경우 이미 있는 경우가 있다.

- 주변 환경에 따라 (장을 보기 어려운 시골, 코인 세탁소가 없는 곳) 목록을 수정하도록.

- 기본적으로 나는 요리를 해먹는 성격이라 요리를 안해먹는 경우는 좀 더 목록이 짧아질 수도 있겠다.



  1. 주방
    1. 가전제품 (대부분 방의 옵션으로 붙어서 나오는데 혹시라도 없는 경우 필요한 물품들)
      1. 커피메이커 혹은 전기 커피포트 : 주전자보다 관리하기 편하고 씼기 유용함. 작은 소형을 추천.
      2. 전자레인지 : 전자레인지 없는 자취방이라 없음. 구입 필수.
      3. 압력 밥솥 : 큰거를 쓰면 밥도 금방 상하고 관리하기 어렵기에 작은 것으로 구입 추천.
      1. (핫플레이트 혹은 가스레인지)
      2.  (세탁기) : 없다고 해도 구매 불필요. 주변 동전 세탁기 이용가능.
      3. 청소기 : 사이즈가 큰것은 부피만 차지하고, 사이즈가 작은 것은 흡입력이 약해서 도움이 안됨. 차라리 손으로 구석구석 닦는게 나음.
      4. 다리미 : 부피만 차지하고 셔츠류만 아니면 건조기를 사용하면 구김 없이 입을 있다. 굳이 필요하다면 최대한 작은 사이즈로.
    2. 조리도구 식기
      1. 냄비 : 찌개등을 끓이거나 설렁탕 등을 데워 먹을 있도록 적당히 사이즈.
      2. 작은 냄비 : 라면 끓일때 있도록 작은 사이즈.
      3. 후라이팬 : 튀기는 요리가 가장 해먹기 쉽기에 가장 자주 쓰게 .
      4. 수저 3세트 : 혼자 사는데 갯수가 굳이 많을 필요는 없지만 설거지를 한번에 몰아서 하는게 시간이 많이 절약이 되기에 적어도 3세트는 구비를 해두는 것을 추천.
      5. 밥그릇 3: 이것 역시 많을 필요는 없지만 적어도 3개는 구비해두는 것을 추천. 전부 microwave safe 인것으로 구비해둘 .
      6. 넓은 접시 2 : 각각 반찬별로 접시 하나씩을 쓰면 좋겠지만 접시에 조금씩 담아서 먹는게 설거지 하기 편함. 2 정도 구비해두는 것을 추천.
      1. (라면용 넓은 국그릇)
      1. 4 정도.
      2. 2 : 작은 과도와 하나.
      3. 티스푼, 포크 2개정도.
      4. 가위
      5. 식기 건조대
      6. 씻을 사용할 채망
      7. 밥주걱
      8. 집게
      9. 냄비 받침
      1. 도마 : 자취생활 3년하면서 사용한 적을 손에 꼽음. 필요할때는 호일을 깔고 임시로 사용하는 방식을 선택했기에 매일 고난이도의 요리를 먹을 것이 아니면 필요 없음.
    3. 그외 소모용품
      1. 고무장갑
      2. 식기 세정제
      3. 식기 세정용 스펀지, 수세미 같은 . 취향에 따라.
      4. 식용유
      5. 소금, 후추, 식초
      6. 종이컵, 호일, , 비닐, 지퍼백, 비닐장갑, 키친타올
      7. 락앤락 3. : 무슨짓을 하든 3개는 쓰게 . 추가로 필요하면 추후 구매.
      8. 얼음 얼리는
      1. 참치, 라면, 스팸, 장조림, 등의 비상식량
      2. (나무 젓가락, 빨대)

 

  1. 화장실 : 기숙사 생활하면서 문제 없이 썼던것 그대로 가져가면 될듯.
    1. 소모용품
      1. 샴푸
      2. 린스
      3. 칫솔 치약
      4. 비누
      5. 클랜징폼
      6. 바디워시
      7. 치실
      8. 드라이기
      9. 개인 위생 용품
    2. 청소 용품
      1. 변기통 청소용
      2. 락스
      3. 곰팡이 제거제
      4. 세제 섬유 유연제

 

 

  1. 침실 : 기숙사 생활하면서 문제 없이 썼던것 그대로 가져가면 될듯.
    1. 밥상 : 방안에 넣어 둘수 있는 작은 .
    2. 응급상자
      1. 면봉
      2. 소독제
      3. 붕대
      4. 항생제
      5. 진통제
      6. 귀이개
      7. 과산화수소수 : 핏자국 지울 정말 유용.
    3. 수건 적어도 5 :
    4. 여름, 가을용 : 겨울용 옷까지 방에 보관해두면 공간이 너무 비좁아짐. 계절별로 옷장을 바꿔버릴것.
    5. 청소포와 청소막대(?) : 정전기 일어나는 (?)으로 바닥 청소하는 있는데 걸레를 사용하는 것보다 이게 깔끔.
    1. 모기향, 모기약 : 방이 좁기에 환기가 안될 수도 있다. 되도록이면 전기 모기채를 사용하자.

 

 

 

  1. 책상위 : 기숙사 생활하면서 문제 없이 썼던것 그대로 가져가면 될듯.
    1. 노트북 혹은 데스크탑 : 하나만 가능할 경우 노트북으로 구비하는 것을 추천.
    2. 스텐드
    3. 각종 전자기기 충전기들
    4. 스테이플러
    5. 필기구
    6. 멀티탭 : 5 이상

 

 

  1. 그외 있으면 편한 것들
    1. 분무기 : 겨울에 습도 조절용. 혹은 청소할때도 요긴하게 사용.
    2. 포장용 테이프 : 이불 머리카락 정리, 쓰레기 처리등에 요긴하게 사용.
    3. 손전등 : 비상시 간략히 사용할 있도록 작은 .
    4. 라이터 : 실밥 정리시나 향초에 불붙일때 등등에서 쓰일 때가 있음.
    5. 프린터 : 정말 편해진다….. 인쇄소 필요가 없어짐.
    6. 귀마개 : 가끔.. 옆방에서 이상한 소리가 들릴때가….
    7. 전기 모기채 : 자연친화적으로 모기와 싸울 있다. 자취하면 방에 혼자이기에 한마리만 들어와도 100% 본인이 물림.
    8. 화이트보드 : 이건 완전히 개인 취향인데.. 스케줄 관리할 때나 시험공부할때 요긴하게 쓰고 있다.
    9. 무선 공유기 : 보통 자취방에 랜선이 들어오지 무선 인터넷을 지원해주는 곳은 많지 않다. 핸드폰 요금제가 충분하면 상관 없는데 작은 공유기 하나 설치해두면 집에서 무선 인터넷을 마음껏 이용할 있을 것이다.
    10. 장바구니
    11. 방향제 : 방이 좁아 환기가 안되다 보면 곰팡이도 피고 냄새도 나고 그런다. 원래 그렇다. 의식적으로 창문 자주 열어서 환기 해주고 방향제 사용하고 그러면 쾌적한 환경을 즐길 있을 것이다.

 

 

 

 

  1. 몇몇 중요한 것들 빼고는 근처에서 있기에 형광팬 칠해놓은 말고는 일주일내로 당장 필요한 일은 생기지 않을 . 그래도 완벽히 준비해서 가면 먼데까지 가서 쇼핑하고 하는 일은 안생길 것같다.
  2. 기숙사랑 다른점은 개인 공간이 조금 넓어져서 기숙사에서보단 많은 개인 물품들을 들여놓을 있다는거. "그렇게 자주 쓰지는 않지만 하나 있었으면 편하긴 했겠다~"라는 느낌 드는 물건을 사두면 자취생활이 기숙사 보다 훨씬 편해질 .
  3. 그리고 기숙사랑 다른점이 청소를 본인이 해야한다는 거랑 주방이 있다는 것이기에 기숙사 생활하던 짐을 그냥 그대로 쓰고 거기에 주방용품이랑 청소용품이랑만 따로 구비하면 .




'Mind Storage > Short Thoughts' 카테고리의 다른 글

자취방 생필품 리스트  (3) 2019.03.01
정부의 규제와 과학기술  (0) 2016.11.11
14.09.20  (0) 2014.09.20
Posted by Knowblesse

IoT를 이용하는 (솔직히 이 단어 매우 싫어한다. V=IR도 모르는 저기 정치-경영쪽 사람들이 맨날 떠드는게 볼썽사나워서) 전등 스위치를 동생 생일 선물 대신 만들어주기로 하였다. 


기존에 파는 제품들도 있으나 가격도 비싸고 기능도 별로 없는듯 하여 직접 제작에 들어갔다.


컨트롤러야 아두이노 나노를 쓰면 되고, 전등은 100V 이상의 고압을 사용하니 릴레이로 컨트롤, 

문제는 무선 방식을 택했기에 Wifi든 Bluetooth든 지그비 통신이든 통신 모듈을 아두이노와 연결해야했다.


통신거리가 길어봐야 수m 이고 Bluetooth라면 시리얼 통신 앱이 어떤 OS든 하나는 있을 것 같았기에 Bluetooth 로 개발을 하기로 결정.


전기회로를 설계할 때 가능하면 중국제 제품을 안쓰려고 하는데, 품질이 의심되기 보다는 주로 datasheet를 찾기 어렵거나, 있다고 해도 중국어로만 되어 있는 경우가 간간히 있어서 그렇다.


가격을 생각해서 Devicemart에서 중국제 HC-08 Bluetooth 모듈을 일단 구매 했으나, 다양한 제품들을 만드는 회사라 검색어 오염이 있고, 다른 제품군에 대한 설명은 많으나 HC-08 제품에 대한 설명은 거의 전무했다. 


다른 제품들과 중국어로된 회사 홈페이지를 뒤져서 결국 통신에 성공했다. 


Bluetooth 모듈 사용은 이번이 처음이기에 연결을 시키면서 다양한 것을 배웠다.






1. Arduino와 HC-08의 연결


일단 부품은 잘 모르면 무조건 모듈로 된 제품을 사야한다. 


그냥 덜렁 센서만 툭 샀다가 어떻게 연결하는지도 모르고 고생하기 쉽다.


생으로된 HC-08 모듈을 구매하고 길을 찾고자 여기로 오신 분은 얼른 가서 모듈로된 부품을 구매하기 바란다.


하지만 안타깝게도 부품을 구매한 Devicemart에도 제대로된 모듈 연결방법 설명이 없었다. 


연결방법은 간단하다. 핀은 총 6개가 나와있는데 실질적으로 4개만 사용하면 된다.



* Serial 통신


거의 대부분의 Serial 통신, 직렬 통신은 핀이 네개 필요하다.


VCC, GND, TX, RX


VCC와 GND는 말 그대로 전극의 +와 -. 장치에 전력을 공급해주는 핀이다.


나머지 둘이 통신을 위해서 필요한 핀인데, TX는 데이터 전송용, RX는 데이터 수신용으로 필요하다. 


중요한 것은 두 장치를 서로 연결할때 VCC와 GND는 극성 잘 보고 꼽으면 되지만 RX와 TX는 정 반대로 연결을 해주어야 한다는 것이다.


VCC핀은 보드의 5V 핀에 그대로 연결. GND 핀도 보드의 GND 핀에 그대로 연결을 하면 되지만, 


통신 모듈의 RX핀은 보드의 TX 핀에,

통신 모듈의 TX핀은 보드의 RX 핀에 연결을 해주어야 한다.


Arduino 보드에도 Digital 0번, 1번 핀이 이러한 기능을 수행해 주는데, 이경우 아두이노인지 블루투스 모듈인지 둘중에 하나와 통신이 안되었던 것으로 기억한다.


아, 아마 아두이노의 Serial Monitor 창에서 입력하는 값이 TX가 안되었던 것 같은데...


여튼 아두이노의 D0 D1핀은 앵간하면 건드리지 않는 것이 좋다는게 경험이다.



문제는 그럼 어떻게 Serial 통신을 하느냐, 아두이노 자체적으로 있는 라이브러리인 <SoftwareSerial.h>를 사용하면 된다.


이 라이브러리를 사용하면 지정한 디지털 핀을 TX와 RX 핀으로 설정해서 Serial 통신을 가능하게 해준다.


최종적으로 연결은 이런식으로 하면 됩니다.



VCC와 GND는 알아서들 잘 연결하실꺼고, 


위의 사진에서 모듈의 RX는 아두이노의 D10에, TX는 D11에 연결을 했다.


2. AT(필드) 코드


이번에 처음 배운 것이다. 


왜 어디에도 AT 코드를 설정하는 방법에 대해서 나와있지 않는가....


either 너무 기본적인것이거나 다들 불친절한 것이거나.



AT 코드는 Serial 통신을 사용해서 모듈의 칩의 설정을 바꾸어 주는 코드이다.


이 블루투스 모듈에선는 아래의 AT 코드들이 있다.



펌웨어 버전 확인부터, 블루투스 이름 변경, 연결가능성 설정 등의 메뉴가 있다.


문제는.... 이 코드를 그래서 어디에 어떻게 입력하는지 몰랐다.


설마 그냥 Serial 통신을 연결해두고 "AT"라고 정말 입력하면 돼??



사전 준비가 조금 필요하지만 일단은 진짜 문자 그대로(= ASCII 코드로 ) 저 코멘드를 입력하면 되더라.



일단 HC-08 모듈은 조금 특수적으로 AT Mode에 들어가야 저 명령어가 먹는다.



HC-08아닌 다른 모듈의 경우 KEY를 누르거나 5V 전압을 인가하면 된다고 하던데 그냥 전원을 넣은 상태로 다른 기기와 Pairing이 안된 상태면 무조건 AT 모드에 있는 것 같다.


참고로 이때 이 모듈의 경우 LED가 깜박거린다. 



AT 모드에 진입한후 저 명령어를 입력하기 위해서는 아래의 코드가 필요하다. 


3. 소프트웨어 제작


#include <SoftwareSerial.h> // 가상 Serial 통신을 위해 헤더파일 불러오기


byte rxPin = 11; // 모듈에서의 RX는 D10번, TX는 D11에 넣었다.

byte txPin = 10; // 그렇기에 모듈의 RX와 연결된 D10번 핀은 TX핀으로 설정해야한다.

// 참고로 사용하는 아두이노 기종에 따라서 SoftwareSerial.h를 사용할 수 없는 핀들이 존재한다.

// 꼭 홈페이지에서 document를 읽고 오자. 

// Uno 기준으로는 10번, 11번 모두 해당이 없다.


SoftwareSerial BT(rxPin, txPin); // BT 라는 이름으로 설정.

char c = ' ';


void setup() { // 두 시리얼 포트를 모두 시작.

  Serial.begin(9600); // 시리얼 모니터용

  BT.begin(9600); // 블루투스 모듈용

}


void loop() {

  if(BT.available()){ // BT 모듈에서 응답을 받는 경우이다. BT의 TX에서 전송이 들어올 때.

    while(BT.available()){ // while문을 넣지 않으면 한줄에 한글자씩 출력된다.

      delay(10);

      c = BT.read();

      Serial.print(c);

    }

    Serial.println("");

  }

  

  if(Serial.available()){ // Serial 모니터에서 직접 값을 입력한 경우.

    c = Serial.read();

    BT.write(c); // 블루투스 모듈의 RX 핀으로 쏴준다.

  }

}


char 형식이 아니라 16진수 그대로 출력하게 해두고 가지고 놀다가 재미있는 사실을 발견했는데 값이 입력될때 내가 입력한 문자의 아스키 코드 뿐만 아니라 10진수로 10, 13 이 같이 입력이 되는 현상을 발견했다.


찾아보니 각각 Line Feed와 Carriage Return.


아무래도 시리얼 모니터에 값을 입력하고 엔터를 눌러 전송을 하면 엔터 값 자체도 전송이 되는 듯 하다. (이것도 기본적인 거겠지만 이번에 처음 배웠다.)





참고로 해당 설정은 시리얼 모니터의 아래에서 바꿀 수 있다.


4. 연결


아두이노 연결과 모듈 연결을 성공적으로 끝냈으면 위의 코드를 올리고 시리얼 모니터에 

AT 

라고 입력을 하면 

OK 

라고 뜨는 것을 확인할 수 있다.

(참고로 엔터를 눌러서 값을 전달하는 것과 전송 버튼을 눌러 값을 전달하는 것은 값이 다르다.)


두 HC-08 모듈을 연결하기 위해서는 하나는 마스터 모드, 하나는 슬레이브 모드여야 가능하다.


지그비 통신에서도 비슷한 것을 본 적이 있는데 여기서도 그렇게 작동하나 보다.


둘다 AT 모드에서 설정을 바꾸지 않았다면 둘다 Slave 로 되어 있을 것이다. 


AT+ROLE=M


커멘드를 입력하고


AT+RX 커멘드를 통해서 위의 시리얼 모니터처럼 값이 나오는지 확인한다.


Role : Master


라고 나올 것이다.


자... 이제 두 모듈을 어떻게 서로 연결해주지....


했는데 그냥 연결이 알아서 되더라.


여러 모듈이 동시에 존재하는 경우에는 어떻게 해야하는지는 모르겠으나, 같은 공간에 마스터 하나와 슬레이브 하나만 존재하고, 거리가 멀지 않으면(10미터 이하) 즉각 둘이 페어링이 되는 듯 하다.


일단 목적은 두 기기를 연결시키는 것이라 여러 모듈을 서로 연결시키는 것은 시도해보지 않았다.


나와 같이 HC-08을 사고 힘들어하는 누군가에게 도움이 되었기를 바라며...





Posted by Knowblesse