- Потребне компоненте:
- МПУ6050 жиро сензор:
- Опис:
- Шема и објашњење:
- Конфигурисање Распберри Пи за жироскопски сензор МПУ6050:
- Објашњење програмирања:
МПУ6050 сензор има много функција преко једног чипа. Састоји се од МЕМС акцелерометра, МЕМС жироскопа и температурног сензора. Овај модул је врло прецизан приликом претварања аналогних вредности у дигиталне, јер има 16-битни хардвер аналогног у дигитални претварач за сваки канал. Овај модул може истовремено да ухвати к, и и з канал. Има И2Ц интерфејс за комуникацију са хост контролером. Овај МПУ6050 модул је компактни чип који има и акцелерометар и жироскоп. Ово је веома користан уређај за многе примене попут дронова, робота, сензора покрета. Такође се назива жироскоп или троосни акцелерометар.
Данас ћемо у овом чланку повезати овај МПУ6050 са Распберри Пи и приказати вредности преко ЛЦД екрана 16к2.
Потребне компоненте:
- Распберри Пи
- МПУ-6050
- 10К ПОТ
- Жица краткоспојника
- Бреадбоард
- Напајање
МПУ6050 жиро сензор:
МПУ-6050 је 8-пински жироскоп са 6 осовина и акцелерометар у једном чипу. Овај модул подразумевано ради на И2Ц серијској комуникацији, али се може конфигурисати за СПИ интерфејс конфигурисањем регистра. За И2Ц ово има СДА и СЦЛ линије. Готово сви пинови су мултифункционални, али овде радимо само са пиновима у И2Ц режиму.
Конфигурација пин-а:
Вцц: - овај пин се користи за напајање МПУ6050 модула у односу на масу
ГНД: - ово је уземљена игла
СДА: - СДА пин се користи за податке између контролера и мпу6050 модула
СЦЛ: - СЦЛ пин се користи за унос сата
КСДА: - Ово је сензорска линија података И2Ц СДА за конфигурисање и читање са спољних сензора ((опционално) која се у нашем случају не користи)
КСЦЛ: - Ово је сензорска И2Ц СЦЛ линија сата за конфигурисање и очитавање са спољних сензора ((опционално) која се у нашем случају не користи)
АДО: - И2Ц адреса славе ЛСБ (није применљива у нашем случају)
ИНТ: - Игла за прекид за индикацију спремности података.
Претходно смо повезали МПУ6050 са Ардуином.
Опис:
У овом чланку приказујемо очитавања температуре, жироскопа и акцелерометра на ЛЦД-у помоћу МПУ6050 са Распберри Пи. Ако сте нови у Распберри Пи, прођите кроз наш одељак водича за Распберри Пи и научите како започети с Распберри Пи.
У овом пројекту прво смо приказали температурну вредност преко ЛЦД-а, а након неког времена приказујемо гироскопске вредности, а затим после неког времена очитавања акцелерометра као што је приказано на сликама испод:
Шема и објашњење:
Шема кола за повезивање МПУ6050 са Распберри Пи је врло једноставна, овде смо користили ЛЦД и МПУ6050. За управљање осветљеношћу ЛЦД-а користи се посуда од 10 хиљада. У вези са МПУ6050, урадили смо 4 везе у којима смо повезали 3.3в напајање и масу МПУ6050 са 3.3в и масом Распберри Пи. СЦЛ и СДА пинови МПУ6050 повезани су са Распберри-овим физичким пином 3 (ГПИО2) и пином 5 (ГПИО3). ЛЦД-ови РС, РВ и ЕН су директно повезани са ГПИО18 и 23 од малина пи. Дата пин су директно повезани са дигиталним пин бројевима ГПИО24, ГПИО25, ГПИО8 и ГПИО7. Овде сазнајте више о повезивању ЛЦД-а са Распберри Пи.
Конфигурисање Распберри Пи за жироскопски сензор МПУ6050:
Пре него што започнемо са програмирањем, морамо да омогућимо и2ц Распберри Пи помоћу дате методе:
1. корак: Омогућите И2Ц комуникацију
Пре инсталирања библиотеке Адафруит ССД1306 морамо да омогућимо И2Ц комуникацију у Распберри Пи.
Да бисте то урадили у Распберри Пи конзоли:
: судо распи -цонфиг
А онда ће се појавити плави екран. Сада изаберите опцију интерфејса
После овога, треба да изаберемо И2Ц
У
После овога треба да изаберемо да и притиснемо ентер и онда ок
После овога, морамо поново покренути Распберри Пи издавањем наредбе испод:
содо ребоот
Корак 2: Инсталирајте питхон-пип и ГПИО библиотеку
судо апт-гет инсталл буилд-битно питхон-дев питхон-пип
После овога, морамо да инсталирамо Распберри пи ГПИО библиотеку
судо пип инсталира РПи.ГПИО
Корак 3: Инсталирајте смбус библиотеку
На крају, треба да инсталирамо смбус библиотеку у Распберри Пи помоћу дате наредбе:
судо апт-гет инсталирај питхон-смбус
Корак 4: Инсталирајте библиотеку МПУ6050
После овога треба да инсталирамо МПУ6050 библиотеку помоћу дате наредбе
судо пип инсталирати мпу6050
Сада у примерима можемо наћи примере кодова. Корисник може тестирати тај код директним отпремањем на Распберри Пи или га прилагодити према захтевима. Овде смо приказали вредности Кс, И и З осе МПУ6050 на ЛЦД екрану од 16к2. Пуни Питхон код можете пронаћи на крају Водича.
Објашњење програмирања:
Комплетни Питхон код дат је на крају, овде објашњавамо неколико важних делова кода.
У програм Питхон увезли смо неке потребне библиотеке попут времена, смбуса и ГПИО-а.
увоз смбус време увоза увоз РПи.ГПИО као гпио
После овога, треба да узмемо неку адресу регистра за конфигурисање МПУ6050 и за добијање вредности са истог. Такође смо узели неке променљиве за калибрацију и иницијализацију магистрале за И2Ц.
ПВР_М = 0к6Б ДИВ = 0к19 ЦОНФИГ = 0к1А ГИРО_ЦОНФИГ = 0к1Б ИНТ_ЕН = 0к38 АЦЦЕЛ_Кс = 0к3Б АЦЦЕЛ_И = 0к3Д АЦЦЕЛ_З = 0к3Ф ГИРО_Кс = 0к43 ГИРО_И = 0к45 ГИРО_З = 0бус 45ГкРОБЗ = 0бус45 ГКСРО_З = 0бус45ГКС47БД = 0бус 0Кс45 ГКСРОБЗ = 0бус45 ГКСРО_З = 0бус45ГКС47БГ = 0к45 ГкРО41П = 0бус45 ГКСРО_З = 0бус45ГКС47БГ = 0б45 ГКСРО_З = 0к45 ГкРО_З = 0б45 ГКСРО_З = 0к45 ГИРО_П = 0бус45 ГКСРОБЗ АкЦал = 0 АиЦал = 0 АзЦал = 0 ГкЦал = 0 ГиЦал = 0 ГзЦал = 0
Затим смо написали неке функције за вожњу 16к2ЛЦД попут деф бегин (), деф цмд (цх), деф врите (цх), деф Принт (стр), деф цлеар () итд . Можете даље да проверите Повезивање ЛЦД-а са Распберри Пи.
После овога треба да иницијализујемо МПУ6050 модул
деф ИнитМПУ (): бус.врите_бите_дата (Девице_Аддресс, ДИВ, 7) бус.врите_бите_дата (Девице_Аддресс, ПВР_М, 1) бус.врите_бите_дата (Девице_Аддресс, ЦОНФИГ, 0) бус.врите_бите_дата (Девице_АддрессОНГИРОАдритеАддресс, ГИРО_Адрите, ГИРО, ИНТ_ЕН, 1) тиме.слееп (1)
После овога, морамо да напишемо неке функције за читање вредности са МПУ6050 и приказ на ЛЦД екрану. Дата функција се користи за читање података из МПУ6050
деф реадМПУ (аддр): хигх = бус.реад_бите_дата (Девице_Аддресс, аддр) лов = бус.реад_бите_дата (Девице_Аддресс, аддр + 1) валуе = ((хигх << 8) - лов) иф (валуе> 32768): валуе = валуе - 65536 повратна вредност
Дата функција се користи за очитавање података акцелерометра и жиросомера
деф аццел (): к = реадМПУ (АЦЦЕЛ_Кс) и = реадМПУ (АЦЦЕЛ_И) з = реадМПУ (АЦЦЕЛ_З) Ак = (к / 16384.0-АкЦал) Аи = (и / 16384.0-АиЦал) Аз = (з / 16384.0-АзЦал) #принт "Кс =" + стр (Ак) дисплаи (Аке, Аи, Аз) тиме.слееп (.01) деф гиро (): глобални ГкЦал глобални ГиЦал глобални ГзЦал к = реадМПУ (ГИРО_Кс) и = реадМПУ (ГИРО_И) з = реадМПУ (ГИРО_З) Гк = к / 131.0 - ГкЦал Ги = и / 131.0 - ГиЦал Гз = з / 131.0 - ГзЦал # принт "Кс =" + стр (Гк) приказ (Гк, Ги, Гз) тиме.слееп (. 01)
Након овога написали смо функцију очитавања температуре
деф темп (): темпРов = реадМПУ (ТЕМП) темпЦ = (темпРов / 340.0) + 36.53 темпЦ = "%. 2ф"% темпЦ принт темпЦ сетЦурсор (0,0) Принт ("Темп:") Принт (стр (темпЦ)) време.спавање (.2)
функција деф цалибрате () користи се за калибрацију МПУ6050, а функција деф дисплаи () користи се за приказ вредности на ЛЦД-у. Проверите ове функције у комплетном коду датом у наставку.
Након тога, почели смо са ЛЦД, покрените и калибришите МПУ6050 а затим у док петља смо звали сви све три сет вредности од МПУ- температуре, акцелерометар и жиро и показао им преко ЛЦД.
почети(); Принт ("МПУ6050 Интерфаце") сетЦурсор (0,1) Принт ("Цирцуит Дигест") тиме.слееп (2) ИнитМПУ () цалибрате () вхиле 1: ИнитМПУ () цлеар () фор и ин ранге (20): темп () цлеар () Принт ("Аццел") тиме.слееп (1) фор и ин ранге (30): аццел () цлеар () Принт ("Гиро") тиме.слееп (1) фор и ин ранге (30): гиро ()
МПУ6050 жироскоп и акцелерометар се користе за откривање положаја и оријентације било ког уређаја. Жиро користи земаљску гравитацију за одређивање положаја к, и и з осе, а акцелерометар открива на основу брзине промене кретања. Акцелерометар смо већ користили са Ардуином у многим нашим пројектима попут:
- Робот под контролом гестова заснован на акцелерометру
- Систем за узбуњивање незгода на бази Ардуино-а
- Аларм за детектор земљотреса користећи Ардуино