- Потребни материјали:
- Кружни дијаграм:
- Укључите подешавање:
- Програмирање вашег Ардуина:
- Припрема Андроид апликације помоћу обраде:
- Рад Ардуино Инцлинометра:
МПУ6050 је ИЦ 3-осе акцелерометар и 3-жироскоп комбиновани у једну јединицу. Такође садржи сензор температуре и ДЦМ за обављање сложених задатака. МПУ6050 се обично користи у изради Дроне-а и других удаљених робота попут самобалансирајућег робота. У овом пројекту ћемо научити како се користи МПУ6050 је уграђен Инцлинометер или Спирит Левелер. Као што знамо, инклинометар се користи за проверу да ли је површина савршено поравната или не, доступни су или као мехурићи или као дигитални бројила. У овом пројекту ћемо изградити Дигитални Инцлинометер који се може надгледати помоћу Андроид апликације. Разлог за употребу даљинског екрана попут мобилног телефона је тај што можемо да надгледамо вредности из МПУ6050 без потребе да гледамо хардвер, што би било врло корисно када се МПУ6050 постави на дрон или неке друге неприступачне локације.
Потребни материјали:
- Ардуино Про-мини (5 В)
- МПУ6050 жиро сензор
- ХЦ-05 или ХЦ-06 Блуетоотх модул
- ФТДИ плоча
- Бреадбоард
- Повезивање жица
- Смарт Пхоне
Кружни дијаграм:
Комплетна шема кола за овај пројекат сензора нагиба Ардуино приказана је испод. Садржи само три компоненте и лако се уграђује преко плоче.
У МПУ6050 комуницира уз помоћ И2Ц и самим тим и пин СДА је повезан са А4 пин Ардуино што је ПИН СДА и СЦЛ пин повезан са А5 пин Ардуино. ХЦ-06 Блуетоотх модул ради уз помоћ серијску комуникацију стога Рк игла Блуетоотх је повезан са пин Д11 и ТКС ПИН Блуетоотх је повезан са пин Д10 на Ардуино. Ови пин Д10 и Д11 биће конфигурисани као серијски пин програмирањем Ардуина. ХЦ-05 модул и МСП6050 модул раде на + 5В и отуда их напаја Вцц пин Ардуино-а као што је горе приказано.
Користио сам неколико жица за повезивање плоча и саградио поставку преко мале плоче. Једном када су везе завршене, моја плоча изгледа овако доле.
Укључите подешавање:
Можете напајати свој круг путем ФТДИ програмске плоче као што сам ја то учинио, или користити 9В батерију или 12В адаптер и повезати га са Рав пином Ардуино про мини. Ардуино Про-мини има уграђени регулатор напона који би претворио овај спољни напон регулисан + 5В.
Програмирање вашег Ардуина:
Када је хардвер спреман, можемо почети са програмирањем нашег Ардуина. Као и увек, комплетни код за овај пројекат можете пронаћи на дну ове странице. Али да бих боље разумео пројекат, разбио сам код на мале делове и објаснио их као кораке у наставку.
Први корак био би повезивање МПУ6050 са Ардуином. За овај пројекат користићемо библиотеку коју је развио Корнелиусз, а коју можете преузети са доње везе
МПУ6050 Либерти - Корнелиусз Јарзебски
Преузмите ЗИП датотеку и додајте је у свој Ардуино ИДЕ. Затим идите на Датотека-> Примери-> Ардуино_МПУ6050_Мастер -> МПУ6050_гиро_питцх_ролл_иав . Ово ће отворити пример програма који користи библиотеку коју смо управо преузели. Дакле, кликните на отпремање и сачекајте да се програм пренесе на ваш Ардуино Про мини. Када је то готово, отворите серијски монитор и подесите брзину преноса на 115200 и проверите да ли добијате следеће.
У почетку ће све три вредности бити једнаке нули, али док померате таблу, можете видети како се те вредности мењају. Ако се промене, значи да је веза исправна, у супротном проверите везе. Одвојите мало времена овде и приметите како се три вредности Питцх Ролл и Иав разликују у зависности од начина нагињања сензора. Ако се збуните, притисните дугме за ресетовање на Ардуину и вредности ће поново бити иницијализоване на нулу, а затим нагните сензор у једном смеру и проверите које вредности варирају. Слика испод помоћи ће вам да боље разумете.
Од ова три параметра занимају нас само Ролл анд Питцх. Вредност ролл ће нам рећи о нагиба у Кс оси и вредности Питцх ће нам рећи о нагиба у И-Акис. Сад кад смо схватили основе, заправо можемо започети са програмирањем Ардуина да би прочитао ове вредности и послао га Ардуину преко Блуетоотх-а. Као и увек, почнимо са укључивањем свих библиотека потребних за овај пројекат
#инцлуде
Затим иницијализујемо серијски софтвер за Блуетоотх модул. То је могуће због софтверске серијске библиотеке у Ардуину, ИО пинови се могу програмирати да раде као серијски пинови. Овде користимо дигиталне пинове Д10 и Д11, где Д10 ид Рк и Д11 је Тк.
СофтвареСериал БТ (10, 11); // РКС, ТКС
Након тога иницијализујемо променљиве и објекте потребне за програм и прелазимо на функцију сетуп () где одређујемо брзину преноса података за серијски монитор и Блуетоотх. За ХЦ-05 и ХЦ-06 брзина преноса је 9600, тако да је обавезно користити исту. Затим проверавамо да ли је ИИЦ магистрала Ардуина повезана на МПУ6050, ако не, исписујемо поруку упозорења и остајемо тамо све док је уређај повезан. Након тога калибрирамо жироскоп и постављамо његове граничне вредности користећи његове одговарајуће функције као што је приказано доле.
воид сетуп () {Сериал.бегин (115200); БТ.бегин (9600); // започните Блуетоотх комуникацију на 9600 баудрате // Иницијализујте МПУ6050 док (! мпу.бегин (МПУ6050_СЦАЛЕ_2000ДПС, МПУ6050_РАНГЕ_2Г)) {Сериал.принтлн ("Не могу да пронађем важећи МПУ6050 сензор, проверите ожичење!"); кашњење (500); } мпу.цалибратеГиро (); // Калибрирање жироскопа током старта мпу.сетТхресхолд (3); // контролише осетљивост}
Ред „ мпу.цалибратеГиро ();“ калибришите МПУ6050 за положај на којем је тренутно постављен. Ова линија се може позивати више пута унутар програма кад год треба калибрисати МПУ6050 и све вредности треба поставити на нулу. „Мпу.сетТхресхолд (3);“ ова функција контролише колико вредност варира за кретање сензора, а прениска вредност ће повећати буку, па будите опрезни док се петљате око овога.
Унутар празнине петље (), више пута читамо вредности жироскопа и сензора температуре, израчунавамо вредност корака, котрљања и скретања, шаљемо је на Блуетоотх модул. Следећа два реда очитаваће необрађене вредности жиро-вредности и вредност температуре
Норма вектора = мпу.реадНормализеГиро (); темп = мпу.реадТемпературе ();
Затим израчунавамо висину корака, котрљања и нагиба множењем временског корака и додавањем претходних вредности. Тиместеп није ништа друго него интервал између узастопних читања.
висина = висина + норма.ИАкис * тимеСтеп; ролл = ролл + норм.КСАкис * тимеСтеп; нагиб = нагиб + норма.ЗАкис * тимеСтеп;
Да бисмо боље разумели временски корак, погледајмо доњи ред. Ова линија је постављена да чита вредности из МПУ6050 тачно у интервалу од 10мС или 0,01 секунде. Тако декларишемо вредност тимеСтеп као 0,01. И користите линију испод да задржите програм ако постоји још времена. (миллис () - тимер ()) даје време потребно за извођење програма до сада. Само га одузмемо за 0,01 секунде, а преостало време само држимо програм тамо помоћу функције одлагања.
кашњење ((тимеСтеп * 1000) - (милис () - тајмер));
Када завршимо са читањем и израчунавањем вредности, можемо их послати на свој телефон путем Блуетоотх везе. Али овде постоји квака. Блуетоотх модул који користимо може да пошаље само 1 бајт (8 битова) што нам омогућава слање бројева само од 0 до 255. Дакле, морамо поделити своје вредности и мапирати га унутар овог опсега. То се ради у следећим редовима
иф (ролл> -100 && ролл <100) к = мап (ролл, -100, 100, 0, 100); иф (питцх> -100 && питцх <100) и = мап (питцх, -100, 100, 100, 200); иф (темп> 0 && темп <50) т = 200 + инт (темп);
Као што можете да схватите, вредност навоја пресликава се на 0 до 100 у променљиву к, а висина пресликава на 100 до 200 у променљиву и, а темп се пресликава на 200 и више у променљиву т. Исте информације можемо користити за преузимање података из онога што смо послали. На крају ове вредности записујемо преко Блуетоотх-а користећи следеће редове.
БТ.врите (к); БТ.врите (и); БТ.врите (т);
Ако сте разумели комплетан програм, померите се надоле да бисте погледали програм и отпремите га на Ардуино плочу.
Припрема Андроид апликације помоћу обраде:
Андроид апликација за овај Ардуино Инцлинометер је развијена помоћу ИДЕ за обраду. Ово је веома слично Ардуину и може се користити за креирање системске апликације, Андроид апликације, веб дизајна и још много тога. Већ смо користили обраду за развој неких других наших цоол пројеката који су наведени у наставку
- Пинг Понг игра користећи Ардуино
- ФМ радио контролиран паметним телефоном помоћу обраде.
- Ардуино радарски систем који користи процесор и ултразвучни сензор
Међутим, није могуће објаснити комплетан код како се креира ова апликација. Дакле, имате два начина да то пређете. Или можете преузети АПК датотеку са доње везе и инсталирати андроид апликацију директно на телефон. Или се померите доле да бисте пронашли комплетан код за обраду и сами научили како то функционише
Унутар ЗИП датотеке можете пронаћи фасциклу која се зове подаци која се састоји од свих слика и других извора који се требају учитати у андроид апликацију. У доњем реду се одлучује на које име Блуетоотх треба аутоматски повезати
бт.цоннецтТоДевицеБиНаме ("ХЦ-06");
Унутар функције драв () , ствари ће се извршавати више пута, овде цртамо слике, приказујемо текст и анимирамо траке на основу вредности из Блуетоотх модула. Читањем програма можете проверити шта се дешава унутар сваке функције.
воид драв () // Бесконачна петља {бацкгроунд (0); имагеМоде (ЦЕНТАР); слика (логотип, ширина / 2, висина / 1,04, ширина, висина / 12); лоад_имагес (); тектфун (); гетвал (); }
Коначно, постоји још једна важна ствар коју треба објаснити, имајте на уму да смо вредност тона, котрљања и температуре поделили на 0 до 255. Дакле, овде је поново враћамо на нормалне вредности обрнутим мапирањем на нормалне вредности.
иф (инфо <100 && инфо> 0) к = мапа (инфо, 0, 100, - (видтх / 1.5) / 3, + (видтх / 1.5) / 3); // к = инфо; иначе иф (инфо <200 && инфо> 100) и = мап (инфо, 100, 200, - (видтх / 4.5) /0.8, + (видтх / 4.5) /0.8); // и = инфо; иначе иф (инфо> 200) темп = инфо -200; принтлн (темп, к, и);
Постоје много бољи начини за добивање података са Блуетоотх модула на телефон, али с обзиром да је ово само хоби пројекат који смо занемарили, ако желите, можете ископати.
Рад Ардуино Инцлинометра:
Након што се припремите за хардвер и апликацију, време је да се забавите оним што смо изградили. Отпремите Ардуино код на плочу, такође можете уклонити коментаре на линијама Сериал.принтлн и проверити да ли хардвер ради како се очекује помоћу серијског монитора. У сваком случају, то је потпуно необавезно.
Након што се код отпреми, покрените Андроид апликацију на свом мобилном телефону. Апликација треба аутоматски да се повеже са вашим ХЦ-06 модулом и на врху апликације ће приказати „Повежи се са: ХЦ-06“, као што је приказано доле.
У почетку ће све вредности бити нула, осим вредности температуре. То је зато што је Ардуино калибрисао МПУ-6050 за ову позицију као референцу, сада можете да нагнете хардвер и проверите да ли се вредности у мобилној апликацији такође мењају заједно са анимацијом. Комплетан рад апликације можете пронаћи на видео снимку датом у наставку. Тако сада можете да поставите плочу за жбуку било где и проверите да ли је површина савршено поравната.
Надам се да сте разумели пројекат и научили нешто корисно из њега. Ако сумњате, користите одељак за коментаре испод или форуме да бисте то решили.