이보고서는 년도정부 교육부 의재원으로 한국과학창의재단의지원을받아수행된성과물임

Similar documents


Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

ISP and CodeVisionAVR C Compiler.hwp

Windows 8에서 BioStar 1 설치하기

벤처연구사업(전동휠체어) 평가

Install stm32cubemx and st-link utility

1

Microsoft PowerPoint - chap01-C언어개요.pptx

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

PowerPoint 프레젠테이션

System Recovery 사용자 매뉴얼

고급 프로그래밍 설계

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

PowerPoint Template

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

MF5900 Series MF Driver Installation Guide

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

MF Driver Installation Guide

<3635B1E8C1F8C7D02E485750>

PowerPoint 프레젠테이션

SBR-100S User Manual

Microsoft Word - Armjtag_문서1.doc

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

Microsoft PowerPoint - Java7.pptx

Mango-E-Toi Board Developer Manual

Studuino소프트웨어 설치

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

IRISCard Anywhere 5

01장

슬라이드 1

untitled

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

윈도우즈프로그래밍(1)

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

Microsoft Word - PLC제어응용-2차시.doc

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

RVC Robot Vaccum Cleaner

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

TOOLS Software Installation Guide

Microsoft Word - codevision사용법_pdf버전.docx

슬라이드 1

Endpoint Protector - Active Directory Deployment Guide

Web Scraper in 30 Minutes 강철

NTD36HD Manual

CODESYS 런타임 설치과정

Microsoft Word - src.doc

슬라이드 1

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

PowerPoint 프레젠테이션

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

온라인등록용 메뉴얼

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

Keil Flexlm 라이선스 설명서

슬라이드 1

목 차

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

Cubase AI installation guide

슬라이드 1

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Report Designer V3.0 사용설명서 2장

Title Here

PowerPoint Template

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

4S 1차년도 평가 발표자료

라즈베리파이 프로그래밍_130912(최종).indd

JDK이클립스

tiawPlot ac 사용방법

Microsoft PowerPoint - e pptx

WS12. Security

Packstack 을이용한 Openstack 설치

슬라이드 1

슬라이드 1

ICAS CADWorx SPLM License 평가판설치가이드

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

PowerPoint 프레젠테이션

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

슬라이드 1

1

View Licenses and Services (customer)

OnTuneV3_Manager_Install

PowerPoint 프레젠테이션

vRealize Automation용 VMware Remote Console - VMware

Microsoft PowerPoint - gnu-w06-python_[실습]_day13-turtle-shape

Microsoft Word _mentor_conf_output5.docx

Transcription:

이보고서는 년도정부 교육부 의재원으로 한국과학창의재단의지원을받아수행된성과물임

목차 덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 1. 자율주행차와미래사회 19 2. 싱글보드컴퓨터로자율주행차제작 23 3. 파이썬프로그래밍기초 36 4. 자율주행알고리즘과프로그래밍 58 5. 컴퓨터공학과진학과진로 69

덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램교사용안내자료 1. 덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 STEAM 프로그램개요 프로그램명 SBC(Single-Board Computer) 로자율주행자동차만들기 학습주제학습목표교육대상수업시수관련교과 자율주행차가가져올우리삶의변화를생각해보고자율주행차의개념, 작동원리와기술등을알아본다. 그리고싱글보드컴퓨터와센서를이용하여자율주행차제작하고창의적인자율주행알고리즘을생각해보며최신과학기술에대한이해도를고취시킨다. 자율주행차를이용하여자율주행원리를이해하고, 효율적인자율주행알고리즘아이디어를도출한다. 고등학교 1~2학년 4차시물리 / 기술 / 미술 STEAM 단계요소 구분 상황제시 학습준거 Ÿ 다가올 4차산업혁명이일상생활에미칠영향은무엇일까? Ÿ 자율주행자동차가보편화되면인간은운전에서해방될까? Ÿ 만약자율주행차가있다면나의등굣길은어떻게바뀔까? 창의적설계 감성적체험 Ÿ Ÿ Ÿ Ÿ Ÿ 자율주행자동차에필요한기능구상하기자율주행알고리즘설계하기주어진센서모듈을활용한자동차디자인하기자신이만든자동차로자율주행테스트하기미래의자율주행자동차가해결해야할문제점제안하기

STEAM 과목요소 구분 학습준거 S Ÿ 전기, 전자회로의작동원리를이해하고자동차제작에활용한다. T/E Ÿ 비글본블랙보드로자율주행알고리즘을적용한자동차를제작한다. A Ÿ 벽과물체와의충돌을피해서움직이는자동차디자인을설계한다. M Ÿ 초음파거리센서로자동차와주변물체의거리와자동차모터회전에 따른회전시간을계산한다. 제작의도 비글본블랙, 라즈베리파이등 SBC(Single-Board Computer) 와모터를이용하여자동차를하드웨어를제작하고, 거리, 빛센서등으로데이터를수집 분석하여최적의경로를찾아내는알고리즘을소프트웨어로구현 < 초음파거리센서측정실험 >

2. 차시별총괄계획표 주제 SBC(Single-Board Computer) 로자율주행자동차만들기 차시교육주제교수 학습활동관련교과 상황제시 미래의자동차는어떤모습일까? 10 분 인공지능을이용하여스스로움직이는자율주행자동차소개 1 자율주행차와 실생활의변화 창의적설계 25분 하드웨어와소프트웨어융합관계알아보기 인공지능과자율주행의관계알아보기 과학 기술 예술 감성적체험 10분 내가생각하는미래의자동차발표하기 자율주행 상황제시 10분 자율주행에필요한기술은무엇이있을까? 2 알고리즘및센서데이터처리 ( 소프트웨어 창의적설계 25분 Python 기초프로그래밍 Python으로센서감지프로그래밍 Python으로자동차주행프로그래밍 과학기술공학예술 프로그래밍 ) 감성적체험 10분 SSH 원격접속으로자동차제어하기 충돌없는자율주행확인하기 3 자동차차체와전자회로구성 ( 하드웨어설계, 제작 ) 상황제시 10분창의적설계 25분감성적체험 10분 안전한자동차를제작하는데필요한기능은무엇일까? 자동차디자인설계와제작하기 센서와모터작동시키기 자동차디자인설계과정발표 과학 공학 수학 상황제시 10분 우리생활과밀접한컴퓨터공학소개 4 직업진로탐색 ( 전자공학 ) 창의적설계 25분 컴퓨터공학세부전공분야체험 과학 공학 감성적체험 10분 컴퓨터공학전공관련직업탐색 3

