책 소개
C/C++ 언어 기반에서 WiringPi 라이브러리를 이용하여 아두이노 코딩처럼 라즈베리 파이 코딩으로 하드웨어 제어하자!
이 책은 C/C++ 언어 기반으로 wiringPi 라이브러리를 이용하여 여러 가지 하드웨어를 제어하는 방법을 소개하였습니다.
이 책은 아두이노를 배운 독자들이 파이썬을 몰라도 손쉽게 라즈베리 파이를 정복할 수 있도록 구성하였습니다. 아두이노 함수를 바탕으로 만들어진 wiringPi 라이브러리를 이용하여 아두이노 코딩 방식으로 라즈베리 파이로 하드웨어드를 제어할 수 있습니다. 하드웨어를 제어하는 방법 외에도 쓰레드와 메시지 큐의 사용법을 소개하고 있습니다. 라즈베리 파이는 리눅스 운영체제 바탕의 개발 환경이기 때문에 쓰레드와 메시지 큐를 통해 프로그램을 구성할 수 있는 장점을 제공합니다. 쓰레드와 메시지 큐를 이용하면 큰 프로젝트를 효율적으로 구성할 수 있습니다.
이 책에서는 외부 디바이스를 장착하여 라즈베리 파이의 기능을 확장하는 방법, L9110S DC 모터 드라이버 모듈을 이용하여 DC 모터를 제어할 수 있는 방법, HM10 블루투스 모듈 을 이용하여 라즈베리 파이의 시리얼 모듈을 이용한 통신 방법, MCP3208 ADC 모듈을 이용하여 센서 입력을 받을 수 있는 방법, PCA9685 PWM 드라이버를 이용하여 서보모터, 부저, BLDC 모터를 제어할 수 있는 방법, MPU6050 자이로 센서 모듈을 이용하여 기울기를 측정할 수 있는 방법 등을 설명하였습니다.
이 책을 읽은 후 자율 주행 버스, 견마 로봇, 균형 로봇, 드론 등 4가지 프로젝트를 독자 스스로 진행해 볼 수 있도록 구조물 구성법과 회로 구성법을 설명하였습니다. 코드에 대한 작성은 책에서 소개한 여러 가지 방법을 이용하여 스스로 해결할 수 있는 참고 가이드를 제공하고 있습니다. 또한 책에서 배운 내용을 토대로 단위 입출력 연결, 사용자 입력 다중 출력 연결, 다중 입력 다중 출력, 쓰레드로 다중 주기 및 다중 입력 다중 출력 처리 등 다양한 입출력 함수 조합 과제를 수행해 볼 수 있는 다양한 도전 과제들을 제공하고 있습니다.
이 책은 C/C++ 언어 기반의 라즈베리 파이 교육을 진행하는 대학의 교재용 또는 독학용으로 구성되었습니다. 아두이노를 배운 독자 중 파이썬을 배우지 않고도 바로 라즈베리 파이 기능을 습득할 수 있도록 wiringPi 함수로 접근하였습니다. 또한 wiringPi 함수 설명 과정에서 C/C++ 함수와 매치되는 파이썬 함수를 스페셜 페이지에 별도로 설명하여 파이썬으로 라즈베리 파이를 수업하는 대학에서도 쉽게 사용할 수 있도록 구성하였습니다.
wiringPi 라이브러리를 이용하여 아두이노 코딩처럼 배우는 라즈베리 파이 코딩북!
이 책은 크게 다음 3가지 내용이 담겨 있습니다.
- wiringPi 라이브러리를 이용하여 하드웨어를 제어하기
- 외부 디바이스를 장착하여 라즈베리 파이 기능 확장하기
- 자율 주행 버스, 견마 로봇, 균형 로봇, 드론 프로젝트 구성하기
이 책의 주요 내용은 다음과 같습니다.
Chapter 01 라즈베리 파이 준비하기
이 장에서는 라즈베리 파이가 무엇인지 알아봅니다. 또한 라즈베리 파이로 무엇을 할 수 있는지 살펴보고, 라즈 베리 파이로 개발하기 위한 환경 구성을 합니다. 또한 라즈베리 파이를 C/C++ 아두이노 코딩하는 느낌으로 아두이노에서 유래한 WiringPi 함수를 살펴봅니다
Chapter 02 WiringPi 함수 살펴보기
이 장에서는 WiringPi에서 제공하는 함수 사용 방법을 화면 출력, LED 출력, 부저 출력, 서보 출력, 키보드 입력, 버튼 입력 프로그램 작성법으로 익혀봅니다.
Chapter 03 입출력 함수 조합하기
이 장에서는 입력과 출력을 연결하는 프로그램을 혼자서 직접 작성해 봄으로써 하드웨어 입출력 프로그래밍 실력을 가늠하고 향상시켜 봅니다.
Chapter 04 외부 디바이스 붙이기
L9110S DC 모터 드라이버 모듈을 이용하여 DC 모터를 제어할 수 있는 방법, HM10 블루투스 모듈을 이용하여 라즈베리파이의 시리얼 모듈을 이용한 통신 방법, MCP3208 ADC 모듈을 이용하여 센서 입력을 받을 수 있는 방법, PCA9685 PWM 드라이버를 소개하여 서보모터, 부저, BLDC 모터를 제어할 수 있는 방법, MPU6050 자이로 센서 모듈을 이용하여 기울어진 정도를 측정할 수 있는 방법을 소개하고 있습니다.
Chapter 05 프로젝트 구상하기
이 장에서는 책에서 배운 내용을 토대로 자율 주행 버스, 견마 로봇, 균형 로봇, 라즈베리 파이 드론 등 총 4개 프로젝트를 위한 외형 구성, 회로 구성 방법을 설명합니다. 프로젝트의 소프트웨어는 책에서 배운 하드웨어 제어 방법을 이용하여 독자 스스로 구성해 봅니다.
[부록]
※ 예제 소스파일 다운로드 방법은 4쪽을 참조한다.
※ 이 책을 보면서 궁금한 내용을 질문할 수 있는 질의응답 코너 이용 방법은 4~5쪽을 참조한다.
※ 이 책의 기초 실습에 사용된 부품 목록 및 부품 구매처 확인은 6~7쪽을 참조한다.
작가 소개
지은이 : 서민우
전국 개발 현장과 강의장을 종횡 무진하는 국내 최고의 오픈소스 전문 강사이다.
연세대학교 정보산업공학 학사
서울기술교육센터 아두이노/라즈베리파이 교육
MDS 아카데미 드론/리눅스커널포팅/드라이버 교육
LG 전자 신입사원 C/C++ 교육
SK 하이닉스 RTOS 교육
삼성전자 리눅스 드라이버/RTOS 교육
Xilinx FPGA/HDL 교육
ETRI verilogHDL 교육
숭실대 아두이노 IoT 교육
국민대 Cortex-M3 교육
[저서]
아두이노처럼 사용하는 라즈베리 파이 3 직접 코딩하기(2018. 03 앤써북)
아두이노 피지컬 컴퓨팅 다두블럭으로 만들고 엔트리로 코딩하기(2017. 09 앤써북)
아두이노 자율주행 RC카 만들고 직접 코딩하기(2017. 07 앤써북)
아두이노 드론 만들고 코딩하고 날리기 입문 (2017. 03 앤써북)
아두이노 드론 만들고 직접 코딩하기(2017. 01 앤써북)
아두이노로 만드는 사물인터넷(2016. 02 앤써북)
아두이노와 안드로이드로 45개 프로젝트 만들기(2014. 9 앤써북)
지은이 : 박준원
현) 다두이노와 함께하는 코딩스쿨_딩코 강사, 아두이노 드론 강의
- 저서 -
아두이노처럼 사용하는 라즈베리 파이 직접 코딩하기(2018. 03 앤써북)
다두블럭으로 만들고 엔트리로 코딩하기(2017. 09 앤써북)
아두이노 드론 만들고 코딩하고 날리기 입문(2017. 03 앤써북)
지은이 : 장문철
현) 미랩 대표
현) 다두이노(www.daduino.co.kr) 대표
[저서]
아두이노처럼 사용하는 라즈베리 파이 직접 코딩하기(2018. 03 앤써북)
다두블럭으로 만들고 엔트리로 코딩하기(2017. 09 앤써북)
아두이노 드론 만들고 코딩하고 날리기 입문(2017. 03 앤써북)
지은이 : 조문국
전) 삼성생명IT 강사
전) 경찰일보 본부장
전) 와이즈로드 연구소장
현) 와키 대표
현) 싸이언스플러스협동조합 이사장
[자격증] 정보처리기사
- 저서 -
아두이노처럼 사용하는 라즈베리 파이 직접 코딩하기(2018. 03 앤써북)
지은이 : 김종용
중앙대학교 기계공학사
연세대학원 MBA 석사
NCS, M&A, ISO 컨설턴트
H 반도체/디스플레이/3D프린팅 엔지니어
전기전자 산업기술 평가위원
SPC+ 기술자조합 이사
비오비 대표이사
e-mail : bobkim@hanmail.net
목 차
Chapter 1. 라즈베리 파이 준비하기
Lesson 01. 라즈베리 파이란?
01 라즈베리 파이 개요
02 라즈베리 파이 발전 단계
03 라즈베리 파이 하드웨어 구성
04 라즈베리 파이 하드웨어 특징
Lesson 02. 라즈베리 파이로 할 수 있는 일
01 쿼드콥터 프로젝트
02 스마트 RC 자동차 프로젝트
03 로봇 팔 프로젝트
04 사족 로봇 프로젝트
05 스마트 정원 프로젝트
Lesson 03. 라즈베리 파이 개발 환경 구성하기
01 마이크로 SD 카드 준비하기
02 라즈베리 파이 이미지 설치하기
라즈베리 파이 이미지 다운로드
Win32 Disk Imager 다운로드
Win32 Disk Imager 설치
라즈베리 파이 이미지 설치
03 윈도우 HotSpot 설치하기
윈도우 10에서 Hotspot 활성화하기
Hotspot 접속이 안 될 경우 1
Hotspot 접속이 안 될 경우 2
윈도우 7, 8에서 Hotspot 설치하기
04 Hotspot 자동 접속 설정하기
05 원격 명령 환경 구성하기
Tera Term 프로그램 설치하기
라즈베리 파이 원격 접속하기
06 원격 프로그래밍 환경 구성하기
notepad++ 프로그램 설치하기
nppftp 플러그인 설치하기
nppftp 플러그인 활성화하기
nppftp 원격 접속 정보 생성하기
nppftp 원격 접속하기
프로젝트 디렉터리 생성하기
c 파일 생성하기
c 소스 작성하기
c 소스 컴파일하고 실행하기
디렉터리 명령어 소개
[파이썬 코너]_파이썬 파일 생성하기/파이썬 소스 작성하기
Lesson 04. WiringPi 함수 살펴보기
01 설정 함수
wiringPiSetup(void);
wiringPiSetupGpio(void);
02 기본 함수
03 라즈베리 파이용 함수
04 시간 함수
05 인터럽트 함수
06 쓰레드 생성 함수
07 메시지 큐 함수
08 시리얼 라이브러리
09 SPI 라이브러리
10 I2C 라이브러리
Lesson 05. 라즈베리 파이 핀 맵 살펴보기
Chapter 2. WiringPi 함수 살펴보기
Lesson 01. printf 함수
01 main
02 printf
03 while
04 delay
05 문자열, 숫자 출력하기
06 정수, 실수 출력하기
헤더 파일 경로 찾기
헤터 파일 의존성 찾기
[파이썬 코너]_Print
Lesson 02. digitalWrite 함수
01 부품 살펴보기
LED
저항
브레드 보드
전선
라즈베리 파이 보드 GPIO 핀
02 LED 회로 구성하기
03 LED 켜고 끄기
LED 켜기
LED 끄기
04 LED 점멸 반복하기
05 LED 점멸 간격 줄여보기
06 LED 점멸을 밝기로 느껴보기
07 LED 밝기 변경하기
08 LED 밝기 조절하기
09 추가부품 살펴보기
RGB LED
[파이썬 코너]_GPIO.output
Lesson 03. pwmWrite 함수
01 LED 회로 구성하기
02 LED 밝기 변경하기
03 LED 밝기를 1024단계로 조절하기
Lesson 04. pwmSetRange 함수
01 LED 점멸 반복하기
02 LED 점멸 간격 줄여보기
03 LED 점멸을 밝기로 느껴보기
04 LED 밝기를 1000단계로 조절하기
05 부저 살펴보기
06 소리와 주파수 이해하기
07 부저 회로 구성하기
08 부저 소리내보기
09 부저 멜로디 연주하기
10 서보 모터 살펴보기
11 서보 모터 파형 이해하기
12 서보 모터 회로 구성하기
13 서보 모터 각도 조절하기
14 서보 모터 0~180도 조절하기
[파이썬 코너]_GPIO.PWM
Lesson 05. getchar 함수
사용자 입력받기
[파이썬 코너]_raw_input
Lesson 06. digitalRead 함수
01 읽어보기
02 푸쉬 버튼 살펴보기
03 버튼 회로 구성하기
04 버튼 값에 따라 LED 켜기
[파이썬 코너]_GPIO.input
Lesson 07. wiringPilSR 함수
01 외부 인터럽트 핀 살펴보기
02 외부 인터럽트 처리하기
03 버튼 인터럽트로 LED 켜기
[파이썬 코너]_GPIO.add_event_callback
Lesson 08. piThreadCreate 함수
01 쓰레드 이해하기
02 쓰레드 생성하기
03 쓰레드 다중 작업하기
04 쓰레드로 LED 점멸 반복하기
05 쓰레드로 LED 밝기 조절하기
[파이썬 코너]_threading.Thread
^Lesson 09. 메시지 큐 통신
01 메시지 큐 생성하기
02 쓰레드와 쓰레드 간 메시지 큐 통신하기
03 인터럽트 처리 함수와 쓰레드 간 메시지 큐 통신하기
[파이썬 코너]_Queue.Queue
Chapter 3. WiringPi 함수 살펴보기
Lesson 01. 단위 입력 단위 출력 연결하기
01 도전과제 1
02 도전과제 2
Lesson 02. 사용자 입력 다중 출력 연결하기
01 도전과제
Lesson 03. 다중 입력 다중 출력 연결하기
01 도전과제
Lesson 04. 쓰레드로 다중 주기 작업 처리하기
01 도전과제 1
02 도전과제 2
03 도전과제 3
Lesson 05. 쓰레드로 다중 입력 다중 출력 처리하기
01 도전과제
Chapter 4. WiringPi 함수 살펴보기
Lesson 01. L9110S 모터 드라이버 붙이기
01 L9110S 모터 드라이버 소개
02 L9110S 핀 살펴보기
모터 진리표
03 L9110OS 모터 드라이버 회로 구성하기
04 모터 회전시켜보기
왼쪽 모터 회전시켜보기
오른쪽 모터 회전시켜보기
05 모터 속도 조절하기
Lesson 02. Serial에 HM10 블루투스 디바이스 붙이기
01 HM10 블루투스 디바이스 소개
02 Serial 핀 살펴보기
03 HM10 회로 구성하기
04 Serial 모듈 활성화하기
05 블루투스 통신 테스트하기
[파이썬 코너]_serial.Serial
Lesson 03. SPI 버스에 MCP3208 디바이스 붙이기
01 MCP3208 ADC 디바이스 소개
02 SPI 버스 구조 살펴보기
03 SPI 버스 핀 살펴보기
04 SPI 내부 블록도 살펴보기
05 MCP3208 통신 프로토콜 살펴보기
06 MCP3208 기본 회로 구성하기
07 SPI 모듈 활성화하기
08 MCP3208 기본 파일 작성하기
09 ADC값 읽어보기
10 ADC 값 전체 읽어보기
11 가변 저항 살펴보기
12 가변 저항 회로 구성하기
13 가변 저항 입력에 따라 LED 밝기 조절하기
14 추가 센서 살펴보기
TMP36 온도 센서
빛 센서
적외선 거리 센서
15 빛 센서 회로 구성하기
[파이썬 코너]_spidev.SpiDev
Lesson 04. I2C 버스에 PCA9685 디바이스 붙이기
01 PCA9685 PWM 디바이스 소개
02 I2C 버스 구조 살펴보기
03 I2C 버스 핀 살펴보기
04 PCA9685 블록도 살펴보기
05 PCA9685 레지스터 살펴보기
전체 레지스터
MODE1 레지스터
LED_ON, LED_OFF 제어 레지스터
ALL_LED_ON, ALL_LED_OFF, PRE_SCALE 레지스터
06 PCA9685 PWM 제어 살펴보기
07 PCA9685 기본 회로 구성하기
08 I2C 모듈 활성화하기
09 I2C 테스트하기
I2C 어댑터 검색
I2C 디바이스 검색
I2C 디바이스 레지스터 전체 읽기
I2C 디바이스 레지스터 한 바이트 읽기
10 PCA9685 기본 파일 작성하기
11 LED 점멸 반복하기
LED 회로 구성하기
LED 제어하기
12 LED 밝기 4095단계로 조절하기
13 부저 소리내기
부저 회로 구성하기
부저 제어하기
14 부저 멜로디 연주하기
15 서보 모터 각도 조절하기
서보 모터 회로 구성하기
서보 모터 제어하기
[파이썬 코너]_smbus.SMBus
Lesson 05. I2C 버스에 MPU6050 디바이스 붙이기
01 MPU6050 가속도 자이로 센서 소개
02 I2C 버스 핀 살펴보기
03 MPU6050 내부 블록도 살펴보기
04 MPU6050 레지스터 살펴보기
05 MPU6050 회로 구성하기
06 I2C 테스트하기
07 자이로 센서 값 읽어보기
08 자이로 센서 값 해석하기
09 Roll, Pitch, Yaw 각도 구하기
파일 생성하기
기본 코드 구성하기
기본 코드 파일로 나누기
원시 자이로 값 읽기 함수 구현하기
자이로 평균 값 구하기 함수 구현하기
자이로 보정 함수 구현하기
주기 시간 계산 함수 구현하기
주기 시간 정확히 계산하기
회전 각속도 함수 구현하기
회전 각도 함수 구현하기
[파이썬 코너]_자이로 센서 값 읽어보기
Chapter 5. WiringPi 함수 살펴보기
Lesson 01. 프로젝트 소개
Lesson 02. 프로젝트 준비물 살펴보기
01 프로젝트 몸체 구성 준비물
02 RC카 바퀴 기어박스 모터 부착 준비물
03 서보 모터 부착 준비물
04 RC카 바퀴 기어박스 모터 납땜 준비물
05 DC 모터 드라이버 연결 준비물
06 서보 모터 연결 준비물
07 통신 연결 준비물
08 균형 준비물
09 전원 연결 준비물
10 전선 연결 준비물
Lesson 03. 원격 제어 버스 프로젝트 구상하기
01 구조물 구성하기
02 회로 구성하기
03 코드 작성하기
Lesson 04. 견마 로봇 프로젝트 구상하기
01 구조물 구성하기
02 회로 구성하기
03 코드 작성하기
Lesson 05. 균형 로봇 프로젝트 구상하기
01 구조물 구성하기
02 회로 구성하기
03 코드 작성하기
Lesson 06. 드론 프로젝트 구상하기
01 라즈베리 파이 드론 살펴보기
02 회로 구성하기
03 코드 작성하기
재화 등의 배송방법에 관한 정보 | 상품 상세설명페이지 참고 |
---|---|
주문 이후 예상되는 배송기간 | 상품 상세설명페이지 참고 |
제품하자가 아닌 소비자의 단순변심, 착오구매에 따른 청약철회 시 소비자가 부담하는 반품비용 등에 관한 정보 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
제품하자가 아닌 소비자의 단순변심, 착오구매에 따른 청약철회가 불가능한 경우 그 구체적 사유와 근거 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
재화등의 교환ㆍ반품ㆍ보증 조건 및 품질보증 기준 | 소비자분쟁해결기준(공정거래위원회 고시) 및 관계법령에 따릅니다. |
재화등의 A/S 관련 전화번호 | 상품 상세설명페이지 참고 |
대금을 환불받기 위한 방법과 환불이 지연될 경우 지연에 따른 배상금을 지급받을 수 있다는 사실 및 배상금 지급의 구체적 조건 및 절차 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
소비자피해보상의 처리, 재화등에 대한 불만처리 및 소비자와 사업자 사이의 분쟁처리에 관한 사항 | 소비자분쟁해결기준(공정거래위원회 고시) 및 관계법령에 따릅니다. |
거래에 관한 약관의 내용 또는 확인할 수 있는 방법 | 상품 상세설명페이지 및 페이지 하단의 이용약관 링크를 통해 확인할 수 있습니다. |
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |