[테크월드=정동희 기자] 라즈베리파이3의 GPIO 를 이용해 LED를 제어할 수도 있다. 우선 라즈베리파이3 보드와 LED모듈 1개, 저항(220Ω) 1개 점퍼선(f-m) 2개가 기본적으로 필요하다. [그림 1]의 전기회로도를느 보도록 하자. [그림 1]에 있는 전기 회로도를 처음 접하면 복잡하게 느껴진다. 

[그림1] 라즈베리파이3 GPIO를 활용한 LED 제어 회로

간단하게 설명하면 좌측의 직사각형은 라즈베리파이3의 GPIO 핀맵을 보여준다. 회로도를 보면 LED 제어는 3.3V와 LED의 +극 부분을 연결하고, GPIO 18번핀과 저항, LED –극과 저항을 각각 연결하는 것을 확인할 수 있다. 그렇다면 LED의 양극은 어떻게 구분할까? 보통의 LED의 연결 부분은 애노드와 캐소드라는 것으로 이뤄져 있다. 애노드는 +극, 캐소드는 –극이다.연결 소자 부분이 긴 부분이 애노드, 즉  +극이다. 바로 회로구성으로 넘어가보도록 하자. (회로 구성은 fritzing 프로그램을 사용하여 구성했다)

회로 구성 방법

회로구성은 먼저 라즈베리파이의 GPIO에서 3.3V(Power)와 LED의 +극을 연결해 준다. 그리고 GPIO 18번핀과 저항(220Ω)을 연결한다. 마지막으로 저항(220Ω)과 LED의 –극을 연결하면 회로구성이 마무리된다.

[그림 2]

소스코드는 C언어로 작성했다. 소스코드는 [그림 2]와 같이 입력한다. 이후 ‘gcc -o test test.c –lwiringPi’ 명령어를 통해 컴파일+실행파일을 만든다. ‘sudo ./test’ 를 통해 해당 소스코드 파일을 실행하면, LED가 켜지고 꺼지는 것을 반복하게 된다. 라즈베리파이3에서 GPIO는 LED 제어뿐 아니라 개발자가 원하는 대로 외부 하드웨어, 인터페이스 등을 직접 연결해 제어할 수 있는 유용한 기능이다. 회로도를 읽을 줄 안다면, 직접 회로도를 구성해볼 수 있다.

소스코드 구성 방법

센서(Sensor)

센서란 직접 피 측정 대상에 접촉하거나 그 가까이서 데이터를 알아내어 필요한 정보를 신호로 전달하는 장치를 총칭해서 센서라고 한다. 센서는 자연에 존재하는 물리적인 양을 측정하기 위한 장치다. 특히 전기전자에서는 측정된 값을 전기신호로 바꿔 주는 장치들을 통틀어 센서라고 할 수 있다.

센서는 크게 능동적 센서와 수동적 센서로 나눌 수 있다. 능동적 센서는 감지를 위해 장치에서 특정 신호를 발생시켜 그 신호를 기반으로 감지를 하는 센서다. 수동적 센서는 센서가 어떠한 지점의 물리 양을 측정하기 위해 능동적으로 환경에 무언가를 만들어 내지 않는 센서다. 간단히 말해 원하는 것을 감지/측정해 신호를 전달하는 장치를 센서(Sensor)라고 한다.

센서 출력 값을 읽는 방법

센서들의 출력은 디지털 출력과 아날로그 출력으로 분류할 수 있다. 
라즈베리파이의 출력은 디지털 출력으로만 동작하기 때문에ADC 를 이용한 방식과 I2C 인터페이스를 사용한 출력 방식을 알아보도록 하자.

■ ADC 칩과 센서의 연결

라즈베리파이는 디지털로 동작하는 장치이기 때문에, 아날로그로 출력되는 센서 값을 디지털로 변환해야 한다. 아날로그 신호를 디지털로 변환하는 장치를 ADC(Analog-to-Digital Converter)라고 부르며, 센서와 라즈베리파이 사이에 연결해 사용한다(아날로그 신호 → 센서 → ADC → 디지털 신호 → 라즈베리파이)

■ I2C 방식 센서의 연결
라즈베리파이처럼 보드에서 효과적으로 데이터 값을 주고 받기 좋은 방식으로 I2C가 있다. I2C 방식의 장점으로는 여러 개의 장치를 작은 수의 핀들에 연결해 사용할 수 있다는 점이다. 이것은 스마트 홈 시스템에 유용하다. I2C 방식의 센서는 센서 내에 I2C 인터페이스 장치가 내장돼 있다. I2C를 이용한 통신에서는 SDA와 SCL로 알려진 두 가지 선이 필요하다(SDA - 데이터를 시간차를 두고 보내기 위한 선, SCL - SDA 선을 이용해 데이터를 보낼 때 신호의 동기화를 위한 선)

센서의 종류

■온도 센서(Temperature sensor)

온도 센서는 기본적인 센서로 주변의 열의 양을 측정하는 가장 흔히 보이는 센서다. 온도 센서에서도 Thermistor, Thermocouples, RTD, 아날로그 출력의 온도센서IC 등 여러 가지 센서 종류가 있다.

■가속도 센서(Accelerometer sensor)

가속도 센서는 시간에 대한 속도의 변화를 측정하는 소자다. 가속도 센서의 동작 원리는 스프링에 연결된 물질이 가속으로 인해 힘을 받아 늘어나는 정도의 위치를 측정해 가속도를 측정한다. 가속도 센서는 작은 IC 패키지 형태로 제공돼 3개의 가속도계를 포함하여 3축을 측정할 수 있다. 스마트폰,스마트워치, 드론 등 정밀한 제어가 필요한 장치는 가속도 센서, 각속도(Gyro자이로)센서 등 여러 가지가 함께 사용된다.

■초음파 센서

초음파 센서는 음파를 이용해 특정 물체와의 거리를 측정하는 센서다.
이 센서는 초음파 펄스를 발사해 음파가 물체에 닿은 후에 반사돼 돌아오는 시간을 측정해 거리를 추정한다. 초음파 센서는 공기압, 습도, 온도, 소리의 속도 등 다양한 요소에 영향을 받는다.

■근거리 장애물 인지 센서/ 모션 센서

근접 인지 센서는 가까운 거리를 측정할 때 사용하는 센서로 광 센서(포토 다이오드)가 있다.
발광부와 수광부로 구성돼 있고 발광부에서 빛을 쏘고 수광부가 되돌아오는 빛의 양으로 거리를 추측하게 된다.

■적외선 센서

PIR(Passive Infrared) 센서는 움직임을 감지하는 센서로 가장 일반적으로 사용되고 있다. 전자기 스팩트럼에 존재하는 적외선은 가시 광선보다 파장이 길다. 사람의 몸에서 발산하는 적외선은 9.4um 의 파장에서 가장 강해, 센서는 이 파장을 이용해 움직임을 감지한다. 대부분의 PIR 센서들은 내부의 PIR센서를 플라스틱 형태의 렌즈가 덮고 있는 구조다.

■가스 센서

가스 센서는 기체 중에 혼재 해 있는 특정의 기체를 감지해 그것을 적당한 전기 신호로 바꾸는 역할을 한다. 가스 센서의 종류는 기체의 빛 흡수율을 이용하는 것과 농도 변화에 따른 전기 화학적 특성 변화를 이용, 센서 표면에서 전기 전도도를 이용하는 것 등이 있다. 하지만 가스 센서의 대부분은 공기 오염 물질 감지 센서를 주로 사용한다. 

■먼지 센서

먼지 센서는 공기 중에 존재하는 미세 먼지(Minute particle)의 양을 측정하는 센서다.
먼지 센서는 크게 광학 먼지 센서, 섬광 먼지 센서, 전기 역학 먼지 센서로 나눌 수 있다.

■회전 센서

회전 센서는 회전의 정도를 측정해 기계나 로봇의 바퀴 같은 회전체의 각도를 측정하는 역할을 한다. DC 모터 같이 모터에 가해진 힘으로 인해 움직임 정도가 불분명할 때 필요한 센서다. 회전의 각도를 센싱하는 방식으로는 포텐셔미터(Potentiometer)와 엔코더(Encoder)방식이 있다. 

■디지털 터치 센서

터치 센서는 일반적으로 터치 스위치로 알려져 있는데, 접촉을 통해 스위치를 동작시키는 형태의 스위치를 말한다. 다양한 장치에 사용되는 터치 센서들은 디스플레이 부분에 모여 있는 형태로 구성돼 있다. 터치 스위치는 커패시티브(Capacitive) 터치 방식과 레지스턴스 터치 방식 크게 두 가지로 나누어진다. 손가락 터치 스위치는 주로 커패시턴스 방식을 사용한다.

소개된 센서 외에도 진동센서, 습도 센서, 광센서, 조도감지 센서 등 정말 많은 종류의 센서들이 있다. 보통 센서는 출력 신호만을 받아 단순히 출력해 주면 된다고 생각한다. 하지만 센서들의 출력 값은 여러 요소에 의해 쉽게 영향을 받는다. 센서 자체의 특성과 회로, 전기전자, 원리 등을 잘 습득하자. 센서 관련 지식이 많아지면 많은 종류의 센서들을 응용해 다양한 곳에 사용할 수 있다.

라즈베리파이3의 노트북 연결과 원격제어

