MPU6050 모션센서에서 출력되는 데이터를 단순히 숫자들의 연속으로 보는 것 보다 이를 그래픽화해서 시뮬레이션해 본다면  훨씬 이해하기 쉬울 것이다. MPU6050 모션센서 예제에는 프로세싱이라는 그래픽 언어를 이용해서 센서의 작동을 시물레이션해 볼 수 있는 예제까지 포함되어 있다. 

 

1. 프로세싱 예제 프로그램 확인

 

 

      MPU6050_DMP6 이라는 예제프로그램을 호출한 상태에서 아두이노 IDE 메뉴 중  스케치 -> 스케치 폴더 보이기 메뉴를 선택하면 다음과 같이 Processing 용 프로그램폴더를 확인할 수 있다.  이 폴더의 경로를 기록해 둔다.

 

 

 

2. 아두이노 예제 프로그램 수정  

 

  MPU6050_DMP6 예제 프로그램에서 103번째 줄의 #define OUTPUT_READABLE_YAWPITCHROLL 문장 앞에 "//"를 추가해서 주석처리하고 120번째 줄 #define OUTPUT_TEAPOT 문장의 "//"를 제거해 준후 프로그램을 업로드 해 준다. 

 

 

3. 프로세싱측 프로그램 

 

 프로세싱 프로그램을 설치하지 않은 경우 본 블로그 다음글을 참조하여 설치한다.

 

 

프로세싱의 소개와 사용방법

1. 프로세싱  프로세싱은 그래픽 등 시각적인 효과를 위해 사용하는 프로그래밍 언어로서 MIT 미디어랩에서 Java언어를 기반으로 개발되었다. 오픈소스로 개발되었기 때문에 모든 것이 무료로 ope

makernambo.com

프로세싱 프로그램을 기동시키고 파일 -> 열기 화면에서 위에서 기록해 둔 MPU6050_DMP6 프로세싱 예제프로그램의 폴더에 있는 MPUTeapot.pde 프로그램을 선택한다.

예제프로그램이 로드되면 실행 버튼을 눌러 실행시킨다.  

 

잠시 후 ( 10초 정도 소요됨 )  화면 하단에 아두이노 측에서 넘어노는 데이터가 표시되면서 다음화면과 같이 비행기 모양의 시뮬레이션이 시작된다. MPU6050 센서를 상하좌우로 움직여 보면 화면상의 비행기도 따라 움직이는 것을 확인할 수 있다. 

 

 

 

 

1. 프로세싱

 

 

         프로세싱은  그래픽 등 시각적인 효과를 위해 사용하는 프로그래밍 언어로서 MIT 미디어랩에서 Java언어를 기반으로 개발되었다. 오픈소스로 개발되었기 때문에 모든 것이 무료로 open되어 있고, 디자이너 등 기존 프로그래밍 언어어 익숙하지 않은 사람들도 손쉽게 사용할 수 있다는 점이 장점이다.  특히 아두이노나 라즈베리파이를 사용하는 사람들의 경우에는 각종 센서들로 부터의 Data를 그래픽으로 시각화하여 표현하는 용도로 많이 사용한다. 즉 , 간단한 명령어로 버튼모양, 3D 그래픽 등 사물의 모양을 만들어 아두이노와 연결하면 그럴듯한 시뮬에이터처럼 작동되게 할 수도 있다.   

 

2. 프로세싱의 설치

         프로세싱은 개발사이트에 접속해서 직접 다운 받아 설치할 수 있다.

 

 

Download \ Processing.org

 

processing.org

다운로드 화면에는 OS종류별로 설치 프로그램이 준비되어있으므로 원하는 설치파일을 다운받는다.

압축파일 형태로 다운로드 받게되는데 이를 원하는 폴더에 압축해제하여 풀어 놓기만 하면 설치가 완료되고, 포함되어 있는 실행파일을 실행시키면 바로 기동시킬 수 있다. 

 

 

3. 프로세싱 사용방법

 

      프로세싱 프로그램을 기동시키면 다음과 같은 프로세싱 IDE 화면이 표시되는데 아두이노 IDE와 동일한 구조로서 간단 명료하게 프로그램을 작성하고 테스트해 볼 수 있다. 

 

        - 화면 최상단에는 각종 메뉴들이 메뉴바로 구성되어 있다. 

        - 다음에는 툴바가 표시되는데 프로그램을 실행 또는 중지시킬 수 있다.

        - 화면 중간의 편집창에 프로그램 소스를 작성한다.   

        - 화면 하단의 콘솔창에는 프로그램 에러 정보등 각종 메세지를 출력해 준다.   

 

  에디터창에 아무런 코드도 없는 공백상태에서 툴바의 실행버튼을 눌러보면 다음과 같은 실행결과가 화면에 표시된다.

즉 회색 배경색 화면을 기본으로 하여 사용자가 지정하는 명령에 따라 각종 도형들이나 시각적인 이미지들을 표현해 나가는 것이다.

 

size(400,400);
background(0,0,200);

 

위 두줄의 명령어를 편집창에 입력하고 실행버튼을 누르면 다음과 같이 가로세로 400px,파란색 배경을 가진 화면이 출력된다.

 

4. 예제프로그램 

       

프로세싱 IDE 메뉴에서 파일 -> 예제를 선택하면 다음과 같은 화면이 표시되는데 여기에서 Demos -> Grapphics -> Planet를 선택해서 실행시켜 본다  

 

그러면 다음과 같이 행성의 움직임을 그래픽화한 애니메이션화면이 표시된다.

 

 

 

 

 

   

1. MPU6050 6축센서 소개

 

  MPU6050 6축센서는 물체의 자세와 움직임을 계측하기 위한 센서로서  X,Y,Z 세방향 가속도측정을 위한 3축 가속도센서와 X,Y,Z 세방향 3축 자이로센서 그리고 온도센서 총 7개의 센서로 구성된 센서이다. 자세와 회전을 측정하기 위한 센서에 온도센서가 포함되어 있는 것은 센서의 측정값이 온도에 영항을 받기 떄문에 이를 보정하기 위한 용도인데 일반적인 온도에서는 편차가 거의 없기 때문에 통상 온도값은 사용하지 않는다.  비슷한 용도의 9축센서도 있는데 이것은 6축센서에 지자기센서(나침반과 같은 지구자기센서) 3축을 더한 센서이다. 이 MPU6050센서칩을 기반으로 보드형태로 모듈화 해 놓은 것이 GY-521 모듈이다.

 

2. MPU6050 PIN배열  및 아두이노와의 연결

 

 

 

 

MPU6050의 핀배열은 위와 같고 외부기기와의 접속은 I2C방식 이다. 즉 아두이노 나노일 경우  I2C 통신용 핀이 A4,A5이므로 다음과 같이 연결해 주면 된다. 

 

아두이노 기종들 중  나노 이외의 다른 기종의 I2C 통신용 핀은 다음과 같으므로 해당 핀에 연결해 주면 된다.

 

 3. 라이브러리 설치  

 

별도의 라이브러리 없이도 I2C 방식으로 전송되는 RAW데이터 값을 받을 수는 있다. 그러나 의미있는 측정값으로 사용하려면 라이브러리를 설치하여 RAW데이터를 변환해서 받아야 한다. MPU6050용 라이브러리는 종류가 많이 있으나 간편하게 아두이노IDE내의 라이브러리매니저를 이용해서 설치하는 방법을 설명한다.    

스케치->라이브러리 설치하기 -> 라이브러리관리를 선택해서 라이브러리 매니저화면을 호출한 후 MPU6050를 입력해서 검색하면 여러가지 MPU6050관련 라이브러리들이 나오는데 그 중 두번째 것을 선택하여 설치하면 된다.  

 

 4. 샘플프로그램 

 

라이브러리를 설치하고 파일 -> 예제 메뉴에서 MPU6050 관련 샘플에서 MPU6050_DMP6 샘플프로그램을 로드한다.

샘플프로그램을 UPLOAD하 Serial Monitor로 확인해 보면 다음과 같이 "시작하려면 임의의 키를 누르라"고 표시되는데 시리얼 모니터 입력창에 임의의 문자를 입력하고 엔터키를 누르면 센서작동이 시작된다.  

잠시후 작업이 시작되고 다음과 같이 Calibration을 위한 Offset 측정치가 표시된다.  

 

위 숫자를 다음과 같이 샘플프로그램 205 ~209 Line 부분을 찾아

 

다음과 같이 수정하여 넣어 주고 다시 upload한다.  

 

센서모듈을 움직여 보면 다음과 같이 변화되어 측정되는 것을 시리얼모니터로 확인해 볼 수 있다. 

 

여기에서 ypr은 Yaw, Pitch, Roll의 의미로서 물체가 어느 축을 중심으로 어느 만큼 회전되었는를 의미한다. 

 

센서에서 측정되는 값은 x,y,z축 가속도와 자이로 센서값이지만 위와 같이 Yaw,Pitch,Roll값으로 변환하여 볼 수 있다. 만약 다른 형태로 측정값을 변환하여 보고 싶다면 샘플 프로그램 87 ~ 120 번째  Line사이의 주석처리를 조정하면 된다. 즉 샘플프로그램 초기 상태는 103번째줄 #define OUTPUT_READABLE_YAWPITCHROLL 이 선택되어 있는데 가속도값을 직접 보고 싶다면  이 103번째줄을 //로 주석처리하고     116번째 줄 //#define OUTPUT_READABLE_WORLDACCEL 문장의 //부분을 지워 선택하면 된다. 

 

 

