이지도서는 2017 년도정부 ( 교육부 ) 의재원으로 한국과학창의재단의지원을받아수행된성과물임
목차 덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 1. 중력과중력가속도란? 4 2. 비글본블랙과파이썬 11 3. 파이썬프로그래밍기초 19 4. 중력가속도알고리즘과프로그래밍 35 5. 컴퓨터공학과진학과진로 51
덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 융합인재교육 (STEAM) 프로그램개요 프로그램명비글본블랙으로과학실험해요. 학습주제 기존의영재교육을목적으로학교현장에서사용하던교가의컴퓨터기반의실험교욱 (MBL : Microcomputer-based Laboratory) 의대안으로저가의 SBC(Single-Board Computer), 마이크로컨츠롤러와센서를이용하여실험데이터를측정한후데이터분석을통해물리, 수학, 지구과학수업에활용한다. 학습목표 프로그래밍구조 ( 순차, 반복, 선택 ) 을알수있다. 중력가속도를측정하는실험을진행한다. 비글본블랙을이용한최신기술을체험한다. 교육대상 고등학교 1,2 학년 수업사수 4 차시 관련교과 물리 / 수학 / 지구과학 / 기술 STEAM 단계요소 구분 학습준거 상황제시 l 컴퓨터기반의실험교육 (Microcomputer-based Laboratory) 비를사용하면실험데이트를컴퓨터를통해실시간으로확인할수있다. 과학실험시간에사용한 MBL실험장치를내가만들수있을까? l 프로그래밍은왜배워야할까? 창의적설계 l 비글본블랙으로중력가속도측정하는실험장치를설계하고제작하기 감성적체험 l 4 차산업혁명과컴퓨터프로그래밍에대한관심가지기 l 비글본블랙과 python 을이용하여실생활에필요한장치를생각해보고디자인하기
비글본블랙으로과학실험해요 - 차시별교육학습과정 학습흐름문제제시및제작활동관련교과 도 입 Ÿ 중력은무엇일까? 중력이생활에미치는영향은무엇일까? 비글본블랙을 이용한 과학실험수업구상 전 개 Ÿ Ÿ 중력가속도를구하기위한실험도구및장치를어떻게만들 까? 과학실실험도구탐색 Ÿ Ÿ Ÿ 과학 기술 예술 정 Ÿ 중력과중력가속도에대한개념이해 리 Ÿ 단진자알고리즘정의 학습흐름문제제시및제작활동관련교과 도 입 Ÿ 어떤원리로중력가속도를측정할수있을까? 실험데이터 측정을위한 프로그래밍 전 개 Ÿ Ÿ Python 기초프로그래밍 Python 으로센서감지프로그래밍 Ÿ Ÿ Ÿ 과학 공학 수학 정 리 Ÿ Python 프로그래밍을통한기초알고리즘분석 2
학습흐름문제제시및제작활동관련교과 도 입 Ÿ 중력가속도관련과학실험찾기 비글본블랙과보드를이용한과학실험 ( 하드웨어설계, 제작 ) 전 개 Ÿ Ÿ Ÿ Ÿ 중력가속도측정장치제작및측정프로그래밍과데이터분석센서값측정하기데이터분석 Ÿ Ÿ Ÿ Ÿ 과학기술공학예술 정 리 Ÿ Ÿ 단진자알고리즘분석 단진자실험을통한중력가속도데이터분석및중력가속도에 영향을미치는요소살펴보기 학습흐름문제제시및제작활동관련교과 직업진로탐색 ( 컴퓨터공학 ) 도입전개 Ÿ Ÿ 우리생활과밀접한컴퓨터공학소개 컴퓨터공학세부전공분야체험 Ÿ Ÿ 공학 과학 정리 Ÿ 컴퓨터공학전공관련직업탐색 3
중력이란무엇일까? 중력이무리의삶에미치는영향을살펴본다. 세상의모든물체는서로끌어당기고있다. 책상위색연필들, 밭위에서뒹구는감자들, 심지어우리집강아지와내가의식도못하는사이에는서로를끌어당기는인력이존재한다. 하지만그힘이매우작기때문에우리는이힘을느낄수없을뿐이다. 뉴턴이떨어지는사과를보고발견하게된만유인력 (universal gravitation) 법칙은질량을가지고있는물체와물체사이에나타나는끌어당기는힘을말한다. 이인력은모든물체들사이에존재한것이기때문에만유인력이라한다. 지구와물체사이에도이러한힘이작용하고이힘을중력이라하며, 중력이물체를끌어당기는힘을무게라고한다. 따라서, 무게란지구가물체를잡아당기는중력의크기 이다. 뉴턴의운동법칙중가속도의법칙에따르면힘 (F) 은물체의질량 (m) 과가속도 (a) 를곱한값으로구할 있다. 이때중력에의해나타나는가속도를중력가속도라고한다. (R: 지구의반지름, M: 지구의질량, G: 중력상수 ) 위의공식에따르면중력의크기에영향을주는것으로는중력이서로작용하는두물체의질량과두물 체사이의거리이다. 즉, 중력의크기는두물체사이의거리가가까울수록, 두물체의질량이클수록커 지게된다. 4
핵폭탄이터져세상에갑자기중력이없어진다면? 또는중력이 2 배로증가된다면우리의삶은어떻게변할지 생각해보자 [ 참고자료 ] PART 4. 반중력, 인공중력은가능할까 { 과학동아 } http://dl.dongascience.com/magazine/view/s201303n004 PART 1. 중력없는세상에서우리의운명은?{ 과학동아 } http://dl.dongascience.com/magazine/view/s201303n001 5
생각해보기 : 중력가속도체험하기 비행사가되려면중력가속도테스트를이겨내야만한다. 우주비행사들은로켓이발사될때발생하는 엄청난중력가속도의힘을견뎌내야만대기권에진입할수있기때문이다. 또는전투기조정사의겨우 전투기가급선회를하게되면안에타고있는조종사는마치중력이강해지는것처럼원심력을받게된다. 우주에서의생활을상상해보자. 나는아폴론우주선을타고지구의질량의 1/6 배인달과질량의 2.5 배인목성에차례로방문할예정이다. 어느행성에서의삶이편안할까? 중력이외의조건은모두동일하다고가정했을때, 달에적응하기위한방법과목성에적응하기위한 방법으로는무엇이있을까? 생각해보자. 6
단진자운동을통한중력가속도측정 1. 단진자운동이란? 단진자운동은줄에매달린물체가중력의영향을받아왕복운동을하는것을말한다. 중력이관여하는진자운동을분석하면중력가속도를알아낼수있다. 단진자의주기 (T) 와길이 (l), 진폭사이의관계를알아보고임의의지점에서중력가속도 (g) 를측정한다. [ 그림 1. 진자운동과힘분석 ] 2. 단진자운동을이용한중력가속도공식 단진자에작용하는힘을살펴보자. 길이 l 인실에질량 m 인진자가달려있다고하면, 진자에는실의 장력 T 와중력 mg 가작용한다. [ 그림 1] 에서장력 T 는다음과같다. T = mgcosθ( 단, T 는장력 ) [ 식 1-1] 그런데중력의 cosθ성분은실의장력과평형을이뤄진자에영향을주지않으므로식 1-1은무시할수있다. 남은진짜힘은중력의 sinθ성분으로, 이힘이진자의회전운동을유발하며식 1-2와같이나타낼수있다. F = mlα = mgsinθ [ 식 1-2] 진자운동은원운동과도같으므로, 원이회정하는상황을가정해보았을때, 움직인거리를 S 반지름을 L 각도를 θ 라고하면다음과같다. 7
[ 그림 2, 원의회전운동분석 ] [ 식 1-3] 위의식의양변을걸린시간으로나누면다음과같다. [ 식 1-4] 시간당, 거리의변화는속도이고, 시간당각도의변화는각속도이므로, 위의식은아래와같이정리할수있다. 는각속도 [ 식 1-5] 이때, 시간당속도의변화는길이와시간당각속도의곱과같으므로다음과같이식이성립된다. [ 식 1-6] 위의식의양변을걸린시간으로나누면 [ 식 1-7] 이때, 시간당속도의변화는가속도이고, 시간당각속도의변화는각가속도이므로, 다음과같은식이성립된다. ( 단, 는각가속도 ) [ 식 1-8] 여기서얻은, a 를 F=ma 의운동방정식에대입하면, F = mlα[ 식 1-2] 를얻게된다. 각가속도 α 는각속도를미분한값이므로, 다음과같다. 8
[ 식 1-9] [ 진폭이작을때 ] 가충분히작으면 ( 0 ) sin sin tan sin sin tan sin cos sin cos lim sin tan cos sin lim cos sin cos lim 여기서 이 0 으로가까이가면 sin 는 로근사할수있다는것을알수있다. 즉, [ 식 1-10] 단진동은, 물체가평형상태로돌아가려는힘인복원력을받아서하는운동이므로, 물체의복원력 kx 가 작용할때 (k 는상수, x 는변위, m 은물체의질량 ) 미분방정식의해로나타내며, 이미분방정식해는다음과같이나타난다. 는진폭 는각진동수 여기서, 는방정식을만족하는임의의상수로, 이를방정식에대입해보면 의값은다음과같다. 9
에서 cos 함수의주기가 2π 이므로, 시간 t 에서의위상보다 t+t( 주기 ) 위상이 2π 만큼크므로, 진자운동으로돌아와서각진동수를구해보면, 다음과같은식이성립된다. 는주기 [ 식 1-11] 마지막으로 [ 식 1-5] 를 g 에대하여정리하여보면다음과같은식을얻을수있다. [ 식 1-12] [ 식 1-12] 에서알수있듯이주기와실험장치의반지름을알면진자운동으로부터중력가속도를구할수있다. π 는원주율로그값이 3.14 로알려져있고, L 은진자장치에서의실의길이이므로, 실험을통해 T 를측정하면 중력가속도 g 를알아낼수있다. 위의식을토대로, 비글본블랙을이용하여단진자운도의주기를측정하는실험장치를만들어보자. 10
마이크로컨트롤러와센서를이용하여실험데이터를측정하고데이터를분석하기위하여, 하드 웨어비글본블랙과소프트웨어파이썬에대해서소개하고, 파이썬프로그래밍개발환경설치 방법을살펴본다. 1. 비글본블랙이란? 비글본블랙소개 비글본블랙은미국의비글보드재단이만든제품으로아두이노, 라즈베리파이등과함께오픈소스하드웨어를대표하는제품이다. 해외오픈소스하드웨어커뮤니티를통해비글본블랙을이용한프로젝트들이많이생겨나고있다. 그러나국내에서는비글본블랙에대한인지도가해외만큼높지않다. 아두이노와라즈베리파이는커뮤니티와블로그등이활발하게이뤄지고있는반면비글본블랙은최근에들어서야관심을받고있다. 2013년 4월, 미국의비글보드재단이비글보드의최신모델인비글본블랙이라는제품을출시했다. 비글본블랙은 45달러라는저렴한가격에놀라운성능을가지고있다. ARMv7 아키텍처의 1GHz AM335x ARM 코어텍스 (Cortex) A8 프로세서를탑재했고, 46핀이있는헤더가 2개있어서총연결가능한핀이 92개나존재한다. 뿐만아니라 GPIO, SPI, I2C 등다양한인터페이스를지원한다. 또한, 2GB 내장스토리지와옹스트롬OS, 클라우드9 IDE가미리설치돼있어제품수령후곧바로개발이가능하다. 비글본블랙은 Node.js 개발이가능하고, 내장라이브러리인 11
BoneScript 를이용해자바스크립트로센서와액추에이터를제어할수있다. 기존의보드형 PC는성능에대한만족도가낮았지만, 비글본블랙은저렴한가격에도만족스런성능을보여준다. 예로 3D 프린터를개발하는경우리소스가많이드는작업이어서 3D 프린터관련작업만수행하는컴퓨터를따로두어야만했다. 하지만비글본블랙은프로세서와램의성능이충분하기때문에비글본블랙 1개만으로도 3D 프린터를충분히제어할수있다. [ 참고자료 ] DBguide.net http://m.dbguide.net/about.db?cmd=view&boardconfiguid=19&boarduid=177510 비글본블랙홈페이지 https://beagleboard.org/black 12
비글본블랙설치설치하기 1 비글본블랙홈페이지 (http://beagleboard.org/static/drivers/) 또는덕성여자대학교와이즈센터카페 (http://cafe.naver.com/dswise/36) 에서자신의컴퓨터종류 (windows or Mac or Linux) 와사양 (32bit or 64bit) 에따라선택하여내려받습니다. 운영체제 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 도깜박이는것을볼수있습니다. LED 전원버튼 3 미리다운받은드라이브를더블클릭하여설치합니다. 설치도중아래와같은경고화면이 나오더라도 이드라이버소프트웨어를설치합니다.(I) 를선택합니다. ( 마지막완료화면 이나올때까지반복합니다 ) 13
4 설치마법사완료화면이나오면드라이브설치가완료됩니다. 2. 파이썬이란? 프로그래밍언어파이썬 파이썬 (Python) 은 1990년암스테르담의귀도반로섬 (Guido Van Rossum) 이개발한인터프리터언어이다. 귀도는파이썬이라는이름을자신이좋아하는코미디쇼인 " 몬티파이썬의날아다니는서커스 (Monty Python s Flying Circus)" 에서따왔다고한다. 파이썬의사전적인의미는고대신화에나오는파르나소스산의동굴에살던큰뱀을뜻하며, 아폴로신이델파이에서파이썬을퇴치했다는이야기가전해지고있다. 대부분의파이썬책표지와아이콘이뱀모양으로그려져있는이유가여기에있다. 파이썬은전세계적으로가장많이사용하는프로그래밍언어중하나이며, 공동작업과유지보수가매우쉽고편하다. 국내외로많은프로그래머가파이썬으로다양한프로젝트를진행하고있으며, 깃허브 (http://github.com/) 에서여러가지프로젝트를찾아볼수있다. 파이썬의특징 이세상에프로그래밍언어는 C, C++, Java, Ruby 등다양하다. 각언어마다장단점이있고사용목적에따라선택해서사용해야한다. 언어마다문법과규칙이정해져있으며유사하지만조금씩다르다. 14 파이썬은문법이쉬워빠르게배우기쉽고활용하기편하다. 프로그래밍경험이있는사람 이라면파이썬사용법을단기간에배울수있다. 또한, 파이썬은오픈소스라서무료로사
용할수있다. 매우복잡하고반복연산이많은시스템프로그램을제외하면시스템유틸 리티, GUI 프로그래밍, 웹프로그래밍등다양한분야에적용할수있는언어이다. [ 참고링크 ] 점프투파이썬 https://wikidocs.net/4307 파이썬설치하기 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 를눌러서설치를시작합니다. 15
3 설치화면 4 프로그램이모두설치되면 Setup was successful 이나타난다. Close 버튼을눌러설 치마법사창을닫습니다. 5 자주사용하는실행파일명은 IDLE(Python 3.6 32-bit 또는 64-bit) 입니다. 클릭해 서파이썬 IDLE 를실행합니다. 16
6 IDLE 프로그램이화면에나타납니다. 테스트로 IDLE 화면에 print( Hello Python ) 을입력하고 Enter 를누릅니다. 3. PUTTY란? PUTTY 설치하기 PUTTY는네트워크를통해원격으로컴퓨터를제어하기위한 SSH(secure shell), Telnet, Rlogin 프로토콜을지원하는프로그램입니다. 진자운동장치를이용한실험을측정하기위하여 PUTTY를이용하여리눅스서버에접속하여파이선프로그래밍을작성, 실행합니다. 1 putty 홈페이지 (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 또는덕성여자대학교와이즈센터카페 (http://cafe.naver.com/dswise/36) 에서자신의컴퓨터사양 (32bit or 64bit) 에따라선택하여내려받습니다. 2 putty.exe 파일을더블클릭하여설치합니다. 설치가완료되면 putty 에접속합니다. IP : 192.168.7.2 17
3 서버에접속되면로그인하기위해아이디와패스워드를입력합니다. ID : root Password : root [ 접속성공화면 ] 18
프로그램을개발하기위한언어로파이썬을배워보자. 거북이그래픽모듈을사용하여파이썬 언어사용법에대해서배우고순차, 반복, 선택구조에대해서알아본다. 프로그램의기본제어구조 기본제어구조는다음과같이 3 가지가있다. 1 순차 (concatenation) 는구문순서에따라서순서대로수행한다. 2 선택 (selection) 은프로그램의상태에따라서여러구문들중에서하나를수행한다. (if, else, elif와같은키워드로표현 ) 3 반복 (repetition) 은프로그램이특정상태에도달할때까지구문을반복하여수행하거나, 집합체의각각의원소들에대해어떤구문을반복수행한다. (while, for와같은키워드로표현 ) 19
거북이그래픽프로그래밍 파이썬은초보자들이쉽고재미있게프로그래밍을배울수있도록 거북이그래픽 이라는 모듈을제공한다. 모듈이란파이썬에서사용하는프로그램의작은단위를말한다. 거북이 그래픽모듈을사용하여순차구조로프로그램을작성해보자. 1 Python IDLE 에다음과같은코드를입력하고실행해보자. >>> import turtle >>> turtle.forward(50) 다음과같이화살표가오른쪽으로이동한화면이나타난다. 20
2 다음은화면에거북이가나오도록코드를작성해보자. >>> turtle.shape( turtle ) 3 이제거북이를좌회전, 우회전을시켜보자. >>> turtle.right(90) >>> turtle.forward(50) >>> turtle.left(90) >>> turtle.forward(50) >>> turtle.exitonclick() # 화면을클릭하면창이닫힌다 21
연습문제 1 거북이그래픽모듈로사각형을만들어보자. >>> import turtle >>> turtle.shape( turtle )... 22
파이썬파일만들기 1 IDLE 을실행하고 File -> New File 을실행한다. 2 파이썬에디터에아래코드를입력합니다. >>> import turtle >>> turtle.shape( turtle ) 23
3 File -> Save 선택한후경로는바탕화면을선택한후파일명을 turtle_test 라고 이름을적고파일을저장합니다. 24
4 Run -> Run Module 을선택하거나 F5 를눌러서프로그램을실행합니다. 거북이그래픽모듈로도형그리기 1 원그리기 에디터에아래와같이코드를작성하고 F5 를눌러서실행합니다. import turtle turtle.shape("turtle") # 원그리기 turtle.circle(100) 25
2 삼각형그리기에디터에아래와같이코드를추가하고 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) 26
전체코드 27
연습문제 2 거북이그래픽모듈로더많은사각형을만들어보자. 파일명은 turtle_ex02.py 로저장한다. >>> import turtle >>> turtle.shape( turtle )... 28
while 반복문 컴퓨터에게같은일을반복해서시키고싶을때반복문을사용한다. 반복문에는 while 과 for 명령어가있으며앞서배운거북이프로그램을응용하여반복구조프로그램을작성해보자. while 반복문의기본구조는다음과같다. while [ 조건식 ]: 실행할문장1 실행할문장2... 1 Python 에디터에아래와같이코드를작성하고 F5 를눌러서실행해보자 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) 29
2 다음과같은결과화면이나타난다. for 반복문 for 반복문의기본구조는다음과같다. for 변수 in 리스트 : 실행할문장1 실행할문장2... 1 Python 에디터에아래와같이코드를작성하고 F5 를눌러서실행해보자. 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) 30
2 다음과같은결과화면이나타난다. if 조건문 앞서배운거북이프로그램을응용하여선택구조프로그램을작성해보자. if 조건문의기본구조는다음과같다. if 조건식 : else: 실행할문장1 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장1 # 거짓 (False) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 거짓 (False) 일때실행할문장 ( 들여쓰기 ) 1 Python 에디터에아래와같이코드를작성하고 F5 를눌러서실행해보자. 31
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) 2 다음과같은결과화면이나타난다. 32
연습문제 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() # 색칠하기종료 33
생각다지기 : 파이썬프로그래밍결과물 자신이만든파이썬프로그래밍결과물을정리해봅시다. 예제와연습문제를통해나온결과물은무엇인가요? 파이썬프로그래밍실습중에빈번하게발생된오류는무엇이었나요? 발생된오류를어떻게해결했나요? 34
중력가속도를구하는프로그램을파이썬으로개발한다. 단진자운동과중력가속도알고리즘을 이해하고, 중력가속도에영향을미칠요소를예측하여본다. 1. 실험방법과순서 2. 단진자실험설계 진자운동장치만들기재료 구분부품명규격개수 스탠드 1 개 진자운동장치 추 10g, 30g, 50g 각 1 개 실, 테이프 각 1 개 비글본블랙 비글본블랙 / 전용 USB 각 1 개 센서포토인터럽터각 1 개 기타 브레드보드저항 2개 (220Ω, 1kΩ) 케이블 각 1 개 각 1 개 3 개 35
진자운동장치 만들기 재료 진자운동장치 부품사진 [포토인터럽트] [스탠드, 추, 실] [비글본블랙] 36 [저항(220Ω, 1kΩ), 케이블] [브레드보드]
진자운동장치설계 1. 진자운동장치를제작하기위해, 실, 스탠드, 추를준비한다. 실을 50cm 로자른후추와연결한다. 추를스탠드에매달아진자운동장치를완성한다. 2. 브레드보드에저항을연결한다. 저항은모두 2 개를이다. ❶ 번저항은 220Ω( 빨빨갈금 ) 은전원을 공급하는회로와연결된저항이다. ❷ 번저항은 1kΩ( 갈검빨금 ) 으로풀다운저항이다. 37
3. 포토인터럽터선을연결한다. 포토인터럽터의 ❸ 번빨간케이블은브레드보드의 5V 와연결한다. ❹ 번검은색케이블은브레드보드의 ground 에연결하기위하여 ❶ 번저항의옆에연결한다. 번흰색케이블은 5V 전원에연결한다. ❺ ❻ 번초록색선은인터럽트에들어오는신호를감지하기위하여 ❷ 번저항옆에연결한다. 38
4. 케이블을이용하여브레드보드와비글본블랙을연결한다. 브레드보드와비글본블랙을 P9 핀헤 더에맞게연결한다. [ 실제연결모습 ] 39
5. 추밑에포토인터럽트를고정시킨다. 이때, 추의위치가인터럽터를가운데를지나갈있도록위치 를인터럽터의위치를적절히조정한다. [ 진동운동장치완성된모습 ] 6. 비글본블랙의 USB 와컴퓨터를연결하여비글본블랙에전원이들어오는지확인한다. 40
파이썬을이용한 LED 신호코드 연결된비글본블랙이제대로작동하는지확인하기위해 LED 램프에신호를보내보자. 1 Putty 에접속하여 Python 코드를입력하고실행해보자. nano LED.py # 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 test.py를실행시킨다. python test.py PUTTY에서사용하는리눅스명령어 단축키 의미 단축키 의미 nano [ 파일명 ].py [ 파일명 ] 의파이썬파일생성 Ctrl + C 작업취소 Ctrl + X 나가기 Ctrl + X, y 파일저장 Ctrl + Z 작업종료 Shutdown h now 시스템종료 Python [ 파일명 ].py [ 파일명 ].py 프로그램실행 41
파이썬을이용한포토인터럽트신호확인코드 1 Putty 에접속하여 Python 코드를입력하고실행해보자. nano photo.py # python code import Adafruit_BBIO.GPIO as GPIO import time INPUT = "P9_12" count = 0 GPIO.setup(INPUT, GPIO.IN) while True: if GPIO.input(INPUT) == GPIO.LOW: count = count + 1 print count, "pass" time.sleep(0.5) 2 photo.py 를실행시킨다. python photo.py 생각해보기 포토인터럽트의 LOW 신호와 HIGH 신호의값은어떻게출력될까? 먼저생각해보고, 결과를확인하 여보자. 42
3. 단진자운동알고리즘 단진자운동실험목적 단진자의주기 (T) 와진자의길이 (L) 의관계를임의의지점에서중력가속도 (g) 를측정하여중력가속도 (g) 를이해한다. 또한, 주기 (T) 와중력가속도 (g) 와의관계를이론의공식과측정값으로이해해보자. 단진자운동실험이론 l 단진자운동이란? 길이가고정되어있고질량을무시할수있는실에추를달아서지면과수직인면위에서왕복운동시키는진자운동을말한다. 이러한단진자운동은물체가평형상태로돌아가려는힘인복원력을받아서하는운동으로가장기본적인진동의형태이며, 단진자운동을통하여물체가떨어지는순간 ( 중력의영향을받는 ) 의값 ( 중력가속도 ) 을측정할수있다. l 주기와진폭이란? 주기는진자가 1 회왕복운동하는시간 (A->O->B->O->A ) 을의미하며, 진폭은진동운동의 중심으로부터떨어진최대한의운동거리 ( 움직인거리 ) 이다. 43
l 단진자운동에작용하는힘 단진자운동에서장력 T 와중력 (mg) 에대하여 이다. 이때, 실제단진자에작용하는힘 F는 가된다. 은장력과같은힘으로무시할수있기때문에, 남은진짜힘은중력의 sinθ성분으로, F = mgsinθ으로나타낸다. 이힘이진자의회전운동을유발시키므로, 원이회전하는상황을가정하여할수있다. 원이회전하는시간당움직인거리, S, 반지름 L, 움직인 각도 θ 라고가정한후, 시간당속도의변화와시간당각속도의변화인각가속도의값을 구하면다음과같다. [ 단진자운동에작용하는힘 ] F = ma=mlα 진폭이최소한일때 (sin ) 의힘을구하는방정식은 1단원 7p에있는진자의회전운동을참조하면, 아래와같은주기와각진동수 ( ) 를구할수있다. 는주기 위의값을 g 에대하여정리하면중력가속도는다음과같은식을 얻게된다. [ 식 1-12](*6-8P 참조 ) 44
단진자운동을이용한중력가속도예제코드 [ 참고자료 ] 소프트웨어관련자료는덕성여자대학교와이즈센터카페에서내려받을수있습니다. http://cafe.naver.com/dswise/36 1 Putty 에접속하여 Python 코드를입력하고실행해보자. nano gravity.py import Adafruit_BBIO.GPIO as GPIO import time before=0 period=0 # 주기 pi=3.14 # value of π length=0.5 # length of thread duration=0 # GPIO sencer pin p12 = "P9_12" # GPIO.setup GPIO.setup(p12, GPIO.IN) START_TIME_MS = time.time()*1000 def micros(): """ Returns roughly the number of microsoconds since program start. """ return time.time()*1000000 START_TIME_MS*1000 45
def pulsein(gpio_pin, value, timeout=100): """https://community.particle.io/t/pulsein-function-for-hc-sr04-sensor/27028/2""" now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now >100000000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.LOW: if micros() - now >100000000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now >100000000: return 0 return micros() - now while True: #loop if GPIO.input(p12)== GPIO.LOW: duration = pulsein(p12,gpio.low) if duration>0: period=(micros()-before) print(4*pi*pi*length*1000*1000*1000*1000/(period*period)) # [ 식 1-12] # 시간단위인 microsecond 을맞추기위해 1000*1000*1000*1000 을곱한다. before=micros() time.sleep(0.5) 46
정리하기 : 실험결과분석과발표 진동이일정하게이루어지면출력된중력가속도 10 회값을측정하고그의평균값을구하여본다. 이를 3 번반복하여실험값과이론값과의오차를분석한다. (1) 단진자를길이 50cm인실을이용하여추 (10g) 에매단다. (2) 단진자를각도 θ 만큼벌린후단진자를놓는다. ( 이때, 단진자는포토인터럽터를수직으로지나가야한다.) (3) 단진자가계속진동하고있는상태에서출력화면을이용하여, 계산되어진중력가속도의값을측정한다. (4) 진동이일정하게이루어지면출력된중력가속도 10회의평균값을구하여본다 실험횟수 1 출력된중력가속도의평균값 (10 회기준 ) 이론 (9.8m/s 2 ) 과의오차 2 3 생각해보기 1 이론값 (g=9.8m/s 2 ) 과실제계산된중력가속도 (g) 의평균값에오차가발상하는원인은무엇인지생 각하여봅시다. 47
생각해보기 2 위의생각한원인에서실측오차를줄이기위한해결방안을구상하여봅시다. 생각해보기 3 중력가속도 라는식을통하여, 위에서설계한단진자실험조건 ( 추의무게, 실의길이, 반 경각도 ( 진폭 ) 등 ) 중에서가속도에영향을미치는조건이무엇이라고생각하나요? 있다면그이유는무엇인가요? 48
중력가속도에미치는영향실험다양한실험조건에서중력가속도의변화를측정하기위하여추의무게와실의길이를변화시켜중력가속도의값을측정하여본다. 진동이일정하게이루어지면출력된중력가속도 10회값을측정하고그의평균값을구하여본다. 이를 3번반복하여실험값과이론값과의오차를분석한다. 추의질량의변화 (1) 단진자를길이 인실을이용하여추에매단다. (2) 단진자를각도 θ 만큼벌린후단진자를놓는다. ( 이때, 단진자는포토인터럽터를수직으로지나가야한다.) (3) 단진자가계속진동하고있는상태에서출력화면을이용하여, 계산되어진중력가속도의값을측정한다. (4) 진동이일정하게이루어지면출력된중력가속도 10회의평균값을구하여본다 (5) 추의무게를변화시킨후 (1) 에서 (4) 의과정을반복한다. 실험횟수 변화요소 출력된중력가속도의평균값 1 회 2 회 3 회 이론 (9.8) 과의 오차 10g 추의무게 30g 50g 진자의길이의변화 (1) 단진자를길이 인실을이용하여추에매단다. (2) 단진자를각도 θ 만큼벌린후단진자를놓는다. ( 이때, 단진자는포토인터럽터를수직으로지나가야한다.) (3) 단진자가계속진동하고있는상태에서출력화면을이용하여, 계산되어진중력가속도의값을측정한다. (4) 진동이일정하게이루어지면출력된중력가속도 10회의평균값을구하여본다 (5) 실의길이 를변화시킨후 (1) 에서 (4) 의과정을반복한다. 49
실험횟수 변화요소 출력된중력가속도의평균값 1 회 2 회 3 회 이론 (9.8) 과의 오차 실의 0.5m 길이 0.25m 생각해보기 4 우리는단진자운동을이해하고중력가속도식을유도하는알고리즘을설계하였습니다. 위의실험을 통하여알게된중력에가장큰영향을미치는부분을발견했다면어떤부분이었나요? 생각해보기 6 진자운동장치를설계하면서느낀점을적어봅시다. 50
컴퓨터공학이우리의삶에어떠한영향을미쳤는지알아보고미래에컴퓨터와관련된다양한직업에대해생각해 보자. 생각해보기 1 : 컴퓨터공학이우리삶에미치는영향 1. MIT 컴퓨터공학이세상에기여한 10 가지 자료를보고, 가장기여가크다고생각한사건은무엇인가요? 생 각나는대로 3 가지를적어봅시다. 2. 컴퓨터공학과 IT 산업의발전으로인하여 50 년후미래사회는어떠한모습일지상상해봅시다. 3. 그미래에서, 내가만약 빌게이츠 라면? 마크저커버그 라면? 무엇을하고싶습니까? 51
생각해보기 2 : 컴퓨터공학과진학과진로 4. 소개된컴퓨터관련직업중가장관심이가는직업은무엇인가요? 그이유는무엇입니까? 5. 위의원하는직업을가지기위해서는어떻게준비하면될까요? 생각다지기 : 나의미래의직업과실현가능한목표세우기 6. 나에게어울리는미래의직업은무엇인지생각해봅시다. 7. 미래의직업에다가가기위한실현가능한목표를정해봅시다. 52
[ 메모 ] 53
54 [ 메모 ]