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

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

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

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

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

BASIC4MCU > 질문게시판

아두이노 자이로센서

페이지 정보

작성자 dkdk 작성일20-11-30 16:17 조회11,461회 댓글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

조회수 : 11,461

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
질문 아두이노 센서 쉴드 v5.0 과 음성인식 모듈(V2)통… 첨부파일AutoSun 새글 22-07-05
질문 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니… 첨부파일뉴비에오 새글 22-07-04
답변 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질… 댓글[2] master 새글 22-07-05
질문 아두이노 Sensor Shield 5.0 시리얼 통신 … 댓글[2] AutoSun 새글 22-07-04
질문 Atmega 코드 좀 봐주세요. 댓글[1] 첨부파일chelsea 새글 22-07-04
질문 아두이노 while문 탈출 질문 yhj2644  22-07-01
답변 답변 : 아두이노 while문 탈출 질문 댓글[8] master  22-07-01
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의… 댓글[3] cansad  22-06-30
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의 댓글[3] cansad  22-06-30
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[2] 첨부파일오소로롯  22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 412904  22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전