DOI QR코드

DOI QR Code

Education Method for Programming through Physical Computing based on Analog Signaling of Arduino

아두이노 아날로그 신호 기반 피지컬 컴퓨팅을 통한 프로그래밍 교육 방법

  • Hur, Kyeong (Dept. of Computer Education, Gyeongin National University of Education) ;
  • Sohn, Won-Sung (Dept. of Computer Education, Gyeongin National University of Education)
  • Received : 2019.10.16
  • Accepted : 2019.11.11
  • Published : 2019.12.31

Abstract

Arduino makes it easy to connect objects and computers. As a result, programming learning using physical computing has been proposed as an effective alternative to SW training for beginners. In this paper, we propose an Arduino-based physical computing education method that can be applied to basic programming subjects. To this end, we propose a basic programming training method based on Arduino analog signals. Currently, physical computing courses focus on digital control when connecting input sensors and output devices in Arduino. However, the contents of programming education using analog signals of Arduino boards are insufficient. In this paper, we proposed and tested the teaching method used for programming education using low-cost materials used for Arduino analog signal-based computing.

Keywords

1. 서 론

 2015년 교육과정 개정으로 2018년부터 초중고교에서도 SW 교육이 실시되고 있다. SW 교육은 ICT기술 습득 뿐 아니라 컴퓨팅 사고(CT: Computational Thinking)를 기반으로 실생활에서 효과적으로 문제를 해결하는 데 중점을 두고 있다[1-3]. 또한 새로운 IoT (Internet of Things) 시대가 도래하고 있어, 기존 모든 산업 분야는 컴퓨팅 기반에서 수렴하는 특성을 가지게 되었다. 이에 따라 대부분 직업은 미래의 핵심 역량으로 CT에 기반한 문제해결력을 요구한다 [4-6].

 CT 활용 능력은 학생들이 전자 기기로 새로운 것을 만들어 창의력을 발휘하는 메이커 교육에도 요구된다 [7-8]. 아두이노(Arduino)는 물리적 컴퓨팅 및 제조업체 교육에 적합한 대표적인 오픈 소스 하드웨어로서, 전기회로를 아두이노 입력 및 출력 핀에 연결하여 다양한 장치를 개발할 수 있다. 피지컬 컴퓨팅 교육에서 학생들은 프로그래밍 오류를 빠르게 수정할 수 있고, 또한 실제 문제를 해결하기 위해 창의적인 프로토 타입을 디자인하는 경험을 제공한다[9-12]. 피지컬 컴퓨팅은 디지털 신호와 아날로그 신호 정보의 입력을 통해 처리한 결과를 물리적인 방식으로 출력하는 컴퓨팅으로 정의한다 [9-12]. 피지컬 컴퓨팅 교육의 장점은 입체적이고 물리적인 결과를 확인하면서, 학생이 작성한 컴퓨팅 알고리즘의 문제를 쉽게 스스로 디버깅한다는 것이다. 이러한 아두이노의 장점으로 아두이노 장치 프로그래밍 실습은 국내 교육과정의 고등학교 및 대학교의 공학 계열 학과에서 필수 교육과정으로 지정하고 있다 [13].

 그러나 현재, 피지컬 컴퓨팅 과목들은 입력 센서와 출력장치를 아두이노에서 연결할 때, 디지털 방식의 제어에 초점이 맞추어져 있다 [14-15]. 그러나, 아두이노 보드의 아날로그 신호를 이용한 프로그래밍 교육 내용은 그 사례가 부족하다. 또한 CT 기반 프로그래밍 교육에는 추상화, 분해, 패턴 인식 및 알고리즘 사고 기법과 데이터 저장을 위한 적절한 구조의사용이 포함되어야 한다 [4-6]. 이에 본 논문에서는 아두이노 아날로그 신호 기반 컴퓨팅에 사용되는 저가의 재료들을 이용하여, 프로그래밍 교육에 활용한 교육 방법을 제안하고 강좌에 적용하였다. 기존에 아두이노 디지털 출력 신호에 기초한 프로그래밍 교육사례는 있었으나 [3], 아두이노 아날로그 출력 신호방식에 기초한 프로그래밍 교육 연구 사례는 전무하다고 할 수 있다. 이에 기존 연구 결과와 객관적 비교연구 없이 연구 결과를 도출하였다. 제안한 피지컬 컴퓨팅 교육 방법은 비전공자 대상 교양 프로그래밍 과목에 적용할 수 있다.

