2018년 11월 29일 목요일

ESP로 오실로스코프를 만들자 - #4 (최소 크기 및 비용편)

1. 제작 동기

 나는 거의 대부분의 부품 조달을 알리에서 진행하는데, 마침 배송에 따른 공백기가 생겼다. 즉 부품들을 주문했지만, 배달까지의 시간이 워낙 오래 걸리기 때문에 가끔 공백기가 찾아온다.  이 시기에 집, 직장을 오가면서 연구(?)  활동중인 나에게 아주 작고 휴대가 간편한 오실로스코프를 하나 만들어야 겠다는 생각이 갑자기 들었다.

[ 다 만들면 저정도 크기. 기판 = 5X7 Cm ]

- 이 버전은 자체적으로 정보 표시용 디스플레이가 없다. 측정 정보는 Wi-Fi로 오실로스코프에 연결한 후에 웹브라우저를 이용하여 확인이 가능하다.  아래쪽에 올린 동영상 역시 PC에서 오실로스코프로 연결한 후에 촬영하였다.

2. 요구 조건 

  즉 결과물은 아래의 조건을 만족 시킨다.
 - 3개 채널 : 3상 전기 측정이 가능하여야 한다.
 - 최소크기 : 바지 주머니 정도에 넣을 수 있어야 한다.
 - 최대 10KHz 측정 가능(음향기기나 모터 PWM 신호 정도는 측정이 가능한 수준이다 )

3. 필요 부품 및 구매 가격
 - ESP32 모듈 1개 = 5000원  [구매링크]
          ESP32계열이라면 어떠한 모듈이던 관계없다. 
          소켓과 연결핀등이 함께 동봉되어 있다. 
 - 5 X 7 Cm 기판(PCB) 2개 * 120원 = 240원 [구매링크]
          기판은 상판, 하판 해서 2장 쓰인다. 
          이 글의 첫부분에 표시한 사진은 상판을 아크릴판으로 교체한 버전이다. 
 - 스페이서 16개 * 평균 30원 = 480원 
          플라스틱으로 된거 싼거 쓰면 된다.
 - 저항 6개  * 10원 = 60원   
          1/4W 짜리이고, 사실 개당 가격은 10원 이하이다.
 - 버리기 아까운 랜케이블 30Cm = 0원
         불량난 랜케이블 버리지 않고 잘라서 사용
 - 인두, 납, 니퍼 등의 미리 준비된 것들.
  
 위의 내용을 다 더하면 5780원... 어떤것은 배송료도 포함되어 있지만, 어찌 하던 $10 이하에 모든 재료가 준비가 된다. 만약 $10 이하로 위의 재료를 공수하지 못한다면,  모든 것을 뒤로 하고 인터넷 쇼핑 스킬을 먼저 업그레이드 하는 것을 추천한다. 


3. 회로도

부품이 적은 만큼, 회로도도 간단하다.
여기서 주의할 점은 나는 330R 과 100R의 두 종류 저항을 사용하였는데, 이것은 사용자의 상황에 따라 다르다. 나는 5V 신호를 측정하기 위하여 이렇게 구성하였으며, 만약 24V  신호를 측정하려면 330R대신 1.2K나 1.5K 정도의 저항을 사용하여 분압하여야 한다.  분압 공식을 잘 모르시겟다면 구글 검색을 하자.  [구글 검색 분압계산 링크]
위의 회로와 동일한 저항을 사용한다면 약 8V까지 구별이 가능하며(즉 8V 이상 측정하면 8V라고 표시된다.) 이론상 13V 정도의 입력이 이루어지면 타는 냄새와 함께, 미량의 연기를 관찰할 수 있게 될 것이다.


4. 제작 과정

기껏해야 저항 6개 납땜 하는 정도라 아주 간단 하다.  나는 ESP32 Mini를 탈착하기위하여 소켓 방식으로 제작하였지만, 소켓 방식을 포기하면 적어도 부피는 1/2 이하로 줄어든다. 저항의 배치를 바꾸면 내가 만든 결과물의 1/ 4 부피로도 가능할듯 하다.




ESP32 Mini 보드를 끼우면 위의 그림과 같다.
아래쪽에 4개의 검정색은 측정단자를 꼽기 위한 간이형 터미널이다.  굳이 재료에 소개안한 이유는 여기 저기에  있는 것을 주서다가 썻기 때문이다.

그리고 스페이서와 다른 기판 한장을 이용하여 아래와 같이 만든다.  이 포스트의 맨 처음에 소개한 사진은 아래 그림에서 상판을 아크릴로 대체한 형태이다.





기본 컨셉은 휴대성을 위하여 아주 작게 만드는 버전이기 때문에, 전력은 별도의 장치에서 공급하는 방식이지만, 굳이 배터리를 이용해야 겠다면 이전 포스트에서 소개한 컨셉으로 만들어서 아래와 같이 붙일 수 있다.

