김경현

KIMGYUNGHYUN . COM

3D프린터 로봇제어를 위한 라즈베리파이

댓글 0

기술연구

2018. 7. 30.

안녕하세요.


기술이 공유되지 않으면 미래의 사회는 지금보다 더욱 폐쇄적이고 불평등한 사회가 될 것입니다. 카피레프트(copyleft)는 개인의 지적재산권을 중시하는 기존의 카피라이트(copyright)에 대항해 사회적 공유를 강조하는 정신이자 운동입니다. DIY연구소는 카피레프트(copyleft) 정신과 4차 산업기술의 확산을 위하여 연구한 내용을 무료로 배포하고 있습니다. 오늘은 '3D프린터 로봇제어를 위한 라즈베리파이' 를 공유









DIY연구소 김경현 배상 (010 8604 6802)



[교육내용]


☞ 1. 3D프린터 설계제작

☞ 2. 3D프린터 프로그램

☞ 3. 3D프린터 의수제작

☞ 4. Core XY 3D프린터 구동방식과 조립

☞ 5. Prusa i3 3D프린터 조립

☞ 6. Prusa i3 3D프린터 배선

☞ 7. 3D프린터 전기조립 기초

☞ 8. Fun i3 3D프린터 조립

☞ 9. 3D프린터 오픈소스 RepRap

☞ 10. 20만원대 교육용 3D프린터 개발

☞ 11. 3D프린터 전기자전거 개발

☞ 12. 원노즐 듀얼 3D프린터 개발



[3D프린터 로봇제어를 위한 라즈베리파이 기초]


# 공부 1. 처음 접하는 라즈베리파이


☞ 출처 : https://youtu.be/WWtXeTnUo38





 






















# 공부 2. 라즈베리파이 살펴보기


☞ 설치 : 최신버전 라즈베리파이3 B+ 설치방법 (추천)


이번 포스팅에서는 라즈베리파이3 B+ 부팅방법 및 차이점, 주의사항에 대해 살펴봅니다. 기본 준비물은 라즈베리파이 3B+, SD카드 리더기와 Micro SD카드입니다. SD카드는 16GB 이상 제품을 추천드립니다. 부팅후 출력되는 화면 확인을 위한 LCD 혹은 부팅 후 SSH 연결 전까지 사용할 수 있는 모니터 (HDMI 포트 지원)를 준비합니다. 시작하기 전에 라즈베리파이 3B+를 사용하면서 기존 3B 이전 버전과 달라진 주의사항 두가지를 확인합니다. 


1. 라즈비안 설치 시 2018-04-18 이후 버전의 라즈비안을 사용하며 최신 버전을 사용합니다.

2. WI-FI 사용 시 국가 설정을 하지 않으면 네트워크 접속이 되지 않습니다. 2018-06-27 버전부터는 첫 부팅시 관련 설정 창이 뜹니다.


라즈베리파이를 부팅하기 위해서는 라즈비안을 다운로드해 SD카드에 설치해 주어야 합니다. 이는 일반 컴퓨터에서 하드디스크에 윈도우를 설치하는것과 동일하다고 생각하시면 됩니다. 라즈비안을 다운받기 위해 아래 라즈베리파이 재단의 라즈비안 다운로드 링크로 이동해 줍니다. 그리고 최신 버전의 라즈비안을 다운로드해 주도록 합니다.


☞ https://www.raspberrypi.org/downloads/raspbian/



라즈베리파이 3B+ 출시 이후 라즈비안 버전도 같이 업데이트 되었습니다. 라즈베리파이 3B+ 출시 이전 버전의 경우 라즈베리파이 3B+와 호환이 되지 않아 부팅이 되지 않습니다. 6월 이전 버전의 경우 최초 부팅 시 기본 세팅 안내가 진행되지 않으며, 와이파이 국가 설정을 옵션에서 수동으로 해 주셔야 합니다. 이제 SD카드에 라즈비안을 설치하는 프로그램을 다운로드해 줍니다. 여기서 추천하는 프로그램은 Rufus입니다. 링크에서 다운로드 가능합니다.



