Full width home advertisement

Project

Post Page Advertisement [Top]

관심 있는 코인의 실시간 거래가격을
아날로그 UI로 표시 해주면 좋지 않을까? 생각 하여서 
간단히 시세 표시기를 만들어 보았습니다




단순히 시세 표현의 기능보다는 그 중간 과정이 따라하면 공부에 도움이 될까하여
공유 하는 포스트를 작성합니다


본 글은 기본적인 Arduino 개발 환경 구성이 가능 하다는 전제 하에 작성합니다

1. 준비


7 Segment (max 7219)



흔히 볼 수 있는 숫자 표시기 (정식명칭 - 7 segment) 입니다
API 서버로 부터 받아온 시세 데이터를 표시할 목적으로 사용되며
컨트롤러 내장형이며 SPI 통신을 사용합니다
데이터시트(링크)

ESP-8266 (Wemos d1 mini)




컨트롤러로 사용할 예정인 ESP-8266을 사용한 Wemos D1 mini 사용하며
(꼭 Wemos D1 mini일 필요는 없음, ESP-8266이면 구동 하는데 문제 없음)
EPS8266 Arduino library를 이용
Rest API 호출과 SPI를 이용 7 segment에 거래소 시세를 표기를 목표로 함

etc.

핀헤더 소켓, 핀헤더 케이블 (2.54mm) 로 여유 있게 (5개 이상)
납땜 도구

2 - 1 개발용 하드웨어 제작


개발용이라고 따로 분리 한 것은 각 핀에 직접 납땜 연결을 하면
개발도중에 회로를 변경 할 수 없어 먼저 핀헤더를 이용한 하드웨어를 구성합니다

구성할 핀 맵핑은 아래와 같습니다

(ESP8266 - Max7219)
GPIO14 (SCK) - CLK
GPIO13 (MOSI) - DIN
GPIO15 (SS) - LOAD
3.3V - VCC
GND - GND 


max7219의 SPI홀에 핀헤더를 납땜해줍니다


ESP-8266에도 동일하게 핀헤더를 납땜합니다

회로도를 참조하여서 결선 합니다


3-1 소프트웨어

이 프로젝트에서 RestAPI를 위한 RestAPI.h
MAX7219를 제어하기 위한 Max7219.h 를 사용합니다
Github 에서 받아 아두이노 libraries에 추가 합니다

RestAPI는 WiFi의 연결, API호출, JSON을 파싱하는 기능이 간단하게 구현되어 있으니
한번 직접 코드를 보는 것도 좋습니다

repo에 있는 데모 코드를 먼저 작동 시키는 것을 추천드립니다

Max7219 또한 기본적인 초기화, 숫자 폰트, 숫자의 표현 정도가 구현되어 있습니다

이 또한 repo에 기본적인 데모가 구현 되어 있습니다



4 모델링

모델링을 통한 케이스는 아쉽게도 3D 프린터를 사용 가능한 분만 진행 가능합니다

케이스는 아래와 같이 심플하게 디자인 하였습니다

(조립시)

(상단_Segment 방향)

상단 segment 방향입니다, 7-segment에 맞게끔 홀이 있고
하단에 맞출 수 있겟끔 기둥이 있습니다

(하단_ESP8266 방향)

하단 ESP8266이 실장되는 방향입니다
상단에 맞추어 기둥이 있고 전원 공급 및 데이터 통신용 홀이 있습니다

위 2모델링 파일(STL)은 프로젝트 repo에 있고 Thingiverse에도 공개되어 있습니다


실제 출력후 결과물

(상단_전면)

(상단_후면)



(하단_내부)

2-2 완성용 하드웨어

개발용 하드웨어와 모델링된 케이스를 기준으로 완성를 제작합니다


각 단자를 연결하기 위해서 전선을 준비합니다

(7-Segment의 단자 쪽에 납땜을 합니다)

(위의 개발용 하드웨어와 동일하게 전선을 납땜합니다)

5 조립

출력한 케이스와 납땜한 하드웨어를 합니다


위와 같이 모양으로 잡아주고


하단의 케이스와 ESP8266이  사진처럼 되도록 위치를 잡고 조립합니다


정상적으로 조립되었다면 사진과 같이 조립됩니다


정상적으로 조립되었다면 단자 홀과
 ESP8266의 microUSB 포트가 위치가 일치하여야 합니다


3-2 소프트웨어

3-1에서 데모 코드를 테스트 해보았으면 coinboard의 repo에서 WiFi 접속정보만
수정후 바로 컴파일 및 플래싱을 진행하면 완성 됩니다.
또한 본인이 직접 수정하여서 로직을 바꾸어 본인의 용도로 수정 하여도 됩니다


    if(restAPI.connectAvailable())
    {
        String response = restAPI.callAPISSL(host, upbit_xrp, 443);
        int price = restAPI.responseParser(response,key_price).toInt();
        int opening = restAPI.responseParser(response,key_opening).toInt();

        segment.displayNumber(price,4,1);
        segment.displayChangeRate(opening,price,8,5);
    }
    else
    {
        restAPI.connectWiFi();
    }

ino 파일의 loop 입니다.
WiFi의 연결 상태 체크 후 https API를 호출 모 거래소의 응답을 받아 옵니다
응답이 JSON형태이기에 key를 통하여 value를 얻어 냅니다
7 segment에 출력 합니다

6. 완성




이렇게 완성입니다. 저는 기본 로직으로 앞 4자리를 통하여 변동률을 표기하고
뒤 4자리를 통하여 XRP의 시세를 거래소를 통하여 가져오게 만들었습니다

꼭 코인의 시세 표시 말고도 주기적으로 모니터링 해야하는 숫자가 있을때
활용하는 것을 추천드립니다 :)






댓글 1개:

  1. 안녕하세요. iot공부하고 있는 학생입니다. 예전에 스마트 멀티탭만드신거 보고 이렇게 찾아오게되었습니다. 홈오토메이션관련 설계를 하고 있습니다. 혹시나 댓글을 보신다면 메일 부탁드립니다. lego7407@naver.com

    답글삭제

Bottom Ad [Post Page]

| Designed by Colorlib