Arduino Mega 2560 연동
이 글에서는
GrowSpace 개발자 태그를 Arduino Mega 2560 보드와 시리얼로 연결하여, lec
, lep
명령어를 통해 위치 데이터를 실시간으로 수신하고 파싱하는 방법을 안내합니다. 하드웨어 시리얼이 지원되는 Mega 2560을 활용해 안정적인 고속 통신을 구성하는 방법과 예제 코드를 함께 제공합니다.
준비물
Arduino Mega 2560 보드

GrowSpace 개발자 태그

Arduino IDE 프로그램 (공식: https://www.arduino.cc/en/software)
점퍼 케이블)

점퍼 전선

제공하는 시리얼 연결케이블)
⚠️ UNO 보드는 하드웨어 시리얼 포트가 1개뿐이라 고속 통신 시 오류가 발생할 수 있습니다. Mega 2560은 Serial1~3을 제공하여 안정적인 통신이 가능합니다.
Arduino IDE 설정 및 보드 연결
Arduino IDE 설치 후 실행
상단 메뉴에서 다음 설정 적용
Tools > Board > Arduino Mega or Mega 2560
Tools > Port > 연결된 COM 포트 선택 (예: COM3)
Arduino Mega 2560을 USB로 PC에 연결
하드웨어 핀 연결
GrowSpace 개발자 태그의 우측 커넥터 (5V 전용) 기준으로, 아래와 같이 연결합니다:
개발자 태그 핀
Arduino Mega 핀
TX
RX1 (19번)
RX
TX1 (18번)
5V
5V
GND
GND
🔄 TX ↔ RX는 반드시 교차 연결해야 통신이 가능합니다.
아래는 Arduino Mega 보드의 핀 배치 예시입니다.
Serial1 포트의 TX1(18번) / RX1(19번)을 기준으로 연결하세요.


시리얼 중계 예제 (기본 통신 확인)
String inputFromSerial0 = "";
String inputFromSerial1 = "";
void setup() {
Serial.begin(115200); // USB Serial (Serial0)
Serial1.begin(115200); // Hardware Serial1 (핀 18 TX1, 19 RX1)
}
void loop() {
// serialEvent()와 serialEvent1() 자동 호출됨
}
// Serial0 입력 → Serial1 출력 (CR만 붙임)
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar != '\n') {
inputFromSerial0 += inChar;
}
if (inChar == '\n') {
Serial1.print(inputFromSerial0);
Serial1.print('\r');
inputFromSerial0 = "";
}
}
}
// Serial1 입력 → Serial0 출력
void serialEvent1() {
while (Serial1.available()) {
char inChar = (char)Serial1.read();
inputFromSerial1 += inChar;
if (inChar == '\n') {
Serial.print("From Serial1: ");
Serial.print(inputFromSerial1);
inputFromSerial1 = "";
}
}
}
설명
setup()
에서 USB 시리얼과 하드웨어 시리얼(Serial1)을 각각 초기화합니다.serialEvent()
는 PC(Serial0)에서 입력한 문자열을 태그로 전송합니다.serialEvent1()
은 태그에서 들어온 응답을 PC로 출력합니다.명령어 전송 시 개행 문자(
\n
) 기준으로 파싱 후,\r
캐리지 리턴을 자동 추가합니다.
Serial Monitor 설정 팁
Baudrate: 115200bps
Newline 전송 설정: New Line
si
명령어 전송 후 태그에서 시스템 정보가 출력되면 통신 성공입니다.
시리얼 모니터에서 si
명령어를 입력하고 정상 응답이 확인되면 연결 성공입니다.

명령어 기반 위치 파싱 예제
1. LEP 명령어 파싱 (위치 정보 전용)
// --- 위치만 파싱 (lep) ---
void parseLEP(String line) {
Serial.println("[LEP 위치 결과]");
int idx = 0;
String parts[5];
while (line.length() > 0 && idx < 5) {
int comma = line.indexOf(',');
if (comma == -1) {
parts[idx++] = line;
break;
} else {
parts[idx++] = line.substring(0, comma);
line = line.substring(comma + 1);
}
}
Serial.print("X: "); Serial.println(parts[1]);
Serial.print("Y: "); Serial.println(parts[2]);
Serial.print("Z: "); Serial.println(parts[3]);
Serial.print("품질(QF): "); Serial.println(parts[4]);
Serial.println();
}
시리얼 모니터에서 lep
명령어를 입력하고 정상 응답이 확인되면 연결 성공입니다.

2. LEC 명령어 파싱 (거리 + 위치 정보)
// --- lec 전체 파싱 ---
void parseLEC(String line) {
Serial.println("[LEC 거리 + 위치 결과]");
int posIndex = line.indexOf("POS,");
if (posIndex == -1) {
Serial.println("→ 위치 정보 누락");
return;
}
String distPart = line.substring(0, posIndex - 1);
String posPart = line.substring(posIndex);
Serial.println("▶ Anchor 거리 정보:");
int anchorIdx = 0;
int anStart = 0;
while ((anStart = distPart.indexOf("AN", anStart)) != -1) {
int idStart = anStart + 2;
int idEnd = distPart.indexOf(",", idStart);
String id = distPart.substring(idStart, idEnd);
int valStart = idEnd + 1;
float x = distPart.substring(valStart, distPart.indexOf(",", valStart)).toFloat();
valStart = distPart.indexOf(",", valStart) + 1;
float y = distPart.substring(valStart, distPart.indexOf(",", valStart)).toFloat();
valStart = distPart.indexOf(",", valStart) + 1;
float z = distPart.substring(valStart, distPart.indexOf(",", valStart)).toFloat();
valStart = distPart.indexOf(",", valStart) + 1;
float d = distPart.substring(valStart, distPart.indexOf(",", valStart)).toFloat();
Serial.print("AN"); Serial.print(anchorIdx++); Serial.print(" (ID "); Serial.print(id); Serial.print("): ");
Serial.print("x="); Serial.print(x); Serial.print(", y="); Serial.print(y); Serial.print(", z="); Serial.print(z);
Serial.print(" → 거리: "); Serial.print(d); Serial.println("m");
anStart = valStart;
}
Serial.println("▶ 태그 위치 정보:");
parseLEP(posPart);
}
시리얼 모니터에서 lec
명령어를 입력하고 정상 응답이 확인되면 연결 성공입니다.

마무리
이 가이드를 통해 Arduino Mega 2560에서 GrowSpace 개발자 태그와의 시리얼 통신을 설정하고, lec
, lep
명령어를 기반으로 실시간 위치 데이터를 파싱하여 출력하는 과정을 실습할 수 있습니다.
lep
: X, Y, Z 좌표 + 품질(QF) 확인lec
: Anchor 정보 + 거리 + 위치 데이터까지 파악 가능
Last updated