Arduino:
YAML로 작업하기

방법:

아두이노에서 YAML을 직접 작업하는 것은 메모리 제약과 네이티브 YAML 처리 라이브러리의 부재로 인해 고수준 프로그래밍 환경에서처럼 간단하지 않습니다. 그러나 YAML 파싱이나 생성이 필요한 프로젝트의 경우, 일반적인 접근 방법은 유닛 컴퓨터(예: 라즈베리 파이)를 사용하거나 외부 스크립트를 사용하여 YAML 파일을 더 아두이노 친화적인 형식(예: JSON)으로 변환하는 것입니다. 시연 목적으로, 우리는 인기 있는 라이브러리인 ArduinoJson을 사용하여 후자의 접근 방식에 집중하겠습니다.

1단계: YAML 구성을 JSON으로 변환합니다. 온라인 도구나 yq와 같은 커맨드 라인 유틸리티를 사용할 수 있습니다.

YAML 파일 (config.yaml):

wifi:
  ssid: "YourSSID"
  password: "YourPassword"

JSON으로 변환됨 (config.json):

{
  "wifi": {
    "ssid": "YourSSID",
    "password": "YourPassword"
  }
}

2단계: ArduinoJson 라이브러리를 사용하여 아두이노 스케치에서 JSON 파일을 파싱합니다. 먼저 아두이노 IDE의 라이브러리 관리자를 통해 ArduinoJson 라이브러리를 설치해야 합니다.

3단계: 코드에서 JSON을 로드하고 파싱합니다. 아두이노의 저장 공간 제한으로 인해, JSON 문자열이 변수에 저장되었다고 가정하거나 SD 카드에서 읽는 것을 상상해 보세요.

샘플 아두이노 스케치:

#include <ArduinoJson.h>

const char* jsonConfig = "{\"wifi\":{\"ssid\":\"YourSSID\",\"password\":\"YourPassword\"}}";

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

  StaticJsonDocument<200> doc;
  DeserializationError error = deserializeJson(doc, jsonConfig);

  if (error) {
    Serial.print(F("deserializeJson() 실패: "));
    Serial.println(error.f_str());
    return;
  }

  const char* ssid = doc["wifi"]["ssid"]; // "YourSSID"
  const char* password = doc["wifi"]["password"]; // "YourPassword"

  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("Password: ");
  Serial.println(password);
}

void loop() {
  // 이 예제에서는 여기에 아무것도 없습니다
}

스케치를 실행했을 때의 출력:

SSID: YourSSID
Password: YourPassword

JSON으로 전환하고 ArduinoJson 라이브러리를 활용하는 이 접근 방식을 통해 아두이노 프로젝트 내에서 관리 가능한 YAML 구성 처리를 가능하게 하여, 마이크로컨트롤러에서의 직접적인 YAML 파싱을 회피할 수 있습니다.