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. 주의사항

 

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

 

* 구매좌표

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

 

US $4.21 43% OFF|ESP32 CAM ESP 32S WiFi Module ESP32 serial to WiFi ESP32 CAM Development Board 5V Bluetooth with OV2640 Camera

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

 

9209.0₩ 48% OFF|ESP32 CAM 와이파이 개발 보드 + FT232RL FTDI + 점퍼 와이어 Arduino 라즈베리 파이 ESP32 카

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

 

 

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

 

 ESP32-CAM 모듈 :

 

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

 

nefing.com

 

 

그동안 3차에 걸친 프로토타입 시스템 제작과 2년여 간의 주말농장 현지 운영을 통해 수합된 사항들을 종합하여 주말농장용 자동급수 시스템인  워터맨Yard의 개발을 완성하였다

 

1. 기능명세

  1) 설정 기능

      - RTC 기준시각 설정 : 시스템 사용초기 또는 RTC 배터리 교체로 인해 시스템 시각이 맞지 않을 때 기준시각을 Reset시키기

      - 급수시각 지정 : 하루 24시 중에서 어느 시각에 급수시작항 것인지 지정 (하루 3회 까지) 

      - 급수량 지정 : 매 급수시각마다 어느 시간동안 급수를 지속할 것인지 지정

      - 급수생략 조건 지정 : 토양 수분 수치를 지정하여 이 이상일 경우 급수 생략( 비가 온 날 ), 온도를 지정하여 이 온도 이하일 경우 급수 생략하기

     

   2) 화면표시 기능

      - 설정된 내용 표시하기

      - 현재 시각 및 현재 토양수분 수치 표시

      - 금일 급수기능 작동 여부 표시   

 

  3) 급수 기능

      -지정한 시각이 되면 자동으로 지정한 시간동안 볼밸브를 열어 급수하기

      -사용자가 원하면 버튼조작으로 급수기능 강제 작동시키기

 

  4) 절전모드

      - 급수작동  완료 또는 입력 등 조작이 일정시간 이상 중단된 경우 자동으로 절전Sleep모드로 집입하기

      - 다음 급수시각이 되면 자동으로 Wake-Up되어 급수기능 작동하기

      - 사용자가 원할 때에는 언제든지 강제로 Wake-Up시켜 기계 조작하기

 

   5) 태양광 자가발전 및 배터리

      - 낮시간동안 태양광 패널을 통해 발전된 전기를 18650배터리에 충전해 놓고 필요한 전원을 충당하여 별도의 전원연결공사없이 운영할 수 있는 시스템

      - 내장된 배터리는 태양광 발전량이 부족할 경우 별도의 방법으로도 충전할 수 있도록 단자를 구성하고 다른 곳에서 충전해 올 수 있도록 착탈식으로 구성     

 

   6) 케이스 및 외부연결

     - 비를 맞을 수 있는 야외에 설치하는 기기 이므로 방수처리된 케이스를 사용하되, 여름철에는 기기 내부의 온도가 급격히 올라 갈수 있으므로 환기구는 빗물이 기기내로 들러오지 않는 방법으로 별도 개설.

     - 주말 농장 임의의 곳에  철제 파이프 등을 꽂아 이 위에 쉽게 설치할 수 있도록 연결부를 구성

             

 

 

2.시스템 회로의 구성

 

 1) 전용PCB 

 

매번 제작할때 마다 배선작업도 번거롭고 운영 중 접촉불량 등 고장을 최소화하기 위에 전용PCB를 제작하였다.    

 

 

 

Fritzing Tool을 이용해 설계한 내용을 업체에 의뢰하여 납품받은 워터맨Yard 전용 PCB

 

 

 

2) 메인보드 제작

 

PCB 뒷면에 해당 부품들을 납땜하여 메인보드를 제작하고  

 

 

 

PCB 앞면에는 4x4 키패드와 스위치,연결용 단자 등을 연결하고, 상단에 LCD 디스플레이를 연결하여 워터맨시스템용 컨트롤 보드를 구성하였다.

 

 

 

3. 워터맨Yard 제어기능의 구성

 

 

- LED : 작동중일 때 기기를 닫아 놓은 상태에서도 외부에서 이를 확인할 수 있도록 하기 위한 LED전구를 연결

 

- WATER : 펌프를 사용할 경우 물탱크에 물에 있는지 여부를 Check하기 위한 센서를 연결한다. 센서를 사용하지 않을 경우 두선을 쇼트시켜 연결해 놓으면 된다.

 

-SOIL :  토양수분 센서를 연결한다. 단지 토양에 꽂힌 두개의 전극사이의 저항치를 측정하는 것이므로 스텐레스 젓가락에 전선을 납땜하여  연결해서 사용해도 된다.

 

-SOLAR : 태양광패널로 부터 나오는 전력선(6V 출력용)을 연결한다. 

 

-Wake Up : 워터맨 시스템이 다음 기동 시간까지 절전 Sleep모드에 있을 때 강제로 깨우기(WakeUp)위한 버튼.

 

-Power : 내장 배터리가 아닌 외부 전원으로 시스템을 가동시키거나 배터리를 충전시킬때 사용하는 아답터

 

-Valve : 전동 볼밸브 연결 단자

 

-Pump : 수도가 아닌 물탱크 방식일 경우 물 탱크에서 물을 끌어 올리기 위한 펌프를 추가로 부착할 수 있도록 펌프용 전원 연결단자를 추가하였다.      

 

-Charge : 18650 배터리 연결 단자.   

 

 

 

김보성의 차고 : 장기렌트카/리스 비교 플랫폼

 

nefing.com

 

+ Recent posts