Pro mini+ Gy-91

sergrlager
Offline
Зарегистрирован: 17.03.2017

Подскажите как физически подключить данные девайсы? а также как вывести показания углов и тд например в Visuino или еще куданибудь без физического экрана! Ну и вообще у кого был опыт такой связки- буду рад советам!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

А как удобно так и подключайте хоть по I2С хоть по SPI

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

https://www.youtube.com/watch?v=zi9kTkgpU6g - и схема есть, и пояснения

А вот здесь и библиотека - https://github.com/zenmanenergy/GY-91

sergrlager
Offline
Зарегистрирован: 17.03.2017

Там другая плата не Pro mini!!! у нее разьемов меньше!!!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так ... все какие надо - есть.

Вы не можете найти на своей плате пины для I2C? Ну, тогда обратитесь в раздел "Ищу исполнителя" - там помогут.

sergrlager
Offline
Зарегистрирован: 17.03.2017

если бы я был профи таких бы вопросов и не было бы- а тут я задал конкретный вопрос- если вы на него не можете ответить- тоесть привести схему или ссылку на видео- то зачем тогда флуд разводите!?

sergrlager
Offline
Зарегистрирован: 17.03.2017

Не могли бы Вы более подробно описать или привести схему подключения- именно для Pro mini!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sergrlager пишет:

Не могли бы Вы более подробно описать или привести схему подключения- именно для Pro mini!

Если по I2C то два проводка к ногам A4 и A5, вот и вся схема

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

если вы на него не можете ответить- тоесть привести схему или ссылку на видео- то зачем тогда флуд разводите!?

Я Вам дал ссылку где есть схема что и куда соединять. Все выводы подписаны также, как на Вашей плате. Если Вы не можете найти на плате подписи выводов и сравнить их, то зачем Вы вообще этим занялись?

Впрочем и в этой ситуации я подсказал Вам правильный выход (пойти а раздел "ищу исполнителя"), но вместо благодарности ... как всегда у новичков, которым все должны.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

sergrlager пишет:

если вы на него не можете ответить- тоесть привести схему или ссылку на видео- то зачем тогда флуд разводите!?

Я Вам дал ссылку где есть схема что и куда соединять. Все выводы подписаны также, как на Вашей плате. Если Вы не можете найти на плате подписи выводов и сравнить их, то зачем Вы вообще этим занялись?

Впрочем и в этой ситуации я подсказал Вам правильный выход (пойти а раздел "ищу исполнителя"), но вместо благодарности ... как всегда у новичков, которым все должны.

реализаций этих прошек действительно немеряно, если не можете найти выводы, хотя бы фото скинули, что там у вас за зверь и, Евгения Петровича поблагодарите, он Вам дал 100% информации для работы с этим девайсом, ну как минимум начать и увидеть в сериале, что оно там выдает,  или на почту ник яндекс, надо же как исполнитель когда-то монетизировать полученные здесь же знания )))
Евгению Петровичу за державу обидно и он мзду не берёт, а я беру, точнее надо же когда-то начинать )))

sergrlager
Offline
Зарегистрирован: 17.03.2017

В сылке на видео - схемы подключения не увидел смотрел два раза!!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sergrlager пишет:

В сылке на видео - схемы подключения не увидел смотрел два раза!!

Боитесь сжечь, правильно ))) там еще и тексты есть

sergrlager
Offline
Зарегистрирован: 17.03.2017

Подскажите а как по i2c посмотреть значения углов и тд?

Нашел вот такую стью

http://soltau.ru/index.php/arduino/item/371-interfejs-i2c-i-arduino

но там не очень я сно как снимать показания ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

В сылке на видео - схемы подключения не увидел смотрел два раза!!

Ну, некоторым людям двух раз недостаточно, посмотрите в третий раз. Время 0:40

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

Подскажите а как по i2c посмотреть значения углов и тд?

Ну на гитхаб же я ссылку давал! Там, блин, примеры есть! И текста чёртова уйма, и примеры готовых программ, запускай и смотри.

sergrlager
Offline
Зарегистрирован: 17.03.2017

вот фото платы самой

sergrlager
Offline
Зарегистрирован: 17.03.2017

Для Вас может это и явная схема- для меня- нет! Понял только что подключается к I2c как написали выше- через A4 A5 а вот как теперь снять с этой шины показания углов например- да попрошу быть снисходительным- я только начинаю в этой теме!!

sergrlager
Offline
Зарегистрирован: 17.03.2017

Да tit прочел на github что

It can be simply modified to work with the corresponding micro shield as well. It uses SDA/SCL on pins 17/16, respectively, and it uses the Teensy 3.1-specific Wire library i2c_t3.h. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

По плате, кварц 8 мегагерц, стабилизатор 3.3 вольта с уверенностью до 100% можно сказать, что у вас девай 3.3 вольтового питания, значит подключать можно напрямую, A4 'это SDA A5 это SCL питание тоже можно снять с платы
I2C - это шина, по ней устройства обмениваются данными...данные будут находиться в памяти ардуины ну и далее уже этими данными манипулируйте, в вашем случае отправляйте в ком-порт для начала

Но сдаётся мне, что на ваши хотелки нужно искать исполнителя, читать я так понимаю вы не особенно изволите, а тут безвомездно, то-есть задаром, помогают только тем, у кого что-то не получается, делать за вас ваши хотелки точно никто не будет
 

sadman41
Offline
Зарегистрирован: 19.10.2016

sergrlager пишет:
Для Вас может это и явная схема- для меня- нет! Понял только что подключается к I2c как написали выше- через A4 A5 а вот как теперь снять с этой шины показания углов например- да попрошу быть снисходительным- я только начинаю в этой теме!!

