파이썬으로 만드는 라즈베리 파이 사물인터넷(IoT) 프로젝트 - 원격무인 자동차
4.5 (2 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
20 students enrolled

파이썬으로 만드는 라즈베리 파이 사물인터넷(IoT) 프로젝트 - 원격무인 자동차

라즈베리 파이와 파이썬을 이용한 '자율주행차', '홈모니터링' 사물인터넷(IoT) 프로젝트 제작
4.5 (2 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
20 students enrolled
Created by Jonathan Suh
Last updated 5/2019
Korean
Current price: $20.99 Original price: $29.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 2.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • 라스베리파이를 설치하고 조작하면서 기본원리를 이해합니다.
  • 파이썬 프로그램을 이해하고 라스베리파이를 동작해 봅니다.
  • 라스베리파이와 파이썬을 활용하여 자율주행차, 홈모니터링 프로젝트를 완성합니다.
Requirements
  • 사전지식이 필요 없습니다. 강의는 라즈베리 파이와 파이썬을 처음 접하는 초보자 수준에 맞춰 있습니다.
Description

장애물을 알아서 피해가는 자율주행차, 밖에서도 집 안을 돌아다니며 살펴보는 홈모니터링 시스템. 이제는 우리 주변에서 낮설지 않은 이야기가 됐습니다. 특히나 최근 유행처럼 번진 사물인터넷(IoT, Internet of Things)의 열풍으로 작은 장비와 비용으로 기존에는 생각하지 못했던 다양한 서비스가 가능해 지고 있습니다. 라스베리파이는 사물인터넷 프로젝트를 쉽고 간단하게 만들 수 있는 장비입니다. 여기에 파이썬이라는 훌륭한 프로그램 언어를 이용하여 우리가 원하는 프로젝트를 완성할 수 있습니다. 이 강의에서는 라즈베리 파이와 파이썬에 대한 기초지식을 배우고 간단하지만 핵심적인 자율주행차와 원격 홈모니터링 프로젝트를 만드는 실습할 것입니다. 강의에 사용한 자료와 프로그램 소스는 강사가 운영하는 지식 배움의 터인 크리애플 사이트에서 받으실 수 있습니다.

Who this course is for:
  • 프로그램의 기본원리를 이해하고 싶으신 분
  • 라즈베리 파이를 활용하고자 하시는 분
  • 파이썬 프로그램을 배우고자 하시는 분
  • 사물인터넷의 실제 활용 예제를 만들어 보고자 하시는 분
  • 프로그래머가 되기위해 기초를 다지고 싶으신 분
Course content
Expand all 21 lectures 02:36:57
+ 시작하기
1 lecture 05:12

바다로 휴가를 왔습니다. 따가운 햇살 아래 잔잔한 파도가 눈부시군요. 이제야 드디어 바쁜 일상에서 벗어나 나만의 휴식을 가질 수 있겠…. 아니 갑자기 집에 가스를 잠궜는지 걱정이 되네요. 거실에 에어컨은 끄고 왔던가? 방의 창문은 닫았던가? 갑자기 집안 곳곳에 대한 걱정이 앞섭니다. 여러분은 이런 경험이 있으신가요? 이제부터는 걱정하지 마세요. 우리는 이번 강의에서 라즈베리 파이라는 보드와 파이썬 프로그램 언어를 이용하여 자율주행 자동차를 만들고 이를 원격지에서 조정하여 이동하면서 실시간으로 동영상을 모니터링 하는 사물인터넷 장치를 만들것이니까요.

Preview 05:12
+ 라즈베리 파이 둘러보기
5 lectures 34:57

2012년 3월에 처음 출시하자마자 1시간만에 매진이 되고 이듬해 2013년 11월에는 200만대, 2015년 2월에는 500만대 이상이 팔리는 놀라운 기록을 세운 저가형 컴퓨터는 무엇일까요? 바로 우리가 사용할 라즈베리 파이 입니다.

라즈베리 파이가 이렇게 유명해진 이유가 무엇일까요? 저렴한 가격, 뛰어난 가성비, 쉬운 확장성 등 다양한 이유를 찾을 수 있겠지만 저는 라즈베리 파이가 만들어진 순수한 의도에 큰 의미를 둡니다. 이 유명한 보드는 원래 영국의 라즈베리 파이 재단이 가난한 어린이들과 저개발 국가의 학생들이 쉽게 컴퓨터 과학을 배울 수 있도록 만든 초저가의 컴퓨터입니다. 이 후에 유명세를 타면서 원래의 목적이던 교육용 뿐만 아니라 아두이노와 함께 사물 인터넷(IoT) 분야와 개발 보드 대중화의 주역으로 성장하였습니다.

가격을 낮추려 다보니 키보드, 마우스, 모니터나 케이스가 없는 싱글보드 형태의 컴퓨터로 출시되었지만 공식적으로나 비공식적으로 다양한 주변 기기와 부속품이 나오면서 보다 많은 분야에서 활용되고 있습니다.

Preview 07:34

라즈베리 파이에 대해 이해했으니 이제는 이 컴퓨터가 동작하도록 운영체제를 설치하겠습니다. 그럼 라즈베리 파이 재단의 홈페이지(https://www.raspberrypi.org/)를 찾아가 보겠습니다. 먼저 할 일은 설치 이미지를 다운 받는 것입니다. 홈페이지 상단에 있는 ‘Downloads’ 메뉴를 눌러보겠습니다. 먼저 “Raspbian is our official operating system for all models of the Raspberry Pi.”이라는 문장이 눈에 들어오는 군요. 그렇습니다. 우리가 사용할 운영체제는 Raspbian입니다. 기본적으로 Raspbian은 리눅스를 기반으로 라즈베리 파이에 맞게 구성된 운영체제입니다. 아래에 보면 NOOBS, Debian, Ubuntu 등 다른 리눅스 기반 운영체제 이외에도 Window 10 IoT Core 뿐 아니라 필요하면 안드로이드 등 다양한 운영체제도 사용 가능합니다.

리눅스 설치하기
05:16

라즈베리 파이의 리눅스 운영체제를 설치하고 전원을 켜서 초기 화면으로 왔습니다. 그런데 주변을 둘러보니 조그마한 보드 옆에 어울리지 않게 커다란 모니터가 있고 키보드와 마우스도 왠지 거추장 스럽게 느껴집니다.

이번 장에서는 원격터미널 기능을 이용하여 다른 컴퓨터에서 네트워크로 라즈베리 파이에 접속하는 방법을 배울 것입니다. 그러면 보드에 전원만 연결해 둔 상태에서 모니터, 키보드와 마우스 같은 주변기기 없이 우리의 라즈베리 파이를 사용할 수 있을테니까요.

원격터미널 사용하기
08:36

그럼 이번 장에서는 라즈베리 파이의 운영체제인 Raspbian에 대해서 살펴보겠습니다. 앞에서 Raspbian은 기본적으로 리눅스를 기반으로한 운영체제라고 이야기했습니다. 리눅스는 오랜 역사를 가지고 성능이 검증된 유닉스의 개념을 그대로 이어받은 오픈 소스 운영체제입니다. 그렇기 때문에 Raspbian을 포함하여 Debian, Ubuntu 등 다양한 형태의 운영체제의 기반이 되고 있습니다.

VNC를 이용해 원격 데스크톱에 접속한 화면부터 볼까요? 우리가 사용하는 윈도우나 맥과 유사하게 생겼습니다. 왼쪽 위 구석에 있는 라즈베리 파이 모양의 버튼을 누르면 다양한 메뉴가 보입니다. 여기에서 앞으로 배울 파이썬과 같이 원하는 프로그램을 선택하여 실행할 수 있습니다. 그리고 앞에서 원격환경을 구성하면서 실습했던 것과 같이 Raspbian의 설정하는 화면도 여기서 선택할 수 있습니다.

라스비안 둘러보기
07:28

라즈베리 파이의 한쪽에는 나란히 늘어선 핀들이 눈을 끕니다. 이 핀을 GPIO(General Purpose Input/Output)이라고 부르는데 다양한 주변 전자 장비를 연결할 때 유용하게 사용됩니다. 하나 또는 두 개의 주변 장치는 USB포트로도 연결 가능하지만 다양한 전자회로에 직접 연결하여 입력과 출력을 프로그램으로 제어하기 위해서는 GPIO를 사용하는 것이 훨씬 편리합니다.

라즈베리 파이나 아두이노와 같이 핀을 이용한 통신을 제공하는 보드가 많이 사용되면서 전 세계 다양한 제조사들이 GPIO와 호환이 가능한 확장 보드나 센서 또는 전자 부품을 제공하고 있어 다양한 프로젝트에 사용되고 활용되고 있습니다. 우리 프로젝트에도 모터 드라이브, 초음파 센서 등 다양한 주변 장치를 GPIO에 연결하여 제어할 것입니다.

라즈베리 파이 GPIO
06:03
+ 파이썬 둘러보기
5 lectures 38:11

라즈베리 파이의 운영체제인 Raspbian은 기본적으로 리눅스를 기반으로 하고 있다고 설명했습니다. 그러므로 우리는 리눅스에서 사용할 수 있는 파이썬, 자바, C, C++와 같은 다양한 프로그램 언어를 사용할 수 있습니다. 그 중에서 우리는 파이썬이라는 언어를 사용할 것 입니다. 파이썬이 무엇입니까? 파이썬은 그리스 신화에 나오는 아폴로가 죽이는 비단 구렁이입니다. 그런데 왜 이 프로그램 언어는 파이썬이라는 이름을 하고 있을까요? 1991년 귀도 반 로썸(Guido van Rossum)이라는 개발자가 파이썬을 만들 때 당시 유명한 TV코미디 프로의 등장인물의 이름을 따왔다고 합니다. 프로그래머의 해학이 느껴집니다.

파이썬은 객체지향 인터프리터 언어입니다. 인터프리터라 함은 기계어로 변환하는 컴파일 과정을 거치지 않고 프로그램 소스를 바로 실행하는 프로그램 언어입니다. 그러므로 프로그램을 코딩하고 컴파일 과정을 거치지 않고 바로 실행할 수 있습니다. 처음 파이썬을 배우는 분들은 앞으로 배울 프로그램 문법이 어렵게 느껴질 수 있지만 다른 언어에 비해서 무척 간결하고 직관적입니다. 파이썬은 배우기 쉬워서 교육용으로 좋을 뿐만 아니라 파이썬을 기반으로 제작된 다양한 라이브러리가 지원됩니다. 파이썬 라이브러리를 잘 활용하면 라즈베리 파이의 GPIO뿐 아니라 주변장치를 쉽게 제어할 수 있습니다.

Preview 07:11

드디어 파이썬 프로그램에 대해서 본격적으로 배울시간이 됐습니다. 우리는 라즈베리 파이 프로젝트를 위해 파이썬의 핵심적인 내용을 압축하여 배울 예정입니다. 그럼 첫 번째 배울 주제는 무엇일까요? 프로그램 처리의 기본이 되는 데이터와 그 자료형에 대한 내용입니다. 데이터는 다양한 값을 의미하는데 자료형은 무엇인가요? 자바스크립트와 같은 일부 프로그램 언어에서는 데이터의 자료형을 구분없이 사용하기도 하지만 파이썬, 자바, C와 같은 대부분의 고급 언어들이 데이터의 형태에 따라 다른 자료형을 정해서 효율적인 처리를 합니다. 그 내용을 이번 장에서 배울 것입니다.

데이터, 자료형
06:24

이번 장에서는 파이썬 프로그램의 흐름을 제어하는 중요한 개념을 배울 것입니다. 프로그램의 흐름을 제어하는 방법은 크게 두 가지가 있습니다.첫 번째는 조건을 판단하는 것이고 두 번째는 반복을 하는 것입니다. 프로그램의 흐름을 제어하는 조건과 반복문에 대하여 핵심적인 내용들을 살펴보겠습니다.

먼저 조건을 판단하는 조건문을 살펴보지요. 제가 여러 프로그램 언어를 불문하고 조건문을 설명할때 쓰는 문장이 있습니다. 영어 가정법을 배운 분들이라면 한 번 쯤 들어 본 유명한 문장입니다.


If I were a bird, I could fly to you.

흐름처리
08:27

이번 장에서는 파이썬 프로그램의 핵심 개념 하나를 배울 것입니다. 제가 파이썬의 ㅊ,,# 중 하나라고 했지만 사실은 일반적인 프로그램의 공통적인 핵심 개념입니다. 오늘 배울 내용은 함수와 이를 모은 라이브러리입니다.

함수란 무엇일까요? 함수를 설명할 떄 저는 알라딘의 마법의 램프를 생각합니다. 램프의 정령인 지니의 ‘이름’을 불러서 원하는 것을 ‘입력’하면 어떻,게 만드는지는 모르지만 그 결과를 ‘출력’해 주니까요. 이렇게 함수는 외부에서 정해진 형식의 입력을 받아서 내부에서 처리 후, 결과를 출력해 주는 기능 단위입니다. 그래서 함수의 세 가지 요소를 ‘입력’, ‘이름’ 그리고 ‘ 출력’으로 정의하기도 합니다.

함수와 라이브러리
08:25

지금까지 우리는 파이썬이라는 프로그램 언어를 배웠습니다. 그리고 라즈베리 파이에 대해서도 이해했고 특히 GPIO(General Purpose Input/Output)에 대해서도 알아봤습니다. 이번 장에서는 파이썬 프로그램을 이용하여 GPIO포트에 연결된 LED를 제어하는 간단한 실습을 할 것입니다. 간단하기는 하지만 파이썬 프로그램으로 어떻게 GPIO를 제어하는지, PWM을 이용하여 신호의 세기를 조절할 수 있는지를 확인할 수 있는 좋은 기회가 될 것입니다.

GPIO 제어하기
07:44
+ 자율주행 자동차 만들기
5 lectures 33:10

지금까지 라즈베리 파이와 파이썬에 대해서 배웠습니다. 드디어 우리가 계획한 프로젝트를 시작할 시점입니다. 처음 만들 프로젝트는 ‘자율주행 자동차’입니다. 사전을 찾아보니 자율주행 자동차를 인간의 운전없이 자동으로 주행할 수 있는 자동차라고 정의하고 있습니니다. 자율주행 자동차는 레이다, GPS, 카메라, 초음파 등 다양한 센서로 주위의 환경을 인식하여 장애물을 피하고 목적지로 이동합니다. 그렇습니다. 우리는 라즈베리 파이 보드, 모터, 초음파 센서 그리고 파이썬 프로그램을 활용하여 스스로 장애물을 피해서 운전하는 자동차를 만들 것입니다.

Preview 06:51

이제부터 첫번째 프로젝트인 자율주행 자동차의 회로를 구성하겠습니다. 우리는 라즈베리 파이에 두 개의 모터와 초음파 거리센서를 연결하여 장애물이 앞에 있으면 저절로 피해서 움직이는 자동차를 만들것입니다. 그런데 DC(DC: Direct Current)모터를 바로 라즈베리 연결하여 방향과 힘의 세기를 조절할 수는 없습니다. 이것을 가능하게 해주는 것이 모터 드라이브 회로입니다. 우리는 여러 가지 모터 드라이브 중 가장 단순하면서도 교육용으로 많이 사용되는 L293D IC칩을 사용할 것입니다. 이 작지만 유용한 IC칩을 이용하여 모터 두 개의 방향과 힘의 세기를 제어할 것입니다. 모터의 방향은 디지털 신호로 제어하고 힘의 세기는 앞에서 실습한 PWM의 아나로그 값을 이용하여 조정합니다. 그럼 L293D와 모터 그리고 라즈베리 파이 회로 구성을 표시한 Schema Diagram을 볼까요? 복잡하게 표시되어 있지만 몇 가지 핵심적인 사항만 확인하겠습니다. 우선 두 개의 DC모터에 각 두 개씩 Output 선이 연결되어 있습니다. DC모터는 중심축의 코일에 전기를 보내서 주변에 있는 영구 자석의 반발력을 이용하여 회전을 만드는 가장 일반적인 모터입니다. 그러므로 전류의 방향과 세기를 다르게 하면 모터의 회전 방향과 세기도 조정해 줄 수 있습니다.

회로 구성하기
07:07

회로가 완성되었으니 파이썬 프로그램을 하나씩 만들어 보겠습니다. 먼저 초음파 센서인 HC-SR04모듈을 이용하여 거리를 측정하는 프로그램을 만들어 보겠습니다. 제가 프로그램의 순서대로 설명을 하겠습니다. 만약 완성된 예제 파일을 얻으시려면 제가 운영하는 교육 포털인 크리애플 웹사이트(www.creapple.com)을 방문하셔서 회원 가입 후 자료를 다운 받으실 수 있습니다.

초음파 센서로 거리측정
04:49

이번 장에서는 자동주행 자동차의 핵심인 모터 제어 프로그램을 만들겠습니다. 두 개의 모터를 제어하는 L293D IC칩 모터 드라이브 회로구성에 대해서는 이미 공부하였으니 회로구성에 맞게 모터를 제어하는 프로그램 로직을 구현하면 됩니다. 이번에도 프로그램을 시작하면서 GPIO와 time라이브러리를 import합니다.

모터 제어하기
05:04

지금까지 우리는 자율주행 자동차의 회로를 구성하였고, 장애물을 피하기 위해 초음파 센서로 거리를 측정하는 프로그램 그리고 자동차 모터를 제어하는 프로그램을 만들었습니다. 그럼 이제는 이 모든 것을 모아서 자율주행 자동차 프로젝트를 완성하겠습니다.

먼저 자동차 프레임을 만들겠습니다. 우리는 단순하면서 사물인터넷 자동차 프로토타입을 쉽게 만들 수 있는 2 Wheel Drive Robotics Car Chassis Kit을 사용하겠습니다. 이 키트에는 좌우측 두 개의 바퀴를 굴리는 두 개의 DC모터와 앞 바퀴 및 몸체 등 몇 가지 부속품으로 구성되어 있습니다.

자동차 완성하기
09:19
+ 홈 모니터링 만들기
5 lectures 45:27

우리는 첫 번째 과제인 자율주행 자동차를 훌륭하게 완성했습니다. 이제는 자동차를 원격지에서 조정하고 나아가 자동차 앞에 있는 카메라로 실시간 홈 모니터링하는 기능을 구현하고자 합니다. 듣기만 해도 흥미롭지 않습니까? 여행을 가거나 사무실에서 수시로 집을 모니터링하는 로봇을 라즈베리 파이와 파이썬 프로그램을 이용하여 우리가 직접 만들어 본다니 말입니다. 이번 프로젝트도 총 네 개의 장에 걸쳐 한 단계씩 거치면서 기능을 완성할 것 입니다.

Preview 04:15

지금까지 우리는 라즈베리 파이를 이용하여 자동차를 조정하였습니다. 라즈베리 파이가 단독으로 움직이게 프로그램 하였지만 모바일 폰이나 컴퓨터를 이용하여 원격지에서 라즈베리 파이를 조정할 수 있게 하고 싶습니다. 무선 네트워크를 이용하여 라즈베리파이 자동차를 원격지에서 모바일 폰으로 조정한다니 얼마나 재미있겠습니까? 거기에 카메라를 이용하여 원격지에서 CCTV로 영상을 모니터링 할 수 있는 기능도 더 할 겁니다. 이렇게 재미있는 기능을 가능하게 하기 위해서는 라즈베리 파이가 원격지에서 언제나 접속가능하고 통신 가능한 웹서버가 설치되어야 합니다.우리가 프로젝트에서 사용할 웹서버는 파이썬을 기반으로한 플라스크(Flask)하는 제품입니다. 플라스크는 파이썬을 기반으로 한 웹 프레임워크로서 라즈베리 파이를 기반으로 한 오픈소스 소프트웨어입니다. 플라스크의 홈페이지(http://flask.pocco.org)를 방문하면 프로젝트에서 실행 가능한 다양한 예제와 도움말을 확인할 수 있습니다.

플라스크 웹서버
12:03

이제 우리는 플라스크라는 훌륭한 웹서버를 이용해서 무선 네트워크를 이용하여 라즈베리 파이의 GPIO를 제어하는 방법을 알게되었습니다. 그러면 이 기술을 조금만 응용해서 모바일 폰이나 컴퓨터를 이용하여 원격지에서 라즈베리 파이 자동차를 조정 할 수 있습니다. 이번 장에서는 이전에 사용했던 자동차 조정 프로그램과 플라스크로 GPIO를 제어하는 프로그램을 합해서 원하는 라즈베리 파이 자동차 원격조정 프로그램을 만들겠습니다.

원격 자동차 제어하기
08:53

이번 장에서는 라즈베리 파이에 카메라를 설치하여 자동차가 이동하면서 원격지에서도 실시간 동영상을 볼 수 있는 기능을 만들 것입니다. 라즈베리 파이 원격 조종 자동차에 눈을 다는 것이지요. 그럼 먼저 카메라를 연결해야 하는데 라즈베리 파이가 공식적으로 지원해 주는 Picamera를 사용할 것입니다. Picamera는 라즈베리 파드 중간에 있는 카메라 포트에 케이블을 연결하면 됩니다. 그 전에 raspbian의 ‘Raspberry Pi Configuration’에서 카메라가 사용 가능하도록 설정해야 합니다.

비디오 스트리밍
09:44

이제 프로젝트를 완료할 단계에 이르렀습니다. 이제 남은 하나의 작업은 무선인터넷 공유기 범위 밖 원격지에서 라즈베리 파이 자동차를 조정하고 실시간으로 카메라의 동영상을 모니터링 하는 것입니다. 대단한 기능같지만 사실 프로그램의 기능은 이미 우리가 만들었고 단지 무선인터넷 공유기의 설정을 바꿔주면 됩니다. 이를 가능하게 하기 위해서는 두 가지 기술에 대해서 이해와 설정이 필요합니다.

원격 모니터링
10:32