구매좌표 :  

 

아두이노 GY-521 3축(6축) 자이로 가속도센서 모듈

 

nefing.com

 

1. ESP32-CAM소개

 

ESP32-CAM 모듈은 ESPressif Systems라는 회사에서 개발하여 인기를 얻고 있는 ESP32 기본 모듈에 아예 카메라까지 내장하여 싸고 편리하게 활용할 수 있도록 판매되는 제품이다. 즉 아두이노보다 몇 배 빠른 프로세서 + WIFI와 블루투스 + Camera를 하나의 보드에 통합하고 여기에 SD카드슬롯까지 부착된 모듈이 기존 아두이노 모듈 하나의 가격과 비슷한 가격으로 판매되는 것이다. 이를 이용하면 아주 저렴하고 간단하게 CCTV녹화기, 동영상스트리밍장치, Remote CAR 동영상 송출장치 등을 개발할 수 있게 된다.

 

 

 

2. ESP32-CAM 사양과 PIN맵

 

 

위와 같은 구조로 주요 사양은 다음과 같다. 

 

  • The smallest 802.11b/g/n Wi-Fi BT SoC module
  • Low power 32-bit CPU,can also serve the application processor
  • Up to 160MHz clock speed, summary computing power up to 600 DMIPS
  • Built-in 520 KB SRAM, external 4MPSRAM
  • Supports UART/SPI/I2C/PWM/ADC/DAC
  • Support OV2640 and OV7670 cameras, built-in flash lamp
  • Support image WiFI upload
  • Support TF card
  • Supports multiple sleep modes
  • Embedded Lwip and FreeRTOS
  • Supports STA/AP/STA+AP operation mode
  • Support Smart Config/AirKiss technology
  • Support for serial port local and remote firmware upgrades (FOTA)

핀별 기능의 배치는 다음과 같다.

 

 

-GPIO 1번과 3번은 Serial 통신을 위해 사용한다.

-GPIO 0번은 프로그램을 업로드할 때와 작동되는 상태를 구분하여 제어하기 위해 사용한다.

-다음 핀들은 내부적으로 SD카드리더기에 연결되어 있으므로 카드리더기를 사용할 때에는 다른 용도로 사용하지 않는다.  

     -GPIO 2, GPIO 4, GPIO12 ~ GPIO15 

 

 

3. 프로그램 업로드를 위한 준비작업

 

ESP32-CAM모듈에는 다양한 기능들이 구현되어 있는데 한가지 불편한 점은 USB연결 포트가 별도로 없고 시리얼통신기능으로 프로그램을 업로드 해 주어야 한다는 것이다. 이를 위해 통상 FTDI프로그래머라고 부르는 USB to Serial 컨버터를 중간에 연결하여 작업하는 방법과 USB연결이 되는 아두이노를 통해 연결하는 방법이 있다.

 

  1) FTDI 컨버터를 이용해서 연결하는 방법

  

  - ESP32-CAM모듈의 GPIO 0번과 GND를 연결해 준다. ( 프로그램 업로드를 끝내고 작동모드로 실행시킬때에는 연결 해제) 

  - ESP32-CAM GND -> FTDI GND

  - ESP32-CAM UnR(RX) -> FTDI TX

  - ESP32-CAM UoT(TX) -> FTDI RX

  - ESP32-CAM UnR(5V) -> FTDI 5V

여기에서 주의해야 할점은 양측 5V단자 끼리 또는 양측 3.3V끼리 같은 Volt를 사용해아 한다는 것과 사용하는 FTDI 컨버터 모듈에 따라 별도의 드라이버를 설치해 주어야 하는 경우도 있다는 것이다.

 

  2) 아두이노를 이용해서 연결하는 방법

   - ESP32-CAM모듈의 GPIO 0번과 GND를 연결해 준다. ( 프로그램 업로드를 끝내고 작동모드로 실행시킬때에는 연결 해제)

  - ESP32-CAM GND -> 아두이노I GND

  - ESP32-CAM UnR(RX) -> 아두이노 RX

  - ESP32-CAM UoT(TX) -> 아두이노 TX

  - ESP32-CAM UnR(5V) -> 아두이노 5V

  - 아두이노 측의 RESET핀과 GND핀을 연결해 준다.

 

 

