책소개
라즈베리 파이로 배우는 사물인터넷과 리눅스 프로그래밍! 제4차 산업혁명을 위한 최신 내용을 더한 개정판『사물인터넷을 위한 리눅스 프로그래밍 with 라즈베리 파이』는 라즈베리 파이 같은 오픈 소스 하드웨어와 소프트웨어를 융합한 IoT 제품을 개발할 수 있도록 GPIO를 이용한 기본적인 하드웨어 개발에서부터 리눅스 프로그래밍, 멀티미디어 프로그래밍, 3D 프로그래밍, 인공지능(딥러닝), 리눅스 커널/디바이스 프로그래밍까지 다양한 내용을 담고 있다. 또한 여러 단계에 걸쳐 리눅스 프로그래밍에 대해 학습하고, 이를 사물인터넷 실무에 곧바로 적용할 수 있도록 집필하였으며, 내용마다 그림과 사진, 표, 코드 등의 자료를 첨부해 독자가 한층 더 수월하게 이해할 수 있도록 했고, ‘따라 하기’나 ‘참고하기’, ‘깊게 보기’ 등의 코너를 통해서는 심화 학습이 이루어지도록 구성하였다.이번 개정판은 최신의 라즈베리 파이 4 보드와 SenseHAT, 리눅스 커널 5(라즈비안)를 적용하고, 제4차 산업혁명의 주류 기술이 된 사물인터넷과 AR/VR/MR/XR을 위한 OpenGL ES 프로그래밍, 그리고 사물 인식을 위한 영상 인식과 인공지능(딥러닝)을 위해 관련 내용을 더욱 보강하였다.
저자소개
십여 년 동안 IT 분야에서 프로그래밍을 하고 있으며, IT 전문 강사와 컨설턴트, 관광TC로도 일하고 있다. 저서로는 《타이젠으로 웨어러블 앱 개발하기》(eBook), 《사물인터넷: 우리가 꿈꾸는 스마트한 세상》,《 Tizen 애플리케이션 프로그래밍》,《 Qt 프로그래밍》 등이 있다.
만든 프로그램으로는 리눅스용 다이얼패드, SKY 6400,6500 모바일 캠코더, 원자력 발전소 CPS 시스템, 신도리코 NEST UI, 삼성전자 VOIP 전화기 등이 있으며, 주로 멀티미디어, UI(Qt), 임베디드 리눅스, 모바일, 스마트 디바이스 분야에서 개발 경력을 쌓았다. 삼성전자, LG전자 등의 기업과 대구·인하·원광·전북·조선대학교 및 DIP, AKIPA, 3DFIA, KETI, KEA, RAPA, KOSTA 등의 협회에서 강의와 세미나를 진행하였다.
목차
PART I 라즈베리 파이 사용하기CHAPTER 1 사물인터넷과 라즈베리 파이 31.1 사물인터넷과 오픈 소스 하드웨어 플랫폼 41.2 라즈베리 파이 한 입 베어 물기 101.3 라즈베리 파이를 위한 주변 장치 141.4 라즈베리 파이를 위한 준비 운동: 사용 환경 설정 211.5 요약 46CHAPTER 2 리눅스의 기초: 라즈베리 파이와 친해지기 492.1 리눅스의 사용 환경과 구조 512.2 리눅스의 기본 명령어 542.3 리눅스 텍스트 에디터 702.4 리눅스의 프로그래밍 도구 782.5 요약 104CHAPTER 3 라즈베리 파이와 GPIO: 하드웨어 제어 1073.1 GPIO의 개요 1083.2 LED 제어 프로그래밍 1113.3 wiringPi를 이용한 GPIO 프로그래밍 1243.4 SenseHAT을 이용한 기상 관측 시스템 1523.5 요약 168PARTII 리눅스 기본 프로그래밍CHAPTER 4 리눅스 프로그래밍의 기초 1734.1 리눅스의 기본 구조와 파일 시스템 1744.2 파일 처리와 표준 입출력 1784.3 파일 정보와 권한 2014.4 디렉터리와 시간 처리 2144.5 리눅스 시스템 프로그래밍과 라즈베리 파이의 제어 2284.6 요약 234CHAPTER 5 프로세스와 스레드: 다중 처리 2375.1 프로세스와 시그널 2385.2 멀티 프로세스와 다중 처리 프로그래밍 2605.3 프로세스 간 통신 2835.4 POSIX 스레드와 동기화 3105.5 다중 처리와 라즈베리 파이의 제어 3205.6 요약 326CHAPTER 6 리눅스 네트워크 프로그래밍: 사물인터넷의 연결을 위한 기초 3296.1 네트워크의 개요와 BSD 소켓 3306.2 UDP 네트워크 프로그래밍 3466.3 TCP 서버와 클라이언트 프로그래밍 3566.4 HTTP와 웹 서버 프로그래밍 3756.5 웹 서버와 라즈베리 파이의 제어 3986.6 요약 404PART III 멀티미디어 프로그래밍CHAPTER 7 리눅스 멀티미디어 프로그래밍: 현란함과 즐거움 4097.1 멀티미디어와 라즈베리 파이 4107.2 리눅스 사운드 프로그래밍 4217.3 프레임 버퍼를 통한 이미지 출력 4607.4 Video4Linux2와 Pi Camera 4887.5 라즈베리 파이와 멀티미디어 5047.6 요약 506CHAPTER 8 OpenCV 프로그래밍: 사진 속 얼굴을 찾아라 5098.1 영상 처리와 OpenCV 5108.2 OpenCV 기본 프로그래밍 5128.3 OpenCV와 영상 처리 5268.4 OpenCV를 이용한 얼굴 인식 5408.5 라즈베리 파이와 OpenCV 5498.6 요약 550CHAPTER 9 OpenGL ES를 이용한 3D 프로그래밍: 3차원의 세계로 5539.1 라즈베리 파이와 OpenGL 5549.2 EGL™과 OpenGL ES 1.0 5609.3 OpenGL ES 1.1을 이용한 3D 애니메이션 5789.4 OpenGL ES 2.0과 셰이딩 언어 5879.5 3D와 라즈베리 파이 6279.6 요약 632PART IV 리눅스 고급 프로그래밍CHAPTER 10 Qt를 이용한 GUI 프로그래밍: 더 편리한 접근성 63710.1 Qt와 라즈베리 파이: Qt on Pi 63810.2 Qt 프로그래밍과 사용자 정의 위젯 65610.3 Qt 위젯과 레이아웃 66910.4 Qt Creator를 이용한 GUI 디자인 69410.5 GUI와 라즈베리 파이 71110.6 요약 718CHAPTER 11 라즈베리 파이와 인공지능: Caffe에서 한잔 72111.1 인공지능의 개요 72211.2 Caffe를 이용한 인공지능 72811.3 Caffe 기본 프로그래밍 74311.4 Caffe를 이용한 숫자 인식 75111.5 Caffe와 라즈베리 파이의 인공지능 77311.6 요약 779CHAPTER 12 리눅스 커널과 디바이스 드라이버: 더 깊은 곳으로 78112.1 리눅스 커널과 디바이스 드라이버 78212.2 리눅스 디바이스 드라이버 프로그래밍 7812.3 시스템 레지스터와 LED 출력 80312.4 LED 출력을 위한 GPIO 드라이버 프로그래밍 81112.5 스위치를 이용한 커널 이벤트 처리 82712.6 요약 836CHAPTER 13 부록 83913.1 임베디드 리눅스 공부하기 84013.2 리눅스 셸(Shell) 프로그래밍 84613.3 GStreamer를 이용한 멀티미디어 프로그래밍 86513.4 ARM NEON 기반의 SIMD 프로그래밍 888