이번 포스트는 학생들이 프로젝트를 진행하면서 했던 질문에서 시작되었다.
“아두이노 나노 보드를 사용하는데 센서들이 한 번씩 비정상 동작을 합니다.”
이 질문을 듣고 생각난 것은 아두이노 나노 보드를 어떤 것을 사용했냐라는 것이다.
아두이노 나노 보드는 크게 정품 보드와 호환 보드로 나뉘고 세부적으론 호환 보드에서도 정품 보드와 부품을 비슷하게 사용했냐와 호환 부품들을 사용했냐로 나뉜다.
그래서 우리가 보통 가격으로 인해 호환 보드를 구입하게 될 것인데 이 호환 보드를 어떤 타입으로 구입했냐가 중요한 것이다.
그럼 차이가 있는지 보자.
먼저, 나노 정품 보드를 살펴보자.

위의 그림이 정품 보드인데 왼쪽은 윗면, 오른쪽은 아랫면이다.
윗면을 보면 나노 보드의 메인 마이크로컨트롤러인 ATmega328이 보인다.
이 컨트롤러는 아두이노 우노 보드와 동일한 컨트롤러로 타입만 SMD 타입이라 사용법은 동일한 컨트롤러다.(물론 SMD 타입이라 핀이 더 많아 아날로그 핀이 2개 더 있다.)
그리고 핵심인 뒷면을 보자.
뒷면은 2개의 반도체 칩이 있는데 빨간색으로 표시된 칩은 통신에 사용되는 USB to Serial 칩이고 노란색으로 표시된 칩은 외부전원 입력에 관계된 핀이다.
좀 더 자세히 보기 위해서 아두이노 홈페이지에 공개된 회로도를 살펴보자.
( https://store.arduino.cc/products/arduino-nano )

회로도를 보면 왼쪽 위의 USB라고 적혀있는 곳이 있다.
이 부분이 위에서 빨간색으로 표시된 칩에 해당하는 부분이다.
칩의 이름을 보면 FT232라고 되어 있는데 일반적으로 USB to Serial 통신에 사용되는 칩으로 FT231과 함께 대표적인 FTDI칩이다.
이 칩은 USB 통신 기능을 지원하지 않는 ATmega328을 위해 있는 칩으로 우노 보드의 ATmega16U2의 기능을 대신하고 있다고 보면 된다.
그리고 이 칩은 여기서 단순히 통신 지원에서 그치지 않고 3.3V를 출력하는 역할도 같이 수행하고 있다.
우노 보드 같은 경우는 3.3V 출력을 위해 별도의 레귤레이터를 사용하지만 나노 보드는 보드의 크기 상 추가로 레귤레이터를 넣을 수 없기 때문에 FT232의 3.3V 출력 기능을 그대로 사용하고 있다.
다만, 이때 출력되는 전류의 양이 우노 보드에 비해 작은데 50mA 정도라 만약 3.3V를 사용하는 센서나 소자를 사용할 때는 주의해야 한다.
이번에는 호환 보드를 살펴보자.

호환 보드도 윗면은 정품 보드와 거의 동일한 모습이다.
메인 컨트롤러는 조금 다르게 생겼지만 동일한 ATmega328이고 SMD 중에서 다른 패키지일 뿐이다.(정품은 ATmega328p-MUR, 호환은 ATmega328p-AU)
진짜 차이는 뒷면에 있다.
뒷면을 보면 정품 보드와 비슷한데 조금 다른게 있다.
빨간색으로 표시된 칩인데 딱 봐도 정품 보드의 FT232와는 차이가 있다.
그럼 이 호환 보드의 회로도를 보자.

회로도에서 붉은색으로 표시된 부분이 FT232와 동일한 역할을 하는 CH340 칩이다.
이 칩은 중국의 WCH 사에서 제작한 칩으로 USB to Serial 역할을 하는 저가형 칩이다.
우노 호환 보드에도 이 칩을 사용한 경우가 많은데 사용해 본 사람들은 알겠지만 꽤 문제가 많은 칩이기도 하다.
이 나노 보드에서도 조금 문제가 있는데 그 문제가 바로 3.3V에 대한 부분이다.
앞서 나노 정품 보드에서는 3.3V 출력을 FT232로 출력하게 되는데 이 호환 보드에선 CH340 칩을 이용해서 출력하게 된다.
문제는 여기서 발생하게 된다.
FT232의 경우 입력 전원이 5V 인데 내부 동작 전압은 3.3V라 칩 내부에 LDO 즉, 3.3V 레귤레이터가 탑재되어 있다.
그리고 이 3.3V 출력을 외부에서도 사용할 수 있도록 하고 있어 안정적으로 전원을 공급할 수 있다.
하지만 CH340 칩의 경우는 조금 사정이 다르다.
CH340 칩도 동일하게 5V를 입력으로 받고 내부 동작은 3.3V로 동작하기 때문에 내부에 레귤레이터가 존재한다.
다만, 이 3.3V는 내부 회로용으로 되어 있어 외부에서 사용할 때는 안정성이 떨어지는 특징이 있다.
실제로 CH340 칩에서 V3 핀이 3.3V 출력이 나온다고 하는데 회로를 보면 V3 핀에 커패시터를 부착하여 내부 레귤레이터의 안정화에 사용하고 있다.
그래서 외부에서 3.3V를 끌어다 사용할 경우 내부에 공급되는 전원이 불안정해져서 칩의 동작이 정상적이지 않는 현상이 발생한다.
거기에 출력되는 전류도 약 25mA 정도로 작기 때문에 전류 소모가 작은 소자나 센서류만 사용할 정도다.
전류 소모가 큰 센서를 부착한다면 전류를 너무 많이 끌어 쓰게 되서 칩 자체의 동작인 USB 통신도 불안정해질 수 있다.
실제 테스트를 진행했을 때 보면 30mA를 쓰는 부하를 연결했을 땐 공급 전압이 3.1V, 40mA인 경우엔 2.85V로 낮아져 안정적인 전원 공급이 부족한 것을 볼 수 있었다.
이런 현상이 가장 극단적으로 보이는 것이 나노 CH340 보드와 ESP-01 모듈을 연결해서 사용하는 경우다.( 참고자료 http://actrl.cz/blog/index.php/2016/arduino-nano-ch340-schematics-and-details/ )
이 경우 실제 전원이 부족해서 ESP-01의 전원 불빛이 아주 작게 켜지거나 꺼지게 되는 경우가 발생하면 통신이 되지 않게 된다.
그렇기 때문에 사실상 3.3V 전원은 사용이 어렵다고 볼 수 있다.
그럼 다른 전원은 괜찮을까.
두 회로도를 보면 5V 전원에 대한 회로도 있다.
정품 보드의 회로를 보면 ‘+5V REG’ 라고 표시된 부분이고 호환 보드는 CH340 칩 위의 큰 네모로 표시된 칩 부분이 5V를 출력하는 곳이다.
이 부분은 보드의 VIN 핀과 연결된 곳으로 외부에서 들어오는 전압을 5V로 변경해주는 레귤레이터에 대한 회로도다.
두 회로도에 적힌 칩을 보면 LM1117 칩을 사용하고 있다.
이 칩이 5V 레귤레이터 칩으로 스펙상으론 20V까지 입력이 가능하다고 되어 있지만 경험상 최대 9V까지 입력이 가능하다.
12V만 입력해도 레귤레이터가 발열과 함께 타는 것을 볼 수 있다.
아무튼 이 LM1117을 이용한 전원도 잘 생각해야 한다.
참고로 우노 보드의 경우 외부 전원을 5V로 변환하는 레귤레이터로 NCP1117 칩을 사용하는데 LM1117과 기능적인 면에선 동일한 칩이다.
다만, 일부 나노, 우노 호환 보드에서는 AMS 1117 칩을 사용하는 경우가 있는데 이 칩도 동일한 동작을 하지만 안정성이 낮다라는 평가가 좀 큰 칩이다.
그래서 외부 전원에 의한 발열이 좀 더 높고 칩이 타버리는 경우가 꽤 많다.
이것은 칩이 안 좋은게 아니라 AMS 1117이라는 이름으로 클론 칩이 많기 때문에 인식이 안 좋아진 것이라고도 볼 수 있다.
그런데 이 칩은 다른 칩에 비해 가격이 저렴하기 때문에 보통 CH340 칩과 함께 사용되는 경우가 만하다.
이로 인해 나노 CH340 보드는 전원 공급이 불안한 경우가 많고 그 결과 센서들의 동작이 비정상적으로 동작하는 경우가 많다는 것이다.
이번에는 나노 보드의 부트로더에 대해서 이야기해보자.
앞서 이야기한 것처럼 나노 보드를 구입하면 우리는 보통 호환 보드를 구입하게 된다.
이때 나노 보드를 구입할 때 꼭 확인해야 하는 부분이 있다.
이 부분을 보기 위해서 아두이노 IDE에서 나노 보드를 선택해보자.

위에 그림은 나노 보드를 선택했을 때 모습인데 현재 가장 많이 사용하는 버전인 1.8.19 버전과 2버전을 모두 나타냈다.
여기서 보면 나노 보드를 선택했을 때 밑에 쪽으로 프로세서라고 하는 처음 보는 목록이 나타나는 것을 볼 수 있다.
그리고 여기에 마우스를 올리면 ATmega328P가 선택되어 있고 그 아래로 ATmega328p(Old Bootloader), ATmega168이 순서대로 있는 것을 볼 수 있다.
이곳은 현재 보드의 프로세서 즉 마이크로컨트롤러를 선택하는 곳으로 기본은 ATmega328p가 선택되어 있다.
대부분은 이 기본 설정으로 해도 되지만 간혹 가다가 이 기본 설정으로 업로드를 진행했을 때 나노 보드가 먹통이 되는 경우가 발생한다.
그 이유는 이 프로세서를 잘못 선택한 것으로 먹통이 되었을 땐 다시 원상 복귀 하기가 조금 복잡하다.
이 프로세서가 나뉜 이유는 나노 보드의 버전 때문에 그런데 나노 v3.0을 기준으로 이전이 ATmega328p(Old Bootloader)를 선택해야 하고 v3.0부터는 ATmega328p를 선택해야 한다.
그리고 ATmega168 버전은 사실 볼일이 거의 없는 버전으로 이건 옛날에 나노 보드가 ATmega328대신 ATmega168을 사용했던 시절의 보드를 위한 것으로 현재는 거의 판매되지 않는 제품이다.
그래서 나노 호환 보드를 살 때는 설명 페이지에 ATmega328p(Old Bootloader)를 선택하라는 문구가 있는지를 꼭 확인해야 한다.
밑에는 실제 제품 판매 페이지에 적혀있는 문구다.

자, 이렇게 아두이노 나노 보드에 대해 정리해보았다.
여기 정리한 것처럼 사실 CH340 보드를 사용할 때는 고려해야 할 점이 꽤 있다.
물론 문제 없이 사용하는 사람들이 더 많을 것이다.
하지만 충분히 문제가 발생할 수 있다는 자료들이 있는 상황이라 굳이 조금 더 저렴하다는 이유만으로 프로젝트나 수업 진행에 변수가 될 수 있는 보드를 선택할 필요가 있을까 하는 생각이 든다.
물론 최종 선택은 자신의 판단이겠지만, 아두이노를 많이 만져보지 않은 사람이라면 변수가 작은 보드를 선택하는 것이 더 편할 것이다.