4. 개발환경 준비와 프로그래밍

 

  1) ESP32개발환경이 설치되어 있지 않은 경우 본 블로그 아래글을 참조하여 ESP32 개발환경을 먼저 설치한다 

 

ESP32 개발환경 설치

아두이노 IDE에서 ESP32관련 개발을 하려면 다음과 같이 ESP32 보드메니저를 추가해 주어야 한다. 1. 아두이노 IDE 업그레이드 1.6.x대의 아두이노 IDE 버전은 최신 버전의 ESP개발환경을 설치하는 과

makernambo.com

  2) ESP32 개발환경이 설치되었으면 툴 -> 보드에서 ESP32 Wrover Module을 선택한다.

 그리고 다음과 캍은 option을 선택한다.

  • Board: “ESP32 Wrover Module”
  • Flash Mode: “QIO”
  • Partition Scheme: “Hue APP (3MB No OTA/1MB SPIFFS)”
  • Flash Frequency: “40MHz”
  • Upload Speed: “115200”
  • Core Debug Level: “None”
  • 포트 : 중간장치를 PC에 연결했을 때 나타나는 포트번호를 선택

아두이노를 통해 연결했다면 다음 Option을 추가로 선택해 준다. 

  • Programmer: “AVR ISP”

 

  3) 파일 -> 예제 -> ESP32 -> Camera -> CameraWebServer 를 선택하여 샘플프로그램을 로드한다.

  4) 샘플프로그램을 작동 시키기 위해서는 다음과 같은 사항을 수정한다.

  - 10 번째 라인은 앞에 //를 삽입하여 주석처리하고 13번째 라인의 #define CAMERA_MODEL_AI_THNKER의 //주석을 지워준다

  - 15번째 라인에 본인이 접속하고자하는 WIFI 공유기의 SSID 명을 입력하고,16번째 라인에 해당 password를 입력해 준다.

 

 

5. 테스트

 

 1) 프로그램 업로드 

   아두이노 IDE에서 업로드버튼을 눌러 업로드를 실행하면 한동안(1분정도) writing작업이 실행되고 다음과 같은 메세지가 나오면 ESP32-CAM모듈의 GPIO 0 연결을 해제하고 RESET버튼을 누른다. 

 2) video 스트리밍 서버 IP주소 확인

아두이노 IDE에서 시리얼모니터를 기동시키고 ESP32-CAM의 RESET버튼을 누르면 잠시후 WIFI가 연결되고 video 스트리밍 서버역활을 하는 ESP32-CAM의 서버 IP주소가 표시된다.  

 

 

 

 3) video 스트리밍 서버 접속하기 

 

     크롬이나 MS Edge 웹브라우저를 기동시켜 주소창에서 위 IP주소를 입력하여 접속하면 video 스트리밍 서버의 내용이 표시된다. (MS Explorer은 영상이 표시되지 않는다)

-화면좌측 하단의 Get Still 버튼이나  Start Stream버튼을 클릭하면 화면에 카메라촬영내용이 표시되고, 여러 옵션들을 변경해 보면 즉시 내용이 수정되어 반영된다.

 

-화면해상도는 UXGA(1600x1200)까지 지원된다고 하나 출력되는 영상이 그리 선명하지는 않다. 그래도 CCTV용이나 RC로봇 제어용으로 사용하기에는 충분하다.

 

-좌측의 Setting화면 없이 순수하게 스트리밍되는 영상만을 보기 원할 때에는 서버주소:81/stream 과 같이 조소를 지정해 주면  영상만 출력된다.

 

-PC뿐만아니고 동일 공유기에 연결된 스마트폰에서도 동일하게 사용할 수  있다.

 

3) video 스트리밍 서버 사용 

- 위와 같은 과정을 거쳐 프로그램이 업로드된 ESP32-CAM 모듈은 5V전원과 GND를 연결하여 전원만 공급하면 video 스트리밍 서버로서 작동하게 된다. 

 

6. 주의사항

 

 카메라를 연결하는 커넥터는 버클 형태로 되어 있기 때문에 커넥터 검정색 부분을 위로 올리면서 꺽어 주어야 열린다 

 

* 구매좌표

 -해외직구 (가격은 싸지만 배송기간이 오래 걸림)  

 

 

Original ESP32-CAM Camera Module Kit 2.4 GHz WiFi Bluetooth 8MB PSRAM OV2640 Camera Module 66 120 160 Degree 850nm Night Vision

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

 

 

-국내 쇼핑몰( 가격은 좀 비싸지만 즉시 구매 가능) 

 

 ESP32-CAM 모듈 :

 

ESP32 CAM OV2640 카메라 4M PSRAM 장착 보드 아두이노부품 esp32 DM2679

 

nefing.com

 

 

+ Recent posts