산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

IoT:Windows 원격 Arduino 및 범용 앱

구성품 및 소모품

Arduino UNO
× 1
SparkFun 블루투스 모뎀 - BlueSMiRF 실버
골드 버전을 사용했습니다.
× 1

이 프로젝트 정보

참고:하단의 댓글에서 업데이트를 확인하세요.

Windows 10 UWP 앱은 원격 배선을 기반으로 구축할 수 있습니다. 앱이 Firmata를 실행하는 Arduino 장치와 상호 작용할 수 있도록 라이브러리. Windows 원격 Arduino "Blinky" 예제와 유사하지만 기능이 추가된 앱이 개발되었습니다. GPIO(출력 AND 입력)와 일부 아날로그 IO를 수행합니다. 이 앱은 이 시리즈의 이전 블로그에 있는 Windows 8.1 버전과 기능적으로 동일합니다. 이 블로그는 이전 블로그와 동일한 자료(즉, 많은 부분을 반복함)를 통해 작동하지만 Windows 8.1 유니버설 앱 컨텍스트가 아닌 UWP(유니버설 Windows 플랫폼) 컨텍스트에서 작동합니다. 앱의 대상은 Win 10 데스크톱, Win 10 전화 및 Raspberry PI2(Win 10 IoT 실행)입니다. 후자의 대상은 "진행 중인 작업"입니다. 이 블로그는 이전 블로그를 참조하지 않고도 읽을 수 있습니다.

