56
C# 클라이언트 코드 (Raspberry Pi에서 실행)
전체 흐름
- 아두이노 초기화: 아두이노는 네트워크에 연결되고, HTTP 서버가 시작됩니다. 클라이언트의 HTTP 요청을 기다립니다.
- 라즈베리 파이 클라이언트: 라즈베리 파이에서 이 C# 프로그램을 실행하여, 아두이노의 IP 주소로 HTTP GET 요청을 보냅니다. 만약 아두이노에서 특정 문자열(
/?k
)을 요청받으면, “Hello, World!”를 응답합니다. - 응답 확인: 라즈베리 파이는 아두이노로부터 받은 응답을 출력합니다.
주의사항 및 설정 가이드
- WiFi SSID 및 비밀번호 설정:
ssid
와pass
에 실제 네트워크의 SSID와 비밀번호를 입력해야 합니다. - IP 주소 확인: 아두이노가 WiFi에 연결되면 콘솔에 IP 주소가 출력됩니다. 이 IP 주소를 C# 클라이언트의
arduinoIp
변수에 설정합니다. - 포트: Arduino의 HTTP 서버가 포트 80에서 동작하므로, 방화벽 설정에서 포트 80을 허용해야 합니다.
- 라즈베리 파이에서 C# 프로그램 실행:
.NET SDK
가 라즈베리 파이에 설치되어 있어야 합니다 (dotnet run
명령을 사용하여 실행).
이 구성은 간단한 IoT 프로젝트에 적합하며, 라즈베리 파이가 아두이노와 통신하여 데이터를 교환하거나 명령을 전송할 수 있도록 확장할 수 있습니다.
주요 부분 설명
- HTTP 요청 URL 생성
string url = $"{arduinoIp}/?k";
arduinoIp
변수를 사용하여 Arduino 서버의 IP 주소를 설정하고, 쿼리 파라미터 /?k
를 추가하여 완전한 URL을 만듭니다.
- HTTP 요청 보내기
HttpResponseMessage response = await client.GetAsync(url);
GetAsync
메서드를 통해 url
에 GET 요청을 보냅니다. EnsureSuccessStatusCode()
로 요청이 성공했는지 확인하고, 성공하지 못하면 예외를 발생시킵니다.
- 응답 처리
- 응답 본문을 문자열로 읽고 콘솔에 출력합니다.
- 예외가 발생하면 오류 메시지를 출력합니다.
static async Task Main(string[] args) {
// HttpClient로 Arduino 서버에 요청 보내기
...
}
- 전체 코드
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace ArduinoClient
{
class Program
{
static async Task Main (string[] args)
{
// Arduino IP address and port
string arduinoIp = "http://???.??.?.???"; // Replace <your_arduino_ip> with the actual IP address of your Arduino
using (HttpClient client = new HttpClient())
{
// Append the query parameter
string url = $"{arduinoIp}/?k";
try
{
// Send GET request
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
// Read response content
string responseBody = await response.Content.ReadAsStringAsync();
// Output response to console
Console.WriteLine("Response from Arduino:");
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("Request error:");
Console.WriteLine(e.Message);
}
}
}
}
}
아두이노 연결 방법 링크 : https://dubukimch.com/아두이노-arduino-uno-r4-wifi-코드/
포트 설정 방법 링크 :