Raspberry Pi_Kor_00.1 서문



Published Book on Amazon


All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents



서문

 

주요 내용


여기서는 먼저 저자가 이 책을 쓰게 된 동기를 소개하고 있다. 다음으로 이 책의 전체적인 구성과 각 Chapter의 요약된 내용을 안내하고 있으며, 다루는 내용의 수준에 대해서 안내하고 있다.

 

다음과 같은 항목에 대한 설명을 포함하고 있다.

    이 책을 쓴 동기

    이 책에서 다루는 내용

    이 책에서 다루는 내용의 수준

    이 책에서 사용되는 관례

 


 

1.   이 책을 쓰기까지

 

나는 개인적으로 사회 업무경력을 처음 시작하면서부터 계속 기업의 기본적인 업무 process를 다루는 IT 영역에 발을 담그고 있었는데, 주로 통합된 IT 시스템을 활용하여 회사 업무 process를 효율적으로 만드는 일을 주된 업무로 해왔다. 주로 ERP package를 이용하거나 여러 가지 업무 도구를 이용해서 기업용 응용 프로그램을 개발하여 기업의 각종 업무처리를 지원하는 일을 해 왔다.

 

하지만 항상 마음 속 내부에서는 컴퓨터를 이용하여 외부 기계와 회로를 마음대로 조정할 수 있는 능력이 있으면 좋겠다는 생각을 가지고 있었다. 컴퓨터를 이용하여 큰 자동화된 공장을 직접 조정하거나, embedded program을 이용하여 공정의 기계 내부에 설치되어 있는 부품을 조정하거나 로봇을 마음대로 움직이거나, 외부의 각종 sensor와 연결하여 측정 자료를 얻고, 필요하면 외부의 여러 장치나 기계를 마음대로 조정할 수 있는 명령을 내려 보고 싶었다.

 

2015년 초 어떤 회사의 ERP project를 끝내고 휴식을 취할 수 있는 약간의 기간이 있었다. 통상 그런 여유기간이 있으면, "배운 게 도둑질"이라고 그 동안의 버릇을 탈피하지 못하고, IT 부문의 최근 기술이 어떤 것이 있는지, 어디까지 발전해 왔는지 등에 대해서 자료를 찾아보거나 세미나에 참석하여 자료를 모아서 읽어보고는 했었는데, 그 때도 비슷한 일을 하고 있었다.

 

이때 많은 잡지 기사나 세미나에서 다루는 여러 가지 주제 중에서 인기 있는 기술 분야가 IOT, Big Data, 3D printer 등의 주제였다. 세미나에 여러 번 참석하여 이런 주제에 대한 발전상황에 대해서 여러 가지 이야기를 듣고, 관련 자료를 모아 자료를 검토하면서, 가능하면 내가 직접 한번 해보면 좋겠다는 생각을 가지게 되었다. 이런 생각을 가지고 여러 가지 내용을 검토하면서, 컴퓨터를 이용하여 외부의 각종 기기나 장치들을 통제하거나 외부의 각종 sensor에서 자료를 읽어 올 수 있는 IOT 분야가 매력적으로 다가왔고, 그런 과정에서 많은 돈을 들이지 않고도 IOT를 구현하여 체험해 볼 수 있다고 하는 Raspberry Pi라는 것을 처음 접하게 되었다.  

 


 

처음에는 호기심으로 짧은 기간만 투자하여 Raspberry Pi에 대한 맛만 보기로 했는데, 시간이 가면서 점차 깊숙이 발을 담그게 되었다. 그런데 Raspberry Pi, Linux, IOT, 전기/전자 회로, sensor 등의 주제는 사실 내가 대부분 처음 접해 본 영역으로 기초적인 지식이 많이 부족한 상태였다. 처음 학습을 할 때는 시중에 나와 있는 책을 사서 읽었는데, 불행히도 책에서는 내가 궁금해 하는 것을 제대로 설명하지 않는 부분이 많아서 어려움이 적지 않았다. 이런 부족한 부분을 메우기 위해서 인터넷을 통해서 여러 가지 경로로 자료를 찾아 보면서 부족한 내용을 보충하고, 서로 맞지 않은 부분은 여러 자료를 비교하여 정리하고 맞추면서 학습을 진행할 수 밖에 없었다

 

