피지컬 컴퓨팅
이번에는 남이 만들어 둔 사물 인터넷을 살펴보는 데서 그치지 않고 직접 설계해 봅니다. 부품을 사서 만드는 것은 아니고, 「무엇을 어떻게 만들지 종이에 정하는 것」까지 합니다. 설계가 끝나면 어떤 부품으로 만들든 같은 동작이 나와야 합니다.
먼저 이름 하나를 정리합시다. 컴퓨터가 화면 안에서만 일하지 않고 센서로 바깥 상황을 읽어 실제 세상을 바꾸는 것을 피지컬 컴퓨팅이라고 합니다. 「피지컬」은 물리적이라는 뜻으로, 눈에 보이고 손에 닿는 세상을 가리킵니다. 사물 인터넷 장치는 대부분 피지컬 컴퓨팅 시스템입니다.
피지컬 컴퓨팅 시스템은 세 부분으로 이루어집니다. 사물이 갖추어야 할 「알아채는 부분」과 「움직이는 부분」이 여기서 입력 장치와 출력 장치라는 제 이름을 얻습니다.
입력 장치
주변의 변화를 감지해 값으로 바꿔 넣어 줍니다. 각종 센서와 버튼이 여기에 포함됩니다. 「알아채는 부분」이 이것입니다.
처리 장치
받은 값을 미리 정해 둔 규칙에 따라 판단하고, 출력 장치에 무엇을 시킬지 정합니다. 여기서 「처리」는 값을 다루기 좋게 정리하는 일만이 아니라 판단하고 명령하는 일까지 넓게 가리킵니다. 시스템의 규칙은 여기에 들어 있습니다.
출력 장치
처리한 결과를 바깥으로 내보냅니다. 빛·소리·글자로 알리거나, 모터를 돌려 실제로 움직입니다. 「움직이는 부분」이 이것입니다.
| 구분 | 장치 | 무엇을 하는가 |
|---|---|---|
| 입력 | 온도 센서 | 주변이 얼마나 차갑고 뜨거운지를 값으로 바꾼다 |
| 입력 | 빛 감지 센서 | 주변이 얼마나 밝은지를 값으로 바꾼다 |
| 입력 | 소리 센서 | 주변 소리가 얼마나 큰지를 값으로 바꾼다 |
| 입력 | 거리 센서 | 앞에 있는 것까지의 거리를 값으로 바꾼다 |
| 출력 | 발광 다이오드(LED) | 불을 켜서 상태를 눈에 보이게 한다 |
| 출력 | 스피커 | 소리를 내어 멀리서도 알아채게 한다 |
| 출력 | 화면 | 숫자나 글자를 보여 준다 |
| 출력 | 모터 | 회전해 무언가를 실제로 움직인다 |
사물 인터넷 시스템은 여기에 하나가 더 붙습니다
입력·처리·출력만 있으면 혼자 일하는 피지컬 컴퓨팅 시스템입니다. 자기가 측정해서 자기가 판단하고 자기가 알립니다. 여기에 통신하는 부분이 붙어 다른 장치나 데이터 플랫폼과 값을 주고받게 되면 비로소 사물 인터넷 시스템이 됩니다. 그러니 설계할 때 물어야 할 것이 하나 더 있습니다 — 「이 값을 남에게 보낼 필요가 있는가?」 보낼 필요가 없다면 굳이 사물 인터넷으로 만들지 않아도 됩니다.
「어두워지면 저절로 켜지는 전등」은 통신하는 부분이 필요할까요? 필요하다면 왜, 필요 없다면 왜 그런지 말해 보세요.
문제 이해와 분석
설계는 네 단계로 진행합니다. 이번 절부터 한 단계씩 밟아 갑니다.
문제 이해와 분석
무엇이 문제인지 적는다
시스템 구상
장치를 고르고 동작을 정한다
만들기
정한 대로 프로그램을 짜고 잇는다
확인과 보완
해 보고, 안 되는 것을 고친다
부품부터 고르지 않습니다
무언가를 만들자고 하면 「무슨 센서를 쓸까」부터 이야기하게 됩니다. 그러면 가진 부품으로 할 수 있는 일을 문제로 삼게 되어, 정작 불편했던 것은 그대로 남습니다. 1단계를 건너뛴 설계는 2단계에서 헤매기 쉽습니다.
이 차시에서 함께 설계할 문제
겨울에 쉬는 시간마다 교실 창을 열어 환기를 합니다. 그런데 종이 치고 수업이 시작된 뒤에도 창이 열린 채 남아 있는 일이 잦아, 교실이 너무 추워집니다. 어떻게 하면 좋을까요?
1단계에서는 이 상황을 세 줄로 쪼갭니다. 원래 무엇을 해 왔는지(원래 하던 일), 그래서 지금 무엇이 문제가 되고 있는지(현재 상태), 어떤 상태가 되기를 바라는지(목표 상태)입니다. 세 줄을 따로 적는 까닭은, 이렇게 적어야 고쳐야 할 것이 정확히 어디인지가 드러나기 때문입니다.
| 구분 | 적은 내용 |
|---|---|
| 원래 하던 일 | 쉬는 시간에 창을 열어 교실을 환기한다 |
| 현재 상태 | 수업이 시작된 뒤에도 창이 열려 있는 것을 아무도 알아채지 못해 교실이 추워진다 |
| 목표 상태 | 창이 오래 열려 있으면 교실 안 사람들이 알아챌 수 있다 |
목표 상태를 적을 때 조심할 것
목표를 「창이 저절로 닫힌다」로 적을 수도 있었습니다. 그런데 그렇게 적는 순간 창을 닫는 장치가 반드시 있어야 하는 설계가 되어 버립니다. 무거운 창을 움직이려면 큰 힘이 필요하고, 사람이 창가에 서 있을 때 닫히면 위험합니다.
목표 상태는 「무엇이 되기를 바라는가」까지만 적고, 「어떻게 할 것인가」는 2단계로 미룹니다. 여기서는 「알아챌 수 있다」까지만 적어 두었기 때문에, 불빛으로 알릴지 소리로 알릴지 화면에 띄울지를 다음 단계에서 비교해 고를 수 있습니다.
목표 상태를 「창이 열린 지 10분이 지나면 스피커에서 소리가 난다」로 적으면 무엇이 문제일까요? 「목표 상태를 적을 때 조심할 것」에 비추어 생각해 보세요.
시스템 구상
이제 목표 상태를 장치와 규칙으로 옮깁니다. 순서는 이렇습니다 — 무엇을 알아야 하는가 → 무엇을 해야 하는가 → 언제 그렇게 하는가.
먼저 「무엇을 알아야 하는가」입니다. 목표 상태에 「창이 오래 열려 있으면」이라고 적었으니 창이 열렸는지와 얼마나 지났는지를 알아야 합니다. 다음은 「무엇을 해야 하는가」입니다. 「알아챌 수 있다」이므로 사람이 알아챌 수 있는 형태로 내보내야 합니다.
| 구분 | 고른 장치 | 그렇게 고른 이유 |
|---|---|---|
| 입력 | 창틀에 붙이는 열림 감지 센서 | 창이 열렸는지 닫혔는지만 알면 되므로 가장 간단한 것으로 충분하다 |
| 입력 | 온도 센서 | 추워지는 것이 진짜 문제이므로, 열린 시간만이 아니라 실내 온도도 함께 본다 |
| 처리 | 작은 처리 장치 하나 | 값 두 개를 비교해 판단하는 정도라 큰 계산 능력이 필요하지 않다 |
| 출력 | 교실 앞쪽의 표시등 | 수업 중이므로 소리보다 눈에 보이는 쪽이 방해가 적다 |
이 값을 남에게 보낼 필요가 있을까요?
한 교실만 생각하면 보낼 필요가 없습니다. 교실 안에서 측정하고 교실 안에서 알리면 되니, 통신하는 부분 없이 혼자 일하는 피지컬 컴퓨팅 시스템으로 충분합니다.
그런데 학교 전체의 교실을 한 곳에서 보고 싶다면 이야기가 달라집니다. 각 교실의 값을 한자리에 모아야 하므로 통신하는 부분과 데이터 플랫폼이 필요해지고, 그때 비로소 사물 인터넷 시스템이 됩니다. 필요가 생겨서 통신을 붙이는 것이지, 사물 인터넷으로 만들려고 필요를 만드는 것이 아닙니다.
마지막으로 「언제 그렇게 하는가」를 정합니다. 사물을 잇는 규칙에 흔히 쓰는 「무엇이 어떠하면 무엇을 한다」 형태 그대로 적으면 됩니다. 여기서 중요한 것은 빠짐없이 적는 것입니다.
| 창의 상태 | 열린 지 | 실내 온도 | 표시등 |
|---|---|---|---|
| 닫힘 | — | — | 끈다 |
| 열림 | 10분 미만 | 모든 경우 | 초록으로 켠다 (환기 중) |
| 열림 | 10분 이상 | 18°C 이상 | 노랑으로 켠다 (오래 열려 있음) |
| 열림 | 10분 이상 | 18°C 미만 | 빨강으로 깜빡인다 (춥습니다) |
표를 다 적은 뒤 두 가지를 확인합니다
- 빈 곳이 있는가 — 일어날 수 있는 상황인데 표에 없는 줄이 있으면, 그 상황에서 시스템은 아무 일도 하지 않거나 엉뚱하게 동작합니다.
- 겹치는 곳이 있는가 — 한 상황이 두 줄에 걸리면 어느 쪽을 따라야 할지 정해지지 않습니다. 동작 규칙 표에서 「10분 이상」인 경우를 「18°C 이상」과 「18°C 미만」으로 나눈 것이 겹침을 없앤 것입니다.
규칙이 늘어나면 서로 부딪히기 쉽습니다. 이 두 가지가 그 문제를 미리 막는 방법입니다.
동작 규칙 표에서 「열린 지 10분 이상, 18°C 이상」 줄을 지우면 어떤 문제가 생길까요? 「빈 곳이 있는가」와 「겹치는 곳이 있는가」 가운데 어느 쪽에 걸리는지 말해 보세요.
만들고 확인하기
3단계는 정한 대로 실제로 만드는 일입니다. 어떤 부품과 어떤 프로그래밍 도구를 쓰는지는 학교마다, 해마다 다릅니다. 그러나 2단계까지가 제대로 되어 있으면 도구가 무엇이든 만드는 일은 같습니다. 표의 각 줄이 그대로 프로그램의 한 조각이 되기 때문입니다. 조건이 넷이면 판단도 넷입니다.
4단계는 만든 것을 실제로 해 보고 고치는 일입니다. 여기서 자주 하는 실수가 「그냥 켜 보고 잘 되는 것 같으면 끝내는」 것입니다. 잘 되는지 확인하려면 무엇을 확인할지 미리 적어 두어야 합니다. 그리고 그 목록의 뼈대는 새로 만드는 것이 아니라 2단계의 표에서 나옵니다.
점검표 — 규칙 표의 네 줄과, 상태가 바뀌는 순간 하나
- ☐창을 닫아 두면 표시등이 꺼져 있는가?
- ☐창을 연 직후에는 초록으로 켜지는가?
- ☐10분이 지나고 교실이 따뜻하면 노랑으로 바뀌는가?
- ☐10분이 지나고 교실이 추우면 빨강으로 깜빡이는가?
- ☐빨강인 상태에서 창을 닫으면 곧바로 꺼지는가?
「빨강인 상태에서 창을 닫으면」 항목은 표에 없던 것입니다. 상태가 바뀌는 순간은 표의 한 줄만 봐서는 드러나지 않으므로, 점검표를 만들 때 따로 챙겨야 합니다.
확인이 끝나면 보완할 것을 정합니다. 다만 보완에서는 기능을 더 붙이는 일보다 해 보니 드러난 문제를 고치는 일이 먼저입니다.
| 드러난 문제 | 고칠 방법 | 그래도 남는 것 |
|---|---|---|
| 창을 살짝 흔들 때마다 초록과 꺼짐이 빠르게 바뀐다 | 몇 초 동안 계속 열려 있을 때만 열린 것으로 본다 | 정말로 잠깐 열었다 닫는 경우는 기록에 남지 않는다 |
| 겨울에는 늘 빨강이라 아무도 쳐다보지 않는다 | 기준 온도를 계절에 맞게 바꾼다 | 기준을 누가 언제 바꿀지 정해 두지 않으면 그대로 남는다 |
| 햇빛이 드는 자리에 온도 센서가 있어 실제보다 높게 나온다 | 센서를 그늘진 곳으로 옮긴다 | 옮긴 자리가 교실 전체를 대표한다는 보장은 없다 |
설계가 끝났다고 문제가 끝난 것은 아닙니다
표의 「그래도 남는 것」 칸을 보세요. 고칠 방법을 찾아도 남는 것이 있습니다. 이것은 설계를 잘못해서가 아니라, 실제 세상을 다루는 시스템이 대개 그렇기 때문입니다. 좋은 설계는 남는 것이 없는 설계가 아니라, 무엇이 남는지 아는 설계입니다.
점검표의 「빨강인 상태에서 창을 닫으면」 항목처럼 상태가 바뀌는 순간을 확인하는 항목을 하나 더 만들어 보세요. 규칙 표의 어느 두 줄 사이를 오갈 때인가요?
스스로 설계하기
이제 직접 해 볼 차례입니다. 아래 상황 가운데 하나를 고르거나, 학교생활에서 겪은 불편을 직접 가져와도 좋습니다. 부품을 구할 수 있는지는 고려하지 마세요. 이 실습에서 만드는 것은 기계가 아니라 설계입니다.
고를 수 있는 상황 1
급식실 앞 줄이 길어 언제 가야 할지 몰라 헛걸음을 한다.
고를 수 있는 상황 2
마지막에 나가는 사람이 교실의 불과 냉난방을 끄는 것을 자주 잊는다.
고를 수 있는 상황 3
우산을 두고 온 날에 비가 와서, 나가기 전에 미리 알 방법이 필요하다.
채워 볼 것
- 1단계 — 원래 하던 일 · 현재 상태 · 목표 상태를 한 줄씩. 목표 상태에 해결 방법을 미리 넣지 않았는지 다시 읽어 보세요.
- 2단계 앞 — 무엇을 알아야 하는지, 무엇을 해야 하는지를 적고 그에 맞는 입력 장치와 출력 장치를 고릅니다. 고른 이유도 함께 적으세요.
- 2단계 뒤 — 「무엇이 어떠하면 무엇을 한다」 표를 만듭니다. 다 적은 뒤 빈 곳과 겹치는 곳을 확인하세요.
- 통신 물음 — 이 값을 남에게 보낼 필요가 있습니까? 없다면 사물 인터넷으로 만들지 않아도 됩니다. 있다면 누구에게, 왜 보내는지 적으세요.
- 모으지 않을 것 — 만들 수는 있지만 일부러 모으지 않기로 한 데이터를 하나 정하고, 왜 그렇게 정했는지 적으세요.
- 4단계 — 점검표를 만듭니다. 표의 각 줄에서 하나씩, 그리고 상태가 바뀌는 순간을 확인하는 항목을 하나 더.
「모으지 않을 것」을 빠뜨리지 마세요
무엇을 모을지는 만들기 전, 설계할 때 가장 크게 정해집니다. 급식실 앞 줄의 길이를 세는 데는 사람 수만 있으면 됩니다. 누가 서 있는지까지 알 수 있는 장치를 골랐다면, 필요하지 않은 것까지 모으고 있는 셈입니다. 모으지 않은 데이터는 새어 나갈 수 없습니다. 이 선택은 설계할 때 해 두어야 합니다. 만든 뒤에는 바꾸기 어렵습니다.
다 채운 설계를 옆 사람과 바꿔 읽어 보세요. 상대의 규칙 표에서 빠진 줄을 하나 찾아 줄 수 있나요?
핵심 정리
피지컬 컴퓨팅 시스템
- 입력 장치가 측정하고, 처리 장치가 규칙에 따라 판단하고, 출력 장치가 내보낸다.
- 여기에 통신하는 부분이 붙어야 사물 인터넷 시스템이 된다.
- 「이 값을 남에게 보낼 필요가 있는가?」를 물어 보고 정한다.
설계의 네 단계
- 문제 이해와 분석 → 시스템 구상 → 만들기 → 확인과 보완.
- 부품부터 고르면 가진 부품으로 할 수 있는 일을 문제로 삼게 된다.
- 목표 상태에는 「무엇이 되기를 바라는가」까지만 적고 방법은 다음 단계로 미룬다.
동작 규칙 표
- 「무엇이 어떠하면 무엇을 한다」 형태로 빠짐없이 적는다.
- 다 적은 뒤 빈 곳과 겹치는 곳을 확인한다.
- 표의 각 줄이 프로그램의 한 조각이 되고, 점검표의 뼈대가 된다.
확인과 보완
- 상태가 바뀌는 순간은 표의 한 줄만 봐서는 드러나지 않으므로 따로 챙긴다.
- 고칠 방법을 찾아도 남는 것이 있다. 좋은 설계는 무엇이 남는지 아는 설계다.
- 모으지 않기로 한 데이터는 설계할 때 정해 둔다. 만든 뒤에는 바꾸기 어렵다.
확인 퀴즈
배운 내용을 확인해 봅시다.
피지컬 컴퓨팅 시스템을 사물 인터넷 시스템이라고 부르려면 무엇이 더 있어야 할까요?
목표 상태를 「창이 열린 지 10분이 지나면 스피커에서 소리가 난다」로 적었습니다. 무엇이 문제일까요?
동작 규칙 표에 「열린 지 10분 이상, 18°C 미만」과 「열린 지 20분 이상」이 함께 있습니다. 무엇이 문제일까요?
급식실 앞 줄의 길이를 알려 주는 시스템을 설계합니다. 모으지 않는 편이 나은 데이터는?