Кто же в этом виноват... Клапауций что ли?

Давайте я вам подскажу. Возьмите в руки свой GY-91, внимательно на него посмотрите. Видите там микросхемы стоят какие-то? Так вот, данные вы будете получать от них, а не от куска текстолита. То есть нужно что? Правильно - понять, как они называются. Потом идете в яндекс, набиваете "<название микросхемы> github arduino", скачиваете библиотечку, устанавливаете в Arduino IDE, говорите "крекс-пекс-фекс", соединяете модуль и ардуину проводками, плюёте через левое плечо и заливаете скетч-пример, который идет, как правило, с библиотечкой. Потом смотрите в Serial Monitor, текст скетча и проводите логические связи между выводимыми цифрами и кодом скетча (только не смотрите в скротч или скреч!).

 

sergrlager
Offline
Зарегистрирован: 17.03.2017

Впринципе теперь все встало потихоньку на свои места- осталось разобраться с serial monitor- можно поподробней где смотреть конкретно?

sergrlager
Offline
Зарегистрирован: 17.03.2017

Впринципе все ясно осталось понять как мониторить i2c

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sergrlager пишет:

Впринципе все ясно осталось понять как мониторить i2c

В уроках Эдуарда Калинина есть всё, читайте!!!

sergrlager
Offline
Зарегистрирован: 17.03.2017

вот здесь все уроки выше указанного автора там про i2c нет ничего ну или неявно!!!

http://mypractic.ru/uroki-programmirovaniya-arduino-navigaciya-po-urokam

sergrlager
Offline
Зарегистрирован: 17.03.2017

Вот нашел как вывести с i2c инфу в граф вид

http://wiki.amperka.ru/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%83%D1%80%D0%BE%...

Еще вопрос ктонибудь работал с Visuino и i2c?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы - первый!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Вы - первый!

Да нет же, вот, на чистейшем английском (с болгарским акцентом) языке

lean_74
Offline
Зарегистрирован: 22.12.2015

Какие все добрые сегодня... Клапауций ты где?

sergrlager
Offline
Зарегистрирован: 17.03.2017

Спасибо- но уже сам на него же наткнулся:))

sergrlager
Offline
Зарегистрирован: 17.03.2017

вот наткнулся на скетч для вывода углов акселерометра в монитор порта для двух осей

#include <Wire.h>
#include "Kalman.h"
Kalman kalmanX;
Kalman kalmanY;
uint8_t IMUAddress = 0x68;
/* IMU Data */
int16_t accX;
int16_t accY;
int16_t accZ;
int16_t tempRaw;
int16_t gyroX;
int16_t gyroY;
int16_t gyroZ;
double accXangle; // Angle calculate using the accelerometer
double accYangle;
double temp;
double gyroXangle = 180; // Angle calculate using the gyro
double gyroYangle = 180;
double compAngleX = 180; // Calculate the angle using a Kalman filter
double compAngleY = 180;
double kalAngleX; // Calculate the angle using a Kalman filter
double kalAngleY;
uint32_t timer;
void setup() {
  Wire.begin();
  Serial.begin(9600);
  i2cWrite(0x6B,0x00); // Disable sleep mode      
  kalmanX.setAngle(180); // Set starting angle
  kalmanY.setAngle(180);
  timer = micros();
}
void loop() {
  /* Update all the values */
  uint8_t* data = i2cRead(0x3B,14);
  accX = ((data[0] << 8) | data[1]);
  accY = ((data[2] << 8) | data[3]);
  accZ = ((data[4] << 8) | data[5]);
  tempRaw = ((data[6] << 8) | data[7]);
  gyroX = ((data[8] << 8) | data[9]);
  gyroY = ((data[10] << 8) | data[11]);
  gyroZ = ((data[12] << 8) | data[13]);
  /* Calculate the angls based on the different sensors and algorithm */
  accYangle = (atan2(accX,accZ)+PI)*RAD_TO_DEG;
  accXangle = (atan2(accY,accZ)+PI)*RAD_TO_DEG;  
  double gyroXrate = (double)gyroX/131.0;
  double gyroYrate = -((double)gyroY/131.0);
  gyroXangle += kalmanX.getRate()*((double)(micros()-timer)/1000000); // Calculate gyro angle using the unbiased rate
  gyroYangle += kalmanY.getRate()*((double)(micros()-timer)/1000000);
  kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (double)(micros()-timer)/1000000); // Calculate the angle using a Kalman filter
  kalAngleY = kalmanY.getAngle(accYangle, gyroYrate, (double)(micros()-timer)/1000000);
  timer = micros();
Serial.println();
    Serial.print("X:");
    Serial.print(kalAngleX,0);
    Serial.print(" ");
    Serial.print("Y:");
    Serial.print(kalAngleY,0);
    Serial.println(" ");
  // The accelerometer's maximum samples rate is 1kHz
}
void i2cWrite(uint8_t registerAddress, uint8_t data){
  Wire.beginTransmission(IMUAddress);
  Wire.write(registerAddress);
  Wire.write(data);
  Wire.endTransmission(); // Send stop
}
uint8_t* i2cRead(uint8_t registerAddress, uint8_t nbytes) {
  uint8_t data[nbytes];
  Wire.beginTransmission(IMUAddress);
  Wire.write(registerAddress);
  Wire.endTransmission(false); // Don't release the bus
  Wire.requestFrom(IMUAddress, nbytes); // Send a repeated start and then release the bus after reading
  for(uint8_t i = 0; i < nbytes; i++)
    data [i]= Wire.read();
  return data;
}