Намучавшись с балансировкой моторов для своих квадриков и самолей, и не имея возможности построить полноценный стенд для балансировки, в результате написал программу-клиент для ПО IMU+GPS-Stream под Andriod.
IMU+GPS-Stream умеет передавать в потоке по протоколу UDP на заданный IP и порт данные с датчиков телефона. Я воспользовался этой возможностью и теперь данные акселерометра можно видеть не на маленьком экране телефона, а на экране компьютера, что сильно облегчило задачу балансировки. Для работы с программой нужно установить на телефон программу IMU+GPS-Stream (play.google.com/store/apps/details?id=de.lorenz_fe…) и указать у ней IP адрес и порт на которых будет запущен ее клиент. Далее запускаете клиента , задаете временной промежуток в течении которого нужно снимать параметры с мотора и далее все как на этом видео (оно не моё):
Вдобавок, если у вас есть Arduino и какой-нибудь акселерометр, то в программе предусмотрена возможность захвата данных из COM порта.
Данные из COM программа принимает вот в таком формате: 0,0,X,Y,Z где XYZ показатели ускорения от акселерометра.
Скриншотик:
А программу Никиты Есенина вы видели? rcopen.com/blogs/109830/19122
(это не в укор, а для пущего вдохновения, вот =)))
Да ею и вдохновился. Но у меня дома нет столько рабочего пространства для стенда, поэтому использовал телефон , но т.к. в телефоне экран маленький и смотреть не удобно, плюс пока добавляешь груз двигаешь телефон и из-за этого данные становятся не актульными… вообщем я написал свое.
А у Никиты Есенина программа что надо конечно…
Что я пишу??.. Не “добавляешь груз”, а когда стартуешь-стопишь таймер в программах сейсмометрах на телефоне… простите.=)
Очень хорошая разработка, потому что очень нужная!
А какой код нужно заливать в ардуину с припаянным мпу6050? И можно что бы тоже работало через блютус? Мне кажется будет еще удобнее.
Александр, добрый день.
Спасибо.
Для mpu6050 наверное что то такое:
#include<Wire.h>
const int MPU=0x68; // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B-); // PWR_MGMT_1 register
Wire.write(0); // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);
Serial.begin(9600);
}
void loop(){
Wire.beginTransmission(MPU);
Wire.write(0x3B-); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU,14,true); // request a total of 14 registers
AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
String str = “0,0,”+String(AcX,2)+“,”+String(AcY,2)+“,”+String(AcZ,2)
Serial.println(str);
delay(30);
}
Это я выдернул из скэтча примера отсюда: playground.arduino.cc/Main/MPU-6050#short
Я купил акселерометр Troyka в магазине и сделал для него небольшой корпус из пластика. Прикрепляю его к лучу квадрика, а потом балансирую.
Насчет блютус не знаю, надо подумать…
Данила, спасибо за ответ.
С Тройкой тоже хорошее решение, конечно дороговато она стоит по сравнению с МПУ за 120р.
А датчик на Тройке лучше или хуже, чем МПУ? Если хуже, то точно стоит на МПУ сделать.
По поводу блютус, предполагаю, что если взять обычный HC-06 и подключить к TX-RX, то должно коннектится к компу, как и на любых полетных контроллерах.
Тогда бы получился дешевый и очень удобный прибор для измерения вибраций еще и с пропеллерами на раме.
Ардуинка с акселем и БТ получается около 300р. Грубо.
И вот у меня еще идея появилась - можно его даже использовать для записи лога вибраций в полете!
Это давало бы возможность видеть вибрации всей рамы в реальных условиях полета.
Александр.
Вообще я прикинул тут. Не должно быть препятствий для скрещивания arduino blutooth и программы.
Arduino ведь пишет в bluetooth как в serial.
Поэтому наверное(!), надо будет просто настроить соединение arduino с компьютером по bluetooth и в качестве COM порта для программы указать Incoming порт который bluetooth выдаст винда.
Черт его знает, надо попробовать.
Запись в файл сырых данных включу в следующую версию.
Это просто замечательно. У меня есть все компоненты. Можно проверить.
Данила, а вам не сложно было бы сделать полный код для Ардуины и МПУ? Откомпилить и залить я могу.
Данила, а вам не сложно было бы сделать полный код для Ардуины и МПУ? Откомпилить и залить я могу.
Смотря какая Arduina
У меня mini на 168А
SCL на А5
SDA на A4
У меня промини 328 - значит то-же самое.
Попробовал подключить пока через телефон - не пошло.
В связи с чем несколько вопросов:
Какой выставлять IP - как у wifi соединения на Андроиде?
Почему в программе стоит подчеркивание перед адресом порта?
Как понять, что стрим попадает в компьютер?
Ip выставлять в телефоне тот который у компьютера. Т.е. вы стримите данные на компьютер с телефона, поэтому в программе на телефоне указываете ip компьютера куда стримить. Ну и порты должны совпадать.
Если вкратце то - так надо.Это ни на что не влияет. Позже уберу. =)
При нажатии кнопки старт , начнут строиться графики. По умолчанию через 10 секунд, данные прекратят собираться и появится значения в таблице.
Спасибо! Заработало конечно! Только у меня такой квадр, что к нему телефон прислонить только сбоку можно! ))))
Так что буду сейчас шить Ардуину.
Ну вот, приехали. У меня ком 26 а в программе максимум 7 😃
Вроде работает, но с несколько странными показателями! 😃
Ого! =)
А можно мне на почту enterup(собака)gmail.com скинуть данные с первым скэтчем?
Ну то есть заливаете первый скэтч который для программы, запускаете COM монитор, потом копируете данные из монитора или скриншот.
Спасибо!
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"497ec4283df9550077772a70":{"_id":"497ec4283df9550077772a70","hid":43414,"name":"gorbln","nick":"gorbln","avatar_id":null,"css":""},"5519ba6b3df955007771ef03":{"_id":"5519ba6b3df955007771ef03","hid":221150,"name":"daneg","nick":"daneg","avatar_id":null,"css":""},"554d20233df955007771d9c8":{"_id":"554d20233df955007771d9c8","hid":223284,"name":"Можаефф","nick":"Можаефф","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"5630cbe299707300771137a1","hid":20956,"title":"Клиент для программы IMU+GPS-Stream для балансировки БК моторов.","html":"<p>Намучавшись с балансировкой моторов для своих квадриков и самолей, и не имея возможности построить полноценный стенд для балансировки, в результате написал программу-клиент для ПО IMU+GPS-Stream под Andriod.<br>\nIMU+GPS-Stream умеет передавать в потоке по протоколу UDP на заданный IP и порт данные с датчиков телефона. Я воспользовался этой возможностью и теперь данные акселерометра можно видеть не на маленьком экране телефона, а на экране компьютера, что сильно облегчило задачу балансировки. Для работы с программой нужно установить на телефон программу IMU+GPS-Stream (<a href=\"https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps&hl=ru\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps&hl=ru\" target=\"_blank\" rel=\"nofollow noopener\">play.google.com/store/apps/details?id=de.lorenz_fe…</a>) и указать у ней IP адрес и порт на которых будет запущен ее клиент. Далее запускаете клиента , задаете временной промежуток в течении которого нужно снимать параметры с мотора и далее все как на этом видео (оно не моё):</p>\n<p><a href=\"http://www.youtube.com/watch?v=cOzuQ5RUdxs\" class=\"link link-ext link-auto\" data-nd-link-type=\"linkify\" data-nd-link-orig=\"http://www.youtube.com/watch?v=cOzuQ5RUdxs\" target=\"_blank\" rel=\"nofollow noopener\">www.youtube.com/watch?v=cOzuQ5RUdxs</a></p>\n<!--cut-->\n<p>Вдобавок, если у вас есть Arduino и какой-нибудь акселерометр, то в программе предусмотрена возможность захвата данных из COM порта.<br>\nДанные из COM программа принимает вот в таком формате: 0,0,X,Y,Z где XYZ показатели ускорения от акселерометра.<br>\nСкриншотик:<br>\n<img class=\"image\" data-nd-image-orig=\"https://monosnap.com/file/c2yJTa6Ki8KF3CmMr99dF0p445wL3c.png\" src=\"https://monosnap.com/file/c2yJTa6Ki8KF3CmMr99dF0p445wL3c.png\" alt referrerpolicy=\"no-referrer\"><br>\nСама программка.<br>\n<a href=\"https://www.dropbox.com/sh/t7d25ic8o0tprkk/AAB7lipSloIBdbNA_Min5506a?dl=0\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://www.dropbox.com/sh/t7d25ic8o0tprkk/AAB7lipSloIBdbNA_Min5506a?dl=0\" target=\"_blank\" rel=\"nofollow noopener\">www.dropbox.com/sh/…/AAB7lipSloIBdbNA_Min5506a?dl=…</a><br>\nПопозже выложу на что-то более приличное.</p>\n","user":"5519ba6b3df955007771ef03","ts":"2015-10-28T13:21:38.000Z","st":1,"cache":{"comment_count":26,"last_comment":"5634fa3b9970730077129d95","last_comment_hid":26,"last_ts":"2015-10-31T17:28:27.000Z","last_user":"554d20233df955007771d9c8"},"views":2475,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}