Responsive Advertisement

아두이노 EEPROM: 영구 데이터저장의 기본개념과 실전 활용법


아두이노 EEPROM
아두이노 EEPROM


아두이노 EEPROM: 영구 데이터저장의 기본 개념과 실전 활용법

아두이노운용하는데 있어서 가장 중요한 문제점 하나가 데이터의 영구적인 저장과 관련된 부분일 것입니다.

저 또한 과거에 여러가지 프로젝트를 진행하는데 있어서 자주 사용해야 하는 문자열(String)을 저장해 두고 특정조건에서 해당 문자열을 불러와 원하는 작업을 하고, 작업 카운트를 누적하여 저장해 두고 하는 프로젝트를 진행한 바 있습니다.

이렇게 아두이노 프로젝트에서 데이터를 영구적으로 저장하는 것은 매우 매력적이며 중요합니다. 특히, 아두이노의 전원이 꺼져도 데이터를 유지해야 하는 경우에는 EEPROM(Electrically Erasable Programmable Read-Only Memory)이라는 메모리의 한 종류를 활용하면 매우 유용하기에 과거 경험에 맞추어 이글을 시작으로 총 5회에 걸쳐 아두이노에서 EEPROM을 사용하는 방법과 그 활용 사례에 대해 소개하도록 하겠습니다.


EEPROM의 기본개념

EEPROM은 비휘발성 메모리의 하나이며, 전원이 꺼져도 저장되어 있는 데이터를 유지할 수 있는 ROM의 일종인 메모리입니다. 또한, 아두이노 보드에는 기본적으로 이 EEPROM 메모리가 내장되어 있으며, 데이터 저장 및 읽기에 사용할 수 있습니다. 다만 내장되어 있는 EEPROM 메모리의 용량이 그리 넉넉한 크기가 아니다 보니 많은 량의 데이터를 보관하고 하는 경우에는 외장 EEPROM를 이용하기도 합니다. 예를 들어, ATmega328P 기반의 아두이노 보드에는 1,024바이트 즉 1KB크기의 EEPROM을 제공하고 있습니다.

이러한 내장 메모리의 한계로 외부 EEPROM을(아래 사진) 연결하여 메모리 용량을 확장하여 사용하기도 합니다.



EEPROM
EEPROM



아두이노는 이러한 현태의 외정 메모리와의 통신을 위한 각종 라이브러리가 존재하기에 우리는 무척 쉽게 프로그램을 작성하여 하드웨어 제어에 활용 할 수 있습니다.


EEPROM 사용법: 기본 코드 예제

EEPROM을 사용하기 위해서는 먼저 EEPROM.h 라이브러리를 포함해야 합니다. 그런 다음, EEPROM.write()와 EEPROM.read() 함수를 사용하여 데이터를 저장하고 읽을 수 있습니다.

먼저 이 내장 EEPROM에 데이터를 저장하고 읽는 간단한 예제를 보도록 하겠습니다.


#include <EEPROM.h>


void setup() {

  // 데이터 'A'를 주소 20에 저장

  EEPROM.write(20, 'A');

  

  // 주소 0에서 데이터 읽기

  char myChar = EEPROM.read(20);

  Serial.begin(9600);         // 통신속도 지정

  Serial.println(myChar);    // 출력: A

}


void loop() {

  // 빈 루프

}


위 코드는 'A'라는 문자를 20번지에 저장하고, 이를 다시 읽어 아두이노 개발자 환경인 IDE의 시리얼 모니터에 출력하는 예제입니다.

EEPROM.write(20, 'A'); 와 EEPROM.read(20);이 주요 쓰고 읽는 기능을 담당하는 함수입니다.


실전 활용법: 언제 그리고 왜 사용해야 할까?

  1. 사용자 설정 저장: 사용자 "설정 값"이나 기타 저장할 필요성이 있는 값들을 저장하여 전원이 꺼진 후에도 그 값을 잃어 버리지 않게 유지할 수 있습니다. 예를 들어, 온도 단위나 위치 설정, 모터 속도나 방향 등을 저장할 수 있습니다.
  2. 데이터 로깅: 온라인을 통해 즉각 전송할 수 없는 데이터가 있다면 이러한 형태의 데이터들을 임지로 저장할 때 매우 유용합니다. 예를 들어, 날씨 정보를 수집하는 프로젝트에서 데이터를 EEPROM에 저장한 후 나중에 전송할 수 있습니다. 하지만 ESP8266등 WiFi가 내장된 개발자 보드를 이용하면 실시간으로 데이터를 전송 시킬 수 있습니다. 이러한 형태의 IOT 구현은 차후 포스팅하도록 하겠습니다.
  3. 장치 상태 유지: 전원이 꺼졌다 켜져도 장치의 상태를 유지해야 할 때 유용합니다. 예를 들어, 조명 모드나 볼륨 설정 등을 기억하게 할 수 있습니다.


효율적인 사용을 위한 팁

  • 쓰기 횟수 제한: EEPROM은 약 100,000회의 쓰기 사이클 제한이 있으므로, 불필요한 쓰기를 피해야 합니다. 십만회라는게 그리 많은 회수는 아니기에 프로그래밍에 있어 최적화하여 읽기 쓰기 등의 동작을 해야할 필요가 있습니다.
  • 데이터 구조 최적화: 구조체를 사용하여 데이터를 효율적으로 관리하고 저장할 수 있습니다. 한정된 자원을 효율적으로 사용하기 위한 적절한 방법이기도 합니다.


결론

아두이노에서 EEPROM을 효과적으로 활용하면, 프로젝트의 기능성을 크게 향상시킬 수 있습니다. 데이터가 전원 사이클 동안에도 유지되므로 사용자 경험을 개선하고 다양한 응용 분야에서 활용할 수 있습니다. 이러한 기능을 잘 이해하고 적용하면 더욱 창의적이고 혁신적인 프로젝트를 개발할 수 있습니다. 이 글이 아두이노 프로젝트에서 EEPROM을 효과적으로 사용하는 데 도움이 되기를 바랍니다. 다음 편에서는 "초보자를 위한 아두이노 EEPROM 읽기 및 쓰기 코드 예제"로 좀 더 깊이 있는 예제로 EEPROM를 다루도록 하겠습니다.


댓글 쓰기