» [라즈베리파이] C#으로 아두이노와 http 통신 방법

[라즈베리파이] C#으로 아두이노와 http 통신 방법

by DUBUKIMCH

C# 클라이언트 코드 (Raspberry Pi에서 실행)

전체 흐름

  1. 아두이노 초기화: 아두이노는 네트워크에 연결되고, HTTP 서버가 시작됩니다. 클라이언트의 HTTP 요청을 기다립니다.
  2. 라즈베리 파이 클라이언트: 라즈베리 파이에서 이 C# 프로그램을 실행하여, 아두이노의 IP 주소로 HTTP GET 요청을 보냅니다. 만약 아두이노에서 특정 문자열(/?k)을 요청받으면, “Hello, World!”를 응답합니다.
  3. 응답 확인: 라즈베리 파이는 아두이노로부터 받은 응답을 출력합니다.

주의사항 및 설정 가이드

  • WiFi SSID 및 비밀번호 설정: ssidpass에 실제 네트워크의 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-코드/

포트 설정 방법 링크 :

You may also like

Leave a Comment

error: Content is protected !!