경사계 (v0.1) > 작동하지 않음 > INT 핀을 추가하여 움직였다

이번에는 경사계를 만들려고 한다.

구입한 것은 MPU-9250
htps : // / st 등 w 베 ry ぃ 無 x. 이 m / 가타 g / 있어 ms? 여기 =12250

스케치



참고 : MPU-9150 @ cubic9.com

cubic9 님의 페이지를 참고하여 Arduino 스케치를 준비했다.

소스의 버전 번호 차이에 따라 변경 부분의 행 번호가 다르지만 적절하게 수정되었습니다.

배선 v0.1



참고 htps : // / st 등 w 베 ry ぃ 無 x. 코 m/숏 rt/12250/1703808
참고 htps : // / st 등 w 베 ry ぃ 無 x. 코 m/숏 rt/12250/1690628

다음과 같이
  • MPU-9250 GND <--> ESP8266 GND
  • MPU-9250 VDD <--> ESP8266 VCC
  • MPU-9250 VDDIO <--> ESP8266 VCC
  • MPU-9250 SCL <--> ESP8266 SCL
  • MPU-9250 SDA <--> ESP8266 SDA
  • MPU-9250 AD0 <--> ESP8266 GND
  • MPU-9250 CS <--> ESP8266 VCC (I2C 연결)

  • 실행



    스케치를 다운로드하여 실행하면 다음 오류가 발생했습니다.
    Testing device connections...
    MPU6050 connection failed
    
    Send any character to begin DMP programming and demo: 
    Initializing DMP...
    Enabling DMP...
    Enabling interrupt detection (Arduino external interrupt 0)...
    DMP ready! Waiting for first interrupt...
    
    Soft WDT reset
    
    ctx: cont 
    sp: 3ffef250 end: 3ffef440 offset: 01b0
    
    >>>stack>>>
    3ffef400:  3ffee294 3ffee298 3ffee3e4 40204365  
    3ffef410:  3fffdad0 3ffee298 3ffee3e4 3ffee40c  
    3ffef420:  3fffdad0 00000000 3ffee404 40203ff4  
    3ffef430:  feefeffe feefeffe 3ffee420 40100114  
    <<<stack<<<
    
     ets Jan  8 2013,rst cause:2, boot mode:(3,0)
    
    load 0x4010f000, len 1264, room 16 
    tail 0
    chksum 0x42
    csum 0x42
    ~ld
    Initializing I2C devices...
    Testing device connections...
    MPU6050 connection failed
    
    Send any character to begin DMP programming and demo: 
    Initializing DMP...
    Enabling DMP...
    Enabling interrupt detection (Arduino external interrupt 0)...
    DMP ready! Waiting for first interrupt...
    

    인터럽트를 기다리는 시간이 너무 길어서 watchdog reset이 걸리는 것 같다.

    INT 핀은 사용하지 않는 것도 문제일까.

    이번에는 다소 어색한 예감이 난다.

    INTERRUPT_PIN



    소스를 보면 다음 정의가있었습니다.
    #define INTERRUPT_PIN 2  // use pin 2 on Arduino Uno & most boards
    

    ESP8266의 핀 중 하나를 인터럽트 핀으로 사용하여 MPU-9250의 INT 핀과 연결이 필요한 것 같습니다.

    배선 v0.2



    배선 (INT 추가)



    GPIO14는 INTERRUPT_PIN이었다.
  • MPU-9250 GND <--> ESP8266 GND
  • MPU-9250 VDD <--> ESP8266 VCC
  • MPU-9250 VDDIO <--> ESP8266 VCC
  • MPU-9250 SCL <--> ESP8266 SCL
  • MPU-9250 SDA <--> ESP8266 SDA
  • MPU-9250 AD0 <--> ESP8266 GND
  • MPU-9250 CS <--> ESP8266 VCC (I2C 연결)
  • MPU-9250 INT <--> ESP8266 GPIO14

  • cubic9님의 페이지에도 INT가 기재되어 있었다.

    upverter의 회로도 (FDTI 관련 생략)

    코드



    다음과 같이 일부를 변경했다.
    #if 1
    #define INTERRUPT_PIN 14  // ESP8266
    #else
    #define INTERRUPT_PIN 2  // use pin 2 on Arduino Uno & most boards
    #endif
    

    실행한



    값이 나오게 되었다.
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.32
    quat    0.95    -0.00   -0.00   -0.33
    quat    0.95    -0.00   -0.00   -0.33
    quat    0.95    -0.00   -0.00   -0.33
    quat    0.95    -0.00   -0.00   -0.33
    quat    0.95    -0.00   -0.00   -0.33
    quat    0.95    -0.00   -0.00   -0.33
    ...
    

    대단한 기세로 값이 나온다.

    MPU-9250을 기울이면, 값이 각각 변화한다.

    기울어 보았다.


  • 거의 수평일 때
  • quat    0.92    0.01    0.01    -0.40
    
  • X축을 들어올렸을 때
  • quat    0.91    0.04    0.17    -0.37
    
  • Y축 정방향을 올렸을 때
  • quat    0.85    -0.19   0.12    -0.47
    
  • Y축 부방향을 올렸을 때
  • quat    0.91    0.25    -0.08   -0.32
    

    이미지



    기압계의 기판을 유용.
    MPU-9250은 브레드 보드상에 실장.
    INT용 GPIO14는 사이에 맞추어 IC 클립으로 잡고 있다.



    ESP32



    (추기 2018/01/15)

    @choco244 씨와의 교환으로 ESP32로의 설정에는 고생한다는 것을 배웠습니다.

    좋은 웹페이지 즐겨찾기