임베디드를 좋아하는 조금 특이한 개발자?

[자작 Arduino Uno 제작] 자작 Arduino Uno 완성 본문

Project/자작 Ardunio 제작

[자작 Arduino Uno 제작] 자작 Arduino Uno 완성

Gordon_ 2026. 3. 7. 01:40

1. 서론

  지금까지 많은 과정들을 거쳐 마지막으로 Arduino Uno를 완성하는 단계에 도달 했습니다. 마지막으로 Arudino Uno를 완성하고 동작시켜 하나의 완성된 자작 Arudino Uno를 제작을 마무리 하겠습니다.

정상적으로 제작된 PCB

 

2. Arduino Uno 납땜

  저는 이번에 대부분의 부품을 SMD package로 주문하였습니다. 그 이유는 SMD package가 크기가 작아 보드의 공간 활용이 좋으며 PCB를 관통하지 않으므로 PCB 디자인하기에도 좋습니다. 하지만 딱 하나의 단점이 있는데 직접 남땜하기 힘듭니다. 그래서 대부분의 사람이나 공장에서는 스텐실(Stencil)이라는 철판으로 납땜이 되어야하는 부분 위에 크림납을 펴 발라 납떔을 합니다.

https://www.youtube.com/watch?v=YvVeDbBfiho

 

  하지만 저는 돈이 없고 단순히 취미로 하는 사람으로 손으로 직접 남땜을 할 예정입니다.

납땜이 완료된 Arudino Uno

 

 위와 같이 Arudino Uno의 남땜을 완료 하였습니다.

 

3. Arduino Uno 펌웨어 다운로드 및 Fuse 설정

  Arduino Uno 에는 2개의 MCU가 있습니다. ATmega16u2는 Host 컴퓨터한 스케치를 ATmega328에 다운로드하는 MCU이며, ATmega328은 다운로드 받은 스캐치를 직접 실행하기 위한 MCU입니다. 그러므로 2개의 MCU가 목적에 맞는 동적을 하기 위해 펌웨어를 미리 다운로드 해야합니다.

 

  그전에 정상 작동하는 Arudino Uno에서 펌웨어를 미리 확보하도록 하겠습니다.  다행이도 정품 Arudino Uno는 각 MCU를 쉽게 접근할 수 있도록 ISP 핀을 별도로 제공하고 있습니다. 

그리고 위 ISP로 펌웨어를 다운로드 및 Fuse를 확인하도록 하겠습니다.

 

AVR ISP 프로그래머

https://www.devicemart.co.kr/goods/view?no=12371719

https://www.devicemart.co.kr/goods/view?no=1077890

 

3.1 ATmega16u2 설정

- ISP 연결 확인

 

- Fuse 확인

 

- 펌웨어 다운

ArduinoUno_ATmega16u2.hex
0.04MB

 

3.2 ATmega328 설정

- 연결 확인

 

- Fuse 확인

 

- 펌웨어 다운

ArduinoUno_ATmega328.hex
0.07MB

4. 정상 동작 확인

void setup() {
  Serial.begin(115200);

  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  Serial.println("LED is on!");
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("LED is off!");
  delay(1000);
}

 

스케치 정상 업로드 확인

 

 

LED 및 Serial 통신이 정상적으로 동작함을 확인했습니다. 그렇다는 것은 대부분의 기능이 동작할것으로 예상됩니다.

 

5. 결론

지금까지 단순히 완성된 하드웨어를 기반으로 프로그래밍을 해왔던 저에게 하나의 동작하는 개발 보드를 제작했다는 경험은 더 임베디드 환경을 이해할 수 있는 개발자가 된 것 같은 기분을 느낍니다. 이번 포스트를 통해 Arudino Uno 보드 제작을 완성하고 더나아가 SBC를 제작할 수 있는 개발자로 도약할 것입니다.