산업 프로토콜을 아두이노에 연결해보자! – IoT와 OPC UA의 연결고리 만들기
아두이노는 가볍고 빠르게 센서 데이터를 처리할 수 있어, 소형 자동화, IoT 실험, 데이터 수집용 게이트웨이로 자주 활용됩니다.
하지만 산업용 시스템(OPC UA 기반 PLC, SCADA 등)과 직접 연동하려면 다소 복잡한 설정이 필요하죠.
이 글에서는 아두이노를 OPC UA 시스템과 연동하는 2가지 접근 방식을 소개하고, 실제 구현에 필요한 설정과 노하우까지 정리해드립니다.
- MCU 보드: Arduino Uno / Mega / ESP32 (ESP 추천)
- 연동 방식:
- 아두이노 → 중계 서버 → OPC UA Server
- 아두이노 직접 OPC UA Client (ESP32+라이브러리 활용 시 가능)
- 통신 프로토콜: OPC UA (opc.tcp://...)
- 사용 환경:
- 아두이노 IDE + 센서 코드
- 중계용 Python/Node.js 서버 또는 ESP32 자체 OPC UA 구현
🧩 구조별 연동 방식 비교
| 방식 | 구성 | 장점 | 단점 |
| 중계 서버 방식 | 아두이노 → 시리얼 or MQTT → 중계 서버(Python) → OPC UA | 구조 단순, 구현 쉬움 | 실시간성 다소 낮음 |
| 직접 OPC UA Client | ESP32에서 OPC UA 요청 전송 | 실시간성 좋고 구조 간단 | 구현 복잡, 메모리 제약 |
1️⃣ 중계 서버 방식 (추천 접근)
📦 구성도

🧪 아두이노 코드 예제 (센서 값 전송)

// 예: 온도 센서 데이터 Serial로 전송
void loop() {
int temp = analogRead(A0);
Serial.println(temp);
delay(1000);
}
🐍 Python 중계 서버 예제 (opcua 라이브러리 사용)
from opcua import Server
import serial
# OPC UA 서버 생성
server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:4840/")
node = server.register_namespace("ArduinoData")
objects = server.get_objects_node()
sensor_obj = objects.add_object(node, "TemperatureSensor")
temp_val = sensor_obj.add_variable(node, "Temperature", 0.0)
temp_val.set_writable()
# 시리얼 연결
arduino = serial.Serial('COM3', 9600)
server.start()
try:
while True:
data = arduino.readline().decode().strip()
temp_val.set_value(float(data))
except KeyboardInterrupt:
server.stop()
📌 이 방식은 실시간 센서 데이터를 OPC UA 서버로 전달할 수 있어, SCADA, Node-RED, UA Client와 연동 용이합니다.
2️⃣ ESP32 직접 OPC UA 연동 (고급)
- ESP32는 WiFi 지원 + 메모리 여유 → OPC UA 통신 가능
- OPC UA 클라이언트 구현 라이브러리 필요
- freemodbus + libuaclient (C++)
- 또는 ESP32 + Arduino core + OPC UA 구현체 (매우 제한적)
❗️ 하지만 OPC UA는 메모리/성능 요구가 높아, 직접 구현보다는 중계 게이트웨이 구조가 현실적입니다.
🛠️ 실무 노하우 & 팁
| 항목 | 팁 |
| 아두이노 ↔ Python 통신 | 시리얼 통신은 안정성 높지만, MQTT로 확장도 고려 가능 |
| Node-RED 연동 | Python 대신 Node-RED + OPC UA 노드로 중계 가능 |
| OPC UA 서버 주소 | opc.tcp://localhost:4840/ → 실제 PLC 연동 시 외부 IP 사용 |
| 인증서 이슈 | 테스트 시 SecurityPolicy.None 사용, 운영 시 인증서 필요 |
| SCADA 연동 | UA 클라이언트로 UAExpert, Ignition, WinCC 등에서 실시간 시각화 가능 |
'산업 IoT & 스마트 팩토리 디지털트윈 > OPC UA 표준 통신' 카테고리의 다른 글
| OPC UA & C# 통신 예제 – Siemens S7-1200/1500 PLC 연동편 (0) | 2026.02.12 |
|---|---|
| OPC UA & C# 통신 예제 - OMRON NX/NJ PLC 연동편 (0) | 2026.02.12 |
| OPC UA & C# 통신 예제 – 미쯔비시 MELSEC PLC 연동편 (0) | 2026.02.12 |
| OPC UA & C# 기초 통신 예제 – LS산전 PLC 연동편 (0) | 2026.02.11 |
| OPC UA 쉽게 이해하기: 구조부터 Python 예제까지 한눈에 정리! (0) | 2025.06.09 |