위 페이지의 하단에서 최신 버전 다운로드 진행해 주시면 됩니다. Portable 의 경우 별도로 설치하지 않아도 되는 버전입니다. 이제 SD카드를 리더기에 꽂고 Rufus를 실행시켜 줍니다.



위 사진처럼 SD카드를 선택 후(자동/다른 USB 등이 인식되었을 경우 변경) 위의 [선택] 버튼을 눌러 설치할 라즈비안 버전을 선택해 줍니다.



그리고 [시작]을 눌러 진행해 주시면 됩니다.



설치 완료가 되면 위처럼 SD카드의 용량이 변경됩니다. SD카드를 빼실 때에는 화면 우측 아래의 USB 모양을 눌러 '하드웨어 안전하게 제거'를 하신 뒤 뽑아 주셔야 합니다.



위에서처럼 '하드웨어 안전하게 제거'를 하지 않고 뽑을 시 SD카드가 손상될 수 있습니다. SD카드에 라즈비안 설치가 완료되었으니 이제 본격적으로 부팅 후 기본적인 설정을 해 주도록 합니다. 라즈베리파이의 부팅 확인을 위한 LCD(HDMI 모니터 사용 가능) 및 설정을 하기 위한 키보드/마우스를 연결해 줍니다. 



모니터 및 키보드 연결이 완료되었다면 라즈베리파이에 전원을 연결해 줍니다. 라즈베리파이는 최초 부팅 시 자동으로 설정 작업을 진행하게 됩니다. 이때 강제로 전원을 차단하는 경우 정상적인 부팅이 되지 않아 라즈비안을 다시 설치해 주어야 할 수도 있습니다. 부팅 과정이 끝나면 2018-06-27 버전부터는 아래와 같은 창이 뜨게 됩니다.



위 창에서 기본적인 설정이 가능합니다. 라즈베리파이3 까지는 와이파이 국가 설정을 해주지 않아도 와이파이 사용이 가능했습니다. 하지만 3B+의 경우 국가 설정을 하지 않으면 와이파이 기능이 비활성화가 됩니다. 2018-06-27 이전 버전을 사용하는 경우 위 창이 뜨지 않아 설정 메뉴에 들어가서 수동으로 국가 설정을 해 주어야 합니다. NEXT 버튼을 눌러 진행해 줍니다.



국가, 언어, 시간대 설정입니다. 국가의 경우 korea로 변경해 주셔도 되나 현재(2018/07/27) 한국으로 설정 시 와이파이가 연결되지 않는 현상이 있어 그대로 두는 것을 추천합니다. 언어도 한글 폰트를 추가 설치하지 않으면 글자가 깨지는 현상이 발생하기 때문에 마찬가지로 그대로 두도록 하겠습니다. 타임존의 경우 설정해도 큰 문제는 없으나 여기서는 그냥 진행합니다.



패스워드 변경입니다. 라즈베리파이의 기본 유저명/패스워드는 pi/raspberry입니다. 패스워드를 바꾸시면 앞으로 패스워드 입력 시 (ssh 접속 등) 해당 패스워드를 입력합니다.



여기서는 와이파이 설정을 할 수 있습니다. 사용하실 네트워크 와이파이에 연결해 주도록 합니다. 여기서 와이파이 연결을 하지 않으면 다음 라즈비안 업데이트를 할 수 없게 됩니다. 물론 업데이트는 언제든지 할 수 있기 때문에 꼭 설정해 주지 않으셔도 됩니다. 위 과정을 스킵하고 작업을 완료하면 아래와 같이 설정 완료 화면이 나오게 됩니다.



Done를 눌러 완료해 주시면 됩니다. 위에서 진행한 설정은 아래 라즈베리파이 설정 메뉴에서 수정 가능합니다.



원격 제어 설정을 위해 위 설정 메뉴에 진입해 보도록 하겠습니다.



