컴퓨터의 역사는 크게 3가지로 발전했습니다. 첫 번째, 빨라집니다. 두 번째, 싸집니다. 세 번째, 작아집니다. 이런 3가지의 발전이 특이점에 다다르게 되면 우리 인간의 삶에는 큰 변화가 다가왔습니다. 예를 들어볼까요.
여기 전구가 하나 있습니다. 만약 컴퓨터가 냉장고 만하고, 가격이 100만원이라면 컴퓨터를 전구 안에 넣을까요? 안 넣겠죠. 그런데, 컴퓨터가 싸지다가 드디어 5천원 컴퓨터가 나오고 크기가 손톱만해진다면, 전구에 컴퓨터를 내장하는 것이 가능해질겁니다. 전구에 컴퓨터를 내장하게 된다면, 그 컴퓨터에 자바를 깔고, 자바로 만들어진 프로그램을 설치한다면, 단순한 전기 제품이었던 전구는 프로그래밍적으로 제어되는, Programmable한 스마트한 전구가 됩니다. 이것은 현재입니다. 이것을 우리는 사물이 인터넷에 연결되어 제어된다는 뜻으로 IoT 사물인터넷이라고 부릅니다.
지금 보고계신느 것은 라즈베리라는 것입니다. 가격은 5만원 정도 하구요. 리눅스와 같은 운영체제가 설치되어 있습니다. 그리고, 본질적으로는 평범한 컴퓨터입니다. 그냥 작고, 싸다는 특징이 있는 컴퓨터인 것이죠. 물론 이것보다 훨씬 싸고 훨씬 작은 컴퓨터들도 있습니다. 아마 라즈베리는 교육용으로 만들어진 사물인터넷이라고 생각하시면 됩니다. 이 장치에는 GPIO라고 불리는 우측 하단에 핀들이 있습니다. 우리는 Java를 통해서 몇번 핀에 전기를 흐르게 하라!는 명령을 내릴 수 있습니다. 상상을 해 볼까요. 우리는 원하는 시간에 화분에 물을 줄 수 있구요. 지구 반대편에서 우리 집 전구를 킬 수 있습니다. 이 세상에 있는 수많은 사물들을 전기적으로 통제할 수 있게 되는 겁니다. 물론 여러가지 공부를 해야하기 때문에 우리는 단순하게 이 컴퓨터에 연결된 전구를 켜보는 것을 해볼 겁니다.
단순히 불을 켜는 것이 아니라, Hello를 모스부호로 표현해볼 겁니다. 지금 라즈베리 컴퓨터에 다음과 같이 주변기기를 연결했습니다. 다음은 제가 지금 보고있는 라즈베리 컴퓨터 화면입니다.
저는 여기서 HelloWorldRasberryPi.java라는 파일을 만들고 다음과 같은 내용의 java 프로그램을 작성했습니다.
여기에 작성된 java는 우리가 아직 배우지 않았기 때문에 모르지만 한국말은 서로 이해할 수 있잖아요. 설명을 들어보시죠. 여기 가운데 보시면 pin이라는 문구가 보입니다. GPIO에 해당하는 pin의 특정한 부분에 전기가 흐르게 됩니다. 그러면 전기가 켜지게 됩니다. 그리고 아래에 SHORT_INTERVAL이 있는데 우리가 위에서 200이라고 지정해두었습니다. 즉, 0.2초만큼 불이 켜지게 되는 겁니다. 0.2초가 지난 다음에 다음이 실행되는데 전기가 끊기게 됩니다. 불이 켜졌다 꺼졌다를 반복하면서 모스부호의 H라는 텍스트를 표현하는 겁니다. 이런 방식으로 모스기호를 LED로 표현할 수 있게 되는 겁니다. 그러면 제가 짠 이 코드를 실행할 건데, eclipse를 통하지 않고 java를 직접 실행시켜 볼겁니다.
javac - cp 라는 명령은 compile하라는 명령이구요, 그 뒤에는 해당하는 파일을 실행하라는 명령입니다. 이해하려고 하지 마시구요. 한국말만 이해하시면 됩니다. 그렇게 했을 때 어떻게 되는가를 보여드리겠습니다.
다음과 같이 우리가 작성해 두었던 java에 맞추어서 전구가 깜빡거리는 것을 알 수 있습니다. 우리는 매우 간단한 일을 했습니다만, 여러분 상상력을 발휘해서 우리가 할 수 있는 일들을 상상해보면, 엄청난 일들을 할 수 있습니다. 예전에는 이런 일 조차 아무나 할 수 있는 일이 아니었습니다. 그러나 세상은 점점 더 적은 노력, 점점 더 적은 시간과 비용을 통해서 이런 일을 할 수 있도록 변해가고 있습니다. 이런 시대에 이런 공부를 할 수 있게 된 여러분은 아주 행운이라고 생각합니다.
'[생활코딩] Server > JAVA1(기초)' 카테고리의 다른 글
생활코딩 JAVA 1_안드로이드 애플리케이션 만들기 (0) | 2023.04.28 |
---|---|
생활코딩 JAVA 1_데이터 {타입, 연산, 표현, 다루기, 변환} (0) | 2023.04.28 |
생활코딩 JAVA 1_데스크톱 애플리케이션 만들기 (0) | 2023.04.27 |
생활코딩 JAVA 1_Java의 동작원리 (0) | 2023.04.27 |
생활코딩 JAVA 1_Java의 동작원리 (0) | 2023.04.27 |