2. 피지컬 컴퓨팅 교육을 위한 출력 장치 구성

 Fig. 1은 아두이노 우노(Arduino Uno) 보드를 나타낸다 [14]. Fig. 1에서 0에서 1023범위의 값으로 입력되는 아날로그 입력 전용 핀으로 A0부터 A5까지 6개 핀 위치가 있음을 알 수 있고, 5V 전원과 접지(GND), 즉, (-) 단자가 제공된다는 것을 알 수 있다. 또한 반대편에 PWM(Pulse Width Modulation) 방식으로 0에서 255범위의 256 단계로 출력되는 아날로그 출력 용 6개 출력 핀들, 즉, ∼3, ∼5, ∼6, ∼9, ∼10, ∼11 핀이 있다. 그리고 0에서 13번 14개 핀들은 디지털 입력과 디지털 출력이 모두 가능한 핀이다. 한편 디지털 입력과 출력은 HIGH(1, 5V) 또는 LOW(0, 0V) 방식으로 값이 결정된다 [9].

MTMDCW_2019_v22n12_1481_f0001.png 이미지

Fig. 1. Analog input pins and digital output pins of Arduino Uno board.

 아두이노에서 동작하는 스케치 C 프로그램은 두개의 함수를 반드시 포함한다. 동작이 한 번만 수행되는 설정 내용은 setup() 함수에 기술하고, 장치 시스템에서 무한하게 반복되는 동작은 loop() 함수에 작성한다. 그리고 추가되는 함수들은 loop() 함수 이후로 작성하여 배치한다. 그리고, 기본적인 출력 명령에는 4개의 명령어가 있다. 첫 번째로, setup() 함수에 들어갈 명령으로, 해당 0~13번 디지털 입출력 핀의 용도를 입력(INPUT)과 출력(OUTPUT)으로 지정하는 pinMode(핀번호, INPUT / OUTPUT) 명령어가 아두이노 스케치 SW 라이브러리에서 정의되어 제공된다. loop() 함수에 들어갈 명령으로는 세 개의 기본 명령어가 있다. 이들은 digitalWrite(출력핀번호, LOW(0V) 또는 HIGH(5V)), analogWrite(출력할 핀번호, 0∼255 값) 그리고 delay(양수)이다. delay(양수) 명령은 0.001초 단위의 지연시간을 발생시켜서 현재 명령을 입력된 시간만큼 유지하는 역할을 한다 [9].

 Fig. 2는 본 논문에서 사용된 피지컬 컴퓨팅 출력장치 구성 개념도이다. 아두이노 우노 보드의 6개 아날로그 출력핀을 사용하며, 각 출력핀에 해당하는 색상의 LED가 연결된다. 그리고 Fig. 3은 Fig. 2 개념도에 따라 브레드보드 상에 전원을 공급한 출력회로장치를 나타낸다.

MTMDCW_2019_v22n12_1481_f0002.png 이미지

Fig. 2. Concept design of the output apparatus for physical computing education.

MTMDCW_2019_v22n12_1481_f0003.png 이미지

Fig. 3. Implemented circuit on a breadboard according to Fig. 2.

3. 아두이노 출력 시스템을 이용한 프로그래밍교육 방법

3.1 지역변수를 이용한 1차 및 2차 계층 함수 프로그래밍

 Fig. 4는 3, 5, 6, 11, 10, 9번 출력 핀에 연결된 LED들을, 1초마다 돌아가면서 시계방향으로 순서대로 아날로그 방식으로 켜지고 꺼지게 하는 프로그램이다. M번 출력핀과 연결된 LED 장치의 조도를 ‘D’ms 간격으로, 시작값 H에서 0으로 ‘K’ 단위로 감소시키려면, 즉, M, H, K, D 4개의 변수 값을 입력 받는 1차 계층 최하위 함수 ‘analogONOFF() ‘가 필요하며, 이 함수 동작의 시작과 끝은 M번 출력핀과 연결된 LED 장치를 반드시 꺼 놓는 것이다.

MTMDCW_2019_v22n12_1481_f0004.png 이미지

Fig. 4. Programming Structure using multiple analog outputs.

 Fig. 3의 LED 회로에서 시계방향으로 전원이 공급되는 순서는 3-5-6-11-10-9 와 같다. Fig. 5는 시계방향으로 점점 빠르게 아날로그 출력 방식으로 켜지고 꺼지는 프로그램을 나타낸다. 각 출력 핀에 3개씩 연결된 각 색상의 LED들이 점멸하도록 하는 함수를 작성하면서, 자연스럽게 aclockwise 함수 내 지역변수 사용법, 즉, H, K 및 D의 역할과 analogONOFF 함수 내 지역변수 사용법, 즉, M, H, K 및 D의 동작의 차별성을 학습할 수 있다.

MTMDCW_2019_v22n12_1481_f0005.png 이미지

Fig. 5. Structure of an aclockwise function program.

 여기서 aclockwise 함수의 기능은 회로에서 시계방향 순서로, 각 지역 변수가 값을 입력 받아 6개 디지털 출력핀을 순차적으로 제어한다. 학생들은 실제회로의 동작을 보면서 작성된 프로그램의 원리를 이해하고, 쉽게 프로그램을 수정할 수 있다. Fig. 5 프로그램 상단에 있는 상수화된 전역변수 이름에서 1은 Fig. 3의 회로에서 윗줄을 의미하고, 2는 회로에서 아래줄을 의미한다. 그리고 각 핀에 가해지는 digitalWrite 및 analoglWrite 명령은 시간차 없이 실행되기 때문에 명령 순서는 동작 결과에 영향이 없다.

 한편, 동일한 원리를 적용하여, 반시계 방향, 즉, 3-9-10-11-6-5 의 순서로 3개의 LED들이 아날로그방식으로 점멸하게 할 수 있다. 여기서 Aanticlockwise 함수를 정의할 수 있다. Aanticlockwise 함수의 기능은 회로에서 반시계방향 순서로, 각 analogONOFF M 지역 변수가 반시계방향 출력핀번호들을 입력 받아 6개 아날로그 출력핀을 순서대로 제어한다. 또한, Fig. 6과 같이, 3번 11번 핀과 같이 동일한 색상 LED들이 동시에 점등할 수 있도록 하는 ScolanalogONOFF 함수를 정의할 수 있다. 다음 절에서는 이번 절에서 제시한 1차 계층 함수, 즉, analog ONOFF 및 ScolanalogONOFF 함수와 2차 계층함수, 즉, aclockwise 함수와 Aanticlockwise 함수, aSclockwise 함수들을 이용한 3차 계층 함수들을 제시한다.

MTMDCW_2019_v22n12_1481_f0006.png 이미지

Fig. 6. Structure of a ScolanalogONOFF function program.

3.2 지역변수를 이용한 3차 계층 함수 프로그래밍

 본 절에서는 aclockwise, Aanticlockwise 그리고 aSclockwise 함수들을 이용하여, 상위 기능의 3차 계층 함수를 설계하는 방법을 제시한다. 우선, Fig. 5에서 시계방향으로 점점 빠르게 켜지는 프로그램을 aclockwise 함수로 정의하였다. aclockwise 2차 계층함수는 analogONOFF 1차 계층 함수를 조합하여 설계하였다. 마찬가지로, Aanticlockwise 2차 계층 함수도 시계반대방향 순서로 출력핀 정보들을 입력 받아, analogONOFF 1차 계층 함수들을 조합하여 정의된다.

 aclockwise 함수와 Aanticlockwise 함수를 조합하여, 동적인 LED 점등 모습을 나타내는 프로그램을 Fig. 7에 정의하였다. 즉, aclockwise 함수 및 Aanticlockwise 함수 프로그래밍 후 물리적인 결과를 각각 관찰한 후, aclockwise 및 Aanticlockwise 함수를 조합하여 3차 계층 기능을 프로그래밍하고 물리적인 결과를 관찰한다. Fig. 7의 프로그램을 이해하고, 학생들이 다양한 LED 점등 패턴을 표현하도록 유도하는 프로그래밍 교육을 실시한다.

MTMDCW_2019_v22n12_1481_f0007.png 이미지

Fig. 7. Structure of a program combined with aclockwise and Aanticlockwise functions.

 같은 색상 LED들이 동시에 아날로그 방식으로 점멸할 수 있도록 하는 Fig. 6의 ScolanalogONOFF 1차 계층 함수를 조합하여, 같은 색상 R, G, B LED들이 시계방향으로 켜지는 aSclockwise 2차 계층 함수를 설계할 수 있다. Fig. 8은 aSclockwise 함수 프로그램 구조를 나타낸다. 동일한 방식으로 점점 빠르게 반시계방향으로 회전하면서 같은 색상 LED들만 점멸하는 aSanticlockwise 3차 계층 함수 프로그램도 설계할 수 있다. 그리고, 특정 색상 R, G, B 색상 LED 6개 씩만 점멸하는 agreen, ared, ablue 3차 계층 함수도 표현할 수 있다.

MTMDCW_2019_v22n12_1481_f0008.png 이미지

Fig. 8. Structure of an aSclockwise function program.

 본 장에서 제안한 프로그래밍 절차를 이용하면, 학생들은 주어진 아두이노 피지컬 컴퓨팅 하드웨어를 이용하여, 다양한 물리적 표현을 위해 아날로그출력 프로그래밍에 집중하게 된다. 본 논문에서 제시한 아두이노 출력 하드웨어 구조를 수정하고 발전시켜, 다양한 1차 2차 및 3차 계층함수를 만들어 표현할 수 있다.

4. 입력장치 연결과 전역변수를 이용한 아두이노프로그래밍 교육 방법

 본 논문에서 제시한 하드웨어는 아두이노 우노보드와 6개 아날로그 출력핀으로 연결된 3색 18개 LED회로다. 그리고 제시한 SW 프로그램으로는 analogWrite() 기본 명령어를 조합하여 만든 계층 1 수준의 analogONOFF 함수와 ScolanalogONOFF 함수가 있다. 그리고 analogONOFF 함수를 조합하여 만든 계층 2 수준의 aclockwise, Aanticlockwise 및 aSclockwise 함수가 제시되었다. 그리고 계층 2 수준의 함수를 조합하여 만든 계층 3 수준의 함수들이 제시되었다. 이 SW 프로그램들은 입력장치 없이 설계된 프로그램들로서 순차적, 반복적, 문제분할적인 알고리즘 구조를 가지고 있다. 입력장치가 없어도 학생들의 컴퓨팅적 사고과정에 따라 Top-down 및 Bottom-up방식의 상위 4 수준의 함수도 창작할 수 있다.

 본 장에서는 사운드 센서 입력 장치를 연결하여, 자동화된 결과를 만들어 내는 프로그래밍 교육 절차를 제안한다. Fig. 9는 사운드 센서 입력장치와 아두이노 보드 연결 방법을 나타낸다 [14]. 사운드센서가 측정한 음량값이 A2 아날로그 핀으로 입력된다. 측정된 음량 값의 범위는 0∼1023로 전역변수 sound에 저장된다. 0∼1023 범위로 측정된 음량 입력 값을LED 밝기에 반영하려면, 이 입력 값의 범위를 조정해야 하고, 이를 위해 map 함수를 사용한다. 결과적으로 측정된 음량 값은 0∼255 범위의 값으로 조정되었다. Fig. 10은 음량 값에 따라 더 많은 LED가 시계방향으로 켜지는 프로그램을 나타낸다. 여기서 음량값을 측정하는 시간 간격은 100ms로 설정했으며, 모든 LED는 analogWrite 명령어를 통해, 전원을 공급받아 점멸된다.

MTMDCW_2019_v22n12_1481_f0009.png 이미지

Fig. 9. Connecting a sound sensor to arduino board.

 앞에서 설명한 1차 2차 3차 계층 함수들도 Fig.10의 프로그램을 활용하여, 사운드센서 입력장치를 연결할 수 있다. 그리고 다양한 선택적 조건문 구조의 프로그래밍 활동을 실시한다. Fig. 10 프로그램에서 측정된 음량 값에 따라 동작하는 IF 조건문을 작성하면, 0, 30, 60, 120, 150, 180, 255 값들의 기준이 실험 결과 분석을 통해서 바뀌게 된다. 이 때마다, 수정하는 부분을 편리하게 함수화한 것이 Fig. 10 프로그램 내 sixcond() 함수이다. Sixcond() 함수는 0∼255 범위로 측정된 음량 값에 따라, val 변수 값을 1∼6 정수 값으로 결정하는 함수이다. 결정된 val 변수값에 따른 조건문은 switch-case 명령문이 사용되었다. 이를 통해, 아날로그 방식의 5V 전원이 공급되는 출력 핀의 개수가 결정된다. 여러 함수들에서 val 및 sound 변수 값이 사용되므로, 이 두 변수를 전역변수로 처리하였다. 아날로그 방식의 5V 전원이 공급되는 출력 핀의 개수가 val 변수값에 의해 늘어날 때 마다, analogONOFF 함수에서 출력핀 개수가 하나씩 추가된 함수들, 즉, ScolanalogONOFF, trianalogONOFF, fouranalogONOFF, fiveanalogONOFF, sixanalogONOFF 함수들이 각각 호출된다. 이들 analogONOFF 함수들은 모두 1차 계층 함수들로 정의되었다.

MTMDCW_2019_v22n12_1481_f0010.png 이미지

Fig. 10. An analog output program that turn more LED lines up according to measured sound values.

 Fig. 11에 있는 loop() 함수 프로그램은 val 값이 측정된 음량 값의 크기에 따라 1부터 6까지 증가하여 설정된다. Val 변수 값이 크면 aclockwise 함수 내지연시간이 감소하여 1회 회전 소요시간은 감소하나, 총 회전수가 증가하는 프로그램이다. 즉, 각 case별로 동일하게 총 720ms 시간이 소요되는 프로그램이다. 같은 방식으로 조이스틱, 초음파센서, 가변저항 입력장치들을 연결하여 각각 프로그래밍을 실습할 수 있다. 또한, 3∼4가지 입력 장치를 모두 연결하고 복합적인 동작 시나리오를 설계한 후, 구현하는 프로그래밍 실습도 실시할 수 있다. 이를 통해 학생 스스로 프로그램 구조를 확장하고, 물리적인 장치의 동작 결과를 보고 효율적으로 디버깅하는 SW교육이 가능하다.

MTMDCW_2019_v22n12_1481_f0011.png 이미지

Fig. 11. An analog output program that determines circulation time and # of circulations according to measuredsound values.

5. 아두이노 활용 프로그래밍 교육 적용 결과분석

 3장에서 제시한 아두이노 프로그래밍 교육 사례를 적용한 교육을 2019년에 실시한 후 평가를 실시하였다. 아두이노를 활용한 평가 문제 영역과 배점, 평균 점수 분포를 Table 1와 Table 2에 정리하였다. Table 1의 내용은 스케치 C언어 문제들의 평가 영역과 배점, 각 문제별 56명 학생들의 평균 점수를 나타낸다. 총 30점 만점에서, 평균 18.9 점을 획득하여,63%의 성취율을 나타내었다. 또한, 각 문제별 평균획득 점수도 유사하여 고른 난이도 분포를 나타내었다. Table 1의 점수 분포를 통해, 3장에서 제시한 아두이노 C언어 프로그래밍 교육 사례를 적용한 강좌가 아두이노 활용 SW 강좌에서 유효한 교육 형태가 될 수 있음을 알 수 있다. Table 2는 30점 만점 기준으로 아두이노 기반 C언어 평가에 대한 총점 분포를 나타낸 자료이다. Fig. 12와 같이, 총점에 대한 학생수 분포가 정규 분포 형태를 나타내어, 본 논문에서 제시한 아두이노 C언어 프로그래밍 교육 방법이 유효성을 갖는다는 것을 알 수 있다. 이를 통해, 비전공자 대상으로 하는 프로그래밍 교육에 있어, 3장에서 제시한 아두이노 C언어 교육 사례와 이에 기반한 평가 방법이 SW 구조 교육 방법으로 유효하다고 판단된다.

Table 1. Test evaluation results of arduino-based sketch-C problems

MTMDCW_2019_v22n12_1481_t0001.png 이미지

Table 2. Total score distribution of sketch-C problems

MTMDCW_2019_v22n12_1481_t0002.png 이미지