Interfaces 항목으로 이동해 줍니다. 여기서 SSH와 VNC를 필요에 따라 Enabled 해 주도록 합니다. SSH는 putty 같은 cmd 모드에서 라즈베리파이에 접속할 때 사용됩니다. VNC는 GUI(graphical user interface) 환경 접속을 하는 경우 사용 설정해 줍니다. 시작에 앞서 원격 제어 기능 SSH와 VNC를 라즈베리파이에서 Enabled 해 두도록 합니다.



ip 주소도 확인해 두도록 하겠습니다.



위 사진처럼 와이파이 아이콘에 마우스를 올리면 현재 라즈베리파이의 IP를 확인 가능합니다. 이제 SSH 접속 및 VNC를 이용한 GUI 연결을 차례대로 진행해 보도록 하겠습니다. SSH 통신을 위한 프로그램은 PuTTY를 사용하도록 합니다


https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


위 링크로 이동해 프로그램을 다운로드해 줍니다.



여기서 붉은 박스 안의 설치/실행파일을 사용하는 윈도우 버전에 따라 다운로드해 줍니다. 설치/실행 시 매우 심플한 PuTTY 창을 확인할 수 있습니다. SSH가 기본으로 선택되어있으며, 위에서 확인한 IP를 적고 접속합니다. 



같은 네트워크 안에서 접속해 주어야 하며, 첫 접속시 나오는 보안 경고를 넘기면 아래와 같은 로그인 창이 뜨게 됩니다.



Password를 바꾸지 않았다면 기본 로그인 값은 ID : pi / Password : raspberry, 위 ID/password를 입력합니다.



위와 같이 터미널 창이 뜨면 정상적으로 접속 된 것입니다. 이번에는 VNC로 접속해 보도록 하겠습니다. 우선 realVNC viewer를 설치해 주어야 합니다.


https://www.realvnc.com/en/connect/download/viewer/windows/



위 페이지를 확인하시면 다양한 환경에서 VNC 접속을 지원하고 있습니다. 윈도우용 Viewer를 다운받아 설치하셔도 되나, 여기서는 크롬 app를 이용해 보도록 하겠습니다. 다만, 크롬 브라우저가 설치되어 있어야 합니다. 위 페이지에서 크롬을 선택해 이동해 줍니다.


https://chrome.google.com/webstore/detail/vnc®-viewer-for-google-ch/iabmpiboiopbgfabjmgeedhcmjenhbla


realVNC viewer 페이지입니다.



설치 후 실행해 주시면 됩니다. 첫 설치 이후에는 chrome://apps/ 경로에서 설치된 크롬 앱을 실행 가능합니다.



realvnc viewer를 실행 후 IP 주소 : port를 적어 줍니다. 기본 포트는 5900입니다. 포트 확인(SSH 사용)



명령어 : netstat -tnlp, 22번이 SSH, 5900이 VNC입니다.



접속에 성공하면 위와 같이 로그인 화면이 뜨며, SSH와 마찬가지로 ID : pi / Password : raspberry 를 입력해 주시면 됩니다. 접속이 성공적으로 완료된다면 아래와 같은 접속 화면이 뜨게 됩니다.



화면이 너무 작아 불편할 경우 해상도를 변경하는 것도 가능합니다. realVNC 해상도 변경.


설정 창에서 Set Resolution... 을 선택해 주신 뒤



목록에서 원하는 해상도를 선택, 적용해 줍니다.




적용 후 자동으로 재부팅을 해 주게 됩니다.




재부팅 후 변경된 해상도가 적용된 화면입니다. 원격 접속을 이용하면 라즈베리파이와 컴퓨터를 동시에 사용할 때 별도의 추가 키보드, 모니터 없이 간편하게 제어할 수 있는 장점이 있습니다. 




