🚀 [왕초보 입문 시리즈] IoT 보안, 첫걸음 떼기/아두이노 해킹 (DIY)

[Step. 2] 코딩으로 현실을 제어하다! LED 깜빡이기

withSECU 2025. 9. 2. 12:52

IoT 해킹의 첫걸음, 아두이노 DIY로 LED를 제어해 보세요! 부품 준비부터 회로 연결, 코드 작성과 업로드까지. 내 손으로 직접 만드는 첫 IoT 장치, 지금 바로 시작합니다.

✨ 드디어 시작된 진짜 실습!


안녕하세요! 지난 2편에서 개발 환경 설정을 무사히 마치신 여러분, 진심으로 축하합니다! 이제 여러분의 생각(코드)으로 현실의 사물을 움직이게 할 모든 준비가 끝났습니다.

오늘은 가장 간단한 코드로 책상 위의 작은 불빛을 제어하며, "내가 코딩으로 무언가를 해냈다!"는 짜릿한 성취감을 맛보는 시간을 갖겠습니다.



💡 원리 이해하기: 컴퓨터는 어떻게 불을 켤까?


LED를 켜고 끄는 원리는 방 스위치를 켜고 끄는 것과 똑같습니다. 아두이노는 특정 핀(금속 다리)에 전기를 보내거나(HIGH) 끊는(LOW) 방식으로 신호를 제어합니다. 이 간단한 원리를 이용해 LED를 1초 간격으로 켜고 끄는, 즉 '깜빡이는' 동작을 만들어 보겠습니다.

【 LED 만들기 부품목록(준비물) 】

 

🛠️ 회로 구성하기: 생각의 길을 만들자


아래 회로도를 보고 부품들을 차례대로 연결해 보세요. 전기는 (+)극에서 나와 (-)극으로 흐르는 길을 만들어줘야만 작동합니다.

  • LED의 긴 다리(+)짧은 다리(-)를 확인하세요.
  • 브레드보드에 빨강, 노랑, 파랑 LED를 나란히 꽂습니다.
  • LED의 짧은 다리(-)를 브레드보드의 파란색 (-) 라인에 검은색 점퍼선으로 연결합니다.
  • LED의 긴 다리(+)와 저항을 연결합니다.
  • 저항의 반대편과 아두이노 핀을 연결합니다.
  • 빨강 LED ↔ A0 (디지털 14번)
  • 노랑 LED ↔ A1 (디지털 15번)
  • 파랑 LED ↔ A2 (디지털 16번)
  • 브레드보드의 파란색 (-) 라인과 아두이노의 GND 핀을 검은색 점퍼선으로 연결합니다.

【 LED 회로도 】



잠깐! 14번 핀은 어디에 있나요? 🤔


아두이노 우노 보드에는 디지털 핀이 13번까지만 표시되어 있습니다. 하지만 걱정 마세요! 아날로그(Analog) 핀인 A0~A5는 각각 디지털 핀 14~19번으로 사용할 수 있습니다. 저희는 A0(14), A1(15), A2(16) 핀을 사용하겠습니다.

💡LED란?

LED는 '발광 다이오드(Light Emitting Diode)'의 약자로, 전류가 흐를 때 빛을 방출하는 반도체 소자입니다. 전기 에너지를 빛 에너지로 직접 변환하기 때문에 에너지 효율이 매우 높고 저소비전력이며, 빠른 응답 속도를 가집니다. LED는 다양한 파장의 빛을 낼 수 있으며, 백색 LED의 개발로 제4의 조명 광원으로 주목받고 있고, 가로등, 신호등, 디스플레이 등 다양한 분야에서 활용됩니다. 

🔌 작동 원리

  • LED는 전류를 흘려주면 빛을 내는 반도체 소자입니다.
  • 전기 에너지를 빛 에너지로 직접 변환하여 에너지 변환 효율이 높습니다. 
  • '광반도체'라고도 불리며, 양(+)의 전기적 성질을 가진 p형 반도체와 음(-)의 전기적 성질을 가진 n형 반도체의 이종접합 구조로 이루어져 있습니다. 