이렇게 몇 개월이 지나서 Raspberry Pi에 대해서 어느 정도 학습이 된 이후에 생각해 보니, 내가 처음 초보자로 시작하여 어느 정도 수준으로 이해하기까지 내가 경험한 내용과 학습한 내용들을 다른 초보자들을 위해서 정리를 해보면 좋겠다는 생각을 가지게 되었다. 모든 내용을 잘 알고 있는 전문가적인 관점에서 상세하게 잘 설명하는 것도 좋겠지만, 처음부터 아무것도 모르는 시작한 초보자의 입장에서 눈으로 보고, 경험하고, 이해한 내용은 쉽게 잘 정리할 수만 있다면 처음 시작하는 초보자들에게는 어떤 전문가도 주지 못하는 도움이 되지 않을까 하는 생각을 하게 되었다. 다행히 그때 마침 시간적 여유도 좀 있어서 이러한 생각으로 마음을 크게 먹고 그때까지 이해한 내용을 정리하는 작업을 시작하게 되었다.

 

작업을 처음 시작할 때는 300~400 page 정도면 중요한 내용이 모두 정리될 것으로 예상하고 있었는데, 정리를 진행하면서 점차 분량이 늘어나게 되었다. 정리하는 과정에서 점차 더 많은 내용을 담고자 하는 욕심이 생기기도 하고, 실력이 부족하여 간단한 것을 간단하게 정리하지 못하고 장황하게 설명한 것도 있으며, 또한 초보자들이 쉽게 이해할 수 있도록 다양한 그림과 이미지를 삽입하는 것이 좋겠다는 생각이 들어 내용을 보충하다 보니, 처음 예상한 분량을 훨씬 넘어서 걷잡을 수 없을 정도로 분량이 늘어나게 되었다. 최종으로 정리된 내용을 보니 처음 예상의 2배가 되었으니, 참 어처구니가 없는 일이다. 스스로 생각해도 한심한 일이 아닐 수 없다. 여러분의 많은 이해를 바란다.


 

2.   이 책의 전체적인 구성

 

이 책은 상권과 하권으로 나누어진 두 권으로 구성되어 있다. 원래는 모든 내용이 한 권에 포함되어 있는 형태로 책의 구성이 계획되었지만, 전체 내용의 분량이 한 권으로 만들기는 너무 많아서 부득이 2권의 책으로 분할하게 되었다. 하지만 책의 구성과 형태에서 전체적인 통일성을 부여하고, 전체 내용을 체계적으로 배열하여 독자들이 사용하기 쉽도록 하기 위해서 책의 모든 내용은 한 권의 책으로 되어 있는 것처럼 구성되어 있다. 따라서 책은 두 권으로 분리되어 있지만, Chapter 번호는 두 권이 모두 연속적으로 부여되어 있고, 페이지 번호도 연속적으로 표시되어 있으며, 이러한 방식에 따라 목차나 색인 등도 두 권이 한 권인 것처럼 표시가 되어 있음에 주의해야 한다.


 

 


 

3.   이 책에서 다루는 내용

 

이 책은 Raspberry Pi에 대한 소개에서 시작하여 실제로 구매해서 동작시키는 방법을 안내하고 있으며, 사용할 수 있는 많은 명령과 도구들을 안내하고 있다. 또한 별도의 응용 프로그램 개발에 필요한 많은 도구와 사용방법에 대해서 설명하고 있으며, Raspberry Pi를 외부의 기계나 설비, 센서등과 연결하여 활용하는 방법에 대해서 안내하고 있다.

 

Chapter별로 설명하고 있는 내용을 간추리면 다음과 같다.

 

책 상권 Raspberry Pi 기초

 

[Chapter 1~Chapter 3]에서는 Raspberry Pi가 무엇인지, 어떤 특징을 가지고 있는지, 어디에 사용할 수 있는지 등 처음 접하는 분들을 위해서 Raspberry Pi에 대한 배경지식부터 시작하여 자체의 내용까지 상세히 설명하고 있다. 그리고 실제로 사용하고자 하는 사람들을 위해서 준비사항을 상세히 설명하고 있다

 

[Chapter 4~Chapter 9]에서는 Raspberry Pi에서 사용할 수 있는 운영체제를 소개하고, 설치절차를 설명하고 있다. 설치가 완료된 다음 Raspberry Pi를 어떻게 시작하고, 종료하는지를 설명하고 있으며, 시스템 운영에 필요한 각종 설정항목들을 조정하는 방법에 대해서 설명하고 있다.

 

[Chapter 6~Chapter 7]에서는 Raspberry Pi가 작동한 후에 시스템에 접속하는 방식인 Terminal 접속과 desktop 접속, local 접속과 remote 접속 등에 대해서 설명하고 있으며, terminal Desktop window가 무엇인지, 어떤 기능을 가지고 있는지를 설명하고 있다.

 

[Chapter 8~Chapter 17]에서는 Linux 시스템의 기본적인 체계와 여러 가지 명령과 도구들에 대해서 상세히 설명하고 있다. terminal Shell 프로그램, 각종 Shell 명령, network 설정 방법, 사용자 및 사용자 그룹을 정의하는 방법, 파일에 대한 권한을 설정하는 방법, 각종 device의 의미와 내용을 확인하는 방법, 저장장치와 파일시스템의 구조, 파일을 관리하는 방법, 프로그램 설치 및 Upgrade 방법 등에 대해서 상세히 설명하고 있다.


 

책 하권 Raspberry Pi 활용

 

[Chapter 18~Chapter 20]에서는 Raspberry Pi 시스템에 대한 보다 고급 주제를 다루고 있다. 외부에서 Raspberry Pi 시스템에 원격으로 접속하는 여러 가지 방법을 안내하고 있으며, 시스템에 대한 현재 상태를 확인하기 위해서 여러 가지 모니터링 방법을 설명하고 있으며, 시스템에서 명령을 실행할 때 수동으로 실행하지 않고, 일정한 규칙에 따라 자동으로 실행하거나 여러 명령을 한꺼번에 일괄 실행하는 방법을 설명하고 있다.

 

[Chapter 21~Chapter 22]에서는 Raspberry Pi에서 사용할 수 있는 사무용 프로그램과 도구에 대해서 설명하고 있다. 사무용 문서 작성 도구와 이미지 편집 프로그램, 인쇄 프로그램, 인터넷 브라우저 등 다양한 도구를 소개하고 있으며, 카메라나 비디오를 이용한 멀티미디어 작업을 어떻게 할 수 있는지를 소개하고 있다

 

[Chapter 23~Chapter 24]에서는 Raspberry Pi에서 별도의 응용 프로그램을 개발하는데 사용하는 도구를 소개하고 있다. Python, Java, C, Scratch 등 다양한 개발 language와 도구들을 설명하고 있으며, Database가 필요하거나 Web을 구축하여 운용하고자 하는 사람들을 위해서 Apache, MySQL, PHP Database server Web server를 구축하는 방법에 대해서 설명하고 있다.

 

[Chapter 25]에서는 Raspberry Pi를 이용해서 외부의 기계나 설비, sensor 등과 연결해서 다양한 interface를 해 보고, IOT를 구현할 수 있는 기초를 설명하고 있다. Raspberry Pi가 가지고 있는 GPIO의 내용과 실제로 다루는 방법에 대해서 설명하고 있으며, 외부의 기기나 전자회로와 연결할 때 필요한 전기/전자에 대한 기초지식을 정리해 놓았다. 그리고 실제로 몇 가지의 사례를 사용하여 Raspberry Pi를 외부의 기기와 연결하거나 sensor와 연동하는 방법을 설명하고 있다.

 


 

4.   이 책에서 다루는 내용의 수준

 

이 책은 Raspberry Pi를 이용해서 IOT를 구현해 보는 수준까지 가는 것이 기본적인 목표이다. 따라서 이 책은 Raspberry Pi에 처음 접하는 순간부터 IOT를 실제로 구현할 때까지 필요한 모든 내용을 다루고 있다. 그냥 시키는 대로 따라서 해보는 것이 아니라, 책의 내용을 제대로 이해하고 다음에 다른 작업을 할 때도 전혀 문제가 없을 정도로 충분한 지식과 경험을 습득하는 것을 목표로 하고 있다.

 

무릇 어떤 종류의 컴퓨터이든지 제대로 활용하고자 하면, 여러 가지 주제에 대해서 어느 정도 수준 이상의 지식이 필요하다. 비록 Raspberry Pi가 조그마한 컴퓨터이기는 하지만, 일반 PC에서 할 수 있는 대부분의 일을 할 수 있을 정도의 능력을 가지고 있는 하나의 완전한 컴퓨터이다. 따라서 Raspberry Pi를 제대로 활용할 수 있으려면 이와 관련된 여러 가지 주제에 대해서 제대로 알고 있어야 한다.

 

이 책은 Raspberry Pi를 활용하는데 필요한 거의 모든 주제에 대해서 다루고 있으므로 그 내용의 범위가 굉장히 넓다. 이 책은 가능한 쉽게 설명하기 위해서 특정 주제에 대해서 기초적인 내용부터 시작하고 있으며, 시스템 활용에 필요한 일정 정도의 수준까지 관련 내용을 설명하고 있으며, 기본적으로 필요한 모든 내용을 두루 포함하고 있다. 또한 특정 주제에 대한 내용을 단순히 나열하는데 그치지 않고, 기본적인 원리를 이해할 수 있도록 하였으며, 실제로 어떻게 사용할 수 있는지에 대한 기본 틀을 설명하고 있다.

 

하지만 지면상의 제한으로 인해서 해당 주제에 대해서 모든 내용을 고급 수준의 지식까지 세세하게 설명할 수는 없어서 설명하는 깊이를 적정하다고 생각하는 수준으로 타협하여 조정하였다. 따라서 특정 주제에 대해서 모든 세부적인 내용을 설명하지는 않았지만, 세부적인 내용이 어떤 것이 있는지를 제시하는 방법으로 수준을 조정하였다.

 

또한 이 책에서는 특정 주제에 대해서 추가로 공부할 사항이 어떤 것이 있는지를 별도로 안내함으로써 추후에 개별적으로 학습할 내용에 대해서 안내하고자 하였다. 특히 프로그램 개발 Language, Database, HTML, PHP, Web server, 외부 기기와의 외부 Interface와 같은 주제는 그 내용이 방대하여 모든 내용을 설명하는데 어려움이 많이 있어서 활용을 위한 필수적인 수준까지만 설명을 하였다. 따라서, 해당 항목에 대해서 고급수준으로 활용하고자 하면 반드시 추가 학습을 통해서 관련 지식을 익혀야 함을 알려두는 바이다.  


 

5.   이 책의 기준 운영체제

 

Raspberry Pi 시스템에는 Linux 계열의 운영체제인 Raspbian, Occidentalis, Ubuntu 등 여러 가지 운영체제 배포판를 설치하여 사용할 수 있으며, 사용자가 원하면 MS Windows 10 등 다른 운영체제도 사용할 수 있다. Raspberry Pi 시스템에서 사용할 수 있는 운영체제에 대한 상세한 내용은 [Chapter 4 운영체제 설치하기]를 참조하기 바란다.

 

이 책에서는 Raspberry Pi 시스템에 운영체제를 설치하는 단계까지는 특정 운영체제와 관계없는 공통되는 내용을 설명하고 있다. 하지만 Raspberry Pi 시스템에서 운영체제를 이용하여 시스템을 운용하는 구체적인 단계부터는 특정 운영체제를 전제로 하지 않으면 설명을 계속할 수 없다. 따라서 이 책에서는 Raspberry Pi 시스템의 공식 운영체제인 Raspbian을 기준 운영체제로 사용하는 것을 전제로 하여 설명을 진행하고 있다.

 

Raspbian Linux 계열의 운영체제로 Debian 배포판을 기본으로 하여 Raspberry Pi 하드웨어에 최적화되도록 만든 운영체제이다. 따라서 여기서 Raspbian 운영체제를 전제로 설명하는 내용은 다른 Linux 계열 운영체제에도 거의 그대로 적용될 수 있다. 하지만, Linux 배포판에 따라서는 처리하는 방법이나 절차가 다를 수가 있다는 것을 주의하기 바란다.  

 


 

6.   이 책에서 사용되는 관례(conventions)

 

다음에 설명되는 항목들은 책을 읽기 쉽게 하고, 내용을 이해하기 쉽도록 하기 위해서 이 책에서 사용되는 여러 가지 관례들이다.

 

    메뉴 경로는 다음과 같은 형식으로 표시될 것이다.

Application Menu Menu àHelp à Debian Reference

 

    독립된 프로그램 이름은 다음과 같이 표시될 것이다.

TightVNC 프로그램              -- <TightVNC> 프로그램

 

    화면에 있는 object들은 다음과 같이 표시될 것이다.

버튼(button)                       -- [Test Connection] 버튼

(tab)                               -- [Outbound file]

선택버튼(radio button)          -- [Extension] 선택버튼

필드                                  -- [Partner Name] 필드

 

    DB table field 이름은 다음과 같이 표시될 것이다.

table                                 -- table CDHDR

field                                  -- field BUKRS

 

    그림이나 도표는 다음과 같이 표시될 것이다.

그림                                  -- [그림 10.1]

도표                                  -- [ 1.1]

 

    시스템 명령의 주요 syntax를 표시할 때는 다음과 같은 형식으로 표시한다.  

 

command  [option]   [string]

 

    시스템 명령을 실행하는 것을 표시할 때는 다음과 같은 형식으로 표시한다.

 

command  [option]   [string]


 

    시스템 명령에 대한 구체적인 설명은 다음과 같이 구성되어 있다.

 

[명령 형식]

command  [option]   [string]

 

[명령 개요]          

    명령의 주요 기능을 설명한다.

    user 권한    -- 명령 실행에 필요한 권한을 기술한다.                

 

[상세 설명]

    필요한 경우 명령에 대한 상세한 설명을 기술한다.

 

[주요 Option]

option 1

option 1 설명

option 2

option 2 설명

option 3

option 3 설명

 

option을 설명할 때는 전문가가 아닌 일반인의 잘못된 번역으로 인한 오류를 피하기 위해서 가능한 시스템에서 제공하는 영문 설명을 그대로 포함시켰으며, 필요한 경우만 설명을 추가하였다아래는 몇가지 사례이다

 

-w

Don't actually reboot or halt but only write the wtmp record (in the /var/log/wtmp file).

-v, --invert-match

Invert the sense of matching, to select non-matching lines.  (-v is specified by POSIX.)

à pattern과 맞지 않는 자료가 있는 행을 검색한다.

 

[사용 Example]

여기서는 Example의 내용을 설명하고 실제로 시스템에서 테스트하는 과정을 설명한다. 먼저 처음 행에는 실행하는 command를 보여주고 다음 행에서는 처리결과를 보여준다.

 

pi@raspberrypi ~ $ command

command 실행결과

 


 

Leave a Reply