1 차시인공지능과자율주행자동차의이해 학습흐름문제제시및제작활동학습자료및도구 상황제시자동차와우리생활 (10분) 미래의자동차는어떤모습일까? Google에서개발한자율주행자동차영상을보며자율주행자동차에대한호기심을일으킨다. - 자율주행자동차란? - 인공지능과자동차의상관관계를알아보자. PPT, 동영상, 사진 학생용워크북 창의적설계내게필요한자동차의기능은무엇일까? (25분) 내가생각하는미래의자율주행자동차를생각해보자. 내가필요한자동차에는어떤설계들이들어있으면좋을까? - 자동차의 HW적변화는무엇이필요한가요? - SW적변화는무엇이필요한가요? - 나만을위한자동차가개발된다면나의생활은어떻게변할까요? PPT, 동영상, 사진 학생용워크북 PPT, 동영상, 사진 학생용워크북 감성적체험자동차와우리생활 (10분) 자율주행자동차가가져올일상생활의변화는무엇이있을까? 나만의인공지능자율주행자동차에대해서발표한다. - 미래의자동차의 HW적변화와 SW적변화를발표한다. - 10년뒤자율주행차보급으로바뀐일상생활에대해서발표한다. 4

2 차시자율주행알고리즘및센서데이터처리 학습흐름문제제시및제작활동학습자료및도구 상황제시비글본블랙과프로그래밍준비 (10분) 자율주행에필요한기술은무엇이있을까? 비글본블랙에대하여설명하며비글본블랙에대한호기심을일으킨다. - 비글본블랙 이란? - 비글본블랙 을이용한여러사용예시를설명한다. 싱글보드컴퓨터비글본블랙은무엇일까? 싱글보드컴퓨터는무엇일까? - 비글본블랙에대한호기심을일으킨다. - 비글본블랙 이란? - 비글본블랙 을이용한여러사용예시를설명한다 - 비글본블랙설치파일및컴퓨터와연결 PPT, 동영상, 사진 학생용워크북 ü 비글본블랙과 USB포트배부 ü 비글본블랙의역할설명 ü 실습에필요한 3가지파일의역할설명과컴퓨터사양에맞춰파일설치 w Bone_D64.exe w putty,exe w python_3.x.x.exe 창의적설계 python 프로그램을이용한비글본블랙제어하기 (25분) 프로그래밍이란무엇일까? 비글본블랙을동작시키기위한언어로 python 을소개한다. python idle 을실행시킨후화면구성과실행방법을설명한다. - 프로그래밍의기본구조 ( 순차, 반복, 선택 ) 를거북이예제를통하여이해해봅시다. - 거북이의움직임을다양하게변화시켜볼까요? - Python 프로그램실습중에가장빈번에서발생된오류는무엇이었나요? 학생용워크북 ü 다양한거북이예제를통하여프로그래밍의기본구조를익혀본다 ü if(), for(), while() 의에따라프로그램의수행결과가어떻게나오는지차이를설명한다. ü python 파일생성, 저장, 실행방법을설명한다. 감성적체험비글본블랙을동작시키기 (10분) SSH 원격접속으로 SBC제어하기 연결된비글본블랙에신호를보내어보자. - 비글본블랙에프로그래밍을하기위하여필요한기본 Linux 명령어에대하여설명한다. - LED 램프의신호는어떻게변화하는가? - 신호를받는 LED 램프는모두몇개인가요? - 비글본블랙을종료하기위한명령어는무엇인가요? 학생용워크북 ü 연결된비글본블랙이제대로작동하는지 LED 램프에신호를보내는코드를작성해본다. 5

3 차시자동차차체와전자회로구성 학습흐름문제제시및제작활동학습자료및도구 상황제시자동차설계하기 (10분) 안전한자동차를제작하는데필요한기능은무엇일까? 자동차의기본구조와설계에대해알아본다. - 어떤설계가안전성이높을까? - 장애물과충돌을피하기쉬운자동차디자인을생각해보자. - 자율주행자동차에필요한부품은무엇이있을까? - 자율주행차앞에장애물이있으면어떤방식으로주행을할까? PPT, 동영상, 사진 학생용워크북 창의적설계센서에대해알아보고자동차조립하기 센터와모터를이용하여자동차를만들어보자 자동차제작에필요한센서를소개한다. 센서와각부품의동작원리를알아본다. - 초음파센서는어떤동작을감지하나요? - 모터드라이버의역할은무엇인가요? 자동차를차체를조립한다. 학생용워크북 (25 분 ) 감성적체험자율주행자동차를동작시키고프로그램수정 (10분) 주행테스트를해보고프로그램을수정보완해보자. 장애물과도로를인식해움직이는프로그램을만들어보고주행태스트를해보자. - 자동차가장애물을잘피하나요? - 어떤문제가있나요? - 센서의값과자동차의상관관계는무엇이있나요? - 수정한프로그램은어떤값을바꿨나요? 학생용워크북 6

4 차시직업진로탐색 학습흐름문제제시및제작활동학습자료및도구 상황제시 (10 분 ) 50여년이래컴퓨터공학의발전이우리의삶에어떠한영향을미쳤을까? - MIT 컴퓨터공학이세상에기여한 10가지 기사자료를제시한다. - IT발전으로인하여 50년후의미래사회의모습은어떻게변화할지상상해본다. - 내가프로그램개발자라면무엇을개발하고싶은지상상하여본다. PPT, 동영상 학생용워크북 창의적설계컴퓨터공학에관련된진로에는무엇이있을까? Ÿ 미래에는어떠한직업이있을까? 내가컴퓨터공학을전공한다면미래에어떠한직업을가지게될까? - 컴퓨터관련전공에대하여살펴본다. - 대학과사회, 기업에전반에대하여컴퓨터공학에관련된다양한직업군을소개한다. - 위의자료에서관심이가는직업은무엇인지. 그와관련된직업을가지기위해서어떤준비를해야할지상상해본다. PPT 학생용워크북 (30 분 ) 감성적체험나의미래의직업과실현가능한목표세우기 Ÿ 나에게어울리는직업은무엇이있을까? Ÿ 꿈꾸는직업에다가가기위해서내가할수있는실현가능한목표는무엇일까? 학생용워크북 (10 분 ) 7