MTMDCW_2019_v22n12_1481_f0012.png 이미지

Fig. 12. Distribution of students for total scores with sketch-C problems as shown in Table 2.

6. 결 론

 본 논문에서는 비전공자들을 위한 기초 프로그래밍 강좌에 적용할 수 있는 아두이노 프로그래밍 교육 방법을 제안하였다. 제안한 교육 방법에서는 아두이노 아날로그 출력 명령을 이용한 피지컬 컴퓨팅 교육 방법이 제시되었다. 제시한 교육 방법을 참고하여, 아두이노를 활용한 프로그래밍 강좌를 기획한다면, 아두이노를 사용하여 학생들이 표현하는 과제물 또는 학생들이 고민하게 되는 프로그래밍 내용을 설계하는 데 기여할 수 있다고 판단된다. 피지컬 컴퓨팅 강좌는 학생들이 이해하여 표현하는 결과물을 만들어내는 강좌이다. 이론적 이해에 그치지 않고, 실제적인 결과물을 미리 기획한 동작 시나리오와 함께 물리적인 시스템으로 구현하는 것이다. 또한, 본 논문에서 제시한 평가결과를 통해, 아두이노를 활용한 교육 방법이 효과적인 프로그래밍 교육 방법으로 적용될 수 있음을 알 수 있다.

 

References

  1. Korea Ministry of Education, Curriculum for Informatics Education, 2015.
  2. K. Hur, “Scoring Programs for Understanding of Problem-solving Process Using Software,” Journal of Education, Vol. 37, No. 3, pp. 395-413, 2017.
  3. K. Hur, W.S. Sohn, and K.Y. Kwon, "Block Coding Algorithm Training Examples Using Arduino Board for Elementary and Secondary School Students," International Journal of Advanced Science and Technology, Vol. 115, pp. 1-10, 2018. https://doi.org/10.14257/ijast.2018.115.01
  4. J.M. Wing, “Computational Thinking,” Communications of the Association for Computing Machinery, Vol. 49, No. 3, pp. 33-35, 2006. https://doi.org/10.1145/1118178.1118215
  5. K. Hur, “An Educational Application of an IoT Device Development Task for Visualization of Computational Thinking,” Journal of Education, Vol. 38, No. 3, pp. 255-267, 2018.
  6. K. Hur, “Development of a Physical Computing SW based on Computational Thinking,” The Journal of Education, Vol. 2, No. 1, pp. 25-35, 2019.
  7. Maker Education Working Group, http://makered.org/ (accessed October 22, 2019).
  8. K. Hur, “Examples of Maker Education Using Digital Logic Circuits and Arduino Input / Output Systems,” The Journal of Education, Vol. 1, No. 2, pp. 65-76, 2018.
  9. Arduino Working Group, https://www. arduino.cc/ (accessed October 22, 2019).
  10. How Arduino is Open-sourcing Imagination, http://www.ted.com (accessed October 22, 2019).
  11. C.H. Kim and K. Hur, “Application of Physical Computing Education Using Arduino Devices in Elementary School Subjects,” Journal of Education, Vol. 37, No. 1, pp. 183-197, 2017.
  12. K. Hur, "An Evaluation Method of Understanding SW Architectures in an Arduinobased SW Lecture for Non-major Undergraduates," Journal of Practical Engineering Education. Vol. 11, No. 1, pp. 17-23, 2019. https://doi.org/10.14702/JPEE.2019.017
  13. Y.J. Lee, J.W. Hwang, D.M. Hwang, K.M. Yun, B.G. Lee, S.T. Yu, et al., “Design and Implementation of Software Program based on Web for Basic Electronic Circuit Practice,” Journal of Practical Engineering Education, Vol. 7, No. 2, pp. 113-117, 2015. https://doi.org/10.14702/JPEE.2015.113
  14. Arduino Prime Kit Manual, http://www.irnumall.co.kr (accessed October 22, 2019).
  15. J.M. Lee and B.H. Lee, “A Study on Practical Use of Processing Program for Interactive Technology Education: Focusing on Library Usage and Practice Examples,” Journal of Korea Multimedia Society, Vol. 22, No. 6, pp. 738-747, 2019. https://doi.org/10.9717/KMMS.2019.22.6.738