반응형
1. OSC 환경 구축 준비물
OSC를 활용하여 아두이노와 PC 간 통신을 설정하려면 다음 준비물이 필요합니다:
- 하드웨어
- 아두이노 보드 (예: Arduino Uno, Mega, Nano 등)
- 아두이노 보드와 연결할 센서 또는 액추에이터
- USB 케이블 (아두이노와 PC 연결용)
- 네트워크 환경 (같은 네트워크에 연결된 PC)
- 소프트웨어
- Arduino IDE: 아두이노 코드 작성 및 업로드용
- Processing 또는 Python: PC에서 OSC 메시지를 송수신할 프로그램
- OSC 라이브러리: 아두이노와 PC 각각에 설치
2. OSC 라이브러리 설치
1) 아두이노용 OSC 라이브러리 설치
- Arduino IDE 실행
- 메뉴에서 Sketch > Include Library > Manage Libraries를 선택합니다.
- 라이브러리 관리자에서 OSC를 검색하여 설치합니다.
- 추천: CNMAT/OSC 라이브러리
2) Processing용 OSC 라이브러리 설치
- Processing을 실행합니다.
- 메뉴에서 Sketch > Import Library > Add Library를 클릭합니다.
- 검색창에 oscP5를 입력하고, 결과에서 oscP5 라이브러리를 설치합니다.
3. 아두이노 코드 작성 및 업로드
아두이노에서 데이터를 OSC 메시지로 전송하려면 다음 코드를 참고하세요.
#include <OSCMessage.h>
#include <WiFi.h>
// Wi-Fi 설정
const char* ssid = "your-SSID";
const char* password = "your-PASSWORD";
// OSC 설정
WiFiUDP Udp; // UDP 사용
const IPAddress outIp(192, 168, 1, 100); // PC의 IP 주소
const unsigned int outPort = 8000; // PC에서 수신할 포트 번호
const unsigned int localPort = 8888; // 아두이노가 사용할 포트 번호
void setup() {
Serial.begin(115200);
// Wi-Fi 연결
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// UDP 설정
Udp.begin(localPort);
Serial.println("UDP started");
}
void loop() {
// 예: 센서 데이터 전송
int sensorValue = analogRead(A0);
OSCMessage msg("/sensor/value");
msg.add(sensorValue);
Udp.beginPacket(outIp, outPort);
msg.send(Udp);
Udp.endPacket();
msg.empty();
delay(100); // 100ms 간격으로 데이터 전송
}
설명:
- WiFi.begin: Wi-Fi 연결을 설정합니다.
- OSCMessage: OSC 메시지를 생성합니다.
- /sensor/value: 메시지의 주소 패턴입니다. PC에서 이 주소를 기준으로 메시지를 처리합니다.
- Udp.beginPacket 및 Udp.endPacket: UDP를 통해 OSC 메시지를 전송합니다.
주의: 아두이노 코드에서 PC의 IP 주소를 반드시 본인의 환경에 맞게 변경하세요.
4. Processing 코드 작성
아두이노에서 보낸 OSC 메시지를 수신하는 Processing 코드는 다음과 같습니다.
import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress arduino;
void setup() {
size(400, 200);
oscP5 = new OscP5(this, 8000); // PC에서 수신할 포트 설정
}
void draw() {
background(0);
fill(255);
textSize(20);
text("Waiting for OSC messages...", 50, 100);
}
void oscEvent(OscMessage msg) {
// 메시지 주소 확인
if (msg.checkAddrPattern("/sensor/value")) {
int sensorValue = msg.get(0).intValue();
println("Received sensor value: " + sensorValue);
}
}
설명:
- oscP5 = new OscP5(this, 8000): 8000번 포트에서 OSC 메시지를 수신합니다.
- oscEvent: OSC 메시지가 도착하면 호출되는 콜백 함수입니다.
- msg.checkAddrPattern: 메시지의 주소 패턴을 확인합니다.
5. 기본 설정 테스트
- 아두이노와 PC 연결
- 아두이노 보드에 코드를 업로드하고, Wi-Fi 네트워크에 연결합니다.
- Processing 실행
- Processing 코드를 실행하여 OSC 메시지를 대기합니다.
- 결과 확인
- 아두이노의 센서 데이터를 PC에서 수신하고, Processing 콘솔에 출력되는지 확인합니다.
6. 다음 단계
이제 OSC 환경이 설정되었으니, 다음 포스팅에서는 OSC 메시지 설계와 다양한 데이터 전송 사례를 다루겠습니다. 이를 통해 더욱 복잡한 데이터를 주고받는 방법을 배울 수 있습니다.
Tip: 네트워크 환경이 안정적이지 않다면, 고정 IP 주소를 사용하는 것이 통신 신뢰성을 높이는 데 유리합니다.
반응형
'개발 > 인터랙티브 실전' 카테고리의 다른 글
[실전] OSC를 활용한 아두이노와 PC의 통신 방법 - 1. 아두이노와 PC 간 통신을 위한 OSC 활용법 (4) | 2024.11.16 |
---|