AI 개념의 시작: 움직임을 통해 데이터 얻기
데이터를 수집, 표시 및 사용하는 방법을 조사합니다
탐색을 위한 질문
• 데이터를 어떻게 수집하고 표시할 수 있을까요?
준비
• 스파이크 프라임 허브가 충전되어 있는지 확인하세요(특히 블루투스로 연결되어 있는 경우).
관심유도
(그룹 토의, 5분)
교통수단과 사람들의 이동 방법에 대한 대화를 통해 학생들의 관심을 불러일으켜주세요.
학생들에게 한 장소에서 다른 장소로 이동하는 여러 가지 방법을 서로 공유하게 하세요. 각자 어떤 종류의 교통수단을 정기적으로 이용하는지 생각을 해볼까요? 어떤 유형의 교통수단을 어떤 상황에서 사용해야 하는지에 대해 토의를 진행하세요.
여러 가지 장소를 예시하고, 장소마다 어떤 유형의 교통수단이 사용되는지를 토의에 부치세요. 걷기, 자전거 타기, 자동차, 보트, 비행기 등이 모두 포함되어야 합니다.
학생들에게 이러한 장소에 가보려면 어떤 정보나 데이터를 갖춰야 할지를 생각해보라고 하세요. 즉, 거리는 얼마이고, 얼마나 멀리, 그리고 빠르게 이동해야 할지 등을 알아야겠죠. 이에 대해 토의를 진행하세요.
탐구
(소규모 그룹, 20분)
학생들이 센서에서 데이터를 수집하고 데이터를 관리하는 방법을 조사합니다.
학생들에게 스파이크 앱의 조립 섹션을 찾아보라고 하세요. 스마트 케틀벨 모델의 조립 가이드가 제시되어 있을 것입니다. 학생들에게 모델을 조립하게 하세요. 조립 가이드는 https://education.lego.com/en-us/support/spike-prime/building-instructions 페이지에서도 볼 수 있습니다.
학생들에게 파이썬 프로그래밍 캔버스에서 새 프로젝트를 열게 하세요. 혹시 프로그래밍 영역에 이미 코드가 들어 있다면 일단 그것부터 다 지우고, 허브를 연결하게 하세요.
학생들에게 센서를 사용하여 정보를 받아들이는 방법에 대해 생각을 해보라고 하세요. 프로그래밍 캔버스의 왼쪽 상단 영역에 무엇이 보이나요? 실시간 센서 데이터가 어디에 표시되는지를 학생들에게 알려주세요. 이제 모델을 이리저리 움직이는 중에 힘 센서를 눌러보면서 실시간 스트리밍 데이터를 살펴보고, 모델을 움직일 때마다 데이터가 어떻게 달라지는지에 대해 토의를 진행하세요. 뒤이어 학생들에게 거리 센서를 프로그래밍하여 데이터를 생성하는 방법을 보여달라고 하세요.
학생들에게 세 가지 샘플 프로그램을 살펴보게 한 후, 콘솔에서 데이터를 수집하고 관리하는 최상의 방법을 토의에 부치고, 필요에 따라 프로그램을 살펴보게 하세요.
샘플 프로그램 1:
from hub import port
import runloop
import distance_sensor
async def main():
#센서로부터 거리를 읽습니다
dist_mm = distance_sensor.distance(port.F)
print('mm:', dist_mm)
runloop.run(main())
샘플 프로그램 2:
from hub import port
import runloop
import distance_sensor
async def main():
#센서로부터 거리를 읽습니다
while True:
dist_mm = distance_sensor.distance(port.F)
print('mm:', dist_mm)
runloop.run(main())
샘플 프로그램 3:
from hub import port
import runloop
import distance_sensor
import force_sensor
async def main():
#센서로부터 거리를 읽습니다
while True:
if force_sensor.pressed(port.B):
dist_mm = distance_sensor.distance(port.F)
print('mm:', dist_mm)
await runloop.sleep_ms(1000)
runloop.run(main())
학생들에게 시간을 주고 세 가지 프로그램을 살펴보게 하세요. 참고로, 거리 센서는 센티미터가 아닌 밀리미터 단위의 값을 반환합니다. 밀리미터를 센티미터로 변환하려면 이 코드 행의 끝에 /10을 추가하여 10으로 나눠주면 됩니다.
dist_cm = distance_sensor.distance(port.F)/10
from hub import port
import runloop
import distance_sensor
import force_sensor
async def main():
#센서로부터 거리를 읽습니다
while True:
if force_sensor.pressed(port.B):
dist_cm = distance_sensor.distance(port.F)/10
print('cm:', dist_cm)
await runloop.sleep_ms(1000)
runloop.run(main())
설명
(그룹 전체, 5분)
각각의 프로그램이 어떻게 작동했는지에 대해 학생들과 토의를 진행하세요. 이런 질문을 던져보세요.
• 각 프로그램별로 콘솔에 출력되는 데이터가 어떻게 보이나요?
• 어느 프로그램이 여러 데이터 포인트를 수집하는 최상의 방법을 보여주나요?
• 콘솔 외부에서 데이터를 정리하는 방법으로 어떤 것들이 있을까요?
학생들에게 각자의 데이터를 표에 표시하게 하세요.
학생들에게 정수, 부동소수, 문자열 등의 여러 가지 데이터 유형이 있다는 점을 상기시켜주세요. 지식 베이스의 거리 센서 항목을 참조하는 방안을 고려해보시고요. 학생들이 어떤 유형의 데이터가 여기에 사용되는지를 판별하는 데 도움이 될 것입니다. 센서로부터 어떤 유형의 데이터가 제공되었는지에 대해 토의를 진행하세요.
다듬기
(소규모 그룹, 10분)
학생들에게 힘 센서를 사용하여 데이터를 제공하는 프로그램을 새로 만들게 하세요.
학생들에게 힘 센서로부터 데이터를 얻는 방법을 살펴보게 하고, 힘 센서를 눌러서 뉴턴 값을 얻고 데이터를 표시하는 아이디어(정보를 쉽게 수집하고 표로 정리할 수 있음)에 대해 토의를 진행하세요. 콘솔이나 허브에 데이터를 표시하는 방안도 고려해보시고요.
학생들에게 프로그램을 살펴보고 개발할 수 있도록 시간 여유를 주세요. 학생들이 자신의 아이디어와 데이터를 다른 그룹과 공유하는 것도 권장할만한 방법입니다.
평가
(그룹 실습, 5분)
교사 관찰:
학생들과 프로그램에 대해 토의를 진행하세요.
이런 질문을 던져보세요.
• 지금까지 조사한 세 가지 샘플 프로그램의 차이점이 무엇인가요? 어떤 점이 같은가요?
• 힘 센서를 추가하자 어떤 일이 일어났나요?
• 참조 또는 표 만들기를 위해 데이터를 표시할 방법으로 어떤 것들이 있을까요?
자기 평가:
학생들에게 다음 질문에 대한 답을 기록장에 적으라고 하세요.
• 오늘 로봇을 이용한 데이터 수집에 관하여 무엇을 배웠는가?
• 좋은 팀원의 특성은 무엇이며, 오늘 내가 그중 몇 가지를 보여주었는가?
• 학생들에게 오늘의 시간 관리에 대해 1-3점 척도로 자기 평가를 해보라고 하세요.
• 학생들에게 오늘의 재료(부품) 관리에 대해 1-3점 척도로 자기 평가를 해보라고 하세요.
교사 지원
학생 과제:
• 센서에서 데이터를 가져오는 방법을 조사합니다
• 힘 센서를 사용하여 데이터를 제공하는 프로그램을 새로 만듭니다.
• 학생이 즉각 사용 가능한 상태의 스파이크 프라임 세트
• 스파이크 앱이 설치된 장치
• 학생용 기록장
CSTA
2-CS-02 Design projects that combine hardware and software components to collect and exchange data.
2-AP-10 Use flowcharts and/or pseudocode to address complex problems as algorithms
2-AP-13 Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.
2-AP-16 Incorporate existing code, media, and libraries into original programs, and give attribution.
2-AP-17 Systematically test and refine programs using a range of test cases.
2-AP-19 Document programs in order to make them easier to follow, test, and debug.