『스마트한 Mbed로 시작하는 Cortex-M 프로그래밍』은 크게 4개의 Part로 나누어진다. 제1부에서는 Mbed OS의 배경과 기본적인 API 함수의 기능과 활용에 대하여 학습하여 기초를 다진다. 여러 장에 걸쳐 Mbed가 지원하는 기본 입출력 기능들을 학습하는데 먼저 기초적인 개념을 살펴보고 해당 기능을 활용한 실습을 통하여 활용 능력을 키워 나갈 수 있도록 구성되어 있다. 특히, 클래스화된 다양한 타이머의 기능을 여러 각도로 학습하면서 프로그램의 구조에 대하여 많은 생각을 해볼 수 있다. 제2부에서는 임베디드 시스템을 구현하는 데 필수적인 통신에 대하여 학습한다. 그 중요성에 비하여 자세하게 학습하지 못한 통신 분야인 UART, I2C 그리고 SPI 통신에 대하여 학습한다. 이 통신을 활용한 주변장치와의 인터페이스는 물론이고 콜백 함수를 활용한 효율적인 통신에 대한 주제들도 살펴본다. 제3부는 고급 프로그래밍을 주제로 버스 입출력, RTOS 기능의 활용, CircularBuffer 등에 대하여 학습한다. 특히 RTOS에서 스레드, 뮤텍스, 큐와 같은 기능들을 다양한 예제를 통하여 학습할 것이다. 제4부에는 Mbed의 여러 기능과 개념을 복합적으로 적용한 프로젝트들을 통해 응용력을 키울 수 있도록 한다. 대표적으로 초음파 거리 측정, Lidar 센서, 스텝 모터 구동, 인코더 읽기, Lidar 스캐너 그리고 IMU 센서를 활용한 AHRS 프로젝트를 직접 코딩하고 체험하여 종합 응용 능력을 증진 시키고 나아가서 실무적 시스템 구성 능력을 얻을 수 있도록 하였다.
박희재
서울대학교 기계설계공학과를 1984년에 졸업하고 동 대학원에서 석사학위를 취득하고 1991년에 한국과학기술원에서 박사학위를 받았다. 1991년에는 삼성항공에서 선임연구원으로 산업용 제어장치들을 개발하였고 1995년부터 현재까지 서울과학기술대학교 기계시스템디자인공학과의 교수로 재직 중이다. 1997년에는 캐나다 UBC대학에 연구교수로서 영상처리 관련 연구를 진행하였다. 2017년부터는 K-MOOC 강좌 「로보틱스」와 「Drone ? 원리부터 프로그래밍까지」를 현재까지 진행하고 있다. 저서로는 『로봇공학』(사이텍미디어, 2000), 『매트랩의 정석』(인피니티북스, 2016), 『메카트로닉스』(씨아이알, 2016) 등이 있다.
PART 01 기초 다지기
CHAPTER 01 시작하기
1.1 마이크로컨트롤러
1.2 ARM 프로세서
1.3 마이크로컨트롤러 프로그래밍
1.4 32비트 프로세서의 붐
1.5 결언
1.6 이 책의 특징
CHAPTER 02 Mbed 알아보기
2.1 Mbed 개요
2.2 Mbed의 장점
2.3 Nucleo 보드 소개
2.4 Nucleo F401RE 보드 소개
2.5 Mbed 개발 환경 구축하기
2.6 무조건 프로그램 시작하기
CHAPTER 03 Mbed OS API의 개요
3.1 OS API의 구조
3.2 주요 API 살펴보기
3.3 꼭 알아둬야 할 객체지향 프로그래밍 개념
CHAPTER 04 디지털 출력 프로그래밍
4.1 DigitalOut 개요
4.2 DigitalOut 클래스
4.3 LED 제어 예제
4.4 확률로 켜기 실습
4.5 DigitalOut 소스 들여다보기
CHAPTER 05 디지털 입력 프로그래밍
5.1 디지털 입력 개요
5.2 DigitalIn 클래스
5.3 DigitalIn 푸시 버튼 실습
5.4 DigitalIn 푸시 버튼 토글 실습
5.5 주사위 실습
CHAPTER 06 PWM 출력 프로그래밍
6.1 PWM 개요
6.2 PwmOut 클래스
6.3 점진적 LED 밝기 조절 실습
6.4 RC 서보모터 실습
CHAPTER 07 아날로그 입력 프로그래밍
7.1 아날로그 디지털변환(ADC)이란?
7.2 AnalogIn 클래스
7.3 가변저항 실습
7.4 가변저항을 이용한 RC 서보모터 제어 실습
CHAPTER 08 인터럽트 프로그래밍
8.1 인터럽트의 개요
8.2 InterruptIn 클래스
8.3 인터럽트를 활용한 카운터 실습
8.4 카운터 클래스 만들기 실습
8.5 업다운 카운터 실습
CHAPTER 09 Ticker 활용하기
9.1 타이머 개요
9.2 Ticker, Timeout, Timer 클래스의 기능
9.3 Ticker 클래스
9.4 Ticker를 이용한 다른 주기로 LED 점멸
9.5 Blinker 클래스 만들기 실습
CHAPTER 10 Timer와 Timeout 활용하기
10.1 Timer 클래스
10.2 Timer 이용 시간 간격 측정 실습
10.3 Timer를 이용한 샘플 시간 구현 실습
10.4 Timeout 클래스
10.5 Timeout을 이용한 Off 타이머 실습
10.6 Timeout을 이용한 디바운싱 실습
PART 02 통신 프로그래밍
CHAPTER 11 UART 통신
11.1 UART의 개요
11.2 Serial 클래스
11.3 Loopback 실습
11.4 콜백 함수를 이용한 Loopback 실습
11.5 원격 제어 실습
11.6 기본 프로토콜 실습
CHAPTER 12 I2C 통신
12.1 I2C 통신 개요
12.2 I2C 클래스
12.3 I2C 장치 검색기 실습
12.4 I2C RTC 모듈 실습
12.5 OLED 디스플레이 Hello world 실습
12.6 OLED 디스플레이 그래픽 실습
12.7 OLED 시계 만들기 실습
CHAPTER 13 SPI 통신
13.1 SPI 통신 개요
13.2 SPI 클래스
13.3 SPI 실습
13.4 SPI가 내장된 클래스로 만들기 실습
PART 03 고급 프로그래밍
CHAPTER 14 BusOut과 BusIn 클래스 활용
14.1 개요
14.2 BusOut 클래스
14.3 BusIn 클래스
14.4 RGB LED 실습
14.5 FND 실습
CHAPTER 15 RTOS 활용
15.1 지원 RTOS API
15.2 Thread 클래스
15.3 Mutex 클래스
15.4 Queue 클래스
CHAPTER 16 Circular 버퍼 활용
16.1 Circular 버퍼 개요
16.2 CircularBuffer 클래스
16.3 CircularBuffer 실습
PART 04 프로젝트로 완성하기
CHAPTER 17 초음파 거리계 프로젝트
17.1 초음파 거리 센서
17.2 초음파 센서 클래스 만들기
17.3 초음파 거리계 프로젝트
CHAPTER 18 Lidar 센서 라이브러리 만들기
18.1 VL53L0x Lidar 센서
18.2 라이브러리 만들기
18.3 VL53L0x 거리 측정 프로젝트
CHAPTER 19 스텝 모터 구동 프로젝트
19.1 스텝 모터 개요
19.2 스텝 모터 구동 클래스 설계
19.3 스텝 모터 구동 프로젝트
CHAPTER 20 인코더 읽기 프로젝트
20.1 인코더의 개요
20.2 인코더 라이브러리 만들기
20.3 인코더 프로젝트: 한 개의 인코더 읽기
20.4 인코더 프로젝트: 두 개의 인코더 읽기
CHAPTER 21 Lidar 스캐닝 프로젝트
21.1 라이다 센서
21.2 Lidar 라이브러리 제작
21.3 라이다 측정 예비 실험
21.4 라이다 스캐너 프로젝트
CHAPTER 22 MPU9250으로 AHRS 만들기
22.1 AHRS 개요
22.2 MPU9250의 주요 레지스터
22.3 MPU9250 라이브러리 만들기
22.4 MPU9250 AHRS 프로젝트
부록 A: C++ 복습
부록 B: 소요 부품 목록
부록 C: 유용한 도구 소개
이 책이 다루는 대상은 ARM 프로세서 코어로 만들어진 32비트 마이크로컨트롤러인 Cortex-M 프로세서와 이 프로세서를 효율적으로 사용할 수 있도록 개발된 Mbed OS이다. 아두이노라는 초보자를 위한 플랫폼이 개발되어 비전공자나 청소년까지도 쉽게 MCU 프로그램이 가능하도록 하여 메이커 활동 및 코딩 교육에 지대한 기여를 하였고 고립된 전문가들의 MCU 프로그램 분야의 대중화를 이끌었다. 그런데 8비트 MCU에 비하여 ARM 코어의 32비트 MCU가 막강한 성능을 제공하면서도 더 저렴해지면서 2010년을 기점으로 판매 금액에서 32비트 MCU가 8비트를 압도하게 되었다. 비슷한 시기에 ARM사의 지원을 받은 개발자 커뮤니티에서 Mbed OS가 개발되어 체계적이며 편리하게 32비트 Cortex-M 프로세서 프로그래밍이 가능하게 되었다. 특히 Mbed는 IoT 관련 기능을 충실하게 지원하여 연결성이 필요하거나 RTOS 기능이 필요한 프로젝트에 잘 적용될 수 있을 것이다.