라즈베리파이는 HDMI 케이블을 통해 기존의 모니터나 라즈베리파이용 디스플레이에 연결만 해도 화면이 출력된다. 그러나 노트북이나 PC에는 직접 연결해도 화면이 출력되지 않는다. 이럴 땐 노트북이나 데스크톱 PC로 라즈베리파이에 원격으로 접속해 제어와 코딩을 할 수 있다.

RDP(Remote Desktop Protocol)는 마이크로소프트에서 개발한 GUI 형식으로 원격 접속 프로토콜이다. 이것을 본떠서 만든 것이 오픈진영의XRDP 다. SSH가 쉘 중심의 CUI(Consol User Interface)라고 한다면, XRDP는 GUI(Graphical User Interface)를 위해서 만들어진 프로그램이다. 원격 접속을 위해 아래와 같이 라즈베리파이의 업데이트를 실행한 후, XRDP를 설치한다. 

라즈베리파이 업데이트와 업그레이드
sudo apt-get update       // 라이브러리, 프로그램 등 업데이트

sudo apt-get upgrade      // 업데이트 된 파일들 설치, 업그레이드

XRDP 설치
sudo apt-get install xrdp        // xrdp 설치

이후 윈도우의 원격 제어 설정에서 다른 컴퓨터가 원격으로 제어할 수 있도록 설정한다. 순서는 다음과 같다 (제어판 → 시스템 및 보안 → 시스템 → 원격 설정 → 원격 허용 체크 → 고급 → 체크- Control Panel → System and Security → System → Allow remote access) 설정이 완료되면, 윈도우에서 시작버튼을 클릭 후 mstsc를 검색해 실행해 라즈베리파이의 IP주소를 입력 후 연결을 클릭한다 [그림 3]와 같이 화면이 출력되면 아이디와 패스워드를 입력 후 로그인한다. 

[그림 3] 라즈베리파이 로그인 화면

Putty를 이용한 라즈베리파이 접속

앞서 윈도우 RDP를 이용한 라즈베리파이 접속에 대해 알아봤다. 이번에는 Putty를 이용한 라즈베리파이의 접속을 알아보자.
Putty는 서버가 물리적으로 떨어져 있어도 원격으로 접속해 작업을 지원하는 가상 단말기 프로그램이다.

라즈베리파이 내부 설정(구버전 라즈비안에만 해당)

sudo apt-get update

sudo apt-get upgrade

sudo raspi-config

이같은 명령어를 통해 바이오스 같은 내부 환경 설정으로 들어간다. ‘Advanced Options’ 에 들어가 ‘SSH’ 에서 ‘Enable’를 선택하고 ‘Finish’를 눌러 나온다.
그 후 ‘sudo reboot’ 를 통해 재부팅 한다.

라즈베리파이의 IP 확인

[그림 4] 처럼 ‘ifconfig’를 입력하면 라즈베리파이의 IP를 확인할 수 있다. 라즈베리파이에 유선랜으로 연결했다면 ‘eth0’ 부분의 ‘inet addr’를 확인, ‘Wi-Fi 무선랜으로 연결했으면 ‘wlan0’ 의 ‘inet addr’를 확인하면 된다.
 

[그림 4]

putty 설정과 실행

putty를 실행하면 [그림 5]과 같은 초기화면이 뜬다. 좌측 ‘Session’에 들어가서 ‘Host Name’ 에 좀 전 확인했던 라즈베리파이의 IP 주소를 입력한다.

[그림 5]

그리고 ‘Connection type’ 에 SSH가 제대로 체크됐는지 확인 후 ’Open’을 클릭한다. 클릭하면 [그림 6]와 같이 검정 프로토콜 화면이 출력된다.

[그림 6]

프로토콜 화면에 라즈베리파이의 아이디와 패스워드를 입력하면 된다. 따로 라즈베리파이 아이디와 패스워드를 설정하지 않았다면 기본 id는 ‘pi’
패스워드는 ‘raspberry’로 설정돼 있다. 오류가 발생하지 않았다면 [그림 7]과 같이 실행 화면이 뜬다.

[그림 7]

오류 발생시

‘Network errorr : connection refused’ 오류 발생시 ‘update’와 ‘upgrade’ 명령어를 재입력 해본다. 해결이 되지않을 경우 ‘SSH’ 설치가 안되었을 수도 있으니Sudo apt-getinstall ssh 명령어를 통해 ‘SSH’를 설치한다.
‘Network error : Connection timed out’ 오류 발생시 putty의 좌측 ‘connection’ 부분을 클릭해 ‘seconds between keepalives(o to turn off)’ 오른쪽에 5나 300을 입력한다. 이 설정은 자동종료를 막아주는 설정으로 입력된 시간마다 null 패킷을 보낸다.

 

작성: 전자엔지니어 전문몰 아이씨뱅큐(Icbanq)

이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지