3. 평가계획 평가영역평가기준평가방법 지식과내용 Ÿ 자율주행차의작동원리를이해할수있는가? Ÿ 레이더 (Radar), 라이더 (Lidar), 카메라 (Camera), 위성위치확인시스템 (GPS) 원리를이해할수있는가? Ÿ 컴퓨터공학이우리사회발전에어떠한영향을미치고있는지이해하는가? 관찰법 기능및기술 Ÿ Python 프로그램을활용할수있는가? Ÿ Python 프로그램코드를다양하게응용하여다양한창작물의결과를낼수있는가? Ÿ 거리센서가자동차와물체의거리를측정하는프로그램코드를이해할수있는가? Ÿ 실험값의오차를줄이기위한실험방법을고안할수있는가? 관찰법 결과물 창의적설계 Ÿ 탐구활동에흥미와호기심을가지고적극적으로참여하는가? Ÿ 측정한거리값을활용하여자율주행차가충돌없이주행할수있는알고리즘을제시했는가? Ÿ 비글본블랙외에라즈베리파이, 아두이노등다른개발보드를활용할수있는방법이있는가? 관찰법 감성적체험 Ÿ 팀활동시서로의역할과생각을공유하고적극적으로실험활동에참여하는가? Ÿ 주행테스트시팀원끼리서로배려하고협력하며활동하는가? 관찰법 자기평가 동료평가 의사소통 Ÿ 자신이주행테스트한결과에대하여자신있게설명할수있는가? Ÿ 주행테스트에실패하였다면그원인과발생이유를과학적으로타당하게설명할수있는가? 관찰법 동료평가 8

4.. 수업전기본준비사항 1. 기본프로그램소개및설치 1.1 비글본블랙소개비글본블랙은미국의비글보드재단이만든제품으로아두이노, 라즈베리파이등과함께오픈소스하드웨어를대표하는제품이다. 해외오픈소스하드웨어커뮤니티를통해비글본블랙을이용한프로젝트들이많이생겨나고있다. 그러나국내에서는비글본블랙에대한인지도가해외만큼높지않다. 아두이노와라즈베리파이는커뮤니티와블로그등이활발하게이뤄지고있는반면비글본블랙은최근에들어서야관심을받고있다. 2013년 4월, 미국의비글보드재단이비글보드의최신모델인비글본블랙이라는제품을출시했다. 비글본블랙은 45달러라는저렴한가격에놀라운성능을가지고있다. ARMv7 아키텍처의 1GHz AM335x ARM 코어텍스 (Cortex) A8 프로세서를탑재했고, 46핀이있는헤더가 2개있어서총연결가능한핀이 92개나존재한다. 뿐만아니라 GPIO, SPI, I2C 등다양한인터페이스를지원한다. 또한, 2GB 내장스토리지와옹스트롬OS, 클라우드9 IDE가미리설치돼있어제품수령후곧바로개발이가능하다. 비글본블랙은 Node.js 개발이가능하고, 내장라이브러리인 BoneScript를이용해자바스크립트로센서와액추에이터를제어할수있다. 기존의보드형 PC는성능에대한만족도가낮았지만, 비글본블랙은저렴한가격에도만족스런성능을보여준다. 예로 3D 프린터를개발하는경우리소스가많이드는작업이어서 3D 프린터관련작업만수행하는컴퓨터를따로두어야만했다. 하지만비글본블랙은프로세서와램의성능이충분하기때문에비글본블랙 1개만으로도 3D 프린터를충분히제어할수있다. 9

[ 참고자료 ] DBguide.net http://m.dbguide.net/about.db?cmd=view&boardconfiguid=19&boarduid =177510 비글본블랙홈페이지 https://beagleboard.org/black 비글본블랙응용프로젝트 1 Open ROV( 무인수중탐사로봇 ) Open ROV는비글본블랙으로만든오픈소스무인수중탐사로봇프로젝트이다. 무선리모컨조종이가능하고카메라를통해심해속영상을실시간으로확인할수있다. 또한어두운심해를비추기위해조명을제어할수도있다. Open ROV (http://openrov.com) 2 BuddyBot BuddyBot 은 Swift 언어로프로그래밍한첫번째무인자동차프로젝트이다. 초음파거리센서를활용하여 장애물을피해서자율주행하며버튼, LED 등을 GPIO 로제어도록프로그래밍한오픈소스프로젝트이다. BuddyBot (https://github.com/hoffmanjon/swiftybones_buddybot) 비글본블랙설치 1 비글본블랙홈페이지 (http://beagleboard.org/static/drivers/) 또는덕성여자대학교와이즈센터카페 (http://cafe.naver.com/dswise/36) 에서자신의컴퓨터종류 (windows or Mac or Linux) 와사양 (32bit or 64bit) 에따라선택하여내려받습니다. ( 수업전교수및학생들의실습컴퓨터사양을미리확인합니다.) 10

운영체제 Windows(64-bit) Widnows(32-bit) BONE_D64.exe BONE_DRV.exe Drivers Mac OSX Linux Network : RNIDS/HoRNDIS.pkg Serial : FTDI/EnergiaFTDIDrivers2.2.18.pkg FTDI/mkudevrule.sh 2 동봉된비글본블랙전용 USB 를통해비글본블랙과컴퓨터를연결합니다. PWR LED 는항샹켜져서표 시되며, 10 초이내에, 다른 LED 도깜박이는것을볼수있습니다. 3 미리다운받은드라이브를더블클릭하여설치합니다. 설치도중아래와같은경고화면이나오더라도 이드 라이버소프트웨어를설치합니다.(I) 를선택합니다. ( 마지막완료화면이나올때까지반복합니다 ) 4 설치마법사완료화면이나오면드라이브설치가완료됩니다. 11

1.2 파이썬 (python) 소개파이썬 (Python) 은 1990년암스테르담의귀도반로섬 (Guido Van Rossum) 이개발한인터프리터언어이다. 귀도는파이썬이라는이름을자신이좋아하는코미디쇼인 " 몬티파이썬의날아다니는서커스 (Monty Python s Flying Circus)" 에서따왔다고한다. 파이썬의사전적인의미는고대신화에나오는파르나소스산의동굴에살던큰뱀을뜻하며, 아폴로신이델파이에서파이썬을퇴치했다는이야기가전해지고있다. 대부분의파이썬책표지와아이콘이뱀모양으로그려져있는이유가여기에있다. 파이썬은전세계적으로가장많이사용하는프로그래밍언어중하나이며, 공동작업과유지보수가매우 쉽고편하다. 국내외로많은프로그래머가파이썬으로다양한프로젝트를진행하고있으며, 깃허브 (http://github.com/) 에서여러가지프로젝트를찾아볼수있다. 파이썬특징이세상에프로그래밍언어는 C, C++, Java, Ruby 등다양하다. 각언어마다장단점이있고사용목적에따라선택해서사용해야한다. 언어마다문법과규칙이정해져있으며유사하지만조금씩다르다. 파이썬은문법이쉬워빠르게배우기쉽고활용하기편하다. 프로그래밍경험이있는사람이라면파이썬사용법을단기간에배울수있다. 또한, 파이썬은오픈소스라서무료로사용할수있다. 매우복잡하고반복연산이많은시스템프로그램을제외하면시스템유틸리티, GUI 프로그래밍, 웹프로그래밍등다양한분야에적용할수있는언어이다. [ 참고자료 ] 점프투파이썬 https://wikidocs.net/4307 파이썬홈페이지 (https://www.python.org/downloads/) 파이썬설치 1 파이썬홈페이지 (https://www.python.org/downloads/) 에서 Download Python 3.x.x 를내려받습 니다. 또는, http://cafe.naver.com/dswise/36 에서다운로드. 2 python-3.6.2.exe 파일을실행하면파이썬설치마법사의 Add Python 3.6 to PATH 를체크하고 12

Install Now 를눌러서설치를시작합니다. 3 설치화면 4 프로그램이모두설치되면 Setup was successful 이나타난다. Close 버튼을눌러설치마법사창을닫 습니다. 5 자주사용하는실행파일명은 IDLE(Python 3.6 32-bit 또는 64-bit) 입니다. 클릭해서파이썬 IDLE 를 실행합니다. 13

6 IDLE 프로그램이화면에나타납니다. 테스트로 IDLE 화면에 print( Hello Python ) 을입력하고 Enter 를누릅니다. 1.3 PUTTY 소개 PUTTY는네트워크를통해원격으로컴퓨터를제어하기위한 SSH(secure shell), Telnet, Rlogin 프로토콜을지원하는프로그램입니다. 진자운동장치를이용한실험을측정하기위하여 PUTTY를이용하여리눅스서버에접속하여파이선프로그래밍을작성, 실행합니다. Putty 설치 1 putty 홈페이지 (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 또는덕성여자대학교와이즈센터카페 (http://cafe.naver.com/dswise/36) 에서자신의컴퓨터사양 (32bit or 64bit) 에따라선택하여내려받습니다. 14

2 putty.exe 파일을더블클릭하여설치합니다. 설치가완료되면 putty 에접속합니다. IP : 192.168.7.2 연결된비글본블랙의고정된 IP주소입니다. 미리 Session을지정해놓으면여러번접속시에빠르고손쉽게접속할수있습니다. Session설정방법을설명해주세요 3 서버에접속되면로그인하기위해아이디와패스워드를입력합니다. ID : root Password : root 리눅스에서는 Password 입력시내용이보이지않습니다. 학생들이당황할수있으니미리공지하는것이좋습니다. [ 접속성공화면 ] 15

5. 비글본블랙제어를위한리눅스명령어와파이썬테스트코드실행 python 프로그래밍과비글본블랙연결 비글본블랙에 python 프로그램을구현하여컴퓨터로직에대한이해와흥미를구한다. putty 를통하여접 속한리눅스서버의기본명령어는다음과같다. PUTTY에서사용하는리눅스명령어단축키 의미 단축키 의미 nano [ 파일명 ].py [ 파일명 ] 의파이썬파일생성 Ctrl + C 작업취소 Ctrl + X 나가기 Ctrl + X, y 파일저장 Ctrl + Z Python [ 파일명 ].py 작업종료 [ 파일명 ].py 프로그램실행 Shutdown h now 시스템연결종료 파이썬을이용한 LED 신호코드 ( 학생용교재 P43) 컴퓨터와연결된비글본블랙이제대로작동하는지확인하기위해 LED 램프를점등시키는실험을통해학생들의흥미를유발시킨다. 프로그램의구조인 for, while 을이해해. 신호가들어가는순서를이해하고, 코드에서 신호의길이, 점등의반복횟수 등을바꾸는코드를응용하여작성하게하여본다. python 파일을만들기위하여 nano [ 파일명 ].py 를입력한후 [enter], 해당파일명의 python 파일이생성된다. 파일의내용을수정한후내용을파일에저장하기위해서는 Ctrl+x, y, enter 를차례로시행하면변경된파일의내용이저장된다. 파이썬파일을실행하기위해서는 python [ 파일명 ].py 를입력한후 [enter] 를누른다. 1 Putty 에접속하여 LED 신호코드예제인 Python 코드를입력하고실행한다. nano LED.py 16

# nano LED.py import Adafruit_BBIO.GPIO as GPIO import time for i in range(4): GPIO.setup("USR%d" % i, GPIO.OUT) while True: for i in range(4): GPIO.output("USR%d" % i, GPIO.HIGH) time.sleep(1) for i in range(4): GPIO.output("USR%d" % i, GPIO.LOW) time.sleep(1) 2 LED.py 를실행시킨다. python LED.py [LED.py] [LED 램프점등결과 ] LED.py 코드는비글본블랙에정상적으로신호를보내는지확인할수있는코드이다. 비글본블랙의 4개의 LED 램프가 1초간격으로차례로점등되고, 차례로꺼지지는모습을반복해서보여준다. 그리고, 코드를응용하여 LED 램프의점등이차례로켜지고꺼지는순서를 3번만반복하게횟수를지정하게응용해본다. 점등의시간도다양하게바꾸어본다. 17

6. STEAM 아웃리치프로그램에필요한참고자료 1. 설치프로그램다운로드 ( http://cafe.naver.com/dswise/36 ) 1 파이썬설치 (ver.python3.6.2) https://goo.gl/v2xr1x 2 비글본블랙설치드라이버 http://beagleboard.org/getting-started 3 Putty 다운로드 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html IP: 192.168.7.2 2. Adafruit BBIO 설치방법 https://learn.adafruit.com/setting-up-io-python-library-on-beaglebone-black?view=all https://github.com/adafruit/adafruit-beaglebone-io-python 3. 포토인터럽터와브레드보드관련자료 http://www.eleparts.co.kr/epxfctylgp1a57hrj00f ( 테스트완료 ) http://www.devicemart.co.kr/1289898 ( 아두이노포토인터럽터센서모듈 [SEN030111]) http://hmcbee.blogspot.kr/2014/08/photogate-tutorial-part-2-basic.html https://www.sparkfun.com/datasheets/components/gp1a57hrj00f.pdf http://darcy.rsgc.on.ca/aces/tei3m/photos/sharpphotointerrupter.jpg http://hmcbee.blogspot.kr/2014/08/photogate-tutorial-part-2-basic.html 4. 관련서적 https://wikidocs.net/ ( 도서온라인자료제공 ) 18

지도할때강조할점 자율주행차가가져올미래사회와우리삶의긍정적인변화와부정적인사례를생각해본다. 10 년뒤자율주행차보급으로바뀌는우리의생활을생각해보고장단점을토론하도록유도한다. 자율주행차와우리삶의변화 운전자가차량을조작하지않아도설정한목적지까지주변환경을인식하고스스로주행하 는자동차를뜻한다. 자동차가스스로운전한다면우리의삶은어떻게변화할지생각해보자. 자율주행자동차 * 출처 : digitaldealer.com [ 참고자료 ] Ÿ 자율주행차, 미래를달리다 / YTN 사이언스 https://youtu.be/6za6otfwdhg Ÿ 미래형자율주행자동차벤츠달리는거실인가? https://youtu.be/e5bqwuornji Ÿ 구글이계획하는자율주행자동차의문제점 https://youtu.be/iobsdwriznm 생각해보기 : 자율주행차가있다는나의삶은어떻게바뀔까? 19

오전 7 시 30 분. 잠이덜깬나는무거운가방을들고밖으로향한다. 현관문을열고나갔 더니자율주행차가미리문을열고기다리고있다. 피곤했던등굣길을편안하게바꿔줄자 율주행차가생긴다면나의삶은어떻게변할까? 자율주행차가우리의실생활에어떤영향을미칠지생각해보고아래에적어봅시다. 나에게미래의자율주행자는 이다. 생각해보기 : 자율주행차의작동원리는무엇일까? 20

자율주행차의작동원리는인지, 판단, 제어등크게세가지로나뉜다. 인지기술을통해 도로의상황과현재의위치, 지형지물을감지하고수집된정보를판단, 분석하여목적지까 지안전하게도착할수있도록제어하는것이자율주행의기본원리다. * 출처 : phoneworld.com.pk 자율주행에필요한기술은어떤것들이있는지조사한후작성해보자. [ 참고자료 ] Ÿ 자율주행차가도로를지배하는미래사회 21

Ÿ Ÿ Ÿ http://www.kama.or.kr/jsp/webzine/201605/pages/issue_02.jsp 자율주행자동차가가져올 10가지변화들 http://global-autonews.com/bbs/board.php?bo_table=bd_026&wr_id=261 자율주행자동차 - 컴퓨터와자동차가만나다! 미래의스마트카자율주행자동차 http://blog.skhynix.com/1590 자율주행자동차의세계! http://blog.lginnotek.com/549 자율주행차탑승사진 * 출처 : Yanfeng 22

지도할때강조할점 싱글보드컴퓨터를이용하여주변상황을판단하고자율주행하는자동차설계와제작을진행한다. 전자부품중극성이있는부품은주의해서연결하도록지도한다. 부주의하면비글본블랙이나모터드라이버가합선으로고장날가능성이크다. 전자부품과전선을납땜하는실습을진행할시안전장비를갖추고주변을꼭환기시킨다. 비글본블랙소개 비글본블랙은미국의비글보드재단이만든싱글보드컴퓨터로아두이노, 라즈베리파이등과함께오픈소스하드웨어를대표하는제품이다. 해외오픈소스하드웨어커뮤니티를통해비글본블랙을이용한프로젝트들이많이생겨나고있다. 그러나국내에서는비글본블랙에대한인지도가해외만큼높지않다. 아두이노와라즈베리파이는커뮤니티와블로그등이활발하게이뤄지고있는반면비글본블랙은최근에들어서야관심을받고있다. 비글본블랙하드웨어 23

2013년 4월, 미국의비글보드재단이비글보드의최신모델인비글본블랙이라는제품을출시했다. 비글본블랙은 45달러라는저렴한가격에놀라운성능을가지고있다. ARMv7 아키텍처의 1GHz AM335x ARM 코어텍스 (Cortex) A8 프로세서를탑재했고, 46핀이있는헤더가 2개있어서총연결가능한핀이 92개나존재한다. 뿐만아니라 GPIO, SPI, I2C 등다양한인터페이스를지원한다. 또한, 2GB 내장스토리지와옹스트롬OS, 클라우드9 IDE가미리설치돼있어제품수령후곧바로개발이가능하다. 비글본블랙은 Node.js 개발이가능하고, 내장라이브러리인 BoneScript를이용해자바스크립트로센서와액추에이터를제어할수있다. 기존의보드형 PC는성능에대한만족도가낮았지만, 비글본블랙은저렴한가격에도만족스런성능을보여준다. 예로 3D 프린터를개발하는경우리소스가많이드는작업이어서 3D 프린터관련작업만수행하는컴퓨터를따로두어야만했다. 하지만비글본블랙은프로세서와램의성능이충분하기때문에비글본블랙 1개만으로도 3D 프린터를충분히제어할수있다. [ 참고자료 ] DBguide.net http://m.dbguide.net/about.db?cmd=view&boardconfiguid=19&boarduid=177510 비글본블랙홈페이지 https://beagleboard.org/black 24

25

비글본블랙프로젝트소개 1 Open ROV( 무인수중탐사로봇 ) Open ROV는비글본블랙으로만든오픈소스무인수중탐사로봇프로젝트이다. 무선리모컨조종이가능하고카메라를통해심해속영상을실시간으로확인할수있다. 또한어두운심해를비추기위해조명을제어할수도있다. Open ROV (http://openrov.com) 2 BuddyBot BuddyBot은 Swift 언어로프로그래밍한첫번째무인자동차프로젝트이다. 초음파거리센서를활용하여장애물을피해서자율주행하며버튼, LED 등을 GPIO로제어도록프로그래밍한오픈소스프로젝트이다. BuddyBot (https://github.com/hoffmanjon/swiftybones_buddybot) http://myroboticadventure.blogspot.kr/2016/05/buddybot-gets-obstacle-avoidance.html 26

생각해보기 : 미래의자율주행차는어떻게생겼을까? 국내외에서많은회사들이자율주행차개발에뛰어들고있다. 기존의완성차제조업체 ( 벤 츠, 아우디, 현대등 ) 뿐만아니라 IT 업체 ( 구글, 애플등 ) 에서다양한디자인으로자율주행 차를선보이고있다. * 출처 : Google, Mercedes-Benz F015 내가생각하는미래의자율주행차디자인을상상하고자동차의외부또는내부를 그려보자. 27

설계하기 : 자율주행차를원하는모양으로조립해봅시다. SBC 로자율주행자동차만들기재료목록 구분부품명규격개수 자동차본체키트아크릴 1 자동차 본체 부분 바퀴 2 볼캐스터 1 모터전선 2 개납땜 2 볼트, 너트, 지지대세트 1 비글본블랙 부분 비글본블랙 1 5mm 지지대 M3 2 너트 M3 2 모터드라이버 L298N 모터드라이버 1 초음파 거리센서 부분 초음파거리센서 HC-SR04 1 초음파거리센서브라켓 1 12mm 렌치볼트 M3 2 너트 M3 2 점퍼케이블 (M-F) 4 pin 2 점퍼케이블 (F-F) 1 pin 1 기타 AA 건전지홀더 ( 스위치 ) 4 구 1 AA 건전지 4 휴대용충전배터리 1 미니 USB 연장케이블 1 구분추가준비목록규격개수 조별 1 개씩 드라이버세트 1 양면폼테이프 1 순간접착제 1 28

자율주행자부품사진 1 볼트와너트, 모터브라켓을이용하여자동체본체와모터를조립한다. 29

2 자동차본체에지지대를먼저연결한후볼캐스터를조립한다. 3 초음파거리센서를자동차본체에조립하고 4 핀점퍼케이블을연결한다. 30

4 본체에비글본블랙을너트로고정시킨다. 5 4 구 AA 배터리홀더와휴대용보조배터리를본체에부착한다. 31

모터와모터드라이버전선연결방법 드라이버를이용하여모터와모터드라이버를아래와같이연결한다. 32

아래그림과같이 4 구 AA 배터리홀더의전원선과비글본블랙의 GND 선을모터드라이버 연결한다. 33

비글본블랙 GPIO 연결방법 초음파거리센서의연결핀 4 개 (VCC, Trig, Echo, GND) 를아래그림과같이비글본블랙 의 P8, P9 핀헤더에맞게연결한다. 모터드라이버의입력핀 4 개 (IN1, IN2, IN3, IN4) 와 GND 핀을아래그림과같이비글본 블랙의 P8 핀헤더에맞게연결한다. 34

비글본블랙자율주행차완성 [ 참고자료 ] Ÿ 덕성여자대학교와이즈센터카페 (SBC로자율주행차만들기관련자료 ) http://cafe.naver.com/dswise/36 Ÿ 구글의자율주행차 WAYMO https://waymo.com/ Ÿ 벤츠의자율주행차 F015 https://www.mercedes-benz.com/en/mercedes-benz/innovation/research-ve hicle-f-015-luxury-in-motion/ Ÿ 자율주행기술로인한디자인의변화는? http://magazine.kakao.com/pincar/57d239dbe787d00001302f79 35

지도할때강조할점 거북이그래픽모듈을사용하여파이썬언어사용법에대해서배우고순차, 반복, 선택구조에대해서알아본다. Python으로만든자율주행프로그램을업로드하고주행테스트를통해프로그램을수정, 보완한다. 파이썬터틀그래픽코딩시발생하는오류에대해서설명하고오류수정하는과정을통해문제해결능력을키운다. 응용실습으로추가라이브러리사용법을안내해서다양한결과물이나오도록유도한다. 프로그래밍언어파이썬 파이썬 (Python) 은 1990년암스테르담의귀도반로섬 (Guido Van Rossum) 이개발한인터프리터언어이다. 귀도는파이썬이라는이름을자신이좋아하는코미디쇼인 " 몬티파이썬의날아다니는서커스 (Monty Python s Flying Circus)" 에서따왔다고한다. 파이썬의사전적인의미는고대신화에나오는파르나소스산의동굴에살던큰뱀을뜻하며, 아폴로신이델파이에서파이썬을퇴치했다는이야기가전해지고있다. 대부분의파이썬책표지와아이콘이뱀모양으로그려져있는이유가여기에있다. 파이썬은전세계적으로가장많이사용하는프로그래밍언어중하나이며, 공동작업과유지보수가매우쉽고편하다. 국내외로많은프로그래머가파이썬으로다양한프로젝트를진행하고있으며, 깃허브 (http://github.com/) 에서여러가지프로젝트를찾아볼수있다. 36

파이썬의특징 이세상에프로그래밍언어는 C, C++, Java, Ruby 등다양하다. 각언어마다장단점이 있고사용목적에따라선택해서사용해야한다. 언어마다문법과규칙이정해져있으며 유사하지만조금씩다르다. 파이썬은문법이쉬워빠르게배우기쉽고활용하기편하다. 프로그래밍경험이있는사람이라면파이썬사용법을단기간에배울수있다. 또한, 파이썬은오픈소스라서무료로사용할수있다. 매우복잡하고반복연산이많은시스템프로그램을제외하면시스템유틸리티, GUI 프로그래밍, 웹프로그래밍등다양한분야에적용할수있는언어이다. [ 참고링크 ] 점프투파이썬 https://wikidocs.net/4307 37

파이썬설치하기 1 파이썬홈페이지 (https://www.python.org/downloads/) 에서 Download Python 3.x.x 를내려받는다. 또는, http://cafe.naver.com/dswise/36 에서다운로드. 2 python-3.6.2.exe 파일을실행하면파이썬설치마법사의 Add Python 3.6 to PATH 를체크하고 Install Now 를눌러서설치를시작한다. 38

3 설치화면 4 프로그램이모두설치되면 Setup was successful 이나타난다. Close 버튼을눌러설 치마법사창을닫는다. 39

5 자주사용하는실행파일명은 IDLE(Python 3.6 32-bit 또는 64-bit) 이다. 클릭해서파이썬 IDLE 를실행한다. 6 IDLE 프로그램이화면에나타난다. 테스트로 IDLE 화면에 print( Hello Python ) 을입력하고 Enter 를누른다. 40

프로그램의기본제어구조 기본제어구조는다음과같이 3 가지가있다. 1 순차 (concatenation) 는구문순서에따라서순서대로수행한다. 2 선택 (selection) 은프로그램의상태에따라서여러구문들중에서하나를수행한다. (if, else, elif와같은키워드로표현 ) 3 반복 (repetition) 은프로그램이특정상태에도달할때까지구문을반복하여수행하거나, 집합체의각각의원소들에대해어떤구문을반복수행한다. (while, for와같은키워드로표현 ) 41

거북이그래픽프로그래밍 파이썬은초보자들이쉽고재미있게프로그래밍을배울수있도록 거북이그래픽 이라는 모듈을제공한다. 모듈이란파이썬에서사용하는프로그램의작은단위를말한다. 거북이 그래픽모듈을사용하여순차구조로프로그램을작성해보자. 1 Python IDLE 에다음과같은코드를입력하고실행해보자. >>> import turtle >>> turtle.forward(50) 다음과같이화살표가오른쪽으로이동한화면이나타난다. 42

2 다음은화면에거북이가나오도록코드를작성해보자. >>> turtle.shape( turtle ) 3 이제거북이를좌회전, 우회전을시켜보자. >>> turtle.right(90) >>> turtle.forward(50) >>> turtle.left(90) >>> turtle.forward(50) >>> turtle.exitonclick() # 화면을클릭하면창이닫힌다 43

연습문제 1 거북이그래픽모듈로사각형을만들어보자. >>> import turtle >>> turtle.shape( turtle )... 44

파이썬파일만들기 1 IDLE 을실행하고 File -> New File 을실행하고 Save 를눌러서파일명을 turtle_test 라고적은후저장한다. 2 파이썬에디터에아래코드를입력한다. import turtle turtle.shape( turtle ) 45

3 File -> Save 선택한후경로는바탕화면을선택한후파일명을 turtle_test 라고이 름을적고파일을저장한다. 46

4 Run -> Run Module 을선택하거나 F5 를눌러서프로그램을실행한다. 거북이그래픽모듈로도형그리기 1 원그리기 에디터에아래와같이코드를작성하고 F5 를눌러서실행한다. import turtle turtle.shape("turtle") # 원그리기 turtle.circle(100) 2 삼각형그리기 47

에디터에아래와같이코드를추가하고 F5를눌러서실행한다. # 삼각형그리기 turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) 3 사각형그리기에디터에아래와같이코드를추가하고 F5를눌러서실행한다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) 48

전체코드 49

연습문제 2 거북이그래픽모듈로더많은사각형을만들어보자. 파일명은 turtle_ex02.py 로저장한다. import turtle turtle.shape( turtle )... 50

while 반복문 컴퓨터에게같은일을반복해서시키고싶을때반복문을사용한다. 반복문에는 while 과 for 명령어가있으며앞서배운거북이프로그램을응용하여반복구조프로그램을작성해 보자. while 반복문의기본구조는다음과같다. while [ 조건식 ]: 실행할문장1 실행할문장2... 1 Python 에디터에다음과같은코드를입력하고실행해보자. import turtle turtle.shape("turtle") while 1: # 아래문장이무한반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(60) 51

다음과같은결과화면이나타난다. for 반복문 for 반복문의기본구조는다음과같다. for 변수 in 리스트 : 실행할문장1 실행할문장2... 2 Python 에디터에다음과같은코드를입력하고실행해보자. import turtle turtle.shape("turtle") for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(60) 52

다음과같은결과화면이나타난다. if 조건문 앞서배운거북이프로그램을응용하여선택구조프로그램을작성해보자. if 조건문의기본구조는다음과같다. if 조건식 : else: 실행할문장1 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장1 # 거짓 (Fasle) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 거짓 (Fasle) 일때실행할문장 ( 들여쓰기 ) 3 Python 에디터에다음과같은코드를입력하고실행해보자. 53

import turtle turtle.shape("turtle") angle = 60 for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) if i == 0: turtle.forward(100) if i == 1: angle = -30 turtle.left(angle) 다음과같은결과화면이나타난다. 54

연습문제 3 더많은거북이그래픽모듈을이용하여코딩을해보자. import turtle turtle.shape("turtle") turtle.color( red ) # 빨간색펜선택 turtle.pensize(5) # 펜굵기를 5로설정 angle = 60 for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) import turtle turtle.shape("turtle") turtle.color("blue") # 파란색펜선택 # 삼각형그리고색칠하기 turtle.begin_fill() # 색칠하기시작 turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.end_fill() # 색칠하기종료 55

생각다지기 : 파이썬프로그래밍결과물 자신이만든파이썬프로그래밍결과물을정리해봅시다. 예제와연습문제를통해나온결과물은무엇인가요? 실습중에발생한오류를어떻게해결했나요? 56

[ 참고자료 ] Ÿ 파이썬거북이공식문서 https://docs.python.org/3/library/turtle.html#methods-of-rawturtle-turtle-an d-corresponding-functions Ÿ 파이썬거북이그래픽모듈사용하기 http://naver.me/xxp93cwi Ÿ Python for Beginners https://opentechschool.github.io/python-beginners/ko/simple_drawing.html Ÿ Hello, little turtles! http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html 57

지도할때강조할점 자율주행차를작동시킬소프트웨어를파이썬으로코딩하는방법을교육한다. 비글본블랙은리눅스를사용하기때문에쉘명렁어숙지가필요하므로각종명령어를정리한유인물을배포해도좋다. 초음파거리센서를이용하여자동차주변에물체가접근하면자동으로피해가는알고리즘을프로그래밍한다. 학생들이장애물을피하는알고리즘을토론하도록안내하고, 전체코드를기능별로나누어단계별실습을진행한다. 생각해보기 : 운행중자동차주변에누군가접근한다면어떻게피해갈까? * 출처 : digitaltrends.com 자율주행차앞에물체가나타났다. 이때어떻게물체를인식해서물체를피해갈수 있을지생각해보고그순서를작성해보자. 58

1 비글본블랙개발환경설정방법 putty 터미널에다음과같이입력한다. nano setup.sh 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. # Title: Setup for BeagleBone Black Car # Author: Duksung Women s University WISE Center # Creation Date: Oct 19, 2017 # Cafe: http://cafe.naver.com/dswise # Free and open for all to use. But put credit where credit is due. echo "Asia/Seoul" > /etc/timezone cp /usr/share/zoneinfo/rok /etc/localtime echo "TimeZone (Asia/Seoul) Setup Complete." sleep 1 apt-get update && apt-get install python-pip python-setuptools python-smbus -y pip install --upgrade pip pip install Adafruit_BBIO echo "Python & Adafruit BBIO Setup Complete." sleep 1 저장 (Ctrl+O), 엔터, 나가기 (Ctrl+X) 를차례대로눌러서파일을저장한다. 다음명령어를실행시켜서개발환경설정을시작한다. chmod 755 setup.sh./setup.sh 모든설치가끝났으면간단한 LED 예제를실행해보자. 화면에다음과같이 led.py 를작성 한다. 59

nano led.py 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. import Adafruit_BBIO.GPIO as GPIO import time GPIO.setup("USR2", GPIO.OUT) while 1: GPIO.output("USR2", GPIO.HIGH) time.sleep(0.5) GPIO.output("USR2", GPIO.LOW) time.sleep(0.5) led.py 를실행시킨다. python led.py PUTTY 에서사용하는리눅스명령어 단축키의미단축키의미 nano [ 파일명 ].py [ 파일명 ] 의파이썬파일생성 Ctrl + C 작업취소 Ctrl + X 나가기 Ctrl + X, y 파일저장 Ctrl + Z 작업종료 shutdown h now 시스템종료 Python [ 파일명 ].py [ 파일명 ].py 프로그램실행 60

자율주행차예제코드 [ 참고자료 ] 소프트웨어관련자료는덕성여자대학교와이즈센터카페에서내려받을수있습니다. http://cafe.naver.com/dswise/36 1 Python 에디터에다음과같은코드를입력하고실행해보자. nano bbcar.py """ * reference: https://github.com/graycatlabs/pybbio * millis(), micros(), delay(ms), delaymicroseconds(us) """ # Import the library: import Adafruit_BBIO.GPIO as GPIO import time # L298N(Motor Driver)4 PIN IN1 = "P8_13" IN2 = "P8_15" IN3 = "P8_14" IN4 = "P8_16" # HC-SR04(Ultrasonic ranging module) 2PIN TrigPin = "P8_12" EchoPin = "P8_11" # GPIO Setup GPIO.setup(IN1, GPIO.OUT) GPIO.setup(IN2, GPIO.OUT) GPIO.setup(IN3, GPIO.OUT) GPIO.setup(IN4, GPIO.OUT) 61

GPIO.setup(TrigPin, GPIO.OUT) GPIO.setup(EchoPin, GPIO.IN) START_TIME_MS = time.time()*1000 def millis(): """ Returns roughly the number of millisoconds since program start. """ return time.time()*1000 - START_TIME_MS def micros(): """ Returns roughly the number of microsoconds since program start. """ return time.time()*1000000 - START_TIME_MS*1000 def delay(ms): """ Sleeps for given number of milliseconds. """ time.sleep(ms/1000.0) def delaymicroseconds(us): """ Sleeps for given number of microseconds > ~30; still working on a more accurate method. """ t = time.time() while (((time.time()-t)*1000000) < us): pass def motor_control(i1, i2, i3, i4): GPIO.output(IN1, i1) GPIO.output(IN2, i2) GPIO.output(IN3, i3) GPIO.output(IN4, i4) def pulsein(gpio_pin, value, timeout=400): """https://community.particle.io/t/pulsein-function-for-hc-sr04-sen 62

sor/27028/2""" now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now > 38000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.LOW: if micros() - now > 38000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now > 38000: return 0 return micros() - now while True: duration = 0 distance = 0 GPIO.output(TrigPin, GPIO.LOW) delaymicroseconds(3) GPIO.output(TrigPin, GPIO.HIGH) delaymicroseconds(10) GPIO.output(TrigPin, GPIO.LOW) duration = pulsein(echopin, GPIO.HIGH) distance = duration / 58 if distance >= 200 or distance <= 4: print "Out of range" else: print distance, "cm", duration, "us" 63

motor_control(1, 0, 1, 0) # FORWARD # delay(300) # motor_control(0, 1, 0, 1) # BACK # delay(300) # motor_control(1, 0, 0, 0) # RIGHT # delay(300) # motor_control(0, 0, 1, 0) # LEFT # delay(300) if distance < 10: print "stop", distance, "cm" motor_control(0, 0, 0, 0) # STOP delay(1000) motor_control(0, 1, 1, 0) # LEFT delay(230) motor_control(0, 0, 0, 0) # STOP delay(500) delay(100) 64

비글본블랙이부팅할때 bbcar.py 를휴대용보조배터리전원을비글본블랙에연결해 nano /lib/systemd/system/bbcar.service 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. [Unit] Description=Python Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /root/bbcar.py [Install] WantedBy=multi-user.target bbcar 서비스를자동실행하도록다음명령어를실행한다. systemctl start bbcar.service systemctl daemon-reload systemctl enable bbcar.service shutdown 명령어를이용하여비글본블랙을종료시킨다. shutdown h now 비글본블랙의외부파란색 LED 가모두꺼졌으면보조배터리를비글본블랙에연결하여전 원을입력한뒤자율주행차주행테스트를시작한다. 65

생각해보기 : 자율주행차주행테스트하기 제작한자율주행차는설계한대로작동하나요? 만약자율주행차가정상적으로작동하지않는다면이유를찾아봅시다. Ÿ 배터리를연결하고전원을켰나요? Ÿ 점퍼케이블을비글본블랙 GPIO에잘연결했나요? Ÿ 프로그래밍에오류는없나요? Ÿ 초음파거리센서가작동하고있나요? 66

정리하기 : 평가및발표 프로젝트진행후성공이나실패에대한자신의생각과의견을나누고발표해봅시다. 1. 어떤싱글보드컴퓨터를사용했나요? 추가로사용해보고싶은개발보드가있나 요? 2. 하드웨어를조립할때어려운점이나개선할점이있나요? 3. 비글본블랙과모터드라이버에인가한전압은몇 V( 볼트 ) 였나요? 67

4. 자율주행알고리즘의수정 보완할사항을적어봅시다. 5. 자율주행차를제작하면서느낀점을적어봅시다. 68

지도할때강조할점 컴퓨터공학관련전공소개와직업에대해서소개한다. 컴퓨터공학분야는다양한응용직업이많으므로새로운직업을소개하고관련정보를스스로찾을수있도록교육한다. 생각해보기 : 컴퓨터공학과진학과진로 1. 수업시간에소개되었던컴퓨터공학관련직업들을적어봅시다. 2. 소개된직업중가장관심이가는직업은무엇인가요? 3. 원하는직업을가지기위해서어떻게준비를해야할까요? 69

4. 원하는직업을가지기위해서어떻게준비를해야할까요? 생각다지기 : 나에게어울리는직업은무엇일까? 1. 오늘한체험을통해나에게가장어울리는직업이무엇인지생각해봅시다. 2. 나에게어울리는직업에가까이가기위한방법에대해서생각해봅시다. 3. 앞으로실현가능한목표를정해봅시다. 70

[ 메모 ] 71

72 [ 메모 ]