본문 바로가기
  • test
62x32 LED MATRIX 예제/초 단위 시계 구현하기

[62x32 LED 매트릭스 예제] NTPClock

by 혜민우진아빠 2021. 1. 7.

예제의 결과물

 

 

준비물 & 결선 & 세팅하기

아래 링크를 참고해서 준비해주세요.

[62x32 LED 매트릭스 세팅]

 

 

* 준비물 구입 링크

https://smartstore.naver.com/frontiers/products/5380911083%EF%BB%BF

 

스마트폰제어 LED 간판 오픈 입구 전광판 아트사인 부동산 전광판 영업중 개업선물 카페 식당 :

스마트폰과 블루투스 연결을 통해 글자와 이미지를 마음대로 변경

smartstore.naver.com

 

소스코드 다운

iotfrontiers/popsign_examples (github.com)

 

GitHub - iotfrontiers/popsign_examples

Contribute to iotfrontiers/popsign_examples development by creating an account on GitHub.

github.com

위 링크에 들어가셔서 연두색의 Code 버튼을 누르시고

Download ZIP 버튼을 누르면 전체 예제 파일을 다운 받을 수 있습니다.

 

업로드 준비

① 파일 - 열기 항목을 눌러서 현재 진행하고 있는 예제의 ino파일을 선택합니다.

 

 보드와 PC를 USB C타입 케이블로 연결합니다.

 

 장치관리자에서 보드가 연결된 포트를 확인합니다. USB-SERIAL-CH340 이라는 이름으로 표시되어 있습니다.

 위에서 확인한 포트번호를 IDE에 설정합니다

 ESP-32 Dev Module 보드를 선택합니다.

 

⑥ 업로드 준비가 다 되었습니다. 업로드 버튼을 눌러서 업로드 할 수 있습니다.

 

시리얼 모니터

스케치 우측상단 돋보기 모양을 선택하면 시리얼 모니터를 실행할 수 있습니다. 

시리얼 모니터의 보드레이트를 코드상에서 설정한 보드레이트 (115200) 와 동일하게 설정해야 합니다.

 

 

 

시리얼 모니터를 통해 보드가 컴퓨터로 보내는 내용을 볼 수 있고

전송 버튼 왼쪽에 있는 입력 창에 텍스트를 입력한 후 전송 버튼을 눌러서 보드로 내용을 전송할 수도 있습니다.

 

NTPClock 소스코드

 

#include <WiFi.h>

#include <Adafruit_GFX.h>
#include <P3RGB64x32MatrixPanel.h>
#include <Fonts/FreeSans9pt7b.h>


P3RGB64x32MatrixPanel matrix(25, 26, 27, 21, 22, 0, 15, 32, 33, 12, 5, 23, 4);

char ssid[] = "SSID";
char pass[] = "PASSWORD";

우선 필요한 헤더 파일을 포함합니다.

 

모듈에 맞는 핀 번호를 설정해줍니다.

( ※ ESP32-WROVER-E 모듈 적용 )

 

다음 접속할 무선 네트워크(WIFI)의 접속 정보를 자신의 환경에 맞게 넣습니다.

ex) 무선 네트워크 이름(SSID): "KibMango"

      무선 네트워크 비밀번호(PASSWORD): "#kibmango"


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

  Serial.print("Attempting to connect to Network named: ");
  Serial.println(ssid);                   // print the network name (SSID);

  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("");
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  configTime(TZ, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp"); // enable NTP

  matrix.begin();                           // setup the LED matrix
}

setup() 함수를 살펴보겠습니다.

결과 확인을 위해 시리얼 모니터를 시작하고, 주어진 정보를 이용하여 WiFi 오브젝트를 시작합니다.

 

무선 네트워크 접속 코드를 보면

WiFi.status() 함수를 체크하여 접속이 성공(WL_CONNECTED)할 때까지 접속 시도를 반복합니다.

만약 와이파이 접속이 실패하면 시리얼 모니터에 ......이  찍힙니다.

( 시리얼 모니터는 아두이노 우측 상단에 있습니다. )

 

void loop()
{
  if (WiFi.status() != WL_CONNECTED)
    ESP.restart();

  time_t t;
  static time_t last_t;
  struct tm *tm;
  static const char* const wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};

  t = time(NULL);
  if (last_t == t) return;    // draw each second
  last_t = t;
  tm = localtime(&t);
  matrix.fillScreen(0);

  matrix.setTextColor(matrix.color444(15, 9, 12));
  matrix.setFont(&FreeSans9pt7b); 
  
  matrix.setCursor(0, 13);
  matrix.printf("%02d:%02d", tm->tm_hour, tm->tm_min);

  matrix.setFont();
  matrix.printf(":%02d", tm->tm_sec);


  matrix.setCursor(2, 16);
  matrix.setTextColor(matrix.color444(3, 8, 15));

  matrix.printf("%s", wd[tm->tm_wday]);


  matrix.setCursor(2, 24);
  matrix.setTextColor(matrix.color444(15, 15, 15));
  matrix.printf("%04d/%02d/%02d\n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday);

}

loop() 함수를 살펴보겠습니다.

fillScreen을 사용하면 전체 화면을 색상으로 채울 수 있습니다.

다음 setCursor를 사용하여 커서 위치를 설정할 수 있습니다.

마지막으로 setTextColor로 텍스트의 색상을 설정할 수 있습니다.

 

struct tm 구조체

- tm_sec 초를 나타냅니다. 범위는 0~59.

- tm_min 분을 나타냅니다. 0~59.

- tm_hour 시간을 나타냅니다. 0~23.

- tm_mday 날짜를 나타냅니다. 1~31.

- tm_mon 월을 나타냅니다. 0~11. 실제는 +1을 해야합니다.

- tm_year 년도를 나타냅니다. years since 1900. 실제 사용 시 +1900을 해야 합니다.

- tm_wday 요일을 나타냅니다. 0~6.

 

 

더 알아보기

 

NTP 서버 

 

수동 조정 없이 어떻게 완벽한 시간을 얻을 수 있을까요? 이를 수행하는 한 가지 방법은 NTP 서버에 요청하는 것입니다.

이번 시간에는 ESP32을 Arduino 프로젝트의 시간 소스로 사용하는 방법에 대해 알아봤습니다.

NTP 약어는 네트워크 클라이언트 간의 시계 동기화를 위한 네트워킹 통신 프로토콜인 Network Time Protocol의 약자입니다. NTP는 공용 인터넷에서는 50 밀리 초 미만, LAN 환경에서는 5 밀리 초 미만의 정밀도로 시간을 유지할 수 있습다.

NTP는 UDP 요청을 통해 타임스탬프를 보내거나 받거나 브로드 캐스트 / 멀티 캐스팅을 통해 구현할 수 있는 클라이언트-서버

서비스라고도 말할 수 있습니다.

 

 

ESP32

 

ESP32는 Wi-Fi 및 듀얼 모드 Bluetooth가 통합 된 칩 마이크로 컨트롤러의 저가형 저전력 시스템 시리즈입니다 .

ESP32는 와이파이를 통해서 인터넷에 연결이 가능하므로 와이파이 연결이 된다면 NTP(Network Time Protocol) 서버를 통해 매우 정확한 현재 시간을 구할 수 있습니다. 

 

 

 

댓글