들어가기 전에
자바는 IoT를 통해 사물의 동작을 제어하는데에도 사용할 수 있습니다.
이번 강의에서는 라즈베리파이를 통해 자바로 전구의 동작을 제어하는 앱을 봅니다.
학습 목표
자바로 전구의 동작을 제어하는 앱을 어떻게 만드는지 확인합니다.
핵심 단어
- 라즈베리파이
- IoT
강의 듣기
들어가기 전에
자바는 IoT를 통해 사물의 동작을 제어하는데에도 사용할 수 있습니다.
이번 강의에서는 라즈베리파이를 통해 자바로 전구의 동작을 제어하는 앱을 봅니다.
학습 목표
자바로 전구의 동작을 제어하는 앱을 어떻게 만드는지 확인합니다.
핵심 단어
강의 듣기
사물인터넷
컴퓨터는 시대가 바뀌면서 속도가 빨라지고, 비용이 저렴해지고, 크기가 작아져 왔습니다.
이 세 가지 특성이 일정 단계에 도달했을 때 사회적으로 큰 변화를 이끌어 왔습니다.
컴퓨터는 빠르고 저렴해지고 크기가 작아지면서 이제는 작은 전구에도 들어갈 수 있을 정도가 되었습니다.
전구에 작은 컴퓨터가 들어갈 수 있다면, 그 컴퓨터에 자바를 설치해서 프로그램을 넣어서 프로그램으로 제어하는 스마트 전구를 만들 수 있게 됩니다.
이 컴퓨터에 통신기술도 포함시키게 된다면, 이것을 사물을 인터넷으로 연결되어 프로그램으로 제어하는 사물인터넷, 즉 IoT(Internet of Things)라고 부르게 됩니다.
자바로 사물을 제어하기
이번 시간에는 라즈베리파이라는 작은 컴퓨터를 이용하여 자바로 전구의 동작을 제어하는 앱을 살펴봅니다.
라즈베리파이는 작고 가격이 비싸지 않은 교육용 컴퓨터입니다.
여러 구성 요소 중 전류를 흐르게 할 수 있는 GPIO(General Purpose Input Output)가 있는데,
각각의 핀들은 프로그램으로 전류의 흐름을 제어할 수 있습니다.
이를 응용하여 원하는 시간에 화분에 물을 주거나,
원격으로 조명을 켜는 등 세상의 수많은 사물을 기계적이고 자동화된 방법으로 제어할 수 있게 됩니다.
이번에는 Hello World 중 "Hell"부분의 모스부호 대로 LED전구를 점멸하게 하는 앱을 살펴 봅니다.
HelloWorldRaspberryPi.java
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
public class HelloWorldRaspberryPi {
public static void main(String[] args) throws InterruptedException {
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "PinLED", PinState.LOW);
final int SHORT_INTERVAL = 200;
final int LONG_INTERVAL = SHORT_INTERVAL * 3;
final int LETTER_INTERVAL = SHORT_INTERVAL * 7;
while (true) {
// H
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LETTER_INTERVAL);
// e
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LETTER_INTERVAL);
// l
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(LONG_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LONG_INTERVAL);
// l
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(LONG_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LONG_INTERVAL);
}
}
}
라즈베리파이의 커널에서 다음과 같은 명령어를 입력하여 HelloWorldRaspberryPi 앱을 실행합니다.
javac -cp ".:/opt/pi4j/lib/*" HelloWorldRaspberryPi.java ; java -cp ".:/opt/pi4j/lib/*" HelloWorldRaspberryPi
생각해보기
1) 배운 것들로 해보고 싶은 것을 댓글로 공유해 보세요
참고자료
https://ko.wikipedia.org
https://ko.wikipedia.org
comment
현관문 앞에 서면 자동으로 저를 인식해서 문을 열어주는 시스템을 만들고싶어요
스마트팜
불면증 해결하고 싶다.
아직은 상용화는 좀 이르지만 확실히 조그마한 컴퓨터, 3D 프린터 등 4차 산업혁명의 시대가 도래하면 집에서 제품을 만드는 것도 머지 않은 일이네용!
세탁기 제어!
거대한 가능성에 한 발 내딛었다니,,, 너무 설레요ㅜㅜ
1) 배운 것들로 해보고 싶은 것을 댓글로 공유해 보세요
제 이름도 한번 해보고 싶네요. 그리고 여기 있는 댓글을 읽어보았는데 여기 있는 댓글들을 합쳐 멋진 집을 만들어보고 싶습니다.
버튼을 누르면 집 형광등이 꺼지는 시스템을 만들고 싶다.
외출하고 들어올 때 엘레베이터를 예약할 수 있는 시스템을 만들고 싶어요
혼자사는 경우 퇴근할때 불이 꺼져있으면 적막한데
현관쪽에 센서를 달아서 들어오는 동시에 불들이 켜졌으면 하네요
또한 밖에 외출할때 현관문을 나서면 전기가 다 꺼지는 기능도 넣고 싶네요 ㅎ
장애인분들을 위하여 장애인들이 좀 더 편하게 편의시설을 이용할 수 있도록 만들고 싶습니다.
휴대폰, 태블릿 등의 배터리가 100퍼센트가 되면 충전기 케이블의 전력을 끊어 배터리의 수명을 을려주는 장치
예전 전화 자동응답 메세지처럼 초인종을 누르는 사람의 특성에 따라 자동응답메시지가 나와서 직접 목소리로 말하지 않아도 응대할 수 있으면 좋겠습니다.
배우면서 대학교에서 배웟던 아두이노랑 비슷한부분이 많다고 느껴지네요
원격으로 창문을 여닫을 수 있으면 좋을거같아요
빛이나 충격, 소리를 통해서 인식하여 작동되는 난방시스템.
실내 온도에 따라 바람세기와 회전모드를 조절하는 선풍기.
에너지 사용 피크시간에 전기 공급 제
쓰지않는 전자기기 전력차단
개인 행동방식에 맞춘 전동칫솔/ 시간,날씨,기분 등 외부요소에 따라 변화하는 무드등..
음성으로 커텐을 열고 닫고 싶어요.