> For the complete documentation index, see [llms.txt](https://freegrow-1.gitbook.io/product-docs-kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freegrow-1.gitbook.io/product-docs-kr/creatorkit_q1/undefined/arduino-uno.md).

# Arduino Uno 연동

### **이 글에서는**

GrowSpace UWB 리스너 또는 개발자 태그를 Arduino Uno와 연결하여, `lep` 명령어 기반으로 실시간 위치 데이터를 수신하는 방법을 안내합니다. Uno는 하드웨어 시리얼 포트가 하나뿐이므로, 소프트웨어 시리얼 방식인 AltSoftSerial을 사용해 데이터를 안정적으로 처리합니다.

***

### 준비물

* GrowSpace 리스너 또는 개발자 태그 (GR-LST-1001 또는 GR-TGD-1001S)
* Arduino Uno 보드
* 점퍼 와이어
* USB 케이블 (PC 연결용)
* Arduino IDE
* AltSoftSerial 라이브러리 (소프트웨어 시리얼 통신용)

***

### Arduino IDE 및 라이브러리 설치

#### Arduino IDE 설치

* [Arduino 공식 다운로드 링크](https://www.arduino.cc/en/software/)에서 운영체제에 맞는 버전으로 설치하세요.

#### AltSoftSerial 설치

1. Arduino IDE 실행
2. 상단 메뉴 → **스케치 > 라이브러리 포함하기 > 라이브러리 관리**
3. AltSoftSerial 검색 후 최신 버전 설치

### 왜 AltSoftSerial이 필요한가요?

Arduino Uno는 USB 포트와 연결되는 기본 하드웨어 시리얼(`Serial`) 포트가 하나만 있습니다. 하지만 GrowSpace UWB 장치는 115200bps의 고속 시리얼 통신을 필요로 하기 때문에, Uno의 기본 포트만으로는 PC와 장치 간 양방향 통신을 동시에 처리하기 어렵습니다.

#### 일반 SoftwareSerial의 한계

* 고속 통신(115200bps)에서 오류 발생률이 높음
* 타이머와 충돌하여 millis(), delay() 등의 함수 사용에 제한

#### AltSoftSerial의 장점

* 내부 타이머를 기반으로 더욱 정확하고 안정적인 통신 제공
* 115200bps 이상의 고속 통신에서도 안정적인 수신 가능
* 사용 방식이 Serial과 유사해 구현이 쉬움
* Uno에서는 RX: D8, TX: D9로 고정되어 충돌 최소화

> 따라서 Uno 보드에서 GrowSpace 장치를 안정적으로 연동하기 위해서는 AltSoftSerial 사용이 권장됩니다.

***

### 시리얼 핀 연결 (AltSoftSerial)

GrowSpace 장치와 Arduino Uno의 연결은 다음과 같습니다. Uno는 5V 장치와의 연결이 가능하므로, 우측 커넥터(5V 기반)를 사용합니다.

| GrowSpace 장치 핀 | Arduino Uno 핀 |
| -------------- | ------------- |
| HV (5V)        | 5V            |
| GND            | GND           |
| TXD            | D8            |
| RXD            | D9            |

> ⚠️ TX ↔ RX는 반드시 교차 연결해야 합니다. 장치의 TX → Uno의 D8 (AltSoftSerial의 RX) 장치의 RX → Uno의 D9 (AltSoftSerial의 TX)

{% columns %}
{% column %}

<figure><img src="https://2885569511-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYKyrLLe7cm7ZOhiSB0gg%2Fuploads%2FKB1PvVN1o35rLpV0GmnT%2Fimage.png?alt=media&amp;token=c41d00cd-f2ce-4746-8cf7-0cb4ba829b4e" alt=""><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}

<figure><img src="https://2885569511-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYKyrLLe7cm7ZOhiSB0gg%2Fuploads%2FJC3vOCaWIxmHclYXgqaJ%2Fimage.png?alt=media&amp;token=1f03c5e7-f7e3-402f-8a04-2f34b3cbf6e3" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

***

### AltSoftSerial 기반 데이터 수신 예제 코드

```python
#include <AltSoftSerial.h>

AltSoftSerial altSerial;  // RX: D8, TX: D9

void setup() {
  Serial.begin(115200);     // USB 시리얼
  altSerial.begin(115200);  // GrowSpace 장치 시리얼
  delay(100);

  // 장치 리셋
  altSerial.print("reset\r");
  delay(1000);

  // 버퍼 정리
  while (altSerial.available()) {
    altSerial.read();
  }

  // 위치 요청 시작
  altSerial.print("lep\r");
}

void loop() {
  while (altSerial.available()) {
    char c = altSerial.read();
    Serial.write(c);  // PC에 출력
  }
}
```

***

### 시리얼 모니터 설정 및 테스트

* 코드를 업로드한 후 Arduino Uno와 PC를 연결하세요.
* Arduino IDE에서 **도구 > 시리얼 모니터** 열기
* **속도: 115200**, 줄바꿈(Newline): 활성화

#### 출력 예시 (개발자 태그 / 리스너 공통)

```
POS,0,0104,12.34,56.78,9.01,95,BC
```

<figure><img src="https://2885569511-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYKyrLLe7cm7ZOhiSB0gg%2Fuploads%2FWW9cK8MJGjF5VcV9jrop%2Fimage.png?alt=media&amp;token=04322c14-4fe0-41b2-9221-3d4efb8b76b9" alt=""><figcaption></figcaption></figure>

또는

```
X: 12.34, Y: 56.78, Z: 9.01
```

<figure><img src="https://2885569511-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYKyrLLe7cm7ZOhiSB0gg%2Fuploads%2FVPz3TCVoXs3bjTvbEHrv%2Fimage.png?alt=media&amp;token=2624dc37-a976-4553-b8ac-395fe74c91ed" alt=""><figcaption></figcaption></figure>

GrowSpace 장치로부터 정상적으로 위치 데이터를 수신하면 위와 같은 값이 출력됩니다.

***

### 문제 해결 가이드

* **출력이 없을 경우**
  * 점퍼 와이어 연결 상태를 다시 확인하세요.
  * AltSoftSerial 라이브러리가 제대로 설치되었는지 확인하세요.
  * Uno 보드의 포트를 다시 선택하고, 보드 재부팅 후 재시도하세요.
* **보다 안정적인 통신이 필요한 경우**
  * Arduino Mega 2560 보드를 사용하는 것을 권장합니다. Mega는 하드웨어 시리얼을 4개 지원합니다.

***

### 마무리

이 매뉴얼에서는 GrowSpace UWB 리스너 또는 개발자 태그를 Arduino Uno와 연결해 실시간 위치 데이터를 수신하는 방법을 살펴보았습니다. `lep` 명령어로 수신한 위치 정보는 다양한 실내 측위 프로젝트 및 RTLS 시스템에 적용할 수 있습니다.
