질문게시판 > 아두이노 자이로센서

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

아두이노 자이로센서

페이지 정보

작성자 dkdk 작성일20-11-30 16:17 조회13,236회 댓글4건

본문

안녕하세요!! 네이버에 자이로 많은 지식인 답변보고 이렇게 글을 작성하게 되었습니다. 

저는 자이로 센서로 얻은 센서 값을 블루투스로 보내고 싶습니다.

자이로센서 센서값은 #include "Wire.h"

#include "MPU6050.h"

#include "I2Cdev.h"

 

#define pi 3.141592

#define RADIANS_TO_DEGREES 180/3.14159

#define fs 131.0;

MPU6050 mpu;

 

int16_t ax,ay,az;

int16_t gx,gy,gz;

int16_t mx,my,mz;

 

//자이로(각속도)

float gyro_x, gyro_y;

 

//최종 가속도,자이로 각도

float accel_x, accel_y;

float gyro_angle_x=0, gyro_angle_y=0;

 

//상보필터 거친 각도

float angle_x=0,angle_y=0,angle_z=0;

 

//자이로센서 바이어스값

float base_gx=0, base_gy=0, base_gz=0;

 

unsigned long pre_msec=0;

 

void calibrate(){  

   

  int loop =10;

  for (int i=0;i<loop;i++)

  {

    mpu.getMotion9(&ax,&ay,&az,&gx,&gy,&gz,&mx,&my,&mz);

    base_gx += gx;

    base_gy += gy;

    base_gz += gz;

    delay(80);

  }

  

  base_gx /=loop;

  base_gy /=loop;

  base_gz /=loop;

 

}

 

 

void setup() {

  Wire.begin();

 

  Serial.begin(9600);

  mpu.initialize();

  calibrate(); 

}

 

void loop() {

  //단위시간 변화량

  float dt = (millis()-pre_msec)/1000.0;

  pre_msec = millis();

  

  mpu.getMotion9(&ax,&ay,&az,&gx,&gy,&gz,&mx,&my,&mz);

 

  //가속도값 아크탄젠트->각도변환

  accel_x = atan(ay/sqrt(pow(ax,2) + pow(az,2)))*RADIANS_TO_DEGREES;

  accel_y = atan(-1*ax/sqrt(pow(ay,2) + pow(az,2)))*RADIANS_TO_DEGREES;

  

 

  

  //자이로 -32766~+32766을 실제 250degree/s로 변환

  //앞에서 계산한 오차의 평균값을 빼줌 

  gyro_x = (gx-base_gx)/fs;  

  gyro_y = (gy-base_gy)/fs;

 

  //변화량을 적분 

  gyro_angle_x = angle_x + dt*gyro_x;

  gyro_angle_y = angle_y + dt*gyro_y;

 

  //상보필터

  angle_x = 0.95*gyro_angle_x + 0.05*accel_x;

  angle_y = 0.95*gyro_angle_y + 0.05*accel_y;

 

  Serial.print(gyro_angle_x);

  Serial.print("   ");

  Serial.print(accel_x);

  Serial.print("   ");

  Serial.println(angle_x);

  

입니다. 이것은 인터넷으로 본 코드이구요 (출저를 남겨야하면 바로 남기도록 하겠습니다.) 저기서 Serial.print 부분을 블루투스로 전송하고 싶은데 어떤 코드들을 추가해야하는지 모르겠습니다.. 도와주시면 감사하겠습니다ㅠㅠㅠㅠ 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 4

조회수 : 13,236

master님의 댓글

master 작성일

https://www.google.com/search?ei=saTEX6PZOMPFmAW8z7awAw&q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EC%9E%90%EC%9D%B4%EB%A1%9C+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EC%9E%90%EC%9D%B4%EB%A1%9C+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4&gs_lcp=CgZwc3ktYWIQAzIFCAAQzQIyBQgAEM0CMgUIABDNAjIFCAAQzQI6BAgAEEdQ0pQBWPOiAWCWpQFoAXACeACAAYABiAH2AZIBAzAuMpgBAKABAqABAaoBB2d3cy13aXrIAQjAAQE&sclient=psy-ab&ved=0ahUKEwjj9a_Q5KntAhXDIqYKHbynDTYQ4dUDCA0&uact=5
웹검색으로 원하는 것과 유사한 자료를 찾을 수 있는지 살펴보시고요

우노 경우에는 하드웨어 시리얼포트가 1개 뿐이라서 블루투스는 소프트웨어 시리얼을 사용해야 합니다.
https://www.google.com/search?ei=x6TEX4OIMo_U0gTc176oAw&q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4&gs_lcp=CgZwc3ktYWIQAzICCAAyAggAMgIIADICCAAyAggAMgIIADICCAAyAggAMgIIADICCAA6BQgAEM0COgYIABAHEB5Q2ZUFWNOXBWDkmgVoAHAAeACAAXWIAbQDkgEDMC40mAEAoAEBqgEHZ3dzLXdpesABAQ&sclient=psy-ab&ved=0ahUKEwjDh-ja5KntAhUPqpQKHdyrDzUQ4dUDCA0&uact=5
이 또한 예제가 많이 있으니 조금만 공부하면 어렵지 않을겁니다.

dkdk님의 댓글

dkdk 댓글의 댓글작성일

저 예제들에서 블루투스 소스 코드를 추가하면 될까요...?ㅜㅜ

master님의 댓글

master 댓글의 댓글작성일

https://devicemart.blogspot.com/2019/04/hc-06.html
이 예제를 기준으로 간단하게 설명해드리죠
회로 연결은 예제를 참고하시고
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // HC-06 TX=11번핀 , RX=10번핀 연결
코드 상단에 헤더파일 추가합니다.
 mySerial.begin(9600); // 통신 속도 9600bps로 블루투스 시리얼 통신 시작
셋업 함수에 소프트웨어 시리얼 설정을 합니다.
블루투스에서는 수신없이 송신만 하면 되므로 루프 함수 코드는 간단합니다.
기존 시리얼모니터 출력 내용과 비슷하게 출력하면 됩니다.
  Serial.print(gyro_angle_x); Serial.print("  "); Serial.print(accel_x); Serial.print("  "); Serial.println(angle_x); // 시리얼모니터
  mySerial.print(gyro_angle_x); mySerial.print("  "); mySerial.print(accel_x); mySerial.print("  "); mySerial.println(angle_x); // 블루투스

dkdk님의 댓글

dkdk 댓글의 댓글작성일

정말 감사합니다...ㅜㅜ 보내주시 링크들과 답변 열심히 공부해서 코드를 완성해 보도록 하겠습니다!!ㅜㅜ

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 코딩 결합 댓글[1] hohoje 새글 22-08-18
질문 UART통신 스위치 사용 댓글[4] 픽공부 새글 22-08-18
질문 아두이노코딩 질문사항 댓글[1] kai5439  22-08-16
질문 해석좀 해주세요 댓글[2] bubu  22-08-14
질문 lcd 1602에 특수문자를 출력하는 방법을 알고싶습니… 댓글[3] dndktn  22-08-12
질문 stm32 wifi 파일전송 댓글[3] 하리  22-08-11
질문 회로 구성 수정 댓글[2] 첨부파일픽공부  22-08-11
질문 아두이노 와이파이통신 질문 있습니다 댓글[1] 학생  22-08-11
질문 포토다이오드와의 연결 질문합니다. 댓글[7] 첨부파일박윤모  22-08-10
질문 회로 구성 댓글[4] 픽공부  22-08-10
질문 아두이노 센서, 와이파이, 블루투스 연결 댓글[1] pattern  22-08-10
질문 PIC 블루투스 연결 댓글[19] 픽공부  22-08-09
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴  22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌  22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥  22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡  22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이  22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전