[Arduino/아두이노] 아두이노 기본 프로젝트로 보드 작동 확인해보기

 

안녕하세요~ 오늘은 세번째 시간으로 아두이노 IDE에서 제공하는 기본 프로젝트를 아두이노에 보내서 실행시켜보고, 제대로 실행되는지 확인해보며, 추가적으로 이때 발생할 수 있는 에러에 대해서 알아보도록 하겠습니다!

지금 현재 시작하는 부분은 아래와 같이 아두이노 IDE에 보드와 포트가 잡힌 상태입니다.

 

1. 기본프로젝트 만들기!

아두이노 IDE에서는 아주 간단한 여러가지 기본 프로젝트들을 제공합니다.

그리고 그중 대부분은 추가적인 부품들을 요구합니다. 가장 간단한건 LED 혹은 버저를 이용한 프로젝트 일 겁니다.

그러나 이 중 아주 간단하게 아두이노 자체 램프를 깜빡거리는 아주아주 간단한 프로젝트가 하나 있습니다.

바로 'Blink'라는 프로젝트인데요. 이 프로젝트를 이용하면 내 보드가 아두이노 IDE와 잘 연결되었는지, 혹은 내 아두이노 IDE에서 보드로 제대로 프로그램이 전달되고 실행되는지를 확인해 볼 수 있습니다.

그럼 바로 Blink 프로젝트를 만들어볼까요?

우선 File>Examples>01.Basics>Blink를 클릭합니다.

자, 이렇게 누르면 바로 새 창이 하나 뜨면서 블링크 프로젝트가 하나 생성될 것입니다.

새로 생성된 블링크 스케치

자 프로젝트 코드는 생성되었습니다. 그럼 이걸 우리는 어떻게 아두이노로 보낼까요?

 

2. 코드 검증하고 보드로 업로드하기

자, 코드가 먼저 생성되었으면 우리는 '검증(Verify)'이라는 체크 버튼을 통해서 이 코드가 제대로 잘 작성 된 것인지 확인해 볼 것입니다. 전문적인 프로그래밍 용어로는 '컴파일(Compile)'이라고도 하죠!

자, 이 버튼을 누르면 아래쪽에 검은 화면이 생기면서 오른쪽 아래 흰색 공간에서 무언가가 차오르다가 'Done compiling.'이라는 문구가 나올 겁니다. 이게 바로 컴파일이 다 되었다는 것이죠. 이렇게 떴을 경우 현재 우리가 작성한 코드는 에러가 없으며 제대로 실행가능한 코드입니다~ 라는 뜻이 됩니다.

만약에 에러가 발생하면(저는 일부러 delay함수에서 d를 지워보았습니다) 아래쪽에 빨간글씨가 뜨면서 어디가 에러가 발생했는지 알려주죠!

자, 어찌됐든 성공적으로 verify가 끝났으면, 이제 아두이노 보드로 이 실행파일을 옮겨줘서 아두이노가 실행하게 해야겠죠?

이때 쓰이는 버튼이 업로드(Upload)버튼입니다!

이 업로드 버튼을 누르면 이 소스코드가 실행파일 형태로 바뀌어서 아두이노 보드로 보내지고, 잠시 기다리면 아두이노 보드의 주황색 불빛이 깜빡거리는 걸 보실 수 있습니다!

오른쪽 아래 첫번째 하얀 박스인 Uploading...이 Done uploading으로 바뀌면 아두이노에서 불빛이 깜빡이기 시작합니다.

이렇게 불빛이 깜빡거리면 성공입니다!

여담으로 Upload 버튼을 누르면 컴파일을 진행하고 나서 바로 업로드를 하는것이니 굳이 Verify 버튼을 누를 필요 없지 않나 하시는 분들!

지금은 소스코드가 간단하니 에러가 발생할 확률이 적지만, 나중에 큰 프로젝트를 하면 지금 내가 짠 코드가 맞는지 틀린지 중간중간 확인해봐야 한답니다! 그때 쓰는것이 바로 Verify!

자, 여기까지 아두이노 개발 환경을 깔고, 보드와 연결하고, 실제로 개발환경에서 소스코드를 짜서 아두이노 보드로 보내 제대로 실행되는 것까지 살펴보았습니다. 결국 이 말은 이제부터 실제로 컴퓨터에서 짠 소스코드로 아두이노를 제어할 수 있게 되었다는 것이죠!

이제부터는 아두이노 개발 환경으로 여러 코드를 짜고, 아두이노 보드에 또 여러 부품들을 연결하여 소스 코드가 컴퓨터에서만 작동하는 것이 아니라, 실제 오프라인 환경에서도 작동되는 프로젝트를 하실 수 있게 된겁니다!

이제서야 출발선상에 섰네요!

다음에는 여러 부품들과 관련된 코드들로 찾아뵙도록 하겠습니다~

아, 물론 그전에 아두이노 연결 과정에서 가장 흔하게 발생하는 에러들을 한번 살펴보려고 합니다!

 

3. 아두이노 연결 과정에서 가장 흔하게 발생하는 에러들

1) 보드, 포트 선택 다했는데 아두이노랑 연결이 안된대요~

가장 당황스러운 오류 중 하나죠.. 보통 오류 메시지는 아래와 같습니다

스케치를 업로드 하는 동안 에러가 발생하였습니다.
An error occurred while uploading the sketch
시리얼 포트 'COM1' 를 여는데 에러 발생 (Port busy)
Error opening serial port 'COM1'. (Port busy)

이는 저번시간에 살짝 언급했던 ch340 호환 보드 즉, 아두이노 정품 보드가 아닌 흔히 말하는 중국산 짭보드(..) 일때 발생하는 에러입니다. 보통 아두이노 나노에서 가장 흔하게 발생하는데요(다른 보드들은 호환을 시켜주는데 아무래도 나노가 AVR이 작아서 그런가 나노에서 가장 흔하게 발생하네요..) 아주 간단하게 ch340드라이버를 깔아주면 해결됩니다.

ch340드라이버는 https://www.wch.cn/download/CH341SER_EXE.html에서 받으실 수 있습니다. 중국사이트라고 겁먹지 마시고, 바로 다운로드 버튼을 눌러 다운받은 뒤 설치해주시면 됩니다. 크롬의 경우 사이트 접속과 동시에 한국어로 번역해주니 더 편합니다!

 

2) 업로드까지 진행했는데, 보드에서 작동이 안돼요~

흔하지 않은 오류입니다만, 가끔씩 보드와 다른 AVR이 얹어진 경우 발생하는 에러입니다.

이때는 'Tools'>Programmer>Arduino as ISP를 지정해주시거나 이렇게 지정해도 작동하지 않으면 Arduino as ISP (ATmega32U4)를 지정해주시면 해결되는 경우가 많습니다.

 

자, 흔하게 발생하는 에러까지 살펴보았습니다! 이제 우리는 다음강의에서 보아요~

안녕~

Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
Unable to lock directory /var/lib/apt/lists/

 

Error:

Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
Unable to lock directory /var/lib/apt/lists/

 

Reason:

이미 리눅스에서 다른 소프트웨어의 업데이트가 진행중일 때 강제로 다른 소프트웨어의 업데이트를 명령하면 생기는 오류이다.

 

Solution:

이전의 업데이트를 취소하거나 여의치 않을 경우 컴퓨터를 재부팅 한 뒤 업데이트 코드를 사용한다.

(필자는 sudo ubuntu-drivers autoinstall 코드 사용시 발생한 에러였음. 이때 자동으로 기본 소프트웨어를 업데이트 하던 중이라 재부팅 하고 바로 아무 작업도 하지 않은 채 코드를 적용하였더니 문제 해결!)

에러전문

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.


원인

이 에러는 matplotlib 패키지에서 발생하는 에러입니다.

matplotlib에서 사용되는 backend가 제대로 설정되지 못하였기 때문에 발생합니다.



해결법

Mac의 터미널에서 이하의 명령어를 입력합니다.

echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

아무 결과가 출력되지 않으면 제대로 된 것입니다.

이후에 다시 실행해보면 제대로 동작하는 것을 확인할 수 있습니다.

[R/Rstudio] dlookr 패키지 설치 후 Error: package or namespace load failed for ‘dlookr’ 발생 시 대처방안

 

R studio에서 dlookr 패키지를 설치하게 되면, 가끔씩 버전과 맥OS유무에 따라 Error: package or namespace load failed for ‘dlookr’에러를 뿜는 경우가 있다.

 

전체 에러는

Error: package or namespace load failed for ‘dlookr’:  .onLoad failed in loadNamespace() for 'tcltk', details:   call: fun(libname, pkgname)   error: X11 library is missing: install XQuartz from xquartz.macosforge.org

 

XQuartz

The XQuartz project is an open-source effort to develop a version of the X.Org X Window System that runs on OS X. Together with supporting libraries and applications, it forms the X11.app that Apple shipped with OS X versions 10.5 through 10.7. Quick Downl

www.xquartz.org

인데, 여기서 XQuartz의 X11 라이브러리가 문제가 있음을 알 수 있다.

 

이 에러의 경우 다른 R 패키지에서처럼 devtools를 통하여 깃헙에서 바로 설치하는 것으로 해결되는 에러가 아니다.

[install.packages("devtools");devtools::install_github("계정/레포이름")]

 

여기서 힌트는 블로그에 올라가게되며, 링크가 자동으로 생성된 저 사이트에서 찾을 수 있다.

 

실제로 저 사이트에 들어가게되면, 맥OS에서 실행가능한 dmg파일을 다운로드 받을 수 있으며, 이 dmg파일을 실행하여 설치하면 dlookr에러는 해결된다.

보통 인코딩을 모르는 미지의 파일을 파이썬의 open()함수를 통하여 열 시에 위와같은 오류가 종종 발생한다.

 

그 이유는 파이썬은 utf-8이 기본 인코딩인데, utf-8로 해당 문서를 열려고 했더니 문제가 발생했다는 것이다.

 

이때는 open()함수의 encoding 파라미터를 통하여 인코딩 방식을 다른 방법으로 지정해 주면 파일이 열린다.

 

보통 윈도우에서 작성하거나 웹에서 긁어온 문서는 'euc-kr' 혹은 'cp949'로 대부분 해결이 된다.

 

가끔 해외에서 작성된 문서의 경우 'latin_1'인코딩도 종종 보인다.

 

즉, open("file.name", "r", encoding='euc-kr')의 식이다.

 

그러나 저 두가지 인코딩을 사용하였는데도 제대로 작동이 안되는 경우에는 인터넷에서 직접 인코딩 방식을 찾아 보아야 한다.

 

파일 인코딩 알아보기

 

파일 인코딩 확인법(How to find out file encoding)

GNU 시스템 하에서는 해당 폴더로 이동한 후에 file * 혹은 file --mime-encoding * 을 명령줄에 쳐주면 인코딩 방식이 나온다. 윈도우에서는 git bash를 깔면 gnu시스템을 이용할 수 있으므로 위와같이 해주면 되..

omnil.tistory.com

 

그런데 이 방식을 활용하여도, 인코딩은 저렇게 해놓고, 실제 내부에서 인코딩된 문서가 쓰인 방식이 다를 수 있다.

(가령 저 인코딩 방식으로 파일이 열리는데도 그 안에서도 파일이 깨져보이는 경우)

 

그때는... 답 없이 경험에 의지해서 여러 인코딩 방식을 시험해보는 수밖에 없다.

그것이 바로 위에서 말했던 latin_1, euc-kr, cp949등 이다.

 

더욱 많은 인코딩 방식은 파이썬의 공식 도큐멘테이션에 2/3 지점에 나와있다.

만일 해당 국가가 한국이 아니라 중국, 대만, 일본 등이면 그에 맞는 인코딩 방식을 하나하나 시험해보는 수 밖에 없다.

+ Recent posts