Microsoft MVP성태의 닷넷 이야기
사물인터넷: 1. .NET Micro Framework - 넷두이노 플러스 [링크 복사], [링크+제목 복사],
조회: 33820
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 7개 있습니다.)

.NET Micro Framework - 넷두이노 플러스

크리스마스 선물로 회사에서 ^^ 넷두이노를 받았습니다.

[70186D] 넷두이노 플러스 - 이더넷 기능 SD소켓 포함형 (Netduino Plus) 
; http://www.artrobot.co.kr/front/php/product.php?product_no=638

오~~~ 멋지죠? ^^

곧바로 다음의 웹 페이지를 보고 개발환경을 구성해 보았습니다.

개발 환경 구성
; http://netduino.com/downloads

다음은 설치해야 할 프로그램 목록입니다.

  1. Microsoft Visual C# Express 2010
  2. .NET Micro Framework SDK v4.1 (http://www.netduino.com/downloads/MicroFrameworkSDK.msi)
  3. Netduino SDK v4.1.0 (32-bit: http://www.netduino.com/downloads/netduinosdk_32bit.exe) or Netduino SDK v4.1.0 (64-bit: http://www.netduino.com/downloads/netduinosdk_64bit.exe)

제 경우에는 Visual Studio 2010이 이미 설치되어 있기 때문에 1번은 생략하고 2번과 3번을 다운로드 받아서 설치했습니다.

아래는 .NET Micro Framework SDK 4.1 (QFE1)의 설치 구성 요소입니다.

netduino_startup_1.png

설치가 완료되면 "Microsoft Framework SDK Release Notes.txt" 파일이 열리는 데 다음의 사항 정도가 기억해 둘만 합니다.

=== New behavior ===
1) DPWS stack is compatible with Windows 7 WSDAPI and WCF4.0
2) Flexibility of the SPI interface has improved 
3) Support for Big Endian devices
4) Support for Visual Studio 2010 with multi-targeting of previous .NET MF 
   assemblies and versions from the .NET 4.1 SDK  
5) Addition of new SSL and TCP/IP stacks

Netduino SDK v4.1.0은 제 컴퓨터가 윈도우 8 64비트이기 때문에 64비트 버전을 설치했습니다.

모든 게 정상적으로 설치가 되었으면 Visual Studio 2010을 실행하고, "File" / "New" / "Project" 대화창을 띄우면 Visual C# 언어에 "Micro Framework" 범주가 보이고 그 안에 다음의 7개 프로젝트 템플릿이 보입니다.

  • Class Library
  • Console Application
  • Device Emulator
  • Netduino Application
  • Netduino Mini Application
  • Netduino Plus Application
  • Window Application

제가 구매한 보드는 "Netduino Plus"이기 때문에 "Netduino Plus Application" 프로젝트를 선택해서 생성하면 다음과 같이 기본 코드가 Program.cs에 포함되어 있습니다.

/*
참조 DLL
 - Microsoft.SPOT.Hardware (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\Microsoft.SPOT.Hardware.dll)
	* 기본적인 하드웨어 정보에 대한 내용을 관리 
	* Battery, Cpu, I2CDevice, InputPort, OutputPort, SerialPort, SPI, SystemInfo, Utility,...
 - Microsoft.SPOT.Native (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\Microsoft.SPOT.Native.dll)
	* Debug, SPOT(Smart Personal Objects Technology), 암호화, 하드웨어, 메시징, 터치 등의 기능을 담당
 - mscorlib (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\mscorlib.dll)
	* 닷넷 마이크로 프레임워크 실행의 기본이 되는 모듈
 - SecretLabs.NETMF.Hardware (C:\Program Files (x86)\Secret Labs\Netduino SDK\Assemblies\v4.1\SecretLabs.NETMF.Hardware.dll)
	* 넷두이노 제조업체에서 제공, AnalogInput, PWM 클래스 제공
 - SecretLabs.NETMF.Hardware.Netduino (C:\Program Files (x86)\Secret Labs\Netduino SDK\Assemblies\v4.1\SecretLabs.NETMF.Hardware.Netduino.dll)
	* BaudRates, InterruptModes, Pins, RegistorModes, SerialPorts, SPI_Devices 클래스 제공
*/
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace NetduinoApplication1
{
    public class Program
    {
        public static void Main()
        {
            // write your code here
        }
    }
}