이 프로젝트는 내 블로그(http://embedded101.com/Blogs/David-Jones/entryid/636/Windows-10-IoT-Windows-Remote-Arduino-and-Universal-Windows-Platform-Apps

Windows 원격 Arduino "Blinky" 예 ms-iot.github.io에 있습니다.


유니버설 앱 및 유니버설 Windows 플랫폼 앱

Windows 8.1에서 UA(유니버설 앱)의 정점에 도달 Windows Intel 데스크톱, ARM RT Surface 및 Windows Phone(ARM)을 대상으로 하는 앱을 모두 동일한 솔루션에서 구현할 수 있습니다. 이벤트 핸들러, 일반 계산 및 데이터와 같은 공통 코드를 공유할 수 있습니다. XAML 코드는 대상에 고유해야 했습니다. 각 대상에 대해 별도의 하위 프로젝트를 컴파일했습니다. 컴파일하는 동안 공통 코드가 포함되었습니다.

Windows 10의 "One Windows" 패러다임 전환으로 모든 대상에 대해 XAML 코드를 포함하여 모든 대상에 대해 동일한 코드를 사용할 수 있습니다. 동일한 프로젝트를 다른 대상에 대해 다시 컴파일하기만 하면 됩니다. UA 이름이 Windows 8 앱에 적용되면서 진정한 범용 앱에 대한 새로운 이름이 필요했습니다. 따라서 유니버설 Windows 플랫폼 앱이라는 이름은 Windows 10용으로 만들어졌습니다.

모든 Windows 10 플랫폼은 UWP 앱을 지원합니다. 그러나 각 플랫폼에 특정한 확장이 있습니다. 예를 들어 Windows 10 IoT 확장은 GPIO, I2C, SPIO 등을 지원합니다. 모바일 확장은 전화 기능을 지원합니다. 기타 UWP는 모든 기기에서 보장된 핵심 API 계층을 제공합니다.


Windows 10 확장 SDK. 데스크톱, 모바일 및 IoT 확장이 확인됩니다.

블로그의 경우 이전 블로그에서와 같이 UA 대신 UWP 템플릿을 사용합니다. 확장 SDK가 필요하지 않습니다.


[1] 아두이노 기기와 블루투스 통신을 설정합니다.

Win 8.1 활동을 이미 완료했다면 이 섹션을 건너뛸 수 있습니다.

USB 또는 블루투스는 Arduino 장치와 Windows 장치 간의 Firmata 통신에 사용할 수 있습니다. Windows 10의 경우 둘 다 사용할 수 있지만 Windows 8.1의 경우 Bluetooth만 사용할 수 있습니다. 이 버전의 앱에서는 Bluetooth가 사용됩니다. 저는 Sparkfun Bluetooth Mate Gold를 사용한 반면 Sparkfun Bluetooth Mate Silver는 위에서 언급한 'Blinky' 예시와 함께 사용했습니다. 주요 차이점은 Gold의 범위는 최대 100m인 반면 Silver의 범위는 10m입니다. 기본 핸드셰이킹 설정도 다릅니다. 둘 다 Bluetooth 장치의 작동 모드를 구성하고 Arduino 직렬 포트와 상호 작용하는 데 모두 사용할 수 있는 TTL 수준 UART 인터페이스를 가지고 있습니다.

Bluetooth 장치를 구성해야 하는 경우 Sparkfun 또는 Freetronics USB-Serial 또는 Free 장치를 사용하여 데스크탑 직렬 터미널을 통해 장치를 구성할 수 있습니다. PIO6(실제로는 PIO4) 핀을 높음으로 연결하고 세 번 토글하여 장치를 기본 설정으로 공장 초기화할 수도 있습니다.

Bluetooth Mate는 Sparkfun FTDI Basic과 동일한 핀아웃을 가지고 있어 서로 바꿔서 사용할 수 있습니다. Bluetooth Mate를 FTDI 기본 보드에 직접 연결할 수 없습니다(TX와 RX를 바꿔야 함). 해당 구성은 데스크탑에 연결된 FTDI 장치 USB와 함께 데스크탑 직렬 터미널과 함께 사용하여 Bluetooth 장치를 구성하거나 데스크탑에서 직렬 통신을 위해 Bluetooth 장치를 사용할 수 있습니다.

기본 TTL UART 직렬 설정은 다음과 같습니다.

<울>
  • · 전송 속도 115,200
  • · 8비트
  • · 패리티 없음
  • · 1 정지 비트
  • · 하드웨어 흐름 제어 활성화됨(Mate Silver에서는 없음)
  • · 직렬 포트 프로필(SPP):FireFly-WXYZ
    여기서 WXYZ는 장치의 BT MAC 주소의 마지막 4자리입니다.
  • · 암호 1234
  • 기기는 최대 8개의 기기 페어링을 저장할 수 있습니다.

    Bluetooth 장치에 대한 설명서는 다음 위치에 있습니다.
    http://www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-bluetooth-um.pdf

    Firmata 구성은 변경해야 하는 57600의 전송 속도 또는 이에 대해 구성된 Bluetooth 장치에 대한 것입니다. 이 연습에서는 더 쉬운 접근 방식인 Firmata 구성을 수정합니다. 하드웨어 제어 흐름은 Bluetooth 장치를 구성하여 처리할 수도 있지만 이 연습에서는 RTS를 CTS에 연결하여 처리합니다.

    Bluetooth 장치를 브레드보드에 장착하고 거기에서 Arduino 장치에 연결할 수 있지만, 저는 Prototyping Shield에 소켓을 장착하기로 선택했습니다.

    6핀 Arduino Shield 헤더는 소켓이 바깥쪽을 향하도록 하여 TTL UART 핀에서 Bluetooth 장치에 납땜되었습니다. 핀은 아래쪽으로 900도로 구부러져 있어 장치를 다른 실드 헤더에 수직으로 연결할 수 있습니다. 그런 다음 구성이 필요한 경우 BT 소켓을 사용하여 유사하게 장착된 FTDI 기본 모듈에 직접 연결할 수 있습니다. 나중에 공장 초기화를 위해 와이어가 Bluetooth 모듈의 PIO6(PIO4)에 납땜되었습니다.

    그림 3 UART 핀에 실드 헤더와 실드 헤더가 있는 Bluetooth 모듈

    8개의 쉴드 헤더는 하단의 프로토타입 쉴드 중앙에 장착되었습니다. 또한 실드 외부에 헤더를 추가하여 Uno에 직접 연결할 수 있습니다.

    그림 4 블루투스 모듈을 장착하기 위한 Arduino Prototype Shield

    그런 다음 Bluetooth 모듈은 GPIO 핀을 향하고 핀 0 및 1(Rx/Tx)을 향하여 삽입되어 노란색 위치를 깨끗하게 유지합니다. 그 중 하나는 공장 초기화 와이어의 임시 위치로 사용할 수 있습니다.

    그림 6 Arduino 장치에 장착된 Bluetooth 모듈


    [2] Firmata 설정

    Win 8.1 활동을 이미 완료했다면 이 섹션을 건너뛸 수 있습니다.

    참고: Arduino Uno의 UART 핀 0과 1은 Arduino IDE에서 USB를 통해 프로그래밍할 때 사용할 수 없습니다. 이 동일한 핀은 Firmata 통신을 위해 인터페이스될 때 Bluetooth 모듈의 TTL UART 인터페이스에 연결되는 것입니다. 따라서 이 섹션에서 Arduino 장치를 프로그래밍할 때 Bluetooth 장치를 연결하지 않아야 합니다.

    2.1 이전에 Arduino(Uno) 장치용으로 개발했다고 가정하고 새 표준 Firmata 실드를 만듭니다.

    2.2 한 가지 변경 사항이 있습니다. 바로 Baud rate입니다. IDE에서 57600을 검색하고 115200으로 교체합니다. 스케치를 저장하고 Firmata_115200이라고 이름을 지정했습니다. Uno를 프로그래밍하면 이 부분이 완료됩니다.


    [3] Universal App Firmata 소프트웨어 스택 설정

    이 섹션은 이미 Win 8.1 활동을 수행한 섹션과 약간 다릅니다.

    소프트웨어 스택은 3개의 레이어로 구성됩니다.

    Remote-Wiring API는 Arduino 하드웨어 상호 작용을 위해 개념적으로 높은 수준에서 속성(구성), 메서드 및 이벤트를 구현합니다. 예를 들어, GPIO(예:Get 및 Set Pin, On Pin 변경 등). Firmata 프로토콜을 사용하여 Firmata 계층과 통신합니다. Firmata는 직렬 계층에서 Bluetooth 및 USB-직렬 전송 계층으로 구현되는 직렬 프로토콜을 통해 스택 아래로 통신합니다. USB 옵션은 Windows 8.1에서 사용할 수 없습니다.

    호출된 이 소프트웨어 스택은 두 가지 소스에서 사용할 수 있습니다.

    <올>
  • https://github.com/ms-iot/windows-remote-arduino-samples
  • https://github.com/ms-iot/remote-wiring/
  • 둘 다 Windows 8.1 및 Windows 10 버전을 포함합니다. 두 버전의 Windows 10 버전이 모두 빌드되지만 두 번째 버전의 Windows 8.1은 빌드되지 않는 것으로 나타났습니다. Visual Studio 2015 RC 버전을 사용했습니다.

    <울>
  • Microsoft Visual Studio 커뮤니티 2015 RC
  • 버전 14.0.22823.1 D14REL
  • Microsoft .NET 프레임워크
  • 버전 4.6.00076
  • 3.1 첫 번째 버전을 다운로드합니다. 이렇게 하려면 저장소를 복제해야 합니다(zip을 다운로드하지 않음).

    <울>
  • git 또는 GitHub 설치
  • git 셸 또는 GitHub Desktop Shell(Powershell)의 적절한 디렉터리에서 다음을 입력합니다.
    git clone --recursive https://github.com/ms-iot/windows-remote-arduino-samples.git
    <코드>

    얻는 디렉토리 구조는 다음과 같습니다.

  • windows-remote-arduino-samples o 원격 배선 Microsoft.Maker.win8_1 Microsoft.Maker.win10 소스 o win8_1 o win10

    후자의 두 폴더(win8_1 및 win10)는 지금은 무시할 예제 앱("깜박임" 예제 포함)입니다. 두 메이커 버전 모두 동일한 소스 폴더를 사용하므로 Windows 10의 경우 다음이 필요합니다.

    windows-remote-arduino-samples o 원격 배선 Microsoft.Maker.win10 소스

      적당한 폴더로 경로 이름이 너무 길면 ARM 빌드에서 오류가 발생할 수 있다는 것을 발견했기 때문에 드라이브의 루트(예:c:\wras10)에 하나를 제안합니다. 참조를 위해 .md 파일을 복사할 수도 있습니다. VS에서 열 수 있습니다.

      3.2 Microsoft.Maker.win10에서 솔루션 파일 열기

      3.3 대상을 Win32 빌드 솔루션으로 설정합니다.

      세 가지 빌드가 완료되었습니다. 소프트웨어 스택의 세 계층 각각에 대해 하나씩..

      3.4 ARM 구성에 대해서도 동일한 작업을 수행합니다. x64 시스템이 있는 경우 해당 빌드도 시도해 볼 수 있습니다.


      [4] HW LED UWP 앱 만들기

      이전 Win 8.1 활동을 수행한 사람들을 위해 이 섹션에 "단락"이 있습니다.

      이 초기 버전의 앱에서 소프트웨어 버튼은 하드웨어 LED를 켜고 다른 버튼은 끕니다. LED는 GPIO 핀 5에 연결됩니다.

      "Blinky" 문서에는 이러한 라이브러리를 가져오고 사용하는 여러 가지 방법이 있다고 나와 있습니다. 궁극적으로 Nuget이 방법이 될 것이지만 아직 사용할 수 없습니다. 개발 시스템에서 이러한 빌드된 버전을 일반적인 방식으로 참조할 수 있습니다. 가장 쉬운 방법은 필요한 유니버설 앱을 솔루션에 추가하고 참조하는 것입니다. 우리는 그 방법을 사용할 것입니다.

      4.1 솔루션에 새 C# Windows Blank Universal 앱을 추가합니다. (참고로 이번에는 Windows 8.1이 아님):

      적절한 이름을 지정하십시오. 나는 mine wauwp:Windows 원격 Arduino 유니버설 앱 UWP라고 불렀습니다.
      이번에는 하나의 프로젝트만 생성되었습니다(UWP). XAML 및 CSharp 코드는 앱의 데스크톱 및 모바일 버전에서 동일합니다. 차이점은 컴파일 방식에 있습니다.

      패키지 매니페스트에 직렬 및 블루투스 기능이 필요합니다.

      4.2 코드 보기를 사용하여 GUI가 아닌 텍스트 편집기에서 package.appmanifest를 엽니다. 인터넷 클라이언트 기능은 하단에 포함되어 있습니다. 이 섹션을 다음으로 수정:

      package.appmanifest

      에서

      <기능> <기능 이름="internetClient" /> <기기 ID="any"> <코드> <함수 유형="이름:직렬 포트"/> <코드> <코드>

      <코드>

      또한 데스크탑에서 Bluetooth-Serial 대신 USB-Serial을 사용한다면 해당 기능을 추가할 것입니다.

      각 관련 소프트웨어 계층에 대한 참조가 필요합니다.

      4.3 데스크톱 UA에 대한 참조 Firmata, RemoteWiring 및 Serial 추가(다시 한 번 한 프로젝트에 대해 이 작업을 수행해야 함):

      힌트:이전 Windows 8.1을 이미 수행한 사용자는 이제 다음을 단락시킬 수 있습니다. :

      <울>
    • 해당 프로젝트의 그리드 xml 코드를 이 새 프로젝트의 MainPage.xaml로 복사합니다.
    • 이제 대상에서 앱 테스트로 건너뛸 수 있습니다.
    • 여기에서 계속하는 분들을 위해 ...

      4.4 두 UA의 Grid XAML을 다음과 같이 수정합니다.

      MainPage.xaml:UI
      <코드>

      제조공정

      1. Raspberry Pi 범용 리모컨
      2. Windows IoT:얼굴 인식 도어
      3. Windows 10 IoT 코어 및 SHT15
      4. Windows 10 IoT Core for Raspberry Pi 3 Model B+
      5. Windows IoT 기반 GoPiGo v2
      6. 원격 공급망 팀을 지원하는 앱 및 장치
      7. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
      8. LCD 애니메이션 및 게임
      9. PCB 및 IoT 가이드
      10. Cisco, IT 및 OT를 위한 IoT 원격 모니터링 솔루션 도입