프로젝트 제작 중에 Wizarduino WiFi에서 Software Serial이 잘 작동되지 않은 적이 있었습니다.

이 문제로 몇일을 고생하고나서 해결할 수 있었습니다.

그래서 어떻게 해야 Software Serial을 올바르게 사용할 수 있는지에 관하여 같이 나눠볼까 합니다.

 

우선 Wizarduino WiFi는 크기나 외형이 arduino uno와 비슷합니다.

하지만 uno는 atmega328p를 사용하였고, Wizarduino WiFi는 mega와 같은 atmega2560를 사용했습니다.

그러므로 Wizarduino WiFi는 mega에 사용되는 예제를 사용해야 올바르게 작동을 합니다.

많은 maker들이 arduino uno나 nano를 많이 사용합니다.

mega는 성능이 좋고, 지원하는 핀이 많지만, 크기도 크고 가격도 비싸고, 실제로 사용하는 핀이 적기 때문입니다.

그래서 인터넷에서 구할 수 있는 예제들은 거의 uno를 기준으로 작성되어 있습니다.

 

저도 uno를 기준으로 작성된 Software Serial예제를 사용했었습니다.

( 이때는 uno와 mega의 호환성이 100%일거라고 생각했습니다. )

하지만 예제가 올바르게 작동하지 않았습니다.

오랜시간동안 인터넷을 검색을 하고 코드를 바꿔서 테스트 해보았지만 해결하지 못했습니다.

 

혹시 arduino 공식사이트의 라이브러리 설명에서 해답을 찾지 않을까하는 생각에 찾아보니, 작동하지 않는 이유를 알게 되었습니다.

https://www.arduino.cc/en/Reference/SoftwareSerial

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

위의 설명대로 mega에서는 RX핀은 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69)만 사용할 수 있습니다.

 

그러므로 Wizarduino WiFi에서는 RX핀은 10, 11, 12, 13만 사용할 수 있습니다.

 

이처럼 uno와 mega는 100% 호환이 되지 않습니다.

Wizarduino WiFi는 mega를 기준으로 코드를 작성해야하는 것을 꼭 기억해주세요.