2013년 8월 21일 수요일

C# 을 이용하여 PC-아두이노 통신

날도 덥고...
이번편은 짧게 간다. 그리고 약간 공돌이 맛이 들어간다.

대세는 모바일이고 스마트폰이긴 한데.. 그래도 간혹 PC와 연동해서 작업을 좀 해야 될때가 있다. 여러가지 루트가 있지만 오늘은 그냥 아두이노를 USB 포트에 꼽으면 기본으로 작동하는 시리얼 통신을 이용하기로하고 개발툴도 오랜 벗(?)인 마이크로 소프트사의 C#을 이용해 보겠다.

사실 스마트폰과 아두이노간의 유선연결도 가능하다. 구글의 ADK 를 이용하거나 아니면 OTG 케이블 사서 일반 아두이노와 스마트폰 연결 시키면 되는데... 
일단 구글 ADK 표준 Kit는 비싸고 개발 IDE도 어렵다..(AppInventor 에 연결할수 있는 블럭이 없다) 차라리 아두이노에 블루투스 모듈이 기본 옵션으로 장착되어있는 모델이 나오는게 좋을듯도 보이는데. 그러면 또 부품 조립하면서 이해하는 맛이 떨어지기도 하고.. 아뭏든 스마트폰과 아두이노의 유선 연결 방식은 매력이 많이 떨어진다.


1. 일단 아두이노 스케치

/* 
Arduino and C# communication
*/
void setup()  
{                
  pinMode(13, OUTPUT);
  Serial.begin(9600);  
}

void loop()                    
{
  if(Serial.available())
  {
    int c = Serial.read();
    if (c == '1')
    {    
      digitalWrite(13,HIGH);
    }
    else if (c == '0')
    {
      digitalWrite(13,LOW);
    }
  }
}

별 다른거 없다. 일단 컴파일하고 업로드 한다.



2. PC 프로그램

이것도 초간단 버전으로 간다. 일단 Windows Form 기반이다. 버튼 2개를 만들어 적당한 이름주고 .. 반드시 serialPort 컴포넌트도 넣는다..



그리고 소스에디터 화면으로 넘어와서..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM6"; //실제 연결된 포트 확인해서
            serialPort1.BaudRate = 9600;
            serialPort1.Open();            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Button ON
            serialPort1.Write("1");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Button OFF
            serialPort1.Write("0");
        }
    }
}

이리 정리해주고 실행해 본다. 





아두이노에서 신호를 받아 PC에서 분석을 해야할 일이 우리 공돌이들한테는 더 많을지 모르겠는데..  그건 각자 알아서 하시고...

그리고 아두이노 여러모델 중 어떤걸 선택할지 고민하시는분.. 여기 사이트 강추..
기술적인 내용도 많고..

댓글 없음: