Windows 10 IoT 프로그래밍 [라즈베리파이와 Windows 10 IoT 코어, Azure IoT 스위트를 활용한 IoT 프로그래밍 가이드]
- 원서명Programming for the Internet of Things: Using Windows 10 IoT Core and Azure IoT Suite (ISBN 9781509302062)
- 지은이다위드 보리츠키(Dawid Borycki)
- 옮긴이김도균, 최준규
- ISBN : 9791161754772
- 45,000원
- 2020년 12월 30일 펴냄
- 페이퍼백 | 836쪽 | 188*235mm
- 시리즈 : 윈도우 시스템 프로그래밍
책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/programming-iot)
부록 PDF는 여기에서 내려 받으세요.
요약
가장 쉽게 접할 수 있는 IoT 디바이스인 라즈베리파이를 선택해 윈도우 10 IoT와 UWP를 사용한 임베디드 프로그래밍을 설명한다. 더 나아가 라즈베리파이와 함께 사용할 수 있는 여러 가지 센서와 마이크, 카메라, 모터, 블루투스, 와이파이에 이르기까지 다양한 디바이스를 스마트하게 만드는 프로젝트를 중심으로 설명을 풀어간다. 마이크로소프트 애저의 IoT 솔루션을 활용해 원격 디바이스 제어와 데이터 수집, 분석을 처리하는 커스텀 솔루션을 만들어가는 과정을 담아내 IoT 프로그래밍의 정수를 보여준다.
이 책에서 다루는 내용
■ 상호 연결된 임베디드 디바이스를 대상으로 하는 유니버설 윈도우 플랫폼(UWP) 애플리케이션 제작
■ 하드웨어 구성 요소와 통합하는 백그라운드 앱 설계 및 구현
■ 자체 UWP 기능을 사용해 사람의 얼굴 감지 및 추적
■ 인공 청각과 시각, 학습 시스템 제작
■ 음악 리듬에 따라 LED가 깜박이도록 오디오 신호 처리
■ OpenCV를 사용해 커스텀 이미지 처리 알고리즘 개발
■ 직렬 및 USB, 와이파이, 올조인 연결을 사용해 외부 디바이스와 통신
■ 로보틱스를 위한 DC 및 스테퍼, 서보 모터를 제어하는 애플리케이션 디자인 및 구현
■ 마이크로소프트 인지 서비스를 사용해 사람의 감정 감지
■ 애저 IoT 스위트를 사용해 예측 분석과 예방 유지관리 시스템 제작
이 책의 대상 독자
■ 커스텀 IoT 솔루션을 만들려는 C#과 .NET 개발자
■ 커스텀 디바이스 프로그래밍으로 상상을 실현하기 원하는 임베디드 소프트웨어 개발자, 엔지니어, 연구자, 마니아
이 책의 구성
1부에서 임베디드 프로그래밍의 기초를 설명하고 데스크톱과 웹, 모바일 앱 프로그램과 어떻게 구별하는지 다룬다. 프로그래밍 환경을 구성하고 윈도우 10 IoT 코어에서 “Hello, world!”와 같은 프로젝트를 어떻게 작성하는지도 설명한다. 더불어 UI 선언을 위해 UWP 스레딩 모델, XAML 마크업과 관련된 몇 가지 기본 개념을 설명한다. 경험 있는 개발자는 이 부분을 건너뛰고 2부로 넘어가도 된다.
2부는 윈도우 10 IoT와 UWP를 사용한 디바이스 프로그래밍에 관련된 장들을 포함한다. 먼저 여러 센서에서 데이터를 수집하고 디바이스를 제어하는 방법을 설명한다. 이어서 마이크와 카메라에서 신호를 수집하고 처리하는 방법을 설명한다. 그다음 다양한 직렬 통신과 블루투스, 와이파이, 올조인(AllJoyn) 등의 통신 프로토콜을 사용해 IoT 모듈이 다른 디바이스와 통신하도록 하는 방법을 설명한다. 모터를 제어하고 마이크로소프트 인지(Cognitive) 서비스와 애저 머신러닝을 사용해 디바이스를 똑똑하고 지능적으로 만드는 방법도 설명한다.
3부는 클라우드를 다룬다. 디바이스 원격 분석과 예측 유지관리를 위한 2개의 사전 구성된 애저 IoT 솔루션을 사용하는 방법을 설명한다. 마지막 장에서는 사용자 지정 IoT 솔루션을 밑바닥부터 차근차근 만들어 가는 자세한 과정을 다룬다. 이 내용은 IoT 프로그래밍의 정수를 보여주며, 클라우드로 원격 센서의 데이터를 전송해 데이터를 저장하고 처리 및 표현한다. 또한 비정상 센서 판독 값을 윈도우 10에서 실행하는 모바일 앱에 바로 알려주는 방법도 설명한다.
6개의 부록에서 비주얼 베이직(Visual Basic)과 자바스크립트(JavaScript)로 LED를 깜박이는 방법(부록 A), 라즈베리 파이의 HDMI 모드(부록 B), 비트 인코딩(부록 C), 코드 공유 전략(부록 D)을 설명했으며, Visual C++/구성 요소 확장(부록 E)을 소개하고, 비주얼 스튜디오 2017에서 IoT 개발을 설정하는 방법을 설명한다(부록 F).
목차
목차
- PART 1. 기본 개념
- Chapter 1. 임베디드 디바이스 프로그래밍
- 임베디드 디바이스 정의
- 특수 목적의 펌웨어
- 마이크로컨트롤러 메모리
- 어디나 존재하는 임베디드 디바이스
- 임베디드 디바이스 연결: 사물인터넷
- 임베디드 디바이스 기본
- 임베디드 디바이스 프로그래밍 vs. 데스크톱과 웹, 모바일 프로그래밍
- 유사성과 사용자 상호작용
- 하드웨어 추상 계층
- 견고성
- 리소스
- 보안
- 윈도우 10 IoT 코어와 유니버설윈도우 플랫폼의 이점
- 요약
- 임베디드 디바이스 정의
- Chapter 2. 디바이스의 유니버설 Windows 플랫폼
- 윈도우 10 IoT 코어
- 디바이스를 위한 유니버설 Windows 플랫폼의 파워
- 도구 설치와 구성
- 윈도우 10
- 비주얼 스튜디오 2017 이상
- 윈도우 IoT 코어 프로젝트 템플릿
- 윈도우 10 IoT 코어 대시보드
- 디바이스 셋업
- 라즈베리 파이 2와 파이 3용 윈도우 10 IoT 코어 스타터 팩
- 윈도우 10 IoT 코어 설치
- 개발 보드 구성
- Hello, world! 윈도우 IoT
- 회로 어셈블리
- LED와 저항, 전자 컬러 코드
- 액티브 로와 액티브 하이 상태
- 라즈베리 파이 2 핀 배치도
- 무납땜 브레드보드 연결
- C#과 C++를 사용해 LED 켜고 끄기
- 유용한 도구와 유틸리티
- 디바이스 포털
- 윈도우 IoT 리모트 클라이언트
- SSH
- FTP
- 요약
- Chapter 3. 윈도우 IoT 프로그래밍 에센셜
- 라즈베리 파이 2의 외부 디스플레이 연결과 부트 구성
- headed 및 headless 모드
- 헤드리스 애플리케이션
- C#
- C++
- 아두이노 와이어링 애플리케이션
- 요약
- 헤드 있는 애플리케이션의 진입점
- C#/XAML
- 비동기 프로그래밍
- 작업자 스레드와 스레드 풀
- 타이머
- UI와 작업자 스레드 동기화
- DispatcherTimer를 사용해 LED 깜박거리기
- 요약
- Chapter 4. 헤드 있는 장치를 위한 사용자 인터페이스 디자인
- UWP 애플리케이션의 UI 디자인
- 비주얼 디자이너
- XAML 네임스페이스
- 컨트롤 선언, 속성, 특성
- 스타일
- 리소스 컬렉션
- 기본 스타일과 테마 리소스
- 레이아웃
- StackPanel
- Grid
- RelativePanel
- 이벤트
- 이벤트 처리
- 이벤트 핸들러와 비주얼 디자이너
- 이벤트 전파
- 사용자 지정 이벤트 선언과 발생
- 데이터 바인딩
- 컨트롤 속성 바인딩
- 변환기
- 필드에 바인딩하기
- 메서드 바인딩하기
- 요약
- UWP 애플리케이션의 UI 디자인
- PART 2. 디바이스 프로그래밍
- Chapter 5. 센서의 데이터 판독
- 비트, 바이트, 데이터 형식
- 이진 데이터 디코딩과 인코딩
- 비트 연산자
- 시프트 연산자와 비트 마스킹, 이진 표현
- 바이트 인코딩과 엔디언
- BitConverter
- BitArray
- 센스 HAT 애드온 보드
- 사용자 인터페이스
- 온도와 기압
- 상대 습도
- 가속도계 및 자이로스코프
- 자기계
- 센서 보정
- 싱글턴 패턴
- 요약
- Chapter 6. 입력과 출력
- 촉각 버튼
- 조이스틱
- 미들웨어 계층
- 조이스틱 상태 시각화
- LED 배열
- 조이스틱과 LED 배열 통합
- 센서 판독과 LED 배열 통합하기
- 터치스크린과 제스처 다루기
- 요약
- Chapter 7. 오디오 처리
- 음성 합성
- 음성 인식
- 배경
- 앱 기능과 시스템 구성
- UI 변경
- 일회성 인식
- 연속 인식
- 음성 명령을 사용해 디바이스 제어하기
- 하드웨어 설정
- 코드 작성
- 시간 및 주파수 도메인에서의 파동
- 고속 푸리에 변환
- 샘플링 레이트와 주파수 척도
- 데시벨 척도
- 웨이브폼 스펙트럼 분석기
- 파일 읽기
- 웨이브폼 오디오 파일 포맷 읽기 프로그램
- 신호 윈도우와 단구간 푸리에 변환
- 스펙트럼 히스토그램
- 스펙트럼 표시
- LED 배열에서 스펙트럼 표시
- 요약
- Chapter 8. 영상 처리
- USB 카메라를 사용한 이미지 획득
- 얼굴 감지
- 얼굴 추적
- UI에서 얼굴 위치 표시
- LED 배열의 얼굴 위치 표시
- OpenCV 및 네이티브 코드 인터페이스
- 솔루션 구성 및 OpenCV 설치
- 영상 임계값 처리
- 처리 결과 시각화
- 객체 감지
- 객체 인식을 위한 기계 시각
- 윤곽선 근사치
- 객체 식별
- 최종 메모
- 요약
- Chapter 9. 디바이스 연결
- 시리얼 통신
- UART 루프백 모드
- 프로젝트 골격
- 시리얼 디바이스 구성
- 데이터 쓰기/읽기
- 디바이스 내부 통신을 위한 애플리케이션 작성
- 변환기 연결
- IoT 디바이스 원격 제어
- 블루투스
- 연결 설정
- 프로젝트 아키텍처 및 블루투스 장치 열거
- LED 색상 명령
- 윈도우 런타임 요구 사항을 적용한 LedArray 클래스
- 헤드 있는 클라이언트 애플리케이션
- 와이파이
- 올조인
- 인트로스펙션 XML 파일
- 올조인 스튜디오
- 생산자
- 올조인 IoT 탐색기
- 맞춤형 소비자
- 윈도우 원격 아두이노
- 요약
- 시리얼 통신
- Chapter 10. 모터
- 모터 및 장치 제어 기본 원리
- 모터 HAT
- 펄스폭 변조
- 드라이버
- DC 모터
- PWM 신호를 이용한 모터 제어 구현
- 헤드 있는 애플리케이션
- 스테퍼 모터
- 풀 스텝 모드 제어
- 헤드 있는 앱
- 자동 속도 조정
- 마이크로 스테핑
- 서보 모터
- 하드웨어 어셈블리
- 헤드 있는 앱
- 공급자
- Lightning 공급자
- PCA9685 컨트롤러 공급자
- DC 모터 제어
- 요약
- Chapter 11. 디바이스 러닝
- Microsoft Cognitive Services
- 감정 감지기
- LED 배열로 감정 나타내기
- 컴퓨터 비전 API
- 커스텀 인공 지능
- 동기와 개념
- 마이크로소프트 애저 머신러닝 스튜디오
- 이상 감지
- 훈련 데이터세트 얻기
- 원-클래스 서포트 벡터 머신을 사용한 이상 감지
- 웹 서비스 준비와 게시
- 웹 서비스 클라이언트 구현하기
- 정리
- 요약
- Microsoft Cognitive Services
- PART 3. 애저 IoT 스위트
- Chapter 12. 원격 디바이스 모니터링
- 사전 구성된 솔루션 설정하기
- 디바이스 프로비저닝
- 새로운 디바이스 등록하기
- 디바이스 정보 전송하기
- 원격 측정 데이터 전송하기
- 원격 명령 수신 및 처리
- 디바이스 정보 업데이트하기
- 원격 명령에 응답하기
- 애저 IoT 서비스
- 요약
- Chapter 13. 예측 유지 관리
- 미리 구성된 솔루션
- 솔루션 대시보드
- 머신러닝 워크스페이스
- Cortana Analytics Gallery
- 애저 리소스
- 애저 스토리지
- 예측 유지 관리 스토리지
- 원격 측정과 예측 결과 스토리지
- DeviceList
- 애저 스트림 분석
- 솔루션 소스 코드
- 이벤트 허브와 머신러닝 이벤트 프로세서
- 머신러닝 데이터 프로세서
- 애저 테이블 스토리지
- 시뮬레이터 WebJob
- 예측 유지 관리 웹 애플리케이션
- 시뮬레이션 디바이스
- 원격 분석 서비스
- 요약
- 미리 구성된 솔루션
- Chapter 14. 사용자 지정 솔루션
- IoT 허브
- 클라이언트 애플리케이션
- 디바이스 레지스트리
- 원격 분석 데이터 전송하기
- 스트림 분석
- 스토리지 계정
- 애저 테이블
- 이벤트 허브
- 스트림 분석 작업
- 입력
- 이벤트 프로세서
- Power BI를 사용한 데이터 시각화
- 알림 허브
- 스토어 연결
- 알림 클라이언트 애플리케이션
- Notification Hub 만들고 구성하기
- 이벤트 프로세서로 알림 메시지 전송하기
- 클라우드에 이벤트 허브 프로세서 배포하기
- 요약
- IoT 허브