Korean Institute of Information Technology
[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 21, No. 9, pp.139-152
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 30 Sep 2023
Received 18 Jun 2023 Revised 10 Jul 2023 Accepted 13 Jul 2023
DOI: https://doi.org/10.14801/jkiit.2023.21.9.139

아두이노를 이용한 피지컬 컴퓨팅을 위한 블록 기반 프로그래밍 언어 ArduBricks 개발

최종민* ; 양혁진* ; 박찬정**
*제주대학교 컴퓨터교육과 학사과정
**제주대학교 컴퓨터교육과 교수(교신저자)
Development of a Block-based Programming Language ArduBricks for Physical Computing with Arduino
Jong-Min Choi* ; Hyeok-Jin Yang* ; Chan Jung Park**

Correspondence to: Chan Jung Park Dept. of Computer Education, Jeju National University, Jejudaehak-ro 102 63243, South Korea Tel.: +82-64-654-3296, Email: cjpark@jejunu.ac.kr

초록

본 연구에서는 피지컬 컴퓨팅 교육을 쉽게 할 수 있는 아두이노 기반 블록형 프로그래밍 언어인 ArduBricks를 개발했다. ArduBricks는 Blockly 언어로 개발되었고, 아두이노를 코딩할 수 있는 블록을 제공한다. 또한, 개발한 도구의 활용 사례로 신재생 에너지 기반 스마트 시티 구축을 위한 아두이노 키트도 함께 개발하였다. ArduBricks의 특징은 첫째, 아두이노를 C++ 학습 없이도 블록 코딩으로 쉽게 사용할 수 있도록 제작하여 프로그래밍 편의성을 높였다. 둘째로, 블록 코드를 C++ 코드나 XML 코드로 변환하는 기능을 제공하여 텍스트 코딩 학습에도 도움을 준다. 또한, 본 연구에서는 태양광 및 풍력 발전을 활용하여 스마트 시티 구축이 가능한 아두이노 키트를 설계했다. 향후 고등학교 융합 선택과목에서 ArduBricks를 활용하면 비전공 교사도 피지컬 컴퓨팅 교육의 진행이 가능하다. 마지막으로, 교사 대상 설문조사를 통해 이 도구의 수업 효용성을 검증했다.

Abstract

In this paper, we developed ArduBricks, an Arduino-based block programming language that facilitates physical computing education. ArduBricks is developed in the Blockly language and provides blocks that can be coded with Arduino. In addition, as a use case of the developed tool, an Arduino kit for building a smart city based on renewable energy was also developed. The characteristics of ArduBricks are as following: First, programming convenience is improved by making Arduino easy to use with block coding without learning C++. Secondly, it provides functions to convert block code into C++ code or XML code, helping to learn text coding. In addition, in this paper, an Arduino kit capable of building a smart city using solar and wind power was designed. If ArduBricks is used in high school convergence elective courses in the future, physical computing education can be conducted even by non-major teachers. Finally, the effectiveness of this tool in class was verified through a survey of teachers.

Keywords:

arduino, physical computing, blockly, smart city kit, secondary school education

Ⅰ. 서 론

최근 4차 산업혁명과 코로나 팬데믹 이후 디지털 대전환 시대를 맞이하여 초⋅중등 학생을 위한 인공지능⋅소프트웨어(AI⋅SW) 교육과 디지털 리터러시 향상에 중점을 두는 2022 개정 교육과정이 도입되었다[1]. 교육과정에서 정의한 디지털 리터러시는 디지털 지식, 기술, 및 윤리에 대한 비판적 이해와 함께 정보를 수집, 분석, 평가하며 새로운 정보와 지식을 창출하고 활용하는 능력을 의미한다. 우리나라 학생들의 ICT 접근 및 활용 수준 추이 분석[2]과 학생들의 실태조사를 통해 디지털 리터러시를 함양하기 위해 인터넷과 디지털 기기인 3D 프린터, 스마트폰 기반 VR기기, AR 마커, 피지컬 컴퓨팅 도구 등으로 디지털 기기 활용 공간을 구상하는 것을 제안하였다[3]. 이를 통해 디지털 리터러시 하위 요소 중 코딩, 추세(trend)와 이슈, 창의적 사고, 문제해결력, 콘텐츠 제작에 긍정적인 영향을 줄 것으로 예상한다[2]. 한 연구에서는 피지컬 컴퓨팅 교구를 활용한 소프트웨어 교육은 학습자에게 논리적 사고력 향상을 목표로 하며, 교과 연계 교육을 통해 학습자의 융합적 사고를 향상시킬 수 있다고 보고하고 있다[4]. 따라서 여러 연구에서는 학교 현장에서의 피지컬 컴퓨팅에 관한 교육의 필요성을 주장하였다[5].

2015년 개정 교육과정에서는 피지컬 컴퓨팅 장치의 동작을 제어하기 위한 프로그램 작성을 중심으로 수업이 이루어진 반면[6], 2022년 개정 교육과정에서는 문제해결에 적합한 피지컬 컴퓨팅 시스템 장치를 선택하여 사물인터넷 시스템을 설계하는 내용 요소가 포함되었다[7]. 또한, 2022 개정 교육과정에서는 융합 선택과목이 신설되어, 비전공 교사들도 쉽게 피지컬 컴퓨팅 교구를 사용할 수 있어야 한다고 하였다. 이와 같은 문제를 해결하고자 학습자들의 프로그래밍에 관한 기본 지식이 없어도 쉽게 피지컬 컴퓨팅 교육을 받는 방법이 필요하다[8]. 이를 위해 본 연구에서는 엔트리[9], mBlock[10], 스크래치[11]와 같은 프로그램을 대체할 수 있는 아두이노 기반 피지컬 컴퓨팅을 위한 블록 프로그래밍 언어인 ArduBricks와 적용 가능한 교구를 개발하였다. 본 연구에서 개발한 ArduBricks는 Blockly 언어[12]를 이용하였고, 아두이노를 코딩할 수 있는 블록을 정의하였다. ArduBricks의 실제 적용사례를 제시하기 위하여 신재생 에너지 기반 스마트 시티 아두이노 키트를 개발하였다. 본 연구에서 개발한 ArduBricks의 특징은 첫째, 아두이노를 텍스트 방식의 코딩이 아닌 블록 코딩으로 코딩을 할 수 있게 제작하여 학습자가 아두이노 동작을 위해 C++를 학습하지 않아도 쉽게 아두이노를 사용할 수 있도록 하였다. 둘째, 기존 블록 기반 프로그래밍 언어에서 제공하는 기본적인 블록을 제공할 뿐만 아니라 다양한 아두이노 센서를 블록으로 제공하여 프로그래밍 편의성을 높였다. 셋째, 블록 코드를 C++ 코드와 XML 코드로 변환하는 기능을 제공하여 향후 텍스트 코딩을 학습할 때도 도움을 줄 수 있도록 하였다. 또한, 본 연구에서 제작한 아두이노 키트는 태양광 발전, 풍력 발전을 통해 자체적인 전력을 생산하고 보드와 센서에 전력을 공급할 수 있도록 설계하였다. 향후 고등학교 융합 선택과목에서 ArduBricks를 활용한다면 비전공 교수자도 피지컬 컴퓨팅 교육을 하는데 어려움이 없도록 개발하였다. 마지막으로, 현직 교사 및 예비교사를 대상으로 설문을 진행하여 본 연구에서 개발한 도구가 실제 수업에서 활용될 수 있는지 효용성을 학습환경, 교수설계, 학습내용, 학습효과의 측면에서 검증하였다.

본 논문의 구성을 다음과 같다. 2장은 관련 연구로 피지컬 컴퓨팅과 관련된 도구에 관한 문헌 고찰을 통해 현황을 분석한다. 3장에서는 본 논문에서 제안하는 ArduBricks를 설계한다. 4장에서는 개발한 ArduBricks 적용사례를 신재생 에너지 기반 스마트 시티 키트를 구축하여 어떻게 활용할 수 있는지 제시한다. 5장에서는 설문을 실시하여 개발한 도구에 대한 효용성을 분석한다. 6장에서 결론을 맺는다.


Ⅱ. 관련 연구

2.1 피지컬 컴퓨팅 교육을 위한 도구에 관한 연구

엔트리(Entry)는 한국의 커넥트재단에서 개발한 교육용 블록 기반 프로그래밍 플랫폼이다[9].

SW 교육 의무화와 함께 전국의 초등/중학교 교과서에 채택되었다. 하드웨어와의 연동에서 기본적인 아날로그/디지털 명령 블록만 지원한다[9]. mBlock은 기본적인 아날로그/디지털 명령 블록 이외에도 초음파 센서, 부저, 서브 모터 등을 지원한다. 다른 플랫폼에 비해 다른 명령 블록들을 지원하기는 하지만 아두이노를 제어하기에는 부족하다. 아두이노는 오픈 소스 기반의 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구와 환경을 일컫는다[13]-[15]. 초⋅중등학교에서 피지컬 컴퓨팅 교육에 가장 많이 사용된다. mBlock은 확장 블록을 추가하는 방식으로 아두이노 명령 블록을 추가할 수는 있다[10]. S4A는 Scratch for Arduino의 약자로, 아두이노 오픈 소스 하드웨어 플랫폼을 간단하게 프로그래밍할 수 있게 해주는 스크래치 수정 버전이다[16]. S4A에서는 기본적인 아날로그/디지털 명령 블록과 서브 모터 제어의 각도 제어만을 지원한다[16].

2.2 블록형 프로그래밍

본 연구에서는 기존의 블록 기반 프로그래밍 플랫폼들에 관한 배경 연구를 기반으로, 블록 프로그래밍 플랫폼을 개발할 목적을 제시한다. 블록 기반 프로그래밍 언어는 초보자가 프로그래밍 언어의 개념을 학습하기에 편이성을 제공하여 많이 활용되고 있고, 효과에 관한 연구도 많다[17]-[19]. 블록 기반 프로그래밍 언어를 통한 프로그래밍 학습은 전체적인 논리 구조의 이해를 용이하게 했다. 블록 프로그래밍 경험이 없는 학생들의 경우, 영문 입력에 많은 시간이 필요하였고, 이에 따라 학습 속도가 저하되어 프로그래밍에 대한 이해도가 낮아지는 문제가 발생했다. 이에 따라 학습 이해를 위한 반복 학습 시간 확대가 필요하다고 판단했다[20].

현재 다양한 블록 기반 프로그래밍 플랫폼들은 아날로그 및 디지털 명령 블록을 지원하고 센서 기반 블록 지원에 있어 다소 한계가 있다. 대부분 플랫폼은 범용 센서 블록만을 제공하며, 다양한 센서들의 특성에 맞게 개별적으로 지원하는 경우가 적다. 이러한 기존 플랫폼들의 한계를 극복하고, 많은 사용자가 다양한 센서 기반의 프로젝트를 쉽게 구현하고 실험할 방안을 제공하려 한다. 우선 Google에서 개발한 Blockly[12][21]를 활용하여, 사용자 친화적인 블록 프로그래밍 언어를 구축할 계획이다. 이 언어는 풍부한 센서 활용 기능 및 확장성을 목표로 하며, 기존 센서 구성 요소 블록 외에도 특화된 센서 블록들을 지원할 수 있도록 한다. 또한, 기존 블록 기반 언어에 비해 다양한 센서를 지원하여 사용자들의 편의성을 높일 수 있다. 이를 통해 사용자들은 더 창의적이고 혁신적인 프로젝트를 구축할 수 있으며, 기술적 사고와 문제 해결 능력을 향상할 수 있을 것이다[22]. 또한, 블록 프로그래밍을 통해 피지컬 컴퓨팅에 대해 학습한 후 텍스트 코딩으로 학습을 진행할 경우, 긍정적인 학습 전이 효과가 발생할 것으로 예상된다.

2.3 신재생 에너지 기반 아두이노 키트

본 연구에서 제안하는 블록 기반 프로그래밍 언어에 관한 활용 예제로 신재생 에너지 기반의 스마트 시티 키트를 제작하였다. 2016년 에너지경제연구원 개원 기념 국제세미나에서 기후 변화 대응의 중요성을 강조했다[23]. 기후 변화를 완화하기 위해 신재생 에너지 기술, 예를 들어 태양광 발전, 태양열 발전, 바이오 에너지 이용 기술 및 풍력 발전 등이 활용되고 있다[24]. 지난 1만 년 동안 지구의 평균 기온 상승은 겨우 1도였지만, 최근 100년 동안 0.6도 상승했으며[25], 2100년까지 최대 3도 상승할 것으로 예상된다. 한반도의 경우, 기후 변화가 가속화됨에 따라 21세기 후반에는 폭염이 급증할 것으로 전망된다[25].

이러한 상황을 대비하여 한국 정부는 2050년까지 탄소 중립 목표를 세웠으며[26]. 시민들은 기후 변화 특감을 위해 개별 주체들, 즉 국민과 기업이 자발적으로 노력해야 한다[27]. 이를 위해 시민 교육을 통한 기후 변화에 대한 이해와 공감이 필요하며, 이를 바탕으로 일상생활 속에서 기후 위기에 대응할 수 있는 실천과 생활 양식 변화를 끌어내야 한다[28].

환경 문제에 대한 중요성 대두로 2022 개정 교육과정 융합선택 과목으로 새롭게 기후 변화와 지속 가능한 세계가 신설되었다[29]. 또한 디지털 소양이 기초소양으로 제시되며 모든 교과목에 디지털 소양 교육이 포함되어야 한다. 이에 따라, 본 연구는 이러한 배경 아래 신재생 에너지 기반 아두이노 키트를 개발하여 기후 변화 및 지속 가능성 에너지에 대한 이해와 디지털 소양 교육을 동시에 이루어지게 하는 것을 목표로 하였다.


Ⅲ. ArduBricks 설계

이 장에서는 본 연구에서 개발한 블록 기반 언어인 ArduBricks를 설계하고, ArduBricks를 이용하여 중등학교 수업에서 적용할 수 있는 사례를 구축하기 위해 아두이노 키트를 설계한다.

3.1 ArduBricks 블록 설계

ArduBricks는 그림 1과 같이 키보드, 마우스를 통해 손쉽게 웹 환경에서 아두이노 프로그램을 작성할 수 있도록 하는 웹 기반 에디터이다. 이를 위해서 블록 라이브러리와 컴퓨팅 블록, 그리고 아두이노를 제어하기 위한 블록 카테고리를 제공한다. 사용자는 드래그 앤드 드롭 방식으로 블록을 개발 공간으로 배치하여 프로그래밍을 진행할 수 있다. 이러한 블록 배치 정보는 HTTP 통신을 통해 Web Server의 Handler로 전송되어 아두이노에 맞게 Build를 진행한다. 그리고, 아두이노 보드로부터 보드 정보를 받아와 해당 정보에 맞게 업로드한다.

Fig. 1.

Design diagram for ArduBricks

3.2 아두이노 키트 설계

이 절에서는 아두이노 키트의 설계에 관하여 기술한다. 우선, 전기를 생산하기 위해 태양광 패널이 만드는 전기를 DC-DC 컨버터를 통해 조절한 후, 배터리 충전 모듈로 보낸다. 그런 다음 충전 모듈이 배터리에 맞는 전력으로 낮추어 충전하고, 이 전기를 보드에 적절한 전력으로 제공한다. 그림 2와 같이 아두이노를 사용하여 태양광 발전을 구현한 이 설계 방법은 태양 에너지를 전기로 바꾸어 배터리에 저장하고 필요에 따라 사용할 수 있도록 도와준다. 풍력 발전기가 만드는 전기를 DC-DC 컨버터를 통해 조절한 후, 배터리 충전 모듈로 보낸다. 그런 다음 충전 모듈이 배터리에 맞는 전력으로 낮추어 충전하고, 이 전기를 보드에 적절한 전력으로 제공한다.

Fig. 2.

Solar power blueprint

그림 3과 같이 아두이노를 사용하여 풍력 발전을 구현한 이 설계 방법은 풍력 에너지를 전기로 바꾸어 배터리에 저장하고 필요에 따라 사용할 수 있도록 도와준다.

Fig. 3.

Wind power blueprint

태양광 발전 및 풍력 발전으로 생산된 전력을 활용하여 메인시스템이 작동된다. 그림 4와 같이 시스템 내부에는 미세먼지 측정을 위한 미세먼지 센서와 온습도 측정을 위한 온습도 센서가 설치되어 있다.

Fig. 4.

Full blueprint

이 센서들이 수집한 데이터를 처리하여 출력하기 위해 그림 4와 같이 LCD 모니터가 사용된다. 이를 통해 미세먼지와 온습도 정보를 실시간으로 확인할 수 있다.


Ⅳ. ArduBricks 구현과 적용

4.1 ArduBricks 블록

이 절에서는 ArduBricks가 제공하는 블록의 기능을 위주로 ArduBricks 구현 내용을 기술한다.

표 1의 Logic 블록은 사용자들이 프로그램의 흐름을 제어하고, 조건부 실행을 할 수 있도록 도와주는 블록이다. 개발한 블록으로는 if-do 블록, 부등식 블록, and-or 블록, not 블록, null 블록이 있다. If-Do 블록은 특정 조건이 참(True)인 경우, 해당 블록 내의 코드를 실행한다. 조건이 거짓(False)인 경우, If-Do 블록 내의 코드를 건너뛰고, 부등식 블록은 두 값을 비교한다. and-or 블록은 두 가지 이상의 조건을 병합하여 검사할 수 있게 돕는다. and 모든 조건이 참일 경우에만 결과가 참이 되고, or는 적어도 하나의 조건이 참인 경우 결과가 참이 된다. Not 블록은 주어진 조건의 반대 결과를 반환하고 Null 블록은 아무 값도 없음을 나타낸다.

Logic blocks

표 2의 Control 블록은 프로그램의 실행 흐름을 관리하고 제어하는 데 사용되는 블록이다. 개발한 블록으로는 delay 블록, count 블록, repeat 블록이 있다. Delay 블록은 코드의 실행을 일정 시간 동안 정지시키는 데 사용된다. 실행 흐름이 이 블록에 도달하면, 설정된 시간만큼 대기한 후 다음 블록을 실행한다. count 블록은 입력한 숫자만큼 반복을 진행하고 숫자만큼 실행이 완료되면 반복문이 종료된다. repeat while-do 블록은 주어진 조건이 참인 동안 블록 내의 코드를 반복적으로 실행한다. 조건이 거짓이 될 때까지 블록 내의 코드를 실행하며, 조건이 거짓이 되는 순간 반복문이 종료된다.

Control blocks

표 3의 Math 블록은 프로그램에서 수학적 계산과 관련된 작업을 수행하는 데 사용되는 블록이다. 개발한 블록으로는 변수 블록, 연산 블록, map 블록이 있다. 변수 블록은 프로그램에서 값을 저장, 사용 및 변경할 필요가 있는 경우에 이용된다. 연산 블록은 사칙연산, 제곱의 수학적 연산을 실행하는 데 사용된다. 이 블록은 값을 받아서 그 값에 대한 연산을 수행한 결과를 반환한다. map 블록은 아날로그 센서에서 얻은 값을 디지털 값으로 변환할 때 사용된다. Text 블록은 프로그램에서 문자열과 관련된 작업을 수행하는 데 사용되는 블록이다. 문자열을 입력하고 해당 입력값을 다양하게 활용할 수 있다.

Math blocks and test block

표 4의 변수(Variable) 블록은 프로그래밍에서 변수를 다루는데 사용되는 블록이다. 개발한 블록으로는 set item to 블록, item 블록이 있다. set item to 블록은 변수를 초기화하거나 값을 변경하는 작업을 수행한다. 변수의 이름은 'item'에 입력되며, 값을 설정하려면 해당 블록에 값을 연결해야 한다. item 블록은 변수의 이름을 설정할 수 있는 블록이다.

Variable blocks

표 5의 함수(Function) 블록은 프로그래밍에서 함수를 정의하고 관리하는 데 사용되는 블록이다. 개발한 블록으로는 to do something 블록, to do something-return 블록, if-return 블록이 있다. to do something 블록 특정 작업을 수행하는 함수를 정의하는 데 사용된다. 함수의 이름과 인수를 입력할 수 있으며 이 블록 내에 수행할 작업을 구현한다.

Function blocks

to do something-return 블록은 특정 작업을 수행하고 결괏값을 반환하는 함수를 정의하는 데 사용된다. if-return 블록은 함수 내에서 조건부로 값을 반환하는 작업을 수행하는 데 사용된다. 주어진 조건이 참이면 해당 블록의 반환 값을 반환하고, 그렇지 않으면 함수의 다음 작업을 계속 수행한다.

표 6의 Input/Output 블록은 프로그래밍에서 하드웨어와 상호작용할 때 사용되는 블록이다. 개발한 블록으로는 HIGH/LOW 블록, digitalWrite pin 블록, digitalWrite pin HIGH/LOW 블록, analogWrite pin 블록, analogWrite pin value 블록, serial print text 블록, tone pin -frequency 블록, no tone pin 블록, build-in LED start HIGH/LOW 블록이 있다. HIGH/LOW 블록은 디지털 신호의 상태를 지정할 수 있다.

Input/Output blocks

digitalWrite pin 블록은 선택한 핀의 디지털 출력을 설정하고 digitalWrite pin HIGH/LOW 블록은 HIGH 혹은 LOW 상태를 지정할 수 있다. analogWrite pin 블록은 선택한 핀의 아날로그 출력을 설정하고, analogWrite pin value 블록은 아날로그 핀의 값을 설정할 수 있다. serial print text 블록은 시리얼 통신을 통해 텍스트를 보내거나 출력한다. Tone Pin -frequency 블록은 선택한 핀에서 지정한 주파수의 소리를 생성한다. No Tone Pin 블록은 블록에서 생성한 소리를 중지한다. Built-in LED Start HIGH/LOW 블록은 내장 LED의 상태를 조절한다. HIGH 상태는 켜지고, LOW 상태는 꺼진다.

표 7의 Arduino Analog 블록은 아날로그 센서와 상호작용하기 위한 블록이다. 개발한 블록에는 rotary angle pin 블록, temperature sensor pin 블록, sound sensor pin 블록, thumb joystick pin-axis 블록이 있다. Rotary Angle Pin 블록은 회전 각도 센서에서 아날로그값을 읽는다. 시계 방향으로 회전하면 값이 증가하고, 반시계 방향으로 회전하면 값이 감소한다. temperature sensor pin 블록 온도 센서에서 아날로그값을 읽는다. 이 값은 온도 측정에 사용되며 일반적으로 섭씨로 변환하여 작업을 수행한다. sound sensor pin 블록 소리 센서를 사용하여 아날로그값을 읽어온다. 소리의 크기에 따라 값이 변하며 소리 감지 및 임곗값 초과 확인 작업에 활용된다. thumb joystick pin-axis 블록은 아날로그 조이스틱에서 X 또는 Y 축의 값을 읽는다. 이를 통해 2D 위치를 추적하거나 방향 입력 장치로 활용할 수 있다.

Arduino analog blocks

표 8의 Arduino Motor 블록은 서브 모터와 상호작용하기 위한 블록이다. 개발한 블록으로는 Motor블록이 있다. Motor 블록은 Motor의 운동을 조절한다. stop 상태는 멈추고, forward 상태는 앞으로 간다. Arduino LCD 블록은 LCD와 상호작용하기 위한 블록이다. 개발한 블록으로는 LCD print, LCD power, LCD cursor 블록이 있다. LCD print 블록은 LCD에 문자를 출력한다. LCD power 블록은 LCD의 전원을 조절한다. On은 키고 Off는 끈다. LCD cursor 블록은 LCD의 출력 위치를 조정한다. Left는 왼쪽 Right는 오른쪽으로 스크롤 한다.

Arduino motor and arduino LCD blocks

표 9의 Arduino Sensor 블록은 다양한 아두이노의 센서와 상호작용 하기 위한 블록이다. 개발한 블록에는 LED 블록, Button 블록, Relay 블록, Tilt Switch 블록, Piezo Buzzer 블록, PIR Motion Sensor 블록, Line Finder 블록, Chainable RGB LED 블록, Ultrasonic Ranger 블록이 있다. LED 블록은 LED의 상태를 조절한다. HIGH 상태는 켜지고, LOW 상태는 꺼진다. Button 블록은 Button의 상태를 조절한다. 해당 핀에 Button의 작용을 부여한다. Relay 블록은 릴레이 모듈의 상태를 조절하는 블록이다. 전기신호가 들어오면, 전류가 흐르면 자기가 형성되어 스위치를 끌어당겨 on 시켜준다. Tilt Switch 블록은 기울기에 따라 아날로그값을 읽는다. Piezo Buzzer 블록은 Piezo 버저를 사용하여 소리를 발생시킨다. PIR Motion Sensor 블록은 PIR(Passive Infrared) 움직임 센서를 사용하여 움직임을 감지한다. Line Finder 블록은 라인의 위치에 따라 값이 달라지는 line Finder 센서를 사용하여 아날로그 값을 읽는다. Chainable RGB LED 블록은 적색, 녹색, 청색의 발광 다이오드가 결합한 LED로 다양한 색상을 만들 수 있다. Ultrasonic Ranger 블록은 초음파 거리 센서를 사용하여 초음파를 내보내고 반사되어 돌아오는 시간을 측정함으로써 거리를 계산한다.

Arduino sensor blocks

4.2 신재생 에너지 기반 스마트 시티 개발

이 절에서는 ArduBricks에서 제공하는 기능을 이용하여 제작한 아두이노 키트를 이용하여 신재생 에너지 기반 스마트 시티를 구축한다.

스마트 시티에 제작된 실시간 환경 측정 타워의 모습이다. 타워에는 미세먼지 측정을 위한 센서와 온습도 측정을 위한 센서가 설치되어 있다. 이 센서들이 수집한 데이터를 처리하여 LCD를 통해 출력된다. 상단부에는 RGB LED를 통해 미세먼지 농도에 따라 색이 변하도록 프로그래밍하였다. 이를 통해 미세먼지와 온습도 정보를 실시간으로 확인할 수 있다. 스마트 시티에 전력을 공급하는 풍력 발전과 태양광 발전은 각각 독립적인 충전 모듈을 가지고 있으며, 전력 생산 시에는 개별적으로 작동한다. 태양이 없는 날이나 바람이 없는 날 등에는 미리 충전된 전력을 이용하여 스마트 시티에 전력을 공급한다.

그림 5는 피지컬 컴퓨팅 개발을 위한 블록 프로그래밍을 할 수 있는 웹페이지이다. 왼쪽에 카테고리가 나열되어 있는데 위에는 다른 블록 프로그래밍 플랫폼에서도 사용할 수 있는 기본적인 Logic, Control, Math, Text, Variables, Functions 관련 블록이 있다. 그 아래에는 아두이노를 관련 블록들이 있다. 기본적인 아날로그/디지털 핀을 HIGH, LOW 상태로 만들 수 있는 Input/Output, 아두이노의 다양한 센서와 패널과 관련한 Arduino Analog, Arduino, Arduino LCD, Arduino Motor가 있다. 오른편의 화면에 왼쪽 화면의 블록들을 드래그 앤드 드롭 방식으로 블록 코딩을 할 수 있는 개발 공간이다. 오른쪽 상단에 Upload 버튼을 통해 아두이노에 업로드가 가능하고 Discard 버튼을 누르면 모든 코드가 지워진다.

Fig. 5.

ArduBricks

Save Arduino Code 버튼을 누르면 작성된 코드가 저장된다. 오른쪽 하단의 쓰레기통에 블록을 가져다 버리면 각각의 블록을 삭제할 수도 있다. 왼쪽 상단의 Arduino를 누르게 되면 작성한 블록 코드가 C++ 형식의 Arduino 코드로 변환되고 그 옆의 XML을 누르면 XML 형식으로 블록 코드가 변환된다.

그림 6은 환경 및 피지컬 컴퓨팅 교육에서 활용이 가능한 신재생 에너지 기반 스마트 시티 키트이다. 풍력 발전기와 태양광 패널을 통해 전기를 생산하고 배터리에 저장한다. 저장된 전기를 센서와 패널에 공급하여 스마트 시티가 동작한다. 키트에 미세먼지와 온습도 센서를 설치하여 LCD를 통해 값을 확인할 수 있다. 추가로 초음파 센서를 활용하여 일정 거리에 물체가 접근하면 초록 LED에서 빨간 LED 불이 바뀌는 신호등, 조도 센서를 활용하여 일정 값이 되면 LED에 불이 들어오도록 키트를 완성하였다.

Fig. 6.

Finished kit


Ⅴ. 설문조사와 도구의 효용성 분석

본 연구에서 개발한 ArduBricks의 효용성 평가를 위해 우선 아두이노와 연동이 가능한 블록 코딩 프로그램들과 ArduBricks를 표 10과 같이 비교하였다. 비교 대상으로 선정된 프로그램들은 Entry, S4A, 그리고 mBlock이다. 이들 프로그램도 기본적인 프로그래밍 블록을 제공하지만, 피지컬 컴퓨팅 분야에서 다양한 센서와 연동이 가능한 ArduBricks에 비해 상대적으로 기능이 제한적이다.

Function comparison between ArduBricks and others

ArduBricks는 피지컬 컴퓨팅에 초점을 맞춘 블록 코딩 프로그램으로 개발되어, 기본적인 프로그래밍 블록과 아날로그/디지털 핀 제어뿐만 아니라 다양한 센서 블록을 제공한다. 결과적으로, 표 10에 따르면 ArduBricks는 다른 프로그램들보다 더 다양한 센서 블록을 제공하며, 피지컬 컴퓨팅 분야의 프로그래밍에 유용한 도구로 평가될 수 있다.

또한, 현직 중고등학교 교사와 예비 교원들을 대상으로 설문을 진행하여 ArduBricks의 효용성을 분석하였다. 설문의 구성은 다음과 같이 김용대 등의 연구[30]를 기반으로 학습환경, 교수설계, 학습내용, 학습효과로 나누어서 분석하였다. 참여 교사는 전체 20명으로 고등학교 교사 7명(35%), 중학교 교사 7명(35%), 예비 교원 6명(30%)이었다. 응답은 5점 리커트 척도를 이용하여 1점(매우 불만족)부터 5범(매우 만족)까지로 하였다. 설문 결과에 대한 요약은 표 11과 같다.

Summary of survey result about ArduBricks

첫째, 학습환경에서 사용자 인터페이스(UI) 만족도를 조사하였다. ArduBricks의 UI 디자인에 대한 만족도에 관한 질문에는 ‘보통’이 6명(30%), ‘만족’ 6명(30%), ‘매우 만족’은 8명(40%)이었다.

ArduBricks가 학생들의 피지컬 컴퓨팅 학습에 있어 학습자와 학습내용 간 상호작용의 적절성에 관한 질문에서는 ‘보통’ 4명(20%), ‘만족’ 9명(45%), ‘매우 만족’ 7명(35%)으로 80%의 교사가 긍정적으로 응답하였다.

둘째, 교수설계에서 ArduBricks가 피지컬 컴퓨팅 단원의 학습 목표에 도달하기 위해 적합’한지에 관한 질문은 ‘보통’ 2명(10%), ‘적합’ 8명(40%), ‘매우 적합’은 10명(50%)으로 90%의 교사가 적합하다고 답하였다. 또한 ArduBricks가 피지컬 컴퓨팅 단원의 학습 요소를 구성하는데 적합한지에 관한 질문에서는‘보통’ 2명(10%), ‘적합’ 7명(35%), ‘매우 적합’ 11명(55%)으로 90%의 교사가 적합하다고 답하였다.

셋째, 학습내용에서 ArduBricks를 사용하는 것이 2022 개정 교육과정과 적합한지에 관한 질문에서는 ‘보통’ 3명(15%), ‘적합’ 8명(40%), ‘매우 적합’ 9명(45%)으로 85%의 교사가 적합하다고 답하였다.

중고등학생을 대상으로 피지컬 컴퓨팅 단원에서 블록 코딩을 사용했을 경우 난이도의 적절성에 관해서는 ‘부적절’ 1명(5%), ‘보통’ 4명(20%), ‘적절’ 7명(35%), ‘매우 적절’ 8명(40%)으로 75%의 교사가 난이도가 적절하다고 응답하였다.

넷째, 학습효과에서 학생의 컴퓨팅 사고력 향상에 긍정적 효과를 가져올 수 있는지에 관한 설문에서는 ‘그렇지 않다’ 1명(5%), ‘보통’ 4명(20%), ‘그렇다’ 7명(35%), ‘매우 그렇다’ 8명(40%)으로 75%의 교사가 컴퓨팅 사고력에 긍정적인 효과를 줄 것이라고 답하였다.

학생의 프로그래밍 능력에 도움을 줄 수 있는지 여부에 관한 질문에서는 ‘매우 그렇지 않다’ 1명(5%), ‘보통’ 3명(15%), ‘그렇다’ 8명(40%), ‘매우 그렇다’ 8명(40%)으로 80%의 교사가 긍정적인 영향을 미친다고 답하였다.

학생이 피지컬 컴퓨팅을 학습함에 있어 동기부여를 줄 수 있는지에 관한 질문에서는 ‘보통’ 6명(30%), ‘그렇다’ 6명(30%), ‘매우 그렇다’ 8명(40%)으로 70%의 교사가 동기부여를 할 수 있을 것으로 예상하였다.

결론적으로, 본 연구에서 개발한 ArduBricks가 2022 개정 교육과정에서의 중⋅고등학생의 피지컬 컴퓨팅 학습에 적합하며, 컴퓨팅 사고력에 도움이 되고 프로그래밍 능력 향상과 피지컬 컴퓨팅 학습에 동기부여를 줄 수 있는 유용한 도구라고 평가하였다.


Ⅵ. 결론 및 향후 과제

2022년 개정 교육과정에서 문제해결에 적합한 피지컬 컴퓨팅 시스템 장치를 선택하여 사물인터넷 시스템을 설계하는 내용 요소가 포함됨에 따라, 사용이 쉬운 피지컬 컴퓨팅 교구의 개발이 요구되고 있다. 본 연구에서는 아두이노 기반 피지컬 컴퓨팅을 위한 블록 프로그래밍 언어인 ArduBricks와 적용 가능한 교구를 개발하였다. 본 연구에서 개발한 ArduBricks는 Blockly 언어를 기반으로 하여 개발되었으며, 개발한 언어를 중등 교과목에 접목하기 위해 신재생 에너지 기반 스마트 시티 키트를 구축하였다. 또한, 도구의 효용성을 살펴보기 위해 교육현장에서 사용하고 있는 블록 코딩 프로그램들과 비교를 진행하였고, 학습환경, 교수설계, 학습내용, 학습효과의 관점에서 설문을 실시하였다. 비교를 통해 ArduBricks가 피지컬 컴퓨팅분야 프로그래밍에 있어 유용함을 알게 되었고, 설문 결과 ArduBricks의 효용성이 있음을 알게 되었다.

향후 연구로는 다음과 같은 점을 고려해볼 수 있다. 첫째, 본 연구는 학생들 대상으로 실험을 진행하지 못하였으므로 본 연구를 학습에 적용하기 위해 후속 연구가 필요하다. 둘째, 설문 결과를 바탕으로 한국어버전의 개발이 필요함을 확인하였다. 한국어로 제공되는 블록 코딩 환경이 중고등학생들에게 더 쉽게 접근하고 학습할 수 있는 환경을 제공할 것이다. 또한 거부감이 없는 분위기의 환경을 제공하여 시각적 난이도를 낮추는 것도 고려할 필요가 있다. 셋째, 본 연구의 블록 코딩 환경은 기본적인 기능 학습에는 충분하나, 심화 학습을 원하는 학생들에게는 부족한 점이 확인되었다. 이러한 문제를 해결하기 위해 블록 코딩과 텍스트 코딩 간의 연계성을 강화하여 학생들이 스스로 텍스트 코딩으로 넘어갈 수 있는 기반을 마련할 필요가 있다. 이를 위해 추가적인 학습 자료와 심화 기능을 제공하고, 블록 코딩과 텍스트 코딩의 유기적인 연결을 돕는 도구와 자료를 개발함으로써 다양한 학생들이 블록 코딩에서 텍스트 코딩으로의 전환을 효과적으로 이룰 수 있도록 돕는 환경을 조성할 필요가 있다. 넷째, 다양한 프로그래밍 작업을 수행할 수 있도록 블록의 종류와 기능을 다양화하고 업데이트할 필요가 있다. 이를 위해 새로운 블록을 추가하거나 기존 블록을 확장하여 사용자들이 프로젝트에 따라 유연하게 사용할 수 있도록 하는 것이 필요하다.

Acknowledgments

본 연구는 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학사업의 연구결과로 수행되었음(2018-0-01863)

References

  • Ministry of Education, 2025 Realization of High School Education for Inclusiveness and Growth - Announcement of Comprehensive Promotion Plan for High School Credit System, https://www.moe.go.kr/boardCnts/viewRenew.do?boardID=294&lev=0&statusYN=W&s=moe&m=020402&opType=N&boardSeq=83590, . [accessed: Mar. 15, 2023]
  • H. S. Kim, H. S. Kim, J. S. Kim, and A. Shin, "Trend Analysis of ICT Accessibility and Utilization Levels of Korean Students based on OECD PISA Data", Informatization Policy, Vol. 24, No. 4, pp. 17-43, Dec. 2017. [https://doi.org/10.22693/NIAIP.2017.24.4.017]
  • H. N. Go and Y. Lee, "A Study on the Usage of Digital Device Based on Digital Literacy", Proc. of the Korea Society of Computer and Information Conference, Vol. 27, No. 2, pp. 219-222, Jul. 2019.
  • Y. J. Lee, H. Jeon, and Y. Kim, "Development and Applyment Selection Standards of Physical Computing Teaching Aids for Elementary SW Education According to The 2015 Revised Curriculum", Journal of the Korean Association of Information Education, Vol. 21, No. 4, pp. 437-450, Aug. 2017. [https://doi.org/10.14352/jkaie.2017.21.4.437]
  • J. H. Hwang, "A Study on the Application of Elementary School Science Education Teaching Material Using Physical Computing", Proc. of the Korean Association of Computer Education, Vol. 27, No. 1, pp. 275-277, Jan. 2023.
  • Ministry of Education, Department of Information Curriculum Ministry of Education Notice No. 2015-74 supplementary 10, https://www.moe.go.kr/boardCnts/viewRenew.do?boardID=141&lev=0&statusYN=C&s=moe&m=0404&opType=N&boardSeq=60747, [accessed: Mar. 15, 2023]
  • Ministry of Education, Department of Information Curriculum Ministry of Education Notice No. 2022-33 supplementary 10, https://www.moe.go.kr/boardCnts/viewRenew.do?boardID=141&boardSeq=93458&lev=0&searchType=null&statusYN=W&page=1&s=moe&m=040401&opType=N, [accessed: Mar. 15, 2023]
  • C. Na, "The Educational Plan of Software Education for Elementary School using Physical Computing based on Arduino and Entry", Thesis of Master Degree, Graduate School of Education, Daegu University of Education, 2017.
  • Entry, https://playentry.org/, [accessed: Apr. 10, 2023]
  • mBlock, https://www.mblock.cc/en/, [accessed: Apr. 10, 2023]
  • Scratch, https://scratch.mit.edu, . [accessed: Apr. 10, 2023]
  • Blockly, https://developers.google.com/blockly, [accessed: Apr. 10, 2023]
  • Arduino, https://www.arduino.cc/en/about, [accessed: Apr. 10, 2023]
  • H. Kim, "Everyone's Arduino DIY: My own smart home made with 17 projects", Gilbut, 2020.
  • K. B. Song and S. Kim, "Invent to learn : Making, tinkering, and engineering in the classroom", Seoul: Hongneung Science Publishing House, Jun. 2015.
  • Scratch for Arduino, http://s4a.cat/, [accessed: Apr. 10, 2023]
  • Y. M. Kim and M. J. Lee, "A Comparative study of educational programming languages for non- majors students : from the viewpoint of program- ming language design principles", Journal of Korean Association of Computer Education, Vol. 22, No. 1, pp. 47-61, Jan. 2019. [https://doi.org/10.32431/kace.2019.22.1.005]
  • C. H. An, K. Lee, and S. J. Moon, "Programming learning method for beginner based on entry block-based/text-based coding", Journal of the Society of Convergence Knowledge, Vol. 6, No. 1, pp. 127-134, Mar. 2018. [https://doi.org/10.22716/sckt.2018.6.1.018]
  • D. Weintropa and U. Wilensky, "To block or not to block, that is the question: students' perceptions of blocks-based programming", Proc. of the 14th International Conference on Interaction Design and Children, pp. 199-208, Jun. 2015. [https://doi.org/10.1145/2771839.2771860]
  • H. Kim, "Effect of block coding on the adaptation and logic of text programming", Thesis of Master Degree, Graduate School of Information and Communication Hanbat University, 2019.
  • E. Cho and M. Moon, "Development environment construction of physical computing for mobile using open source Blockly", Journal of KING Computing, Vol. 13, No. 6, pp. 21-30, Dec. 2017.
  • S. Yi and Y. Lee, "A theoretical study for effects about learning transfer between two more languages in programming education", Proceedings of the Korea Society of Computer Information, Vol. 26, No. 1, pp. 99-100, Jan. 2018.
  • Seoul Policy Archive, https://seoulsolution.kr/en/node/4427, [accessed: May 02, 2023]
  • Korea Electrical Products Safety Association, "Common sense of electricity - types and principles of renewable energy", Product Safety, No. 188, pp. 66-69, Aug. 2009.
  • B. W. Chu, K. M. Lee, B. H. Kim, J. H. Ryu, M. S. Kim, J. W. Chu, and Y. J. Chang, "Citizenship education in the age of climate change", Korean Cultural History, 2021.
  • Korea Meteorological Administration, "IPCC climate change prospects on the korean peninsula", Korea Meteorological Administration Press Release, Jan. 2021.
  • H. Kim, H. Jeon, and H. Lee, "Comprehensive study on environmental values for integrated analysis of environment and economy, 2020 National environmental awareness survey", Korea Environmental Policy Evaluation Institute Business Report, 2020.
  • S. Y. Lee, "Citizen education direction for climate crisis response", Gyeongnam Power, Vol. 158, pp. 68-75, 2022.
  • Ministry of Education, https://www.moe.go.kr/boardCnts/viewRenew.do?boardID=294&boardSeq=93459&lev=0&searchType=null&statusYN=W&page=1&s=moe&m=020402&opType=N, [accessed: May 02, 2023]
  • Y. Kim and J. Y. Lee, "Development of an evaluation criterion for educational programming language contents", The KIPS Transactions: PartA, Vol. 17, No. 6, pp. 289-296, Dec. 2010.
저자소개
최 종 민 (Jong-Min Choi)

2020년 3월 ~ 현재 : 제주대학교 컴퓨터교육과 학사과정

관심분야 : 정보교육, 에듀테크, 인공지능, 빅데이터처리

양 혁 진 (Hyeok-Jin Yang)

2019년 3월 ~ 현재 : 제주대학교 컴퓨터교육과 학사과정

관심분야 : 정보교육, 인공지능, 빅데이터처리, 데이터마이닝

박 찬 정 (Chan Jung Park)

1988년 2월 : 서강대학교 전자계산학과(공학사)

1990년 2월 : KAIST 전산학과(공학석사)

1998년 2월 :서강대학교 대학원 전자계산학과(공학박사)

1990년 3월 ~ 1994년 2월 : 한국통신 소프트웨어연구소 전임연구원

1998년 2월 ~ 1999년 9월 : 한국통신 멀티미디어연구소 전임연구원

2011년 1월 ~ 2011년 12월 : UC Berkeley 방문학자

2013년 4월 ~ 2015년 2월 : 제주대학교 교육과학연구소 소장

1999년 9월 ~ 현재 : 제주대학교 컴퓨터교육과 교수

관심분야 : STEAM, 기술기반 교육, 에듀테크, 빅데이터 처리, 데이터마이닝

Fig. 1.

Fig. 1.
Design diagram for ArduBricks

Fig. 2.

Fig. 2.
Solar power blueprint

Fig. 3.

Fig. 3.
Wind power blueprint

Fig. 4.

Fig. 4.
Full blueprint

Fig. 5.

Fig. 5.
ArduBricks

Fig. 6.

Fig. 6.
Finished kit

Table 1.

Logic blocks

Logic block Block description
block that performs the function of an if statement
block that perform relational operations
block that performs logical operations such as And and Or
block that represents negation
NULL block

Table 2.

Control blocks

Control block Block description
block representing the delay value
block for ‘for’ statement
block for ‘white’ statement

Table 3.

Math blocks and test block

Math block Block description
Blocks representing numeric values
A block that performs four arithmetic operations
map function block
 
Text block Block description
block for representing text

Table 4.

Variable blocks

Variables block Block description
block for setting a variable
block for getting a variable value

Table 5.

Function blocks

Functions block Block description
block for creating a function
block for creating a function and returning values
block for if statement and returning values

Table 6.

Input/Output blocks

Input/Output block Block description
HIGH, LOW value
block to set digital pins to HIGH, LOW values
block to read digital pin values
block to set analog pin values
block to read analog values
block that outputs values to the serial monitor
block that sets the waveform output frequency value
block to stop waveform output
block to HIGH and LOW the built-in LED

Table 7.

Arduino analog blocks

Arduino analog block Block description
rotation angle sensor block
temperature sensor block
sound sensor block
joystick block

Table 8.

Arduino motor and arduino LCD blocks

Arduino motor block Block description
motor block
 
Arduino LCD block Block description
block that sets the output value to the LCD
LCD power block
LCD cursor placement block

Table 9.

Arduino sensor blocks

Arduino sensor block Block description
LED sensor block
button block
relay block
tilt switch block
piezo buzzer block
PIR motion sensor block
line finder block
RGB led block
ultrasonic sensor block

Table 10.

Function comparison between ArduBricks and others

Comparison items Entry S4A mblock Ardu-
Bricks
basic control statement
(iteration, selection)
O O O O
definition of variables O O O O
definition of functions O X O O
hardware linkage O O O O
analog/digital pin control O O O O
text transformation X X O O
number of basic sensor blocks 0 1 3 15

Table 11.

Summary of survey result about ArduBricks

Category Item Results (No of answers / %)
very bad bad neutral good very good
Learning environment A - - 6(30%) 6(30%) 8(40%)
B - - 4(20%) 9(45%) 7(35%)
Instruction design C - - 2(10%) 8(40%) 10(50%)
D - - 2(10%) 7(35%) 11(55%)
Learning content E - - 3(15%) 8(40%) 9(45%)
F - 1(5%) 4(20%) 7(35%) 8(40%)
Learning effect G - 1(5%) 4(20%) 7(35%) 8(40%)
H 1(5%) - 3(15%) 8(40%) 8(40%)
I - - 6(30%) 6(30%) 8(40%)
A: Satisfaction about UI
B: Appropriateness of interaction between learners and learning contents
C: Appropriateness of reaching learning objectives
D: Suitability of learning element composition
E: Appropriateness of the 2022 revised curriculum
F: Appropriateness of difficulty
G: Computational thinking ability improvement effect
H: Improve students' programming skills
I : Motivation