자, 이제 Netduino를 USB 케이블로 컴퓨터에 연결해 볼까요? ^^ 정상적으로 연결되면, 아래의 사진에서는 잘 보이지 않지만 PWR라는 글자 아래의 LED가 환하게 빛납니다.

netduino_startup_2.png

그리고 윈도우의 장치 관리자(Device Manager)에 보면 "Universal Serial Bus controllers" 노드에 "Netduino" 항목이 추가된 것을 확인할 수 있습니다. (장치 관리자는 항상 띄워놓는 것이 좋습니다. 가끔씩 넷두이노로 프로그램 배포가 실패하는 것을 장치가 없어지는 것을 보고 판단할 수 있습니다. 이런 때면 USB케이블을 빼고 다시 연결해 주면 됩니다.)

그리고 Visual Studio의 프로젝트 속성창에서 USB 영역을 선택하면 "Device" 콤보상자에 "NetduinoPlus_NetduinoPlus" 항목이 보이는데 이를 선택해 줍니다.

netduino_startup_3.png

^^ 자, 이제 본격적인... 이 아니라 아주 기초적인 LED 깜빡이는 예제를 작성해 보겠습니다.

넷두이노 보드에는 기본적으로 1개의 LED가 장착되어 있습니다. LED는 출력에 해당하므로 OutputPort 클래스를 선택하고 다음과 같이 코딩해 줍니다.

OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); 
					// Pins.ONBOARD_LED == 보드에 있는 LED 지정
					// false == LED 초기 상태 지정 (만약 이 값이 true이면 LED가 켜짐)

그다음부터는 그냥 무한 루프를 돌며 LED에 true/false 값을 반복적으로 쓰기만 하면 LED가 깜빡이는 효과를 얻을 수 있습니다.

public static void Main()
{
    bool ledOn = false;
    OutputPort led = new OutputPort(Pins.ONBOARD_LED, ledOn);
    while (true) // 일반적인 프로그램은 종료를 가정하고 프로그램을 만들겠지만, robotics 분야에서는 무한 루프가 보통 사용되지요. 
    {
        led.Write(ledOn = !ledOn);
        Thread.Sleep(1000);
    }
}

이렇게 만들고 Ctrl + F5 키를 누르면 넷두이노에 배포 후 LED가 깜빡이는 것을 볼 수 있습니다. 물론, F5 키를 눌러 디버깅도 가능합니다. BP(Breakpoint)도 걸리고 변수값도 확인 됩니다.




넷두이노 보드에는 기본적으로 스위치가 하나 제공되는 데 이것은 "입력"으로 사용될 수 있습니다. 이것을 사용하는 예제로 다음의 글을 참고했습니다.

[Netduino] LED에 불이 깜빡깜빡!
; http://talkingaboutme.tistory.com/218

코드는 동일하게 따라 했습니다.

public static void Main()
{
    OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
    InputPort sw1 = new InputPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled);
    bool switchState = false;

    while (true)
    {
        switchState = sw1.Read();
        led.Write(!switchState);
    }
}

InputPort의 값이 저같은 비전공자에게는 생소합니다. 2번째(glitch), 3번째(resistor) 인자의 값이 문제인데요. 자세한 설명은 위의 글을 참고하세요. ^^

이 예제를 실행하면 스위치를 누른 경우 Read에서는 false를 반환하고, 누르지 않은 경우에 true를 반환합니다. "[Netduino] LED에 불이 깜빡깜빡!" 글에 의하면 펌웨어가 구버전이어서 그렇다고 하는데요. 암튼, 그래서 위에서는 led.Write에 switchState값을 NOT 연산자로 바꿔서 전달하고 있습니다.

실행하면 보드위의 스위치를 누르면 LED 불이 들어오고, 떼면 불이 꺼집니다.

그나저나, 웹 검색을 해보면 역시나 넷두이노 같은 것은 저 같은 순수 소프트웨어 개발자 입장에서는 별다르게 응용해 볼 것이 없는 것 같습니다. 그래도 아이디어를 한번 내봐야지요. ^^

어쨌든, 오늘은 여기까지! ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/28/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2013-01-07 01시08분
정성태
2013-08-12 11시50분
GPS 모듈(UST-SNR-GPS)을 아두이노에 연결하기(1/2)
; http://cafe.naver.com/studyonarduino/296
정성태
2014-01-23 04시45분
10 Interesting .NET Micro Framework Demos and Applications
; http://10rem.net/blog/2011/01/19/10-interesting-net-micro-framework-demos-and-applications
정성태
2014-04-29 07시05분
Building a Netduino-Based HID Sensor for WinRT
; http://msdn.microsoft.com/en-us/magazine/dn605878.aspx
정성태
2014-11-28 07시58분
정성태
2016-08-09 01시01분
아두이노 개발 시작
; http://blog.naver.com/infopub/220783120299
정성태
2016-08-09 04시56분
아두이노를 사용한 에어콘 자동 조절기 만들기 (스마트 홈, 스마트 오피스)
; http://blog.poin2.com/2015/06/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EC%97%90%EC%96%B4%EC%BD%98-%EC%9E%90%EB%8F%99-%EC%A1%B0%EC%A0%88%EA%B8%B0/
정성태

... 166  167  168  169  170  171  172  173  174  175  [176]  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
635정성태12/29/200826367오류 유형: 66. 파일 암호화 오류 - Recovery policy configured for this system contains invalid recovery certificate
634정성태12/29/200840702기타: 25. 가상 키보드 관련 정리 [4]
633정성태12/20/200826175기타: 24. RMClock for x64 [2]
632정성태12/19/200834623기타: 23. D820 - 배터리 없이 바이오스 업데이트 방법 [2]파일 다운로드1
631정성태12/10/200843621VC++: 36. Detours 라이브러리를 이용한 Win32 API - Sleep 호출 가로채기 [3]
630정성태12/9/200824415.NET Framework: 117. WPF - TreeView에서 항목이 펼쳐질 때 Cursors.Wait 사용파일 다운로드1
629정성태12/7/200833627.NET Framework: 116. 소켓 연결 시간 제한
628정성태12/6/200822210.NET Framework: 115. Marshal 타입 관련 2가지 자원 해제 메서드파일 다운로드1
627정성태12/6/200824813VS.NET IDE: 58. VS.NET IDE 팁 - 커서 위치 이동 [1]
626정성태12/6/200824906오류 유형: 65. TF53018: The application tier XXXXXXX is attempting to connect to a data tier with an incompatible version
625정성태12/6/200825120오류 유형: 64. TFS 2008 SP1 설치 - MsiApplyMultiplePatches returned 0x643
624정성태12/5/200826049.NET Framework: 114. WPF 이벤트에 속한 핸들러 확인 [2]파일 다운로드1
623정성태12/4/200830506디버깅 기술: 22. VS.NET SP1 + .NET Framework 소스 코드 디버깅 [2]파일 다운로드1
622정성태12/1/200832788오류 유형: 63. WPF - XamlParseException 대응 방법 [2]
621정성태11/30/200824845Team Foundation Server: 27. TeamBuild + VDPROJ 셋업 프로젝트 [1]
620정성태11/30/200823731디버깅 기술: 21. 올바른 이벤트 예외 정보 출력
619정성태11/30/200823833디버깅 기술: 20. 예외 처리를 방해하는 WPF Modal 대화창파일 다운로드1
618정성태11/29/200824114.NET Framework: 113. 이벤트에 속한 이벤트 핸들러 확인파일 다운로드1
617정성태11/26/200830344.NET Framework: 112. How to Interop DISPPARAMS [2]파일 다운로드2
616정성태11/26/200823645디버깅 기술: 19. C++/CLI - F11 디버깅 시의 변수 초기화파일 다운로드1
615정성태11/9/200833234.NET Framework: 111. WPF - Window, UserControl 클래스 상속 [1]
614정성태11/9/200833160.NET Framework: 110. WPF - 전역 예외 처리 [4]파일 다운로드1
613정성태11/8/200822710.NET Framework: 109. WPF - SystemColors 색상표파일 다운로드1
612정성태11/1/200828064.NET Framework: 108. WPF + WCF 환경에서는 DataContract를 권장 [1]
611정성태10/31/200822086오류 유형: 62. WPF - Visual Studio 2008 비정상 종료
610정성태10/24/200824647Team Foundation Server: 26. TFS 2008 SP1 + SQL Server 2008 설치
... 166  167  168  169  170  171  172  173  174  175  [176]  177  178  179  180  ...