이번에는 매우 쉽고 간단하게 IOT 환경을 구축할 수 있는 Blynk라는 앱을 간단히 설치/사용해 보도록 하겠습니다. Blynk는 아두이노, 라즈베리파이같은 환경에서 사용할 수 있으며, 스마트폰 앱을 통해 쉽게 데이터를 전달받거나 전송/제어할 수 있도록 되어 있습니다. 이를 이용하면 스마트폰과 라즈베리파이간의 제어, 데이터 전송을 간단히 구현할 수 있습니다. 단, 앱의 버튼/데이터 수신 LCD 등의 위젯을 추가하는데는 일정량(200~500)의 에너지라는 화폐가 필요하며 이는 위젯을 추가시 줄어들고 위젯을 삭제하면 다시 충전됩니다. blynk는 가입 시 기본으로 2000의 에너지를 제공하기 때문에 간단한 기능 구현은 무료로 이용할 수 있습니다. 스마트폰에 Blynk 설치 및 라즈베리파이에 C(C++) 언어 및 Python 프로그램을 다운로드하여 실행해 보도록 하겠습니다. Blynk의 홈페이지는 아래 링크에서 확인 가능합니다.


https://www.blynk.cc


전용 앱은 구글/앱 스토어에서 다운로드할 수 있습니다. 각 스토어에서 blynk로 검색해 앱을 설치해 주도록 합니다.



설치가 완료되면 아래와 같은 로그인/신규 가입 창이 뜨게 됩니다.



첫 실행이니 계정을 새로 가입해 주도록 합니다. Create New Account를 눌러 메일 수신이 가능한 이메일 주소와 패스워드를 입력해 새로운 계정을 만들어 주면 됩니다. 이때 입력한 이메일로 Blynk와 스마트폰을 연동할 때 필요한 인증토큰을 받을 수 있습니다. 로그인을 한 뒤 새로운 기기를 등록(신규 프로젝트 개설) 해 주도록 합니다.



라즈베리파이를 선택하고 프로젝트 이름을 입력한 뒤 Create를 눌러 작성해 주시면 됩니다. (3B+가 없으므로 3B로 진행하시면 됩니다.) 여기까지 하셨다면 잠시 후 인증토큰 번호를 이메일 받게 됩니다.



위와 같이 이메일이 오면 삭제하지 말고 저장해 두시면 됩니다. 이제 라즈베리파이에 Blynk를 설치, 실행해 보도록 하겠습니다. 

C/C++을 사용하는 리눅스 버전을 설치/사용하는 방법입니다.


https://github.com/blynkkk/blynk-library/tree/master/linux


위 github 링크를 참고해 주시면 됩니다. 라즈베리파이에 git, wiringpi가 설치되어 있다는 가정 하에 진행하도록 하겠습니다. 첫 번째로, github에 있는 프로젝트 파일을 다운로드해 줍니다. 명령어는 git clone 입니다.


https://github.com/blynkkk/blynk-library.git 



다운로드가 되었다면 blynk의 linux 디렉터리로 이동해 줍니다. cd blynk-library/linux



아래 사진에 있는 main.cpp 파일에 동작을 추가하여 기능들을 구현할 수 있습니다.



make 명령으로 컴파일을 해 주도록 하겠습니다. 명령어는 make clean all target=raspberry 입니다. 여기까지 하셨다면 완료입니다. blynk를 실행하는 명령어는 sudo ./blynk --token=YourAuthToken 입니다. 여기에 이메일로 받은 Auth Token을 YourAuthToken 대신 넣어 실행시켜 주면 동작하게 됩니다.



make 명령 대신 ./build.sh raspberry를 입력해도 컴파일이 가능합니다.



참고) C/C++ 예제 파일은 아래 링크에서 확인 가능합니다.


https://examples.blynk.cc/?board=Raspberry%20Pi&shield=System%20default&example=GettingStarted%2FBlynkBlink


다만, stdout.println가 컴파일 에러가 날 경우 해당 함수를 printf로 바꾸고 \n (줄바꿈)을 추가해 주면 동작시킬 수 있습니다.


Python을 사용하는 리눅스 버전을 설치/사용하는 방법입니다.


https://github.com/vshymanskyy/blynk-library-python


위 Github 링크를 참고하여 주시면 됩니다. 라즈베리파이에서는 python 사용이 비교적 간편하여 python 버전을 사용해 볼 예정입니다. 다만, 해당 버전은 0.1.3 / Beta버전으로 기능의 일부만 지원하고 있습니다. 해당 라이브러리 설치 방법은 pip를 사용해 간단히 진행할 수 있습니다. sudo pip3 install blynk-library-python 을 입력해 줍니다.



이때, python3을 쓰는 경우 pip3, python2를 사용하시면 pip 혹은 pip2를 입력해 주시면 됩니다. 라이브러리가 설치되었다면 Python 코드를 작성해 주어야 합니다. 코드는 위의 github 링크의 Usage에서 확인 가능합니다.


https://github.com/vshymanskyy/blynk-library-python


혹은 git clone https://github.com/vshymanskyy/blynk-library-python 를 입력해 파일을 다운로드 한 뒤 해당 경로 안의 example 디렉토리에 있는 예제 코드를 실행해 주어도 됩니다. 여기서는 직접 샘플 코드를 작성하도록 하겠습니다. nano 편집기를 이용해 파일을 생성, 예제 코드를 복사- 불여 넣기 해 줍니다. nano blynk.py 를 입력해 파일을 생성해 줍니다.



그리고 예제 코드를 불여 넣기해 준 뒤 YourAuthToken에 이메일로 전달받은 Auth Token을 입력해 준 뒤 [컨트롤 + O]를 누르고[Y] 선택후 저장, [컨트롤 + X]를 눌러 종료해 줍니다.



이제 실행해 보시면 됩니다. 명령어는 sudo python3 blynk.py 입니다.



아래와 같이 실행이 되면 정상 작동입니다.



이제 라즈베리파이에 프로그램을 실행시켜둔 상태로 스마트폰 앱 설정을 해 보도록 하겠습니다. 실행해 둔 파이썬 예제 코드입니다.



코드를 참고하시면 Viryual pin을 2개 사용하고 있습니다. 이에 맞춰 버튼(write)과 LCD(read)를 추가해 주도록 하겠습니다. 스마트폰 앱으로 이동해 위젯을 추가해 줍니다.



추가할 위젯은 각각 Button과 Value Display입니다.


  



위젯 추가가 되면 각각의 위젯을 눌러 아래와 같이 설정해 줍니다.


   



그리고 마지막으로 삼각형 모양 시작버튼을 눌러주시면 실시간 연동이 시작됩니다.



동작은 아래와 같이 확인 가능합니다.


   



Display에서 설정한 시간마다 time.ticks_ms 값을 읽고, 버튼을 누르면 Write 함수가 호출되어 해당 버튼의 값을 라즈베리파이에서 읽게 됩니다. 또한 examples 디렉터리의 07_user_task.py 예제에서는 일정 시간마다 스마트폰으로 데이터를 전송할 수 있습니다. 위에서 실행한 Blynk 및 라즈베리파이의 GPIO 제어(릴레이보드) 등을 이용하면 어디서든 라즈베리파이의 상태 및 연결된 모듈 상태를 읽어오거나 제어할 수 있는 IOT 환경을 간단히 구현할 수 있습니다. 


☞ 설치 : 최신버전 라즈베리파이3 B+ 한글설치


































☞ 설치 : 최신버전 라즈베리파이3 B+ 기본명령어 운용체제 사용방법













































☞ 출처 : https://youtu.be/-lErN7o2V4g (이전버전)























# 공부 3. 라즈베리파이 아두이노 제어하기


☞ 출처 : https://youtu.be/UyE6GjVQsKo


















































# 공부 4. 라즈베리파이 안드로이드 연결하기


☞ 출처 : https://youtu.be/YxhB1bAtVnY



























































[3D프린터 로봇머리 (기계) KIT :  구입]







사업자 정보 표시
| | | 사업자 등록번호 : -- | TEL : -- | 사이버몰의 이용약관 바로가기