배터리관련하여 만드는 방법은 아래의 링크로 확인이 가능하다.
[클립 2개로 만드는 18650 배터리팩]



5.  테스트 환경 및 동작 소개

신호 생성기를 따로 보유하고 있지 않는 내 입장에서 가장 손쉬운 방법은 http://onlinetonegenerator.com/ 를 이용하는 것이며, PC나 핸드폰의 오디오 단자를 이용하여 출력하면 된다.  이 신호를 이용하여 각 측정용 채널에 연결하면 된다. 아래의 사진은 동영상이나 스크린샷을 찍기 위하여 잠시 연결한 상태를 보여준다. 
[ 빵판에 꼽혀있는 모든 것들이 사용된 것은 아니다 ]


익숙하지 않은 동영상 촬영을 하여 유투브에 올려 보았다.  오실로스코프를 AP로 동작 시키고, PC에서 WiFi로 오실로스코프에 연결한뒤, 구글 크롬을 이용한 동영상이다.



PC의 스크린샷은 아래와 같다.

[ PC + 1433Hz + 3채널 분리 ]

[ PC + 1555Hz + 3채널 통합 ]

[ PC + 10KHz + 3채널 분리 ]


핸드폰의 크롬 브라우저에서 오실로스코프의 AP로 접속한 화면은 아래와 같다. PC의 웹브라우저에서는 그나마 사용하기 쉽지만, 모바일에서는 상황이 약간 다르다. 향후 기회가 되면 모바일쪽에서 동작하는 스크립트를 수정해야 할듯 하다.
[ 모바일 + 1433Hz + 1채널 ]

각 버튼에 대한 설명은 이전에 포스트한 내용에서 '5. 기능소개' 부분을 참조하면 된다.
[ ESP로 오실로스코프를 만들자 - #3 (ESP32 편) ]


6. 소스코드 및 설명

 이 버전은 ESP32의 기본 라이브러리를 제외하고 전체 소스코드를 공개한다. 즉 내가 코딩한 전체 부분을 공개 하니,  어느 용자분이 써보시고 웹 관련쪽은 수정의 댓글을 올려주시길 기대해본다.
 ESP32쪽은 코드부분에 define된 부분을 수정하여 AP모드나 Station 모드로 동작이 가능하다. 웹 페이지 관련해서는 SPIFFS를 사용하기 때문에 미리 'ESP32 Sketch data upload' 기능을 사용하여 ESP32쪽에 올려 두어야 한다.  ( [ ESP의 SPIFFS에 파일 업로드 방법 ] )

이 오실로스코프는 총 4개의 소스코드 파일로 이루어져 있으며, 각 부분의 설명은 소스코드내에 코멘트로 처리되어 있다. (이 포스트에 모든 내용을 담으려고 하였으나, 아무래도 글자수 제한이 있는듯 하다.  불가피하게 3개의 포스트로 나누어 올렸다. )

[ Web oscilloscope source code part 1 ]
1. ./Web_Oscilloscope_32.ino
   Webserver, WebsocketServer등을 이용하여 통신을 담당하고 중계하는 메인 파일
2. ./OscilloscopeClass.h
  Oscilloscope의 기능과 관련된 Class를 정의한 파일
3. /OscilloscopeClass.cpp
 Oscilloscope의 기능이 포함된 파일


[ Web oscilloscope source code part 2 ]
4. ./data/web_interface.html
  Web으로 연결할때 사용하는 파일


댓글 6개:

  1. 감탄하고 갑니다... ESP32 입문중인데 상당히 어렵네요. 핀번호도 헷갈립니다 @@

    답글삭제
    답글
    1. 제가 사용하는 esp32 mini는 그전에 사용하던 8266 d1 mini 하고 비교해서 같은 위치의16핀이 동일한 동작을 합니다. 물론 핀번호는 다르지만요. 핀번호는 프린팅해서 연구하는 근처에 붙여 놓으시면 편리합니다.

      삭제
  2. ESP32이 탑재되어있는 아두이노를 사용해도 문제없을까요?

    답글삭제
    답글
    1. 기본이 ESP32이니 문제 없을것 같습니다.

      삭제

활용도가 높은 파워뱅크를 만들어 보자 - 제1편 (설계 및 재료 조달편)

미안함 때문에...  파워뱅크 1차 버전을 만들어서 선물하였다 (총 2개 제작) . 파워뱅크를 먼저 선물받은 사람은 캠핑을 좋아하는 사람이기에 엄청 좋아했다. 컨셉 자체가 전등을 켤 수 있게 만들었고, 필요시 핸드폰등을 충전할 수 있으며, 쌀쌀한 날씨...