넷두이노

.NET Micro Framework 살펴보기

.NET Micro Framework는 .NET Framework의 가장 작은 버전으로 아주 작은 크기의 디바이스에서 제한된 파워와 메모리 상에서 구동하는 것을 목표로 만들어졌다. 00~000 MHz 정도의 속도와 KB 단위의 메모리에서 동작한다. 원래는 SPOT 시계용으로 디자인이 되었으며, 다양한 디바이스로 포팅되었다. 오픈소스 프로젝트로 모든 소스가 공개되어 있으며 공식 사이트가 있다. 40% 코드가 커뮤니티에서 작성한 코드라고 한다.

이 글에서는 공식 사이트의 소개 동영상을 통해 .NET MF를 살펴보고자 한다.

개발도구

image

영상이 2012년에 촬영된 것이라 최신 정보는 아니지만 필요한 기본 도구는 위와 같다. 현재 .NET MF 버전 4.3이 출시되어 있으며 Visual Studio 2012를 지원한다. 자세한 내용은 여기서 참고할 수 있다.

최근의 블로그 포스팅을 보면 VS 2013 버전용으로 통합작업을 진행 중이며 향후 몇 주 안에 출시될 예정이라고 한다. Express 버전의 무료 툴이 있으며, Mac이나 Linux에서는 Windows VM과 VS을 쓰거나, Monodevelop을 이용해서 개발할 수 있다.

 

디바이스 형태

디바이스 형태에는 다음과 같은 4가지로 분류할 수 있다.

  1. Arduino 스타일
    image
    • Netduino, Netduino Plus
    • FEZ Panda 류
  2. 소켓 스타일
    image
    image
    image
    • .NET Gadgeteer
    • Netduino GO!
  3. 개발용 보드
  4. 소형 형태
    • Netduino Mini
    • FEZ Mini, Cerb40
    • GHI G120

image

아두이노 호환보드

image

표준화된 소켓을 이용한 히드라 보드

image

image

다양한 소켓 방식의 모듈과 전원 공급을 제어할 수 있는 4개의 릴레이가 적용된 보드(맨 우측)

image

넷두이노 미니가 들어간 게임 디바이스

아키텍쳐

image

아두이노와 유사하게 개발용 머신과 타겟 디바이스가 있으며, 개발-컴파일-배포-디버깅은 개발용 머신에서 작업을 한다. 타겟 디바이스에서는 부트로더 펌웨어가 NETMF Runtime을 로드하고 중간 언어로 컴파일된 코드를 실행한다.

용도

image

메이커들이 .NET MF로 만드는 프로젝트들의 리스트이다. 시계에서부터 수족관 제어, 로봇, IoT 디바이스 등 다양한 것을 만들 수 있다. 홈 모니터링/보완도 큰 분야 중에 하나이다. TCP/IP가 구현된 초소형 웹서버를 구동할 수 있다.

.NET MF를 이용하는 가장 큰 목적은 하드웨어 아이디어를 빠르게 프로토타이핑하는 것이다. 또한, 개발 스킬을 연습할 수 있는데, 저용량 메모리와 저전력의 CPU파워, 적은 분량의 코드로 작성을 해야 하기 때문이다. C# 개발자들에게는 C나 어셈블리를 배우지 않고도 디바이스 개발을 할 수 있다는 것이 장점이다.

사례

image

게임기

image

윈도우폰으로 잔디 스프링클러를 동작하는 사례

image

음악 악기 사례

image

플로피 디스크로 스타워즈 테마곡 연주

image

센서로 전방을 인식해서 이동하는 로봇

개발

image

VS에서 새 프로젝트 메뉴를 실행하여 Visual C# > Micro Framework를 선택하면 위와 같이 Netduino 어플리케이션 프로젝트를 생성할 수 있다.

image

Program.cs 파일을 열면 위와 같은 코드를 볼 수 있다. Reference 추가를 통해서 버튼, LED, 가변저항을 처리하는 라이브러리를 불러와서 사용할 수 있다.

image

일반 프로젝트와 다른 점은 Main() 함수의 마지막에 Thread.Sleep(Timeout.Infinite); 를 추가해서 프로그램이 계속 실행되도록 하는 점이다.

완성된 코드를 Build하고 Start Debugging을 실행하면 된다.

image

하단의 버튼을 눌렀을 때 좌측 상단의 LED가 들어오는 것을 확인할 수 있다.

image

Breakpoint를 이용해서 Debug를 할 수 있다.

image

위 사진은 보드에 연결한 MIDI 모듈과 MIDI 인터페이스 신디사이저를 연결한 데모이다.

image

Gadgeteer 모듈을 드래그앤드롭으로 디자인할 수 있는 화면이다. 좌측 상단에 MIDI 인터페이스 모듈을 볼 수 있다.

image

우측 상단의 터치 패널을 통해서 일종의 음악을 만드는 디바이스 데모이다.

image

이 데모는 손 아래 쪽에 있는 초음파 거리 센서를 이용해서 측정한 손과 보드 사이의 거리를 MIDI 음으로 변환하여 소리를 연주하는 데모이다.

image

image

ParallaxPingModule로 거리를 측정하는 코드이다.

image

_ping.GetDistance(…)를 이용하여 거리 값을 측정한 후에 거리에 따라 음을 만들고, midi.SendNoteOn(…)으로 소리를 보낸다.

image

.NET Gadgeteer 어플리케이션을 만드는 화면이다. Micro framework 대신 Gadgeteer를 선택하였다.

image

Program.gadgeteer 파일을 열고 위와 같이 드래그앤드롭으로 보드와 모듈들을 배치하고 소켓을 연결시킨다. 각 모듈 밑에 button, led라는 인스턴스 이름을 지정할 수 있다. 위와 같은 방식으로 실제 보드와 모듈도 연결시킨다.

image

Program.generated.cs 파일을 열어보면 위와 같이 초기화 코드가 생성되어 있다. 이 프로젝트의 경우 Thread.Sleep(Timeout.Infinity)가 필요 없다.

image

위와 같이 button, led 인스턴스를 이용하여 동작 코드만 작성하면 실행시킬 수 있다.

image

버튼을 눌러서 초록색 LED를 점등하는 화면이다. 소켓 방식을 이용한 Gadgeteer를 이용하면 보다 쉽게 하드웨어 프로젝트를 만들어 볼 수 있다.

여기까지 간단히 .NET Micro Framework를 살펴보았다. 최근 메이커 커뮤니티가 커지면서 많은 사람들이 직접 하드웨어를 만드는 취미 생활을 가지고 있다. 또한, 미국에서는 이러한 취미 활동이 보다 전문화 되면서 대기업들도 관심을 가지고 관련 산업이 점차 커지고 있는 추세라고 한다. .NET Micro Framework도 최근 1~2년간 별다른 업데이트가 없다가, 최근에 IoT의 유행과 함께 다시 주목을 받으며 마이크로소프트에서도 IoT 전담 팀이 꾸려지고 Visual Studio 2013 버전용으로 새로 개발이 시작되었다. 앞으로 어떻게 변화하고 응용될지 관심을 가지고 지켜보면 재미있을 것 같다.

image

참고로 IoT는 다양한 디바이스 크기에 따라 개발 플랫폼이 다르게 구성될 수 있다. .NET Micro Framework는 가장 작은 Micro 수준의 디바이스용으로 만들어진 플랫폼이다. IoT 디바이스 분류 및 기술에 대해서는 여기를 참고하자.

Advertisements