🔌 주요 특징 및 장점

  • 높은 에너지 효율: 전기 에너지를 빛 에너지로 직접 변환하여 에너지 소비가 적습니다. 
  • 저소비전력: 낮은 전력으로도 충분한 밝기를 낼 수 있습니다. 
  • 긴 수명: 기존 조명에 비해 수명이 길어 유지보수 비용이 절감됩니다. 
  • 다양한 파장: 자외선부터 적외선까지 다양한 파장의 빛을 방출할 수 있어 활용 범위가 넓습니다. 
  • 높은 내구성: 외부 충격에도 강하고 내구성이 뛰어납니다. 

🔌활용 분야

  • 조명: 백열등, 형광등을 대체할 친환경 조명 광원으로 널리 사용됩니다. 
  • 디스플레이:LED TV, 스마트폰 등 다양한 디스플레이 장치에 활용됩니다. 
  • 자동차:자동차 전조등, 방향지시등 등에 사용되어 가시성을 높입니다. 
  • 기타:신호등, 비상구 유도등, 행선안내표시기, 키보드 등 다양한 전자제품과 생활용품에 적용됩니다. 

 

💻 코드로 생명 불어넣기 (아두이노 IDE)


아두이노 IDE를 열고, 아래 코드를 그대로 입력한 뒤 왼쪽 상단의 화살표(→) 모양 '업로드' 버튼을 눌러보세요.

// LED를 1초 간격으로 깜빡이는 코드

// Basic-01.LED.ino
// 3개의 LED를 1초 간격으로 순차적으로 깜빡이는 코드

void setup() {
  // 각 핀을 '출력용'으로 설정합니다.
  pinMode(14, OUTPUT);   // 14번 핀 (A0): 빨강 LED
  pinMode(15, OUTPUT);   // 15번 핀 (A1): 노랑 LED
  pinMode(16, OUTPUT);   // 16번 핀 (A2): 파랑 LED
}

void loop() {
  // loop 함수 안의 코드는 무한히 반복됩니다.
  
  digitalWrite(14, HIGH); // 빨강 LED 켜기
  delay(1000);            // 1초 기다리기
  digitalWrite(14, LOW);  // 빨강 LED 끄기
  delay(1000);            // 1초 기다리기

  digitalWrite(15, HIGH); // 노랑 LED 켜기
  delay(1000);
  digitalWrite(15, LOW);  // 노랑 LED 끄기
  delay(1000);

  digitalWrite(16, HIGH); // 파랑 LED 켜기
  delay(1000);
  digitalWrite(16, LOW);  // 파랑 LED 끄기
  delay(1000);
}

 

  • setup() 함수는 전원이 켜질 때 딱 한 번만 실행되며, 주로 핀의 용도(입력/출력)를 정하는 등 초기 설정을 담당합니다.
  • loop() 함수는 setup()이 끝난 후 무한히 반복 실행되며, 실제 동작을 담당합니다.
  • digitalWrite() 함수는 해당 핀에 전기를 보내거나(HIGH 또는 1) 끊는(LOW 또는 0) 역할을 합니다.
  • delay() 함수는 지정된 시간(1000 = 1초) 동안 잠시 동작을 멈춥니다.


🎉 첫 성공을 축하합니다!

업로드가 완료되고, 여러분이 만든 회로의 LED가 빨강-노랑-파랑 순서로 예쁘게 깜빡이고 있다면 대성공입니다!

여러분은 방금 여러분의 생각(코드)으로 현실의 사물(LED)을 제어하는, IoT의 가장 기본적이고 핵심적인 원리를 완벽하게 마스터했습니다. 이 작은 성공의 경험이 앞으로 여러분을 더 흥미로운 IoT 보안의 세계로 이끌어 줄 것입니다.

#응용실습으로 LED 3개를 동시에 제어하여 교통 신호등을 만들어보세요.