|
지은이 허경용 연세대학교 전자공학과 학사와 석사 취득, 이후 플로리다 대학교에서 컴퓨터공학 박사를 취득, 현재 동의대학교 전자공학과 교수로 재직 중이다. 저서로 [라즈베리 파이 피코, 마이크로 파이썬을 만나다](2022), [아두이노 바이블(vol1~vol4)](2021), [허교수의 ARM Mbed 프로그래밍 입문](2019), [사물인터넷을 위한 ESP8266 프로그래밍](2017) 등이 있다.
1장에서는 아두이노의 역사와 하드웨어 및 소프트웨어 측면에서의 특징을 통해 아두이노가 무엇인지 알아본다. 아두이노 IDE 설치 및 사용 방법에 대해서 상세하게 설명을 해준다.
아두이노는 이탈리아의 이브레아(Ivrea)에서 예술가와 디자이너가 사용할 수 있는 마이크로컨트롤러 플랫폼으로 2005년 처음 발표 아두이노는 이탈리아의 IDII(Ineraction Design Instite Ivrea)에서 학생들이 디자인과 결합하여 상호 작용이 가능한 전자 장치를 쉽고 간편하게 만들 수 있도록 하자는 목적에서 시작되었다. 아두이노를 위한 프로그램을 스케치라고 부르는데 그림을 그리듯이 프로그램을 쉽게 작성할 수 있다는 의미에게 붙여진 이름이다. 마이크로프로세서: 중앙처리 장치를 하나의 칩으로 집적해 만든 것, 복잡한 작업을 신속하게 처리해야 할 경우 사용 마이크로컨트롤러: 마이크로프로세서의 일종으로 마이크로프로세서에 비해 성능이 낮지만 사용 편의성을 높여 특수 목적용으로 만든 것. 하나의 칩에 중앙 처리 장치뿐만 아니라 일정 용량의 메모리와 입출력 인터페이스까지 내장한 것.간단한 장치를 구성하고자 할 경우 사용 아두이노는 마이크로컨트롤러 보드다. 마이크로컨트롤러 보드 = 마이크로컨트롤러 + α 아두이노 우노 = ATmega328 + α 2장에서는 SAMD21G 마이크로컨트롤러를 사용하는 아두이노 보드인 아두이노 제로, 아두이노 MKR 제로, 아두이노 나노 33IoT의 기본적인 사용방법을 알아본다.
아두이노 제로 보드와 그 변형에 대한 그림을 보여준다. 아두이노 우노와 아두이노 제로의 차이점을 설명해 준다.
아두이노 제로는 더 많은 플래시 메모리와 SRAM을 갖고 있어 더 큰 프로그램을 설치하고 실행할 수 있다. 아두이노 우노에 비해 3배 빠른 클록을 갖고 있다. ATmega328은 8비트 CPU 포함하고 있지만 SAMD21G는 32비트 CPU를 포함하고 있다. 아두이노 제로는 아두이노 우노에 없는 DAC가 포함되어 있어 아날로그 신호를 직접 출력할 수도 있다. 3장에서는 SAMD21G 마이크로컨트롤러와 이를 사용하여 만든 아두이노 보드의 하드웨어 측면에서의 특성을 알아본다.
아두이노 제로를 사용할 때 주의할 점은 3.3V 전원을 사용한다는 점이다. 5V 기준 전압을 사용하는 아두이노 우노의 출력을 3.3V 기준 전압을 사용하는 제로의 입력으로 연결하면 파손될 수 있다. 4장에서는 아두이노 IDE2.x의 기능을 알아본다. 아두이노 IDE 2.x 버전은 이전 1.x 버전의 성능을 개선하고 자동완성, 내장 디버거, 아두이노 클라우드와의 연동 등 새로운 기능을 추가하여 만들어졌다. 기억할 점: 아두이노 제로는 디버깅을 지원하는 칩이 보드에 포함되어 있어 전용 장치 없이 디버깅이 가능하지만 그 외의 보드는 디버깅을 위한 전용장치가 필요하다. 5장에서는 SAMD21G 기반 보드들이 시리얼 통신 인터페이스를 통해 제공하는 UART 시리얼 통신에 대해 알아본다.
주의할 점: 아두이노의 경우 UART 통신을 하지만 컴퓨터에서는 RS-232 또는 USB 통신을 사용한다. 컴퓨터와 통신하기 위해서는 변환 장치가 필요하고 UART 통신을 위해서는 송신과 수신을 위한 연결선을 교차하여 연결해야 한다. 6장은 문자열을 다루기 위한 String 클래스의 사용방법과 아두이노에서 문자열을 다루는 방법을 알아본다. C/C++ 언어에서는 문자열을 위한 데이터 타입을 제공하지 않는다. 따라서 C언어에서는 문자 배열을, C++ 언어에서는 문자열을 다룰 수 있는 클래스를 사용하는 것이 일반적이다. C/C++ 언어를 사용하는 아두이노에서도 문자열을 다룰 수 있는 String 클래스를 제공하고 있으며 String 클래스가 흔히 사용된다. string 객체를 사용하면 문자 배열을 사용하는 것보다 실행 파일의 크기가 커져 플래시 메모리 사용이 증가하고 스케치 실행 과정에서 더 많은 SRAM을 사용한다.
문자열 연결에 사용되는 연산자 +, concat 멤버 함수의 차이를 설명한다. concat 멤버 함수는 기존 문자열 객체에 문자열을 이어 붙인 후 성공 여부를 반환하고, +연산자는 두 문자열 객체를 이어 붙인 새로운 객체를 반환한다. 주의할 점은 concat 멤버 함수를 호출한 후에는 멤버 함수를 호출한 객체의 내용이 바뀐다는 것이다. 7장에서는 아두이노 보드의 데이터 핀으로 1비트 데이터를 입출력하는 방법을 LED와 푸시버튼을 통해 알아본다. 마이크로컨트롤러에서 이루어지는 디지털 데이터 처리는 중앙 처리 장치에서 바이트의 정수 배 단위로 이루어진다. 하지만 마이크로컨트롤러의 데이터 핀으로 교환할 수 있는 데이터는 바이트가 아닌 비트 단위 데이터다. 따라서 바이트 단위 데이터 교환은 여러 번의 비트 단위 데이터 교환을 통해 이루어지며 이를 시리얼 통신이라고 한다. 아두이노에서 제공하는 pinMode, digitalRead, digitalWrite 3개의 함수를 이용하여 디지털 입출력하는 방법을 알아본다.
버튼으로 LED를 제어하는 회로도와 스케치 코드이다. delay 함수를 사용했을 때 오류를 설명하고 대체할 수 있는 함수로 millis를 사용하는 과정을 설명해 준다. delay 함수는 지정한 시간 동안 반환하지 않으므로 버튼 입력 검사를 방해하지만 millis 함수는 실행 시간을 즉시 반환하므로 버튼 입력 검사를 방해하지 않는다. 다만 지정한 시간이 지났는지 알아내기 위해서는 계속해서 실행 시간을 얻어와 기준 시간과 비교하는 과정이 필요하다. 8장에서는 마이크로컨트롤러를 사용하여 주변 환경과 상호 작용하는 시스템을 구현하기 위해 아날로그 데이터와 디지털 데이터 사이의 변환이 필요하다. 환경에서 얻을 수 있는 아날로그 데이터를 디지털로 변환하여 사용하고 그 결과를 아날로그 데이터로 변환하는 방법을 알아본다. AVR 시리즈 마이크로컨트롤러에는 DAC가 포함되어 있지 않으므로 아날로그 신호를 직접 출력할 수는 없다. 대신 펄스 폭 변조(PWM) 신호를 사용하여 아날라그 신호와 비슷한 효과를 얻을 수 있다. 반면 SAMD21G 마이크로컨트롤러에서는 PWM 신호를 사용할 수 있는 것은 물론 DAC도 포함되어 있어 아날로그 신호를 직접 출력할 수 있다.
PWM 신호 출력에 대한 설명이다. 아날로그 신호와 비슷한 효과를 얻기 위해서는 높은 주파수의 PWM 신호가 필요하다. 낮은 주파수의 PWM 신호를 사용하면 한 주기 내에서 HIGH인 구간과 LOW인 구간에 개별적으로 반응하여 LED가 깜박거리지만, 높은 주파수의 PWM 신호를 사용하면 한 주기 내의 평균값에 LED가 반응하여 그에 해당하는 밝기로 LED가 켜진다.
아날로그 신호 출력에 대한 설명이다. 출력과 입력을 직접 연결하는 것을 루프백테스트라고 하며 입력과 출력을 동시에 검사하기 위해 사용한다.
허경용님의 다른 저서 중 아두이노 바이블(2021)이 있어서 혹시 아두이노에 대해서 더 자세히 알고 싶은 분은 이 책을 읽으면 좋을 것이다.
8장까지 읽고 리뷰를 남겨본다. 이 책은 아두이노에 대해서 기본 지식이 있는 사람이 읽으면 쉽게 느껴질 것이다. 읽으면서 많이 부족한 나를 만날 수 있었다. 아두이노 바이블을 쓰신 저자답게 내용 자체는 천천히 읽으면 이해를 할 수 있고 상세하고 쉽게 설명이 되어 있어서 아두이노에 대한 새로운 지식을 많이 얻을 수 있었다. 책을 읽다가 혹시 어려운 점이 있다면 네이버 카페를 운영하고 있어서 질문을 남길 수 있다.
|
|
이 책은 확실히 초보자에게 쉬운 책은 아니다. 하지만, 아두이노 우노 등을 사용하면서 한계를 느꼈던 유경험자에게 아주 유용한 지침서가 되리라 확신한다. 32bit MCU를 다뤄본다는 점에서, 잘 정립된 여러 예제를 통해서 이 책은 또한 대학교재로써도 가치가 있을 것으로 생각된다. 현업에서 RTOS가 탑재되지 않은 제품의 프로토타입 개발에 있어서도 8bit 아두이노보다 확장된 기능을 구현할 수 있어 기대가 되는 제품이다. 이 책은 그 여러가지 기대를 잘 녹여낸 책이라 사료된다. 특히, 디버깅 기능은 독자들이 확실히 이해했으면 하는 대목이다. |
|
기존의 아두이노와 차이점, ARM Cortex-M기반의 도입 배경과 이를 기반으로 한 컨트롤러를 가진 보드들의 사용 방법까지 자세히 설명되어있고, 아두이노 개발환경에 있는 디버깅 수정 방법까지 알려주어서 아두이노를 처음 접하시는 분들도 무리없이 따라올 수 있을거라 생각합니다. 각종 라이브러리 사용방법은 기본이고, 블루투스와 와이파이 같은 무선통신을 이용한 모듈 제어 방법까지.....알차고 다양한 내용과 실행 후 결과를 시각화하여 보다 직관적으로 정보를 전달 해 줍니다. |
|
사물인터넷(IoT : internet of things)의 뜻은 인터넷을 통해 다른 장치 및 시스템과 데이터를 교환할 수 있는 센서, 소프트웨어 및 연결 기능이 내장된 물리적 개체 또는 "사물"의 네트워크를 말해요.
사물인터넷 종류 사례 : 아두이노Arduino 사물인터넷과 아두이노Arduino의 관계는 매우 밀접해요. 사물인터넷의 대표적인 사례로 아두이노를 꼽을 수 있을 정도거든요. 아두이노는 대화형 프로젝트를 만들기 위한 하드웨어와 소프트웨어 도구를 제공하고 있는데요. 아두니오의 구성으로는 마이크로컨트롤러 보드와 프로그래밍 및 프로토타이핑 프로세스를 단순화하는 개발 환경이 포함되어 있어요. ARM cortex-M 기반의 아두이노
상당한 업그레이드를 통해 사물인터넷과 로봇 공학을 포함한 다양한 분야에 적용할 수 있는데요. 결과적으로 아두이노의 유저 친화적인 개발 환경과 ARM Cortex-M 마이크로컨트롤러의 기능을 결합하여 개발자는 혁신적인 고성능 프로젝트를 만들 수 있게 되었어요. ARM cortex-M 기반의 아두이노 프로그래밍 쉽게 하는 방법 책추천
ARM Cortex-M 기반의 아두이노 프로그래밍은 사물인터넷과 인공지능에 적합한 32비트 아두이노 개발방법을 소개하고 있는 책이에요. 아두이노를 개발하기 위한 환경을 구축하고, 소프트웨어 하드웨어 모두 올인원 툴로 책 한권을 보면서 프로그래밍까지 끝낼 수 있게 구성된 점이 제이펍 ARM Cortex-M 기반의 아두이노 프로그래밍 책의 특징이라고 할 수 있어요. 사물인터넷의 대표 사례인 아두이노를 이용해서 프로젝트를 구성하기 원하시는 분은 누구라고 쉽게 모듈을 구성해서 실습할 수 있게 정리되어 있는데요. 아두이노와 사물인터넷의 뜻 예시 사례 관계 등 기초적인 개념부터, 아두이노를 이용해서 센서를 만들고 직접 프로그래밍으로 데이터를 수집하는 과정까지 한번에 배워볼 수 있는 책이라는 점이 좋아요.
출판사를 통해 도서를 제공받아 직접 읽고 작성한 후기예요. |
추천대상
좋았던 점
아쉬웠던 점
* 이 리뷰는 제이펍에서 진행한 리뷰 이벤트를 통해 도서를 제공받아 작성되었습니다. |
|
이번에 읽은 책은 ARM Cortex-M 기반의 아두이노 프로그래밍(제이펍, 2023)입니다. ARM 기반의 아두이노 기초부터 고급까지, [ARM Cortex-M 기반의 아두이노 프로그래밍]이면 됩니다!
이 책을 읽은 이유 ARM 기반 아두이노를 배우면 산업적인 관점과 고급 기능을 다룰 수 있으며, 더 복잡하고 성능이 요구되는 프로젝트를 수행할 수 있습니다. 또한 ARM 기반 아두이노는 산업 표준으로 사용되므로 산업 분야에서 활용할 수 있는 역량을 갖출 수 있습니다. 아두이노의 실용적인 접근 방식은 전자 및 프로그래밍 개념에 대한 이해를 향상하고자 이 책을 읽었습니다.
책 소개 1장부터 3장까지는 아두이노 보드, 아두이노 제로 보드에 대한 설명입니다. 4장은 IDE에 대해 설명하며, IDE 2.x에서 추가되거나 달라진 부분을 설명합니다. 5장부터는 실습입니다. 5장에서는 시리얼 통신 중에서도 가장 오래된 UART으로 시리얼 통신을 실습합니다. 6장은 String 클래스를 학습합니다. 메모리를 자동으로 관리해 주고 다양한 함수를 제공합니다. 7장과 8장은 아날로그·디지털 데이터 입출력입니다. 9장과 10장은 시리얼 통신인 SPI, I2C 통신입니다. SPI 통신을 이용하여 OLED 디스플레이에 문자와 도형을 표현합니다. 연결과 제어가 간단한 I2C 통신으로 LCD 디스플레이에 문자를 표현합니다. 11장, 12장은 USB 통신에 대해 배웁니다. 11장은 아두이노 보드가 주변장치로, 12장은 아두이노 보드가 호스트로 작동합니다. 13장은 아두이노 제로 보드의 특징인 EEPROM 에뮬레이션의 사용방법을 배웁니다. 14장은 아두이노에서 날짜를 시간을 유지하기 위한 실시간 카운터와 시계를 실습합니다. 15장은 온습도 센서의 데이터를 SD 카드에 저장합니다. 아두이노 MKR 제로에는 SD 카드 모듈이 포함되어 있습니다. 16장부터는 아두이노 나노 33 IoT를 이용하여 관성 측정 장치, 18장은 블루투스, 19장은 와이파이를 실습합니다. 17장은 모터에 대해서 학습합니다. DC 모터, 서브 모터, 스테핑 모터에 대해 알아보고 제어하는 방법을 익힙니다.
아두이노란? 아두이노는 마이크로컨트롤러 보드로, 마이크로 컨트롤러란 하나의 칩에 중앙 처리 장치(CPU) 뿐만 아니라 일정 용량의 메모리와 입출력 인터페이스까지 내장했습니다. 마이크로 컨트롤러는 마이크로컴퓨터, 싱글 칩 컴퓨터라고도 불립니다. 이와 비교되는 마이크로프로세서는 마이크로 컨트롤러보다 더 범용적으로 쓰이며, 마이크로 컨트롤러의 경우 하드웨어 제어용으로 간편하게 사용합니다. 아두이노가 마이크로 컨트롤러를 대표한다면 라즈베리파이는 마이크로프로세서를 대표합니다. 아두이노의 특장점 중 하나는 아두이노 함수와 라이브러리로 인해 다양한 기능을 가진 아두이노 보드들의 확장성을 높였습니다.
기존의 AVR에서 ARM으로의 변화 아두이노를 포함한 마이크로 컨트롤러의 활용 분야가 넓어지면서 높은 사양의 아두이노 보드에 대한 수요가 증가하고, 이에 따라 ARM의 Cortex-M 시리즈 마이크로 컨트롤러를 사용한 아두이노 보드가 출시되었습니다. 주의할 점으로는 아두이노 제로를 사용할 때는 3.3V의 전원을 사용해야 합니다.
아두이노 제로, 아두이노 MKR 제로, 아두이노 나노 33 IoT 아두이노 제로는 아두이노 우노의 상위 호환입니다. 아두이노 우노와 모양이 같고 디버깅 기능을 지원합니다. 하지만 성능이 좋은 만큼 우노보다 가격이 비쌉니다. 아두이노 MKR 제로는 아두이노 제로에 비해 무선 통신 기능이 추가된 다양한 모델로 판매되고 있으며, 제공하는 기능 면에서는 큰 차이가 없습니다. 아두이노 나노 33 IoT는 아두이노 보드 중 가장 작은 크기로 와이파이 기능, 블루투스 기능, 6축 관성 측정 장치를 내장하고 있어 사물인터넷(IoT) 공부에 제격입니다. 세 가지 보드 모두 각자의 특성이 다르니 잘 확인하시고 구매하시길 바랍니다.
아두이노 IDE 2.x에서 추가된 특징 첫째는 디버깅 기능입니다. 아두이노 제로 보드 이외의 아두이노 보드에서는 디버깅을 위한 전용 장치가 필요합니다. 둘째, 세로 툴바가 추가됐습니다. 스케치 관리, 보드 관리, 라이브러리 관리같이 자주 쓰이는 기능을 좀 더 편하게 사용할 수 있습니다. 셋째는 아두이노 클라우드의 지원입니다. 클라우드 동기화를 통해 언제 어디서든 스케치 작업이 가능합니다. 마지막으로는 테마 설정이 가능합니다. 개발자들이 많이 사용하는 다크 테마를 지원합니다.
기존 서적과의 차이 기존 AVR 기반의 아두이노 보드와 ARM 기반의 차이점을 자세하게 설명합니다. 보드의 핀맵과 주변 장치의 연결을 그림으로 쉽게 알려줍니다. 아두이노 제로 보드뿐만 아니라 아두이노 MKR 제로, 아두이노 나노 33 IoT로 다양한 실습을 합니다.
추천 독자 아두이노 기본(예: 아두이노 바이블)을 공부하고 다음 단계를 공부하고 싶은 사람 기존의 8비트에서 32비트로 고성능의 아두이노를 공부하고 싶은 사람 ARM 기반 보드 공부를 시작하시는 분 아두이노 IDE의 2.x의 사용법을 익히고 싶은 사람
느낀점 장점으로는 ARM 기반 32비트 아두이노로 모터와 같은 각종 디바이스 컨트롤을 배울 수 있고, 블루투스와 와이파이 같은 통신 기술도 배울 수 있어 좋았습니다. 평소에 TCP와 같은 네트워크에 대한 지식이 부족하였는데 이 책으로 실습과 학습을 해서 좋았습니다. 마이크로컨트롤러와 이를 사용하여 만들어진 여러 가지 아두이노 보드가 지닌 하드웨어 측면의 특징과 차이점을 알려줘서 아키텍처에 관하여 공부할 수 있었습니다. 보다 강력한 성능과 디버깅이 가능한 아두이노 제로로 아두이노의 다양한 플랫폼 확장성을 기대해 봅니다. 아쉬운 점으로는 이 책을 따라 하는 데 필요한 부품들을 구입할 수 있는 링크가 있었다면 좋았을 것 같습니다. 초보자의 경우 막막한 부분이 있습니다. 컬러 사진이었으면 더 이해하기가 좋았을 것 같습니다.
본 서평은 출판사로부터 제공 받아 작성된 서평입니다. |