IOT란?


IOT는 Internet of Things의 줄임말로 사물인터넷이라고도 말합니다.

센서가 장착된 연결된 오브젝트와 장치로 이루어진 네트워크로, 다른 사물 및 시스템과 데이터를 전송하고 수신할 수 있습니다.

우리 일상속의 IOT는 스마트워치, AI스피커, 무선이어폰 등이 있습니다.

아두이노란?


아두이노는 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경을 말합니다.

아두이노의 통합 개발 환경은 java와 c를 기반으로 개발되는 크로스 플랫폼응용 소프트웨어이며, 구문 강조, 관호 찾기, 자동 들여쓰기 기능이 포함된 에디터와 한 번의 클릭으로 컴파일과 업로드가 가능한 컴파일러 기능을 포함하고 있습니다.

우노보드 알아보기


아두이노는 많은 모델들이 존재합니다. Freeduino, Funduino, Seeeduino, Korduino, Meduino (make block), Paperduino, Boraduino 등 많은 모델들이 존재하는데, 이 중 가장 기본적이고 보편적인 모델이 아두이노 UNO 입니다.

UNO는 아래와 같이 생겼습니다.

신호는 디지털신호와 아날로그 신호 2가지로 나눌 수 있습니다.

디지털 신호는, 0과 1로 표현할 수 있는 신호입니다. 1을 전압 값으로 표현하면 5V(볼트), 0은 0V(볼트)를 의미합니다.  아두이노에서 5V는 HIGH, 0V는 LOW 값으로 표현합니다.  시간의 흐름에 따라 항상 HIGH 또는 LOW의 값을 표현하기 때문에 불연속적인 신호라고 부르는데 이는 HIGH, LOW 외에 중간 값을 가질 수 없다는 의미입니다.

아날로그 신호는, 디지털에 비해 시간에 따라 연속적인 값을 표현할 수 있습니다. 0과 1뿐만 아니라 그 사이에 있는 값인 0.1, 0.2도 표현할 수 있고 0.1과 0.2사이에 있는 0.11, 0.12도 표현할 수 있습니다. 즉, 시간에 따라 디지털신호가 HIGH,LOW 두 가지 값만 표현할 수 있었다면 아날로그 신호는 월씬 다양한 값을 표현할 수 있습니다.

💡
디지털 입력 신호 : 보통 스위치와 같이 on/off로 표현되는 신호이다. 전기가 통하면1, 전기가 통하지 않으면 0으로 인식하며 on/off의 형식의 신호를 제어기가 받는 것이다.
디지털 출력 신호 : 제어기 입장에서 어떤 장치를 켜고 싶으면 장치를 켜라고 명령하는 신호가 나간다. 디지털 출력 신호는 제어기에서 나가는 신호인데 on/off 형식의 신호가 나가는 것이다.
💡
아날로그 입력 신호 : 아날로그는 가변적인 숫자로 이루어진 신호이다. 예를 들어 현재 온도, 압력 등의 수치를 제어기로 보내는 장비가 있다면 제어기에선 아날로그 입력신호가 되는 것이다.
아날로그 출력 신호 : 보통 전등을 켤 때에는 전원을 켜거나 끄는 2가지 제어가 있다. 하지만 모든 장치가 그렇게 단순하진 않다. 모터를 돌리는 장비가 있다고 하면 모터의 속도를 빠르게 할 때도 있고 약하게 할 때도 있다.

브레드보드, 저항 알아보기


브레드보드는 아래와 같이 생긴 보드입니다.

일반적인 PCB나 만능기판과는 다르게 납땜이 필요없어 교육용이나 간단한 회로 실험용으로 많이 쓰입니다.

저항은 아래와 같이 생긴 소자입니다.

저항에는 사진에 보이다시피 띠가 그려져있는데, 이 띠의 색으로 저항값을 읽을 수 있습니다.

저항값은 아래와 같은 순서로 읽으며, 아래 표로 값을 알 수 있습니다.

아두이노 사용해보기


https://www.arduino.cc/en/software 에 접속하면 아두이노 프로그램을 다운받을 수 있습니다. 다운받고 설치하면, 아래와 같은 프로그램 화면을 볼 수 있습니다.

코드를 입력하고, 좌상단에 화살표를 클릭하면 아두이노 보드로 코드가 전송되어 실행되는 방식입니다.

아두이노와 브레드보드, 저항, LED를 활용하여 LED를 깜빡이도록 해보겠습니다.

위와같이 회로를 구성하고, 아래 코드를 실행하면 LED가 깜빡이는것을 볼 수 있습니다.

void setup() {
	pinMode (5, OUTPUT);
}

void loop() {
	digitalWrite (5, HIGH);
	delay (100);
	digitalWrite (5, LOW);
	delay (100);
}

위와같이 회로를 구성하고, 아래 코드를 실행시키면 부저에서 소리가 나는것을 볼 수 있습니다.

void setup() {
	pinMode (7, OUTPUT);
}

void loop() {
	tone(7,523);
}

위 코드와 회로를 응용하여 다음 코드로 ‘학교 종이 땡땡땡’을 연주하며 부저에서 소리가 날때마다 led를 켤 수 있습니다.

#define C 262 // 도 
#define D 294 // 레 
#define E 330 // 미 
#define F 349 // 파 
#define G 392 // 솔 
#define A 440 // 라 
#define B 494 // 시 
int notes[25] = { G, G, A, A, G, G, E, G, G, E, E, D, G, G, A, A, G, G, E, G, E, D, E, C }; 

void setup() {
  pinMode (5, OUTPUT);
  pinMode (7, OUTPUT);
}

void loop() {
  for (int i = 0; i < 12; i++) { 
    delay (150);
    digitalWrite (5, HIGH);
    tone (7, notes[i], 200); 
    delay (150);
    digitalWrite (5, LOW); 
  } 
  delay(100);
  for (int i = 12; i < 25; i++) { 
    delay (150);
    digitalWrite (5, HIGH);
    tone (7, notes[i], 200); 
    delay (150);
    digitalWrite (5, LOW); 
  } 
}