Chapter 1. 라즈베리파이... 4 1.1. 라즈베리파이... 4 1.2. 라즈베리파이의구성... 5 Chapter 2. 프로그래밍을알아보자... 8 2.1. 프로그래밍이란?... 8 2.2. 프로그래밍언어... 8 2.3. 프로그래밍 ( 코딩 ) 을왜배워야할까?... 9 Chapter 3. 전기전자기초... 10 3.1. 전기에대한이해... 10 3.2. 직류전기와교류전기... 10 3.3. 전기의원리... 10 3.4. 전기의성질... 11 3.5. 옴의법칙... 11 3.6. 전압분배법칙... 11 3.7. 아날로그신호와디지털신호... 12 Chapter 4. 개발환경구축... 13 4.1. 운영체제설치... 13 4.2. 하드웨어설치... 25 Chapter 5. 라즈베리파이시작하기... 26 5.1. 설정하기... 26 5.2. 시작하기전에... 26 5.3. GPIO... 36 5.4. 프로그램개발방법... 39 Chapter 6. 원격제어... 41 6.1. SSH 방식... 42 6.2. VNC 방식... 44 1
구성품 2
라즈베리파이케이스 Micro SD Card SD Card Reader HDMI to HDMI 케이블 Micro 5핀 DC Adaptor 방열판 1 1 1 1 1 1 1 3
Chapter 1. 라즈베리파이 라즈베리파이에대해서알아보자. 1.1. 라즈베리파이 1.1.1. 라즈베리파이는? 라즈베리파이는영국의라즈베리파이재단이단순하고저렴하며신용카드정도크기의 PC로아이들에게프로그래밍을가르치려고시작됐습니다. 컴퓨터과학교육의증진을목적으로만든싱글보드컴퓨터입니다. 아단순하고저렴하며신용카드크기의컴퓨터로컴퓨터모니터나 TV에연결하고 USB 키보드와마우스를사용합니다. 인터넷검색및고화질비디오의재생, 스프레드시트, 워드프로세싱, 게임등일반데스크톱 PC에서할수있던것들을단돈몇만원정도에다할수있는게바로라즈베리파이입니다. 아두이노와비교해본다면하나의보드위에 CPU, 메모리, 네트워킹, 입출력을갖춘일종의컴퓨터라는점이아두이노와구별되는점입니다. 1.1.2. 싱글보드컴퓨터싱글보드컴퓨터 (Single-board computer) 는명칭에서알수있듯이단일보드 (PCB) 위에중앙처리장치 (CPU), 그래픽처리장치 (GPU), 메모리, 입출력장치를장착한컴퓨터입니다. 이는집이나회사에서사용되는많이사용하는데스크톱컴퓨터가메인보드를중심으로각종장치를메인보드슬롯에끼우고연결하는형태와구별되며, 여러장의디바이스보드가결합된형태를가지는랩톱컴퓨터와도구별됩니다. 4
약자로 SBC 라고부르는싱글보드컴퓨터는한장의보드로구성되어있기때문에관리가 쉽고성능대비비교적저렴한특징을가진다. SoC 를사용하여메인칩은소형에저전력이 고, 다른컴퓨터에비해비교적작은크기를가집니다. 1.2. 라즈베리파이의구성 1.2.1. 라즈베리파이 3 B+ 의스팩 라즈베리파이 3 B+ 의스펙은다음과같습니다. Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz 1GB LPDDR2 SDRAM 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps) Extended 40-pin GPIO header Full-size HDMI 4 USB 2.0 ports CSI camera port for connecting a Raspberry Pi camera DSI display port for connecting a Raspberry Pi touchscreen display 4-pole stereo output and composite video port Micro SD port for loading your operating system and storing data 5V/2.5A DC power input Power-over-Ethernet (PoE) support (requires separate PoE HAT) 전작인라즈베리파이 3 B 보다 17% 의성능향상이있습니다. 주변부품들이메인 CPU 로원칩화되면서상당히심플해졌습니다. 또한듀얼밴드와이파이와블루투스 4.2버전을지원하며보조 GPIO가 4개더생긴것이눈에띕니다. 다만공식적으로 5V/2.5A의전력을표기한부분을보면기존과다른점입니다. 5
1.2.2. 라즈베리파이필수액세서리 라즈베리파이는기존에데스크톱의본체에해당하는부분으로입출력디바이스는별도 로구비해야합니다. 필수로사용해야하는모니터와같은디스플레이장치와연결을위한 HDMI 케이블, 그리 고하드디스크와같이보조기억장치역할을하는 Micro SD 메모리, 키보드와마우스와 같은입력장치, 그리고전원을공급해주기위한 Micro USB 케이블이필요합니다. 디스플레이장치 모니터또는 TV 라즈베리파이는보드에 HDMI를가지고있어이를통해신호를출력할수있는 LCD 모니터나 TV를준비한다. 또는아날로그컴포넌트 RCA 단자를입력으로하는아날로그모니터를필요합니다. 모니터연결케이블 준비한모니터나 TV 에맞는케이블을준비합니다. 라즈베리파이는 RCA 로도영상출력을 할수있고 HDMI 로출력할수있습니다. 각자의상황에맞게사용하시면됩니다. 입력장치 키보드와마우스 라즈베리파이보드의 USB 포트에연결할수있는키보드와마우스를준비합니다. 준비 한마우스키보드가 PS2 라면 PS2toUSB 컨버터가필요합니다. 저장장치 Micro SD 메모리카드 마이크로 SD 메모리카드에는 OS 가설치되며, 함께제공되지않으므로별도로준비합니 다. 4GB 이상이면사용에지장은없습니다만적어도 8GB 이상을추천드립니다. Micro SD 메모리카드리더 Micro SD 메모리카드에운영체제인라즈비안을설치하기위해필요합니다. 전원케이블라즈베리파이3 B+ 는전원으로전압 5V, 전류 2.5A 이상을공급하도록권장하고있습니다. PC와연결되는 Micro USB-USB 케이블과전원어댑터를사용하여전원을공급받으며, 5V, 2.5A이상의전원을공급하기위한전원장치를필요합니다. 6
1.2.3. 라즈베리파이추가액세서리라즈베리파이는인터넷을사용하거나 USB 포트확을위해, 또는기타목적을위해추가액세서리의사용이가능합니다. 방열판라즈베리파이에는전체적으로전력소모가매우적어냉각장치가필요없긴하지만오버클럭기능을사용할경우, 속도가빨라지는대신발열이심하게될수도있습니다. 이를방지하려면방열판을사용하면효과적입니다. LAN케이블라즈베리파이3는무선블루투스와 WI-FI기능이있긴합니다만이더넷포트를사용해서인터넷기능을부여할수있습니다. 더욱이라즈베리파이3 B+ 버전은전작에서지원하지않던기가이더넷을지원합니다. 케이스라즈베리파이의기판에있는부품들은외부로노출되어있기때문에충격이나수분, 먼지와같은이유로합선이일어나고장이발생할수있으니케이스를사용하여이를보호해주는게좋습니다. 카메라라즈베리파이는 CSI포트와 USB포트를통해카메라를연결하여사진및동영상을촬영할수있습니다. 라즈베리파이전용카메라를연결시켜사용할수있으며, USB포트로는일반적으로많이사용하는웹캠등을연결해서사용할수있습니다. 그외기타 USB 포트가부족하면 USB 포트나 GPIO 핀을통해외부장치와연결할수있으며, 각종센 서, 모터, 출력모듈등을연결하면추가적으로기능을부여할수있습니다. 7
Chapter 2. 프로그래밍을알아보자 2.1. 프로그래밍이란? 프로그래밍은프로그램을만드는과정을말하며프로그램은일의순서또는과정을말합니다. 우선다음의그림을보면서프로그램이무엇인지설명드리겠습니다. 사과를박스포장하는프로그램을간략화한과정입니다. 이프로그램을만들어서로봇에입력한다면사과를박스포장하는로봇이되겠지요. 즉, 우리가스마트폰이나컴퓨터에서사용하는인터넷, 게임등의프로그램은컴퓨터를통해제작하는 컴퓨터프로그램 이며, C언어, 파이썬, 자바, 등의프로그래밍언어를사용하여프로그래밍함으로써프로그램을만드는것입니다. 2.2. 프로그래밍언어프로그래밍언어는사람과디바이스 ( 컴퓨터, 아두이노등 ) 가의사소통을가능하게해주는언어입니다. 우리가키보드로 A 를입력하지만사실컴퓨터는 0 과 1 로이루어진기계어로표현합니다. 0 과 1 만을사용하는컴퓨터에서기계어를사용하여프로그램을 8
제작하기란쉽지않습니다. 그렇기때문에만들어진것이 C, C++, JAVA 등과같은프로그래밍언어입니다. 즉, 프로그래밍언어는사람이사용하는언어를컴퓨터가사용하는기계어로바꿔주는언어입니다. 2.3. 프로그래밍 ( 코딩 ) 을왜배워야할까? 스티브잡스는이렇게말했습니다. 이나라모든사람들은컴퓨터프로그래밍을배워야하는이유는사고하는법을배워야하기때문이다. 기본적으로뭘모르는지모르는것과, 뭘모르는지아는것은하늘과땅만큼의차이를가지고있습니다. 즉, 뭘모르는지모른다면그것은개선의의지가없다는것이지만뭘모르는지아는것은개선을할수있다는것입니다. 그리고컴퓨터를기반으로한응용프로그램활용능력이달라집니다. 만약어떤학교의학생들의반평균과학년평균을구하는경우이것을엑셀과같은프로그램으로순식간에끝낼지, 아니면계산기나암산을통해서일일이사칙연산을하는지는시간적으로나비용적으로나충분히우리에게코딩의중요성을일깨워줍니다. 4차산업혁명에선빅데이터분석, 인공지능, 로봇공학, 사물인터넷, 무인운송수단, 3차원인쇄, 나노기술과같은 6대분야에서새로운기술혁명입니다. 이들분야에선컴퓨터는빼놓을수는없을것입니다. 즉, 프로그래밍을모른다면다른사람들보다뒤처질수밖에없다고생각합니다. 9
Chapter 3. 전기전자기초 3.1. 전기에대한이해전기에너지는화력, 원자력등의발전소에서만들어진후재가공을거쳐가정이나공장등으로공급이됩니다. 집에서흔히볼수있는콘센트나여러가지건전지, 배터리들을통해전기에너지를공급받아사용합니다. 일상에서사용하는전자제품이나부품들은각각사용하는전기의세기나양이정해져있으므로잘못사용한다면제품들이고장이나서화재가나거나감전당할수있습니다. 우리가앞으로사용할라즈베리파이나센서, 모터등의전자부품들또한전기에너지를사용하니올바른방법으로만사용하시기바랍니다. 3.2. 직류전기와교류전기 전기는크게직류전기와교류전기로나뉩니다. 그렇다면직류전기와교류전기는무엇 이다를까요? 다음그림을보고설명하겠습니다. 직류전기는시간에관계없이항상일정하게음극에서양극으로한뱡향으로만흐르는전기입니다. 건전지가이방식에해당합니다. 멀리떨어진곳으로전기를송전하기위해서는전압을고압으로승압시켜야하지만직류는고압으로의승압이어렵기때문에일반가정에보급하기가힘듭니다. 교류전기는전압, 전류극성의방향이함께바뀝니다. 그리고일정시간에몇번바뀌는지에따라서주파수가정해집니다. 우리가가정에서사용하고있는콘센트는 220VAC 입니다. 3.3. 전기의원리전기는원자안의자유전자가외부로이동하여생기는에너지의한형태입니다. 원자는원자핵을기준으로전자와원자핵의인력을덜받는자유전자가회전하고있습니다. 자유전자는원자의외부로벗어날수있으며, 이러한현상을 전기가흐른다 고표현할수있습니다. 10
3.4. 전기의성질전기의성질은전압, 전류, 저항을통해정의할수있으며, 이는물이흐르는성질에비유하여나타낼수있습니다. 전압은수압에비유할수있고저항은물의흐름을방해하는지형지물과같습니다. 또한전류는물의흐름입니다. 3.5. 옴의법칙전기회로에서전지의전압이달라지면같은전구라도밝기가달라집니다. 또전압이같더라도전구의저항에따라밝기가달라집니다. 이는전압은전류가흐르도록도와주고, 저항은전류의흐름을방해하기때문입니다. 이와같은전압, 전류, 저항사이의관계를설명하는법칙이옴의법칙입니다. 흔히 R=V/I으로표현하는데저항은전압에비례하고전류의세기에반비례합니다. 추가로전류는암페어 (A) 라는단위를사용하고, 전압은볼트 (V), 저항은옴 (Ω) 으로표현합니다. 3.6. 전압분배법칙전압분배법칙은전기회로안에다수의저항기가있을경우저항기를지날때마다전압이사용되어전압이떨어지는현상을가지고어떤회로나부품에서필요로하는전압을만들어줄때사용합니다. 즉, 12V의입력전압을가지고 5V의 LED를켜려고하면 LED 는고장이납니다. 그렇기때문에저항기를추가하여 12V의전압을 5V로낮춰 LED를켤수있습니다. 11
3.7. 아날로그신호와디지털신호 전기신호는아날로그신호와디지털신호로나뉘며, 우리가사용하는라즈베리파이는디 지털신호와아날로그신호를사용하여부품들을제어합니다. 12
Chapter 4. 개발환경구축 4.1. 운영체제설치 SD카드에라즈베리파이운영체제 (OS) 를설치해봅시다. 4.1.1. 라즈베리파이의운영체제 4.1.1.1. 운영체제란? 운영체제또는오퍼레이팅시스템 ( 영어 : Operating System, OS) 은시스템하드웨어를관리할뿐아니라응용소프트웨어를실행하기위하여하드웨어추상화플랫폼과공통시스템서비스를제공하는시스템소프트웨어입니다. 최근에는가상화기술의발전에힘입어실제하드웨어가아닌하이퍼바이저위에서실행되기도합니다. 입출력과메모리할당과같은하드웨어기능의경우운영체제는응용프로그램과컴퓨터하드웨어사이의중재역할을합니다. 그러나응용프로그램코드는일반적으로하드웨어에서직접실행됩니다. 운영체제는휴대전화, 게임기에서부터슈퍼컴퓨터, 웹서버에이르기까지컴퓨터를포함하는거의모든장치에서볼수있습니다. 운영체제는한면으로는소비자를, 다른한면으로는프로그램개발자를함께하나의시장으로데려다놓을수있는양면플랫폼입니다. 잘알려진현대의 PC 운영체제에는마이크로소프트윈도우, 맥 OS X, 리눅스가있다. 이밖에 BSD, 유닉스등의 PC용운영체제도존재합니다. 운영체제는실행되는응용프로그램들이메모리와 CPU, 입출력장치등의자원들을사용할수있도록만들어주고, 이들을추상화하여파일시스템등의서비스를제공합니다. 또한멀티태스킹을지원하는경우, 여러개의응용프로그램을실행하고있는동안, 운영체제는이러한모든프로세스들을스케줄링하여마치그들이동시에수행되는것처럼보이는효과를냅니다. 라즈베리파이에는라즈비안, 우분투메이트, 윈도우 10 IoT Core 등의운영체제가있습니 다. 가장많이사용되는운영체제들을추려서알아보겠습니다. 4.1.1.2. 라즈비안데비안리눅스를기반으로라즈베리파이에최적화하여개발된전용운영체제입니다. 라즈베리파이재단에서공식적으로권장및제공하고있는운영체제이며라즈베리파이계열의저성능 ARM CPU에상당히최적화되어있습니다. 본매뉴얼은라즈비안운영체제를 13
사용하여공부합니다. 4.1.1.3. 우분투메이트리눅스기반이며자유오픈소스리눅스배포판입니다. 우분투그놈을기반으로라즈베리파이사용에초점을맞춘이미지입니다. 데스크탑환경을기본사용자인터페이스로사용합니다. 4.1.1.4. 윈도우10 IoT Core 마이크로소프트에서개발제공하는싱글보드컴퓨터용운영체제입니다. 무료로비주얼스튜디오익스프레스를사용해해당기기용으로실질적인개발작업을진행할수있습니다. 4.1.2. 라즈비안다운로드라즈비안을설치하는방법은 2가지가있습니다. 첫번째방법은 NOOBS파일을다운받아서설치하는방법과이미지파일을다운로드해서설치하는방법이있습니다. 두방법에대해설명해드릴테니편한방법으로설치해보세요. https://www.raspberrypi.org/ 에접속해상단에있는 Downloads를클릭합니다. 14
4.1.2.1. 라즈비안 NOOBS 다운로드 NOOBS 를클릭하여 Download ZIP 파일을다운로드합니다. 15
다운로드된압축파일을압축을풀어줍니다. 압축을푼폴더안의파일을모두복사해서 SD 카드에붙여넣기합니다. 16
라즈베리파이에 SD 카드를삽입후실행하면다음과같은화면이나옵니다. 라즈비안을누르고 Install 을누르면운영체제설치가진행됩니다. Warning 창이뜨는데 YES 를눌러진행하면됩니다. 17
4.1.2.2. 라즈비안이미지파일다운로드 18
다운로드된압축파일을압축을풀어줍니다. https://sourceforge.net/projects/win32diskimager/ 에접속해서 Win32Disk Imager 을다운 받아설치해줍니다. 19
20
21
22
설치가완료되면 Win32 Disk Imager 을실행해줍니다. 다음의그림과같이네모안의버튼 을눌러서쓸이미지파일을지정하고, 이미지를쓸장치를설정해줍니다. 23
쓸이미지파일과장치를정하고 Write 를누르면설치가시작됩니다. Write 를누르면다음과같은경고창이나오는데 Yes 를눌러주면됩니다. 24
4.2. 하드웨어설치 Micro SD Card 를라즈베리파이에삽입해주고환경에따라모니터, 키보드, 마우스, LAN 케 이블을연결해줍니다. 마지막으로전원을연결하면라즈베리파이를실행됩니다. 25
Chapter 5. 라즈베리파이시작하기 5.1. 설정하기 5.2. 시작하기전에시작하기전에우선라즈비안을어떻게사용할지알아봅시다. 1. Shell: 좌측상단에보면네모난모양의 Terminal을클릭하면다음과같이터미널창이나옵니다. 이터미널창의한줄한줄을쉘이라고합니다. 2. Sudo: 본래 Super user do 에서유래하였으나후에프로그램의기능이확장되며 Substitute user do 의줄임말로해석하게되었습니다. 3. Apt: Advanced Packaging Tool 의줄임말입니다. 코어라이브러리와함꼐동작하는자유사용자인터페이스로, 데비안 / 리눅스계열배포판에서소프트웨어를설치하고제거하는일을합니다. 4. Nano: 유닉스계열컴퓨팅시스템이나 taudfud 줄인터페이스를사용하는운영환경을위한문서편집기입니다. 5.2.1. 시작하기 라즈비안이부팅되었습니다. 다음그림을보시면 Welcome to Rasspberry Pi 라는응용프 로그램이자동으로시작됩니다. 이프로그램은닫기를눌러서닫아줍니다. 26
5.2.1.1. LAN 연결및 WIFI 연결라즈베리파이에필요한자료들을다운로드받아야하므로인터넷에연결해줍니다. LAN을사용해서연결하면자동으로 IP를받아연결이됩니다. WIFI를사용한다면다음을보고따라해주시면됩니다. 우측상단에있는블루투스모양과스피커모양사이에있는것을클릭하면 Wifi를연결할수있습니다. 연결할와이파이를누르면비밀번호를입력하는창이뜹니다. 비밀번호를입력하고 OK 를누르면와이파이가연결된표시가나옵니다. 27
인터넷이연결됬으니터미널창을열어줍니다. 좌측상단에있는네모난모양의아이콘을누르면터미널이켜집니다. Sudo apt-get update // 어드밴스트패키징툴을업데이트함 Sudo apt-get install fonts-unfonts-core // 확인되지않은폰트를설치함 Sudo apt-get install fcitx-hangul y // 다국어입력기를설치함 Sudo apt-get install git-core //git-core를설치함 Git clone git://git.drogon.net/wiringpi //wiringpi 라이브러리설치함. Reboot // 재부팅 5.2.1.2. 환경설정 설정을위해 Preferences Praspberry Pi Configuration 에들어가줍니다. 28
System 탭에서설정할건없습니다. Localisation 탭으로가줍시다. 29
Localisation 탭에선 Locale, Timezone, Keyboard 를설정합니다. 30
WiFi Country 는설정하지않습니다. 다음은 Interfaces 탭으로가줍니다. 자신에게필요한설정을해주고 OK 를눌러재부팅해줍니다. 본매뉴얼에서는모든항목 을 Enable 하길권합니다. 31
5.2.1.3. 다국어입력기 fcitx 설정 재부팅을하고나면 Fcitx 를시작합니다. 그러면우측상단에키보드모양이생깁니다. 32
키보드모양을눌러서 [ 현재입력기설정 ] 을눌러눕니다. Input Method Configuration 이켜집니다. 영어입력기가등록되어있습니다. 왼쪽아래에있는 + 버튼을눌러줍니다. 설치했던 Hangul 을선택하고 OK 를눌러줍니다. 33
Global Config 탭으로가서입력기전환에있는 Ctrl+Space 눌르고자신이원하는키를한 번입력해줍니다. Ctrl+Space 가 Hangul 로바뀐것이보이네요. 한 / 영키로설정했습니다. 개인의취향이나상황에따라서한 / 영키를쓰거나합니다. 원격제어시한 / 영키가안되 는경우가있으므로보조키로 Ctrl+Space 를입력해둬도좋겠습니다. 34
이러므로한글입력을설정이끝났습니다. 텍스트에디터를열고확인해보세요. 텍스트에디터를열고타이핑해보니잘되네요. 35
5.3. GPIO 5.3.1. GPIO란? 라즈베리파이는일상생활에보편화되어사용되고있는컴퓨터의축소판입니다. 즉, 라즈베리파이를통해영상을보고, 문서작업을하며, 웹서핑을할수있습니다. 더나아가보통컴퓨터에서찾아볼수없던 GPIO 커넥터핀를제공하고있어마이크로컨트롤러와같이입출력신호의제어가가능합니다. GPIO(General-purpose Input Output) 란, 범용으로사용되는입출력포트를말하며, 임베디드시스템의여러가지기능을위한주변장치및소자들을동작시키고그것들이원하는방식으로인터페이스를하기위해적절한신호를전달하며, 설계자가원하는동작을수행하기위하여포트를입력및출력으로구성합니다. 간단히예를들면, LED ON/OFF, FND 제어, Buzzer 소리를켜기위해서해당소자에 0 혹은, 1의신호를보내주는것이고, TEXT-LCD에글자를출력하기위한병렬신호를보내주는것입니다. 라즈베리파이보드에는 40개의핀을쉽게찾아볼수있습니다. 이핀들이외부와인터페이스가가능하도록구성되며, 이핀들은 GPIO 기능이외에도다른장비와의통신을위한 SPI, I2C, UART 등기능을가지고있어다양한목적으로활용이가능합니다. 이핀들의구성은다음과같습니다. 36
5.3.2. wiringpi 라이브러리라즈베리파이의 GPIO를제어하기위해서사용되는언어는 C, C++, Java, Python 등매우다양하며, 각언어에따라사용자들이라이브러리를작성하여공유하고있다. 그중에본교재에서는 C를사용하여 GPIO를제어하기위하여 wiringpi를사용한다. wiringpi는 GPIO 라이브러리이며, 라즈베리파이안에서사용되는 BCM2835와 BCM 2836 을위한 C로작성되어있다. 이것은 GNU LGPLv3 라이선스아래에서릴리즈되고, C와 C++, 그리고많은다른언어를사용할수있다. 이는아두이노의 wiring 시스템을사용해온사람들에게매우친근하게디자인되어있다. 5.3.3. wiringpi 라이브러리다운로드다음명령어를쉘에차례로입력해줍니다. Sudo apt-get install git-core Git clone git://git.drogon.net/wiringpi 입력을해서설치가다되었다면다음단계로넘어갑니다. cd wiringpi git pull origin./build 이러므로 wiringpi를사용하기위한준비가모두끝났습니다. 라이브러리가제대로설치되었는지확인하기위해서다음의명령어를입력해봅니다. Gpio -v 37
Raspberry Pi Details 부분을보면라즈베리파이상에표시된모델과 Revision이일치되는것을확인가능하며, 모델과버전에따라다른 WiringPi가필요하다. WiringPi가설치되면다음명령어를사용해라즈베리파이의핀맵을확인할수있다. 앞으로프로그램을작성시, 종종 GPIO 핀번호를확인하므로명령어를숙지하는것이좋다. Gpio readall 38
5.4. 프로그램개발방법 5.4.1. 프로그램 Nano에디터와 Gcc를이용하여컴파일해봅시다. 쉘에다음명령을입력합니다. nano Helloworld.c 화면에타이핑이가능한곳이나옵니다여기에다음의소스를입력하고 Ctrl+X 를누르고 Y를누르고 Enter를쳐서나옵니다. 5.4.1.1. 소스코드작성 1 #include<stdio.h> 2 int main(void) 3 { 4 printf("hello world\n"); 5 return 0; 6 } 저장후쉘에다음명령어를입력합니다. gcc o HelloWorld Helloworld.c./HelloWorld 문제없이컴파일이된다면프로그램이돌아가면서 Hello World를화면에출력합니다. 39
5.4.1.2. Nano 에디터 nano 에디터는다른텍스트에디터들에비해가볍고사용하기쉽다, 다만, 다양한기능을지원하지않는다. nano 에디터는문서의내용을구분하기위해색상등을기본적으로제공한다. 파일을편집하려면 nano 에디터를실행할때 nano [ 파일명 ] 을입력하여불러올파일을지정하면된다. 파일을생성하고싶을때에도같은방식으로명령을입력하면, 해당파일이없는경우, 입력한파일명으로파일이생성된다. 이렇게생성하고불러온파일에프로그램을하고, Ctrl+X 키를누르면에디터를종료할수있다. 내용이편집된경우에는변경된내용의저장여부를묻는데 Yes, No 의첫알파벳을입력하여결정한다. 이밖에도다양한기능을제공하는데추가적인기능은 Ctrl+G 키를눌러도움말을살펴본다. 5.4.1.3. GNU 컴파일러모음 CNU C Compiler 였지만기능이추가되면서 GNU 컴파일러모음 (GNU Compiler Collection, 줄여서 GCC) 가되었습니다. GUN프로젝트의일환으로개발되어널리쓰이고있는컴파일러입니다. 작성된소스코드는빌드과정을거쳐프로그램을실행할수있는실행파일의형태를가진다. 빌드과정은크게컴파일 (Compile) 과링크 (Link) 로나뉜다. 빌드중에소스코드의문법에오류가있는경우, 경고나에러를발생하고중지한다. 라즈비안의기본컴파일러인 GCC를사용하며, 빌드명령은다음과같다. gcc o [ 목적파일 ] [ 소스파일 ] [ 라이브러리 ] gcc o HelloWorld helloworld.c lwiringpi gcc의옵션으로 -o 를사용하였으며, 이는실행파일에대한이름을부여한다. 여기서는 helloworld 라는이름을부여하였다. 이밖에도 gcc 컴파일러는다양한옵션을가지고있는데자세한내용은쉘 (Command Line) 에 gcc --help" 를입력하여확인할수있다. 40
Chapter 6. 원격제어 라즈베리파이의원격에접속하게되면기존에사용하던윈도우컴퓨터에서라즈베리파이를사용할수있게됩니다. 그때의이점은키보드와마우스, 모니터등의추가구성을줄일수있는데있습니다. 본매뉴얼에서는 SSH와 VNC를이용한원격접속제어방법을소개합니다. Raspberry Pi Configuration에들어가줍니다. 41
SSH 와 VNC 를 Enable 시켜주고재부팅을해줌으로써라즈베이파이에서의준비는완료됬 습니다. 6.1. SSH 방식 SSH(Secure Shell) 은라즈베리파이의원격에접속하는흔한방법입니다. 라즈베리파이의모든명령어를사용할수있을뿐만아니라, 통신을암호화하기때문에보안이뛰어나다는장점이있지만, 터미널창 ( 콘솔환경 ) 만사용할수있다는단점이있습니다. https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 에접속하여 putty를다운로드받습니다. 여기가아닌다른곳에서다운로드해도됩니다. 다운로드한 putty를실행합니다. Host Name에라즈베리파이의 IP주소를넣고 Open을눌러줍니다. 그러면 login as: 라고입력창이나옵니다. 여기는라즈베리파이의아이디와비밀번호를입력해줍니다. 아이디와비밀번호를바뀐적이없다면아이디는 pi이고비밀번호는 raspberry입니다. 42
43
6.2. VNC 방식 VNC(Virtual Network Computing, 가상네트워크컴퓨팅 ) 는컴퓨터환경에서 RFB 프로토콜을이용하여원격으로다른컴퓨터를제어하는그래픽데스크톱공유시스템입니다. 자판과마우스이벤트를한컴퓨터에서다른컴퓨터로전송시켜서네트워크를거쳐그래픽화면을갱신하는방식을제공합니다. SSH를이용한것보다속도가느린점이있지만그래픽을활용할수있다는장점이있습니다. VNC를통한원격연결은 VNC뷰어라고불리는프로그램을 PC 또는스마트폰에설치해야합니다. VNC프로그램간에호환이되기때문에어떤 VNC클라이언트프로그램을쓰던상관이없습니다. 본매뉴얼은 https://www.realvnc.com/en/connect/download/viewer/ 에서받은 VNC Viewer을사용합니다. 설치가완료되면 VNC 뷰어를실행해봅니다. 44
상단의입력란에라즈베리파이의 IP 를넣어줍니다. 그러면다음과같은창이뜹니다. 유저네임과패스워드를입력해줍니다. 아이디와비밀번호를바뀐적이없다면아이디는 pi 이고비밀번호는 raspberry 입니다. 다음과같이연결된모습입니다. 45