week1
2023.01.13
17:00-21:00
활동기간 : 2023.01.09.(월) ~ 2023.02.24.(금)
1주차~3주차
‘아두이노와 피지컬 컴퓨팅 with 파이썬’교재를 바탕으로
아래와 같이 역할을 분담하여 스터디 진행
4주차~7주차
스터디를 바탕으로 고등학생들이 아두이노에 쉽게 접근할 수 있도록 돕는 교재 제작
-'아두이노와 피지컬 컴퓨팅 with 파이썬' Chapter 1~5
(장다희 조장님의 강의 후 아두이노 실습)
아두이노: 물리적인 세계를 감지하여 제어할 수 있는 소형 컴퓨터
아두이노 보드: 센서가 입력받은 데이터를 액츄에이터의 출력 형태로 변환하도록 처리하는 것
피지컬 컴퓨팅: 아두이노를 이용하여 만든 컴퓨팅 시스템, 디지털 기술 및 장치를 이용하여 물리적인 방식으로 정보를 입력 받아 처리한 결과를 물리적인 방식으로 출력하는 시스템
센서: 실제 세계의 다양한 정보를 감지하거나 입력 받을 수 있는 부품 또는 장치
-ex)빛 센서, 소리 센서, 초음파 센서
액츄에이터: 물리적으로 동작하는 부품 또는 장치 ex) LED, 부저, 모터
아두이노의 종류: 우노 모델, 레오나르도 모델, 101 모델, 나노 모델, 아두이노 메가, 아두이노 윤, 릴리패드 등
*아두이노 우노 보드
디지털 영역: 0번부터 13번까지 14개의 디지털 입출력 핀이 있음
-0번과 1번 핀은 주로 다른 컴퓨팅 장치와의 통신(RX, TX)을 위해 사용
-2번부터 13번까지의 디지털 핀을 사용
-디지털 핀을 출력 핀으로 사용할 경우 0V(LOW) 또는 5V(HIGH)의 전압 출력 가능
초기화 버튼: 아두이노 보드 초기화
파워 영역: 전원을 공급해주는 5V와 3.3V 핀, -극인 GND 핀이 2개, 외부 전원을 공급받을 때 사용하는 Vin이 있음
전원 LED는 아두이노 보드에 전원이 공급할 때 켜지며 RX, TX LED는 아두이노와 컴퓨터가 통신할 때 켜짐
디지털 13번 핀 옆에 L로 표시된 LED는 디지털 13번 핀에 연결되어 있음
아날로그 인 영역: 0번부터 5번까지 6개의 아날로그 입력 핀이 있음
아두이노 소프트웨어를 설치하였다.
파이썬을 설치하였다.
파이썬 라이브러리를 설치하였다.
아두이노에 내장된 LED를 1초 간격으로 깜빡이는 활동을 하였다.
Blink 프로그램을 살펴보았다.
새로운 함수를 정의해보았다.
setup() 함수: 각종 설정을 하는 함수, 프로그램이 한 번만 실행
loop() 함수: 프로그램을 반복적으로 실행하는 함수
pinMode(LED_BUILTIN, OUTPUT): 디지털 13번 핀을 출력 핀으로 설정하는 명령어
digitalWrite(LED_BUILTIN, HIGH): 디지털 13번 핀에 전기를 공급하라는 명령어
delay(1000): 1000 밀리세컨드, 즉 1초동안 아무것도 하지 않고 대기하는 명령어
digitalWrite(LED_BUILTIN, LOW): 디지털 13번 핀에 전기 공급을 해제하라는 명령어
컴파일: 사람이 작성한 프로그램을 컴퓨터가 이해할 수 있는 코드로 변환하는 것
체크(V)버튼: 컴파일
업로드(->)버튼: 컴파일 후, 컴파일 된 파일을 아두이노 보드에 업로드
모듈화: 함수를 이용하면 기본 함수(loop)에서 특정 동작을 수행하는 명령어들을 모아서 별도의 함수로 만들 수 있음, 새로 정의한 함수를 필요할 때마다 호출하여 실행 가능
센서 값을 모니터에 출력하는 활동을 하였다.
-조도센서를 아두이노 보드에 연결하고, 조도센서가 감지한 값을 컴퓨터의 시리얼 모니터로 확인해 보았다. 센서 주변이 어두워지면 값이 작아지고 밝아지면 값이 커지는 것을 확인할 수 있었다.
특정 문자를 입력하여 LED를 제어해보는 활동을 하였다.
-컴퓨터에서 특정 문자를 입력하고 시리얼 모니터의 전송 기능을 이용하여 아두이노 보드로 정보를 보내 그에 연결된 LED를 켜거나 꺼 보았다.
Serial.begin(9600): 통신 속도를 9600으로 설정
Serial.PrintIn( ): 시리얼 모니터에 ( )안의 데이터를 출력하고, 한 줄 내리라는 의미
analogRead(0): 아날로그 0번 핀에 연결된 조도 센서의 데이터를 읽어오라는 명령어
Serial.print( ): 시리얼 모니터에 ( )안의 데이터를 출력하지만, 입력 커서를 한 줄 내리지는 않는다.
Serial.available( ): 시리얼 통신으로 데이터를 받으면, 받은 데이터의 개수를 출력, 만약 데이터를 입력하지 않으면 0을 출력(거짓으로 판단하여 명령어를 실행하지 않는다.)
LED: 발광다이오드(Light-Emitting Diode)의 약어 순방향으로 전압을 가했을 때 빛을 내는 전자 부품/크기 단위: 파이/긴 핀이 +극, 짧은 핀이 –극
아두이노 보드에 LED 1개를 연결하고 1초 간격으로 켜졌다가 꺼지게 하는 활동을 하였다.
LED 3개를 연결하여 순서대로 깜박이는 활동을 하였다.
digitalWrite(핀 번호, 값): 해당 디지털 핀에 HIGH(전기 공급) 또는 LOW(전기 공급 안 함)의 값을 줄 수 있는 명령어
digitalRead(핀 번호): 해당 핀에 입력된 값을 읽어 오는 명령어, 해당 핀 번호에 연결된 전자부품으로부터 받은 값을 HIGH 또는 LOW값으로 가져옴
-아두이노 with 파이썬 교재의 python 버전이 2.7 버전이지만, 현재 python3가 많이 사용되고 있으므로 python3.11로 셋팅하였다.
-파이썬3 버전으로 작성할 때 arduino 모듈이 없다거나 포트를 찾을 수 없다는 오류가 발생했다. 이를 해결하기 위해
를 설치하고 아두이노에서 실행시킨 후 파이썬에서 다시 실습을 하였다. 설치한 후 prototype 코드에서 통신 속도만 9600으로 변경해주고 sketches 내 폴더에 있는 prototype 폴더를 Arduino폴더에 복붙하였다.(이 과정에서 고등 3팀의 도움이 있었다.)
또한, (pip install python-arduino를 cmd에 입력한 후) 기본서에서의 pip install arduino-python대신 pip install arduino-python3로 해주어야 한다.