Регионални центар за таленте "Михајло Пупин"

 

Шта је MPU-9250?

MPU-9250 је инерцијална мерна јединица (IMU – Inertial Measurement Unit) која у једном малом интегрисаном колу садржи три различита сензора: троосни акцелерометар, троосни жироскоп и троосни магнетометар. Захваљујући томе могуће је истовремено пратити кретање, нагиб, окретање и оријентацију у простору.

Овакав тип сензора користи се у великом броју савремених уређаја. Налазимо га у мобилним телефонима, паметним сатовима, дроновима, роботима, системима за стабилизацију камера, навигационим уређајима, па чак и у аутомобилима. Захваљујући овим сензорима телефон зна када га окренемо, дрон одржава равнотежу током лета, а паметни сат броји кораке.

Elementi MPU-9250 senzora

Три сензора у једном модулу

MPU-9250 комбинује акцелерометар, жироскоп и магнетометар у једном интегрисаном колу.

 

Која мерења даје овај сензор?

MPU-9250 истовремено обезбеђује чак девет различитих мерења, због чега се често назива 9-осни IMU сензор. Сваки од три уграђена сензора мери вредности по три просторне осе: X, Y и Z.

Акцелерометар

Мери линеарно убрзање по X, Y и Z оси. На основу тих вредности може се одредити нагиб уређаја и детектовати кретање.

Жироскоп

Мери угаону брзину, односно колико брзо се уређај окреће око сваке осе.

Магнетометар

Мери Земљино магнетно поље и омогућава одређивање смера као дигитални компас.

 

Које су X, Y и Z осе?

Да бисмо разумели како ради MPU-9250, потребно је да знамо шта представљају просторне осе. Сензор увек мери вредности у односу на своје координатне осе.

  • X оса – кретање лево–десно.
  • Y оса – кретање напред–назад.
  • Z оса – кретање горе–доле.
Ose MPU-9250 senzora

Координатне осе

Сва мерења акцелерометра, жироскопа и магнетометра односе се на X, Y и Z осу.

Када окрећемо модул, вредности на појединим осама се мењају. Управо на тим променама заснивају се све касније вежбе и пројекти.

 

Како сваки сензор ради?

Акцелерометар

Акцелерометар мери убрзање. Чак и када сензор мирује, он региструје Земљину тежу (гравитацију), па се на основу тога може одредити нагиб уређаја.

  • ако је плоча равна — највећа вредност је на Z оси;
  • ако је нагнемо улево — мења се X оса;
  • ако је нагнемо напред — мења се Y оса.

Жироскоп

Жироскоп не мери положај већ брзину окретања. Ако брзо окренемо модул, добићемо већу вредност него када га окрећемо полако. Управо зато се жироскоп користи за стабилизацију дронова, робота и камера.

Магнетометар

Магнетометар мери јачину и правац Земљиног магнетног поља. На основу ових података могуће је израчунати смер кретања (север, исток, југ и запад), због чега се често назива дигиталним компасом.

Важно је знати

Сваки од ова три сензора има своје предности и недостатке.

  • Акцелерометар добро показује нагиб, али реагује и на вибрације.
  • Жироскоп прецизно мери ротацију, али временом може да акумулира грешку.
  • Магнетометар показује смер, али му могу сметати магнети и метални предмети.

Због тога се у стварним системима користе сва три сензора истовремено. Комбиновањем њихових мерења добија се много прецизнија процена оријентације у простору.

Primena MPU-9250 senzora

Где се користи MPU-9250?

IMU сензори се налазе у дроновима, роботима, мобилним телефонима, паметним сатовима и многим другим електронским уређајима.

 

 

Опис пинова

На већини MPU-9250 модула налазе се прикључци који омогућавају комуникацију преко I2C или SPI интерфејса. У школским пројектима најчешће се користи I2C јер захтева само две комуникационе линије и веома је једноставан за повезивање са ESP32.

  • VCC – напајање модула (препоручује се 3.3V)
  • GND – маса
  • SDA – линија за пренос података (I2C)
  • SCL – линија такта (I2C)
  • AD0 – промена I2C адресе
  • INT – излаз прекида (Interrupt)
  • FSYNC – синхронизација мерења
  • NCS – избор SPI режима рада
MPU-9250 pinout

Распоред пинова MPU-9250 модула

Приказ најважнијих прикључака који се користе приликом повезивања са ESP32 развојном плочом.

Основни пинови

За већину школских пројеката довољно је повезати само VCC, GND, SDA и SCL.

Напредни пинови

INT, AD0, FSYNC и NCS користе се код сложенијих пројеката који захтевају већу брзину или прекиде.

 

Повезивање са ESP32

ESP32 и MPU-9250 комуницирају преко I2C магистрале. То значи да су потребне само две сигналне линије: SDA (подаци) и SCL (сат). ESP32 већ има уграђен I2C контролер, па није потребан никакав додатни хардвер.

Подразумевани I2C пинови на већини ESP32 плоча су:

  • GPIO21 → SDA
  • GPIO22 → SCL

Поред сигналних линија неопходно је повезати и напајање.

MPU-9250 ESP32
VCC 3.3V
GND GND
SDA GPIO21
SCL GPIO22

 

Povezivanje MPU9250 i ESP32

Повезивање ESP32 и MPU-9250

Практичан пример повезивања сензора са ESP32 развојном плочом преко I2C интерфејса.

 

MPU9250 na breadboard ploci

Повезивање на breadboard плочи

Пример како изгледа повезан сензор приликом израде школских вежби.

Како функционише I2C комуникација?

I2C (Inter Integrated Circuit) представља серијски комуникациони протокол који омогућава да више уређаја користи исте SDA и SCL линије. Сваки уређај има своју адресу, па ESP32 може да комуницира са више сензора истовремено.

Најчешћа адреса MPU-9250 модула је:

  • 0x68 (AD0 повезан на GND)
  • 0x69 (AD0 повезан на 3.3V)

Уколико нисте сигурни коју адресу има ваш модул, можете покренути I2C Scanner програм у Arduino IDE и проверити адресу аутоматски.

 

I2C Scanner rezultat

Резултат I2C Scanner програма

У Serial Monitor-у приказује се I2C адреса пронађеног уређаја.

Напомена о напајању

Иако неки MPU-9250 модули имају уграђен стабилизатор напона и могу да се напајају са 5V, за рад са ESP32 препоручује се напајање од 3.3V.

На тај начин су логички нивои идентични и избегава се могућност оштећења микроконтролера или сензора.

 

Могући пројекти и примена

Комбиновањем података са акцелерометра, жироскопа и магнетометра могуће је реализовати велики број практичних пројеката. Управо зато се MPU-9250 налази у многим роботима, дроновима, паметним уређајима и индустријским системима.

Primena MPU-9250 senzora

Примене MPU-9250 сензора

Од паметних сатова до дронова – овај сензор је један од најчешће коришћених IMU модула.

  • електронски компас,
  • детектор нагиба,
  • бројач корака,
  • балансирајући робот,
  • стабилизација дрона,
  • управљање покретима руке,
  • детекција пада,
  • антикрађа системи,
  • праћење покрета у спортској анализи,
  • виртуелна и проширена реалност (VR/AR).

Шта ће ученици научити?

  • шта је IMU сензор,
  • како функционише I2C комуникација,
  • како се повезује MPU-9250 са ESP32,
  • како се читају подаци са сензора,
  • како се добијени подаци могу приказати у Arduino IDE и касније у Processing окружењу.

 

Вежба 1 – Рад са магнетометром (дигитални компас)

У овој вежби ученици ће први пут комуницирати са MPU-9250 сензором и научити како да очитавају вредности магнетног поља. Магнетометар ради као дигитални компас и мери јачину Земљиног магнетног поља по три осе (X, Y и Z).

Циљ није да одмах направимо компас, већ да разумемо како изгледају подаци које сензор шаље ESP32 микроконтролеру.

Magnetometar MPU-9250

Магнетометар

Мери Земљино магнетно поље и омогућава одређивање смера кретања.

Потребна опрема

  • ESP32 развојна плоча
  • MPU-9250 модул
  • Breadboard
  • Повезне жице
  • USB кабл
  • Arduino IDE

Инсталација библиотеке

Пре покретања програма потребно је инсталирати библиотеку:

  • Sketch → Include Library → Manage Libraries
  • потражити MPU9250_asukiaaa
  • инсталирати последњу верзију библиотеке

Повезивање MPU-9250 са ESP32

Иако у овој вежби користимо само магнетометар, повезује се цео MPU-9250 модул. Магнетометар се налази унутар сензора и није потребно посебно повезивање његових пинова. Довољно је успоставити I2C комуникацију између ESP32 и MPU-9250 модула.

MPU-9250 ESP32 Опис
VCC 3.3V Напајање модула
GND GND Заједничка маса
SDA GPIO21 I2C линија за пренос података
SCL GPIO22 I2C линија такта

Важно

Иако је циљ ове вежбе рад са магнетометром, преко I2C комуникације ESP32 приступа целом MPU-9250 модулу. Програм једноставно користи само део сензора који представља магнетометар.

Povezivanje MPU-9250 sa ESP32 za magnetometar

Повезивање за Вежбу 1

За очитавање магнетометра користе се само четири жице: VCC, GND, SDA и SCL.

Instalacija biblioteke

Инсталација библиотеке

Библиотека омогућава једноставно очитавање свих сензора MPU-9250.

Arduino програм


#include <Wire.h>
#include <MPU9250_asukiaaa.h>

MPU9250_asukiaaa mpu;

void setup() {

  Serial.begin(115200);

  Wire.begin(21,22);

  mpu.setWire(&Wire);

  mpu.beginMag();

}

void loop() {

  mpu.magUpdate();

  Serial.print("MX: ");
  Serial.print(mpu.magX());

  Serial.print("  MY: ");
  Serial.print(mpu.magY());

  Serial.print("  MZ: ");
  Serial.println(mpu.magZ());

  delay(200);

}

Објашњење програма

  • Wire.begin(21,22) покреће I2C комуникацију.
  • mpu.beginMag() активира магнетометар.
  • magUpdate() чита нове вредности.
  • magX(), magY() и magZ() враћају вредности по све три осе.
  • Serial Monitor приказује измерене податке.
Serial Monitor magnetometar

Приказ у Serial Monitor-у

Вредности се непрекидно мењају приликом окретања сензора.

Шта треба испробати?

  1. Покрените програм.
  2. Отворите Serial Monitor.
  3. Полако ротирајте сензор.
  4. Посматрајте како се мењају вредности MX, MY и MZ.
  5. Приближите магнет сензору и посматрајте велике промене.

 

Визуелизација у Processing окружењу

Уместо приказа бројева могуће је направити једноставну графичку визуелизацију. Processing ће читати серијске податке и ротирати стрелицу која представља смер магнетног поља.

Processing kompas

Предлог визуелизације

Стрелица се ротира у зависности од вредности које шаље MPU-9250.

Пример Processing кода


import processing.serial.*;

Serial port;

float angle = 0;

void setup(){

  size(600,600);

  port = new Serial(this,"COM5",115200);

}

void draw(){

  background(240);

  translate(width/2,height/2);

  rotate(radians(angle));

  strokeWeight(5);

  line(0,0,0,-180);

  fill(255,0,0);

  triangle(-12,-170,12,-170,0,-210);

}

void serialEvent(Serial p){

  String s=p.readStringUntil('\n');

  if(s!=null){

    // Ovde se kasnije može izračunavati ugao
    // iz MX i MY vrednosti.
  }

}

Објашњење

У овој лекцији још не израчунавамо правац компаса. Processing служи само као пример како се подаци могу графички приказати. Израчунавање угла и правог дигиталног компаса биће тема једне од наредних лекција.

Задатак за ученике

  • Испробати програм.
  • Посматрати промене вредности приликом ротирања сензора.
  • Утврдити која оса највише реагује приликом окретања око вертикалне осе.
  • Размислити како би се од MX и MY могао израчунати угао компаса.

 

Вежба 2 – Рад са акцелерометром (детекција нагиба)

У овој вежби користимо само акцелерометар који се налази унутар MPU-9250 сензора. Акцелерометар мери убрзање по три осе (X, Y и Z), али када сензор мирује, он заправо мери утицај Земљине теже. Управо захваљујући томе можемо одредити нагиб плоче у простору.

Овај принцип користи се у мобилним телефонима, дроновима, паметним сатовима, роботима и многим индустријским системима.

Повезивање MPU-9250 са ESP32

Акцелерометар је такође интегрисан унутар MPU-9250 модула. Ни у овој вежби није потребно посебно повезивање додатних пинова, већ се користи исто I2C повезивање као и код претходне вежбе.

MPU-9250 ESP32 Опис
VCC 3.3V Напајање сензора
GND GND Маса
SDA GPIO21 I2C подаци
SCL GPIO22 I2C такт

Напомена

Иако програм користи само акцелерометар, ESP32 комуницира са целим MPU-9250 модулом. Библиотека затим издваја само податке који припадају акцелерометру.

Povezivanje MPU-9250 sa ESP32 za akcelerometar

Повезивање за Вежбу 2

И код рада са акцелерометром користе се иста четири прикључка јер су сви сензори интегрисани у једном модулу.

Akcelerometar MPU-9250

Акцелерометар

Мери убрзање по X, Y и Z оси и омогућава одређивање нагиба уређаја.

Зашто су повезивања иста?

MPU-9250 није скуп три одвојена сензора већ једно интегрисано коло. Акцелерометар, жироскоп и магнетометар налазе се унутар истог чипа и са ESP32 комуницирају преко заједничке I2C магистрале. Због тога су за све три вежбе потребна иста четири прикључка (VCC, GND, SDA и SCL), док се разлика прави искључиво у програмском коду који одређује који део сензора ће бити коришћен.

Циљ вежбе

  • Очитавање вредности акцелерометра.
  • Посматрање промена приликом нагиба плоче.
  • Разумевање координатног система X, Y и Z.
  • Приказ вредности у Serial Monitor-у.

Arduino програм


#include <Wire.h>
#include <MPU9250_asukiaaa.h>

MPU9250_asukiaaa mpu;

void setup() {

  Serial.begin(115200);

  Wire.begin(21,22);

  mpu.setWire(&Wire);

  mpu.beginAccel();

}

void loop() {

  mpu.accelUpdate();

  Serial.print(mpu.accelX());
  Serial.print(",");

  Serial.print(mpu.accelY());
  Serial.print(",");

  Serial.println(mpu.accelZ());

  delay(50);

}

Објашњење програма

  • beginAccel() покреће акцелерометар.
  • accelUpdate() чита нове податке.
  • accelX(), accelY() и accelZ() враћају вредности убрзања.
  • Вредности се шаљу у једном реду раздвојене зарезима како би их Processing лако читао.
Serial Monitor akcelerometar

Приказ у Serial Monitor-у

Вредности по осама X, Y и Z мењају се приликом нагињања плоче.

Шта треба испробати?

  1. Поставити сензор на сто.
  2. Посматрати вредности по све три осе.
  3. Нагнути плочу улево и удесно.
  4. Нагнути плочу напред и назад.
  5. Уочити која оса највише реагује.

 

Визуелизација у Processing окружењу

Уместо приказа бројева можемо направити електронску либелу. На екрану се приказује круг унутар кога се налази куглица. Како се ESP32 плоча нагиње, тако се куглица помера у одговарајућем смеру.

Elektronska libela Processing

Електронска либела

Куглица прати нагиб сензора у реалном времену.

Processing програм


import processing.serial.*;

Serial port;

float ax=0;
float ay=0;

void setup(){

  size(600,600);

  port=new Serial(this,"COM5",115200);

}

void draw(){

  background(245);

  translate(width/2,height/2);

  noFill();

  strokeWeight(3);

  ellipse(0,0,320,320);

  fill(0,180,255);

  ellipse(ax*120,-ay*120,35,35);

}

void serialEvent(Serial p){

  String s=p.readStringUntil('\n');

  if(s!=null){

    String[] data=split(trim(s),",");

    if(data.length==3){

      ax=float(data[0]);

      ay=float(data[1]);

    }

  }

}

Како функционише визуелизација?

ESP32 шаље вредности X и Y осе преко серијске комуникације. Processing чита сваки ред података, издваја вредности и на основу њих помера плаву куглицу по екрану. На тај начин добијамо једноставну електронску либелу која приказује нагиб плоче у реалном времену.

Demo elektronske libele

Рад програма

Померањем ESP32 плоче помера се и куглица на екрану.

Задатак за ученике

  • Покренути програм и посматрати вредности у Serial Monitor-у.
  • Проверити како реагују X и Y осе приликом различитих нагиба.
  • Покренути Processing програм и упоредити положај куглице са положајем плоче.
  • Покушати да задржите куглицу у самом центру круга.

Шта смо научили?

У овој вежби смо научили како се користи акцелерометар за мерење нагиба и како се подаци могу визуелизовати у реалном времену. Овај принцип користи се код електронских либела, баланс робота, паметних телефона и великог броја индустријских уређаја.

 

Идеје за употребу у пројектима

Након што сте научили како се читају подаци са акцелерометра, жироскопа и магнетометра, можете почети да правите сопствене пројекте. MPU-9250 је један од најкоришћенијих IMU сензора у роботици, аутоматизацији и IoT системима јер омогућава праћење положаја, кретања и оријентације уређаја у простору.

Primena MPU-9250 senzora.jpg

Примене MPU-9250 сензора

Од робота и дронова до паметних уређаја и STEM пројеката.

 

Електронски компас

Приказ смера кретања помоћу магнетометра на OLED дисплеју или TFT екрану.

Детектор нагиба

Праћење угла нагиба и активирање аларма ако се предмет превише накрене.

Самобалансирајући робот

Акцелерометар и жироскоп омогућавају мерење нагиба робота ради одржавања равнотеже.

Контрола покретима

Управљање игрицом, роботом или презентацијом померањем руке.

Бројач корака

Обрада података акцелерометра ради препознавања корака и физичке активности.

Детекција пада

Праћење наглих промена убрзања ради препознавања пада особе или предмета.

 

Визуелизација података у Processing окружењу

Једна од најзанимљивијих примена овог сензора јесте приказ мерења у реалном времену. Processing омогућава да податке које ESP32 шаље преко серијске комуникације претворимо у графике, показиваче, инструменте или чак тродимензионалне моделе.

Processing vizuelizacija MPU-9250.jpg

Processing визуелизација

Подаци са ESP32 могу се приказивати као графици, казаљке или 3D модел.

У овој лекцији приказали смо једноставан пример визуелизације магнетометра, али исти принцип може да се примени и за приказ акцелерометра или жироскопа.

Предлог домаћег задатка

  • Приказати вредности акцелерометра као три покретне линије различитих боја.
  • Направити график који приказује промене X, Y и Z осе током времена.
  • Приказати положај виртуелне куглице која се помера у зависности од нагиба сензора.
  • Направити 3D коцку која прати оријентацију MPU-9250 сензора.

 

Шта смо научили?

IMU сензори

Научили смо шта представља инерцијални мерни уређај (IMU).

I2C комуникација

Повезали смо MPU-9250 и ESP32 преко I2C магистрале.

Arduino програмирање

Очитавали смо вредности са акцелерометра, жироскопа и магнетометра.

Визуелизација

Приказивали смо податке на Serial Monitor-у и у Processing окружењу.

 

Закључак

MPU-9250 представља један од најкомплетнијих сензора који се користе у образовању, роботици и савременим електронским системима. Захваљујући томе што у једном модулу садржи акцелерометар, жироскоп и магнетометар, омогућава прецизно праћење покрета, нагиба и оријентације уређаја.

У овој лекцији научили сте како се сензор повезује са ESP32, како се читају основни подаци и како се они могу приказати у Arduino IDE и Processing окружењу. То представља основу за израду сложенијих пројеката који ће бити обрађени у наредним лекцијама.

У наставку курса правићемо електронски компас, визуелизацију оријентације у 3D простору, детектор нагиба, систем за препознавање покрета и друге практичне STEM пројекте засноване на MPU-9250 сензору.

 

Шта је MPU-9250?

MPU-9250 је инерцијална мерна јединица (IMU – Inertial Measurement Unit) која у једном малом интегрисаном колу садржи три различита сензора: троосни акцелерометар, троосни жироскоп и троосни магнетометар. Захваљујући томе могуће је истовремено пратити кретање, нагиб, окретање и оријентацију у простору.

Овакав тип сензора користи се у великом броју савремених уређаја. Налазимо га у мобилним телефонима, паметним сатовима, дроновима, роботима, системима за стабилизацију камера, навигационим уређајима, па чак и у аутомобилима. Захваљујући овим сензорима телефон зна када га окренемо, дрон одржава равнотежу током лета, а паметни сат броји кораке.

Elementi MPU-9250 senzora

Три сензора у једном модулу

MPU-9250 комбинује акцелерометар, жироскоп и магнетометар у једном интегрисаном колу.

 

Која мерења даје овај сензор?

MPU-9250 истовремено обезбеђује чак девет различитих мерења, због чега се често назива 9-осни IMU сензор. Сваки од три уграђена сензора мери вредности по три просторне осе: X, Y и Z.

Акцелерометар

Мери линеарно убрзање по X, Y и Z оси. На основу тих вредности може се одредити нагиб уређаја и детектовати кретање.

Жироскоп

Мери угаону брзину, односно колико брзо се уређај окреће око сваке осе.

Магнетометар

Мери Земљино магнетно поље и омогућава одређивање смера као дигитални компас.

 

Које су X, Y и Z осе?

Да бисмо разумели како ради MPU-9250, потребно је да знамо шта представљају просторне осе. Сензор увек мери вредности у односу на своје координатне осе.

  • X оса – кретање лево–десно.
  • Y оса – кретање напред–назад.
  • Z оса – кретање горе–доле.
Ose MPU-9250 senzora

Координатне осе

Сва мерења акцелерометра, жироскопа и магнетометра односе се на X, Y и Z осу.

Када окрећемо модул, вредности на појединим осама се мењају. Управо на тим променама заснивају се све касније вежбе и пројекти.

 

Како сваки сензор ради?

Акцелерометар

Акцелерометар мери убрзање. Чак и када сензор мирује, он региструје Земљину тежу (гравитацију), па се на основу тога може одредити нагиб уређаја.

  • ако је плоча равна — највећа вредност је на Z оси;
  • ако је нагнемо улево — мења се X оса;
  • ако је нагнемо напред — мења се Y оса.

Жироскоп

Жироскоп не мери положај већ брзину окретања. Ако брзо окренемо модул, добићемо већу вредност него када га окрећемо полако. Управо зато се жироскоп користи за стабилизацију дронова, робота и камера.

Магнетометар

Магнетометар мери јачину и правац Земљиног магнетног поља. На основу ових података могуће је израчунати смер кретања (север, исток, југ и запад), због чега се често назива дигиталним компасом.

Важно је знати

Сваки од ова три сензора има своје предности и недостатке.

  • Акцелерометар добро показује нагиб, али реагује и на вибрације.
  • Жироскоп прецизно мери ротацију, али временом може да акумулира грешку.
  • Магнетометар показује смер, али му могу сметати магнети и метални предмети.

Због тога се у стварним системима користе сва три сензора истовремено. Комбиновањем њихових мерења добија се много прецизнија процена оријентације у простору.

Primena MPU-9250 senzora

Где се користи MPU-9250?

IMU сензори се налазе у дроновима, роботима, мобилним телефонима, паметним сатовима и многим другим електронским уређајима.

 

 

Опис пинова

На већини MPU-9250 модула налазе се прикључци који омогућавају комуникацију преко I2C или SPI интерфејса. У школским пројектима најчешће се користи I2C јер захтева само две комуникационе линије и веома је једноставан за повезивање са ESP32.

  • VCC – напајање модула (препоручује се 3.3V)
  • GND – маса
  • SDA – линија за пренос података (I2C)
  • SCL – линија такта (I2C)
  • AD0 – промена I2C адресе
  • INT – излаз прекида (Interrupt)
  • FSYNC – синхронизација мерења
  • NCS – избор SPI режима рада
MPU-9250 pinout

Распоред пинова MPU-9250 модула

Приказ најважнијих прикључака који се користе приликом повезивања са ESP32 развојном плочом.

Основни пинови

За већину школских пројеката довољно је повезати само VCC, GND, SDA и SCL.

Напредни пинови

INT, AD0, FSYNC и NCS користе се код сложенијих пројеката који захтевају већу брзину или прекиде.

 

Повезивање са ESP32

ESP32 и MPU-9250 комуницирају преко I2C магистрале. То значи да су потребне само две сигналне линије: SDA (подаци) и SCL (сат). ESP32 већ има уграђен I2C контролер, па није потребан никакав додатни хардвер.

Подразумевани I2C пинови на већини ESP32 плоча су:

  • GPIO21 → SDA
  • GPIO22 → SCL

Поред сигналних линија неопходно је повезати и напајање.

MPU-9250 ESP32
VCC 3.3V
GND GND
SDA GPIO21
SCL GPIO22

 

Povezivanje MPU9250 i ESP32

Повезивање ESP32 и MPU-9250

Практичан пример повезивања сензора са ESP32 развојном плочом преко I2C интерфејса.

 

MPU9250 na breadboard ploci

Повезивање на breadboard плочи

Пример како изгледа повезан сензор приликом израде школских вежби.

Како функционише I2C комуникација?

I2C (Inter Integrated Circuit) представља серијски комуникациони протокол који омогућава да више уређаја користи исте SDA и SCL линије. Сваки уређај има своју адресу, па ESP32 може да комуницира са више сензора истовремено.

Најчешћа адреса MPU-9250 модула је:

  • 0x68 (AD0 повезан на GND)
  • 0x69 (AD0 повезан на 3.3V)

Уколико нисте сигурни коју адресу има ваш модул, можете покренути I2C Scanner програм у Arduino IDE и проверити адресу аутоматски.

 

I2C Scanner rezultat

Резултат I2C Scanner програма

У Serial Monitor-у приказује се I2C адреса пронађеног уређаја.

Напомена о напајању

Иако неки MPU-9250 модули имају уграђен стабилизатор напона и могу да се напајају са 5V, за рад са ESP32 препоручује се напајање од 3.3V.

На тај начин су логички нивои идентични и избегава се могућност оштећења микроконтролера или сензора.

 

Могући пројекти и примена

Комбиновањем података са акцелерометра, жироскопа и магнетометра могуће је реализовати велики број практичних пројеката. Управо зато се MPU-9250 налази у многим роботима, дроновима, паметним уређајима и индустријским системима.

Primena MPU-9250 senzora

Примене MPU-9250 сензора

Од паметних сатова до дронова – овај сензор је један од најчешће коришћених IMU модула.

  • електронски компас,
  • детектор нагиба,
  • бројач корака,
  • балансирајући робот,
  • стабилизација дрона,
  • управљање покретима руке,
  • детекција пада,
  • антикрађа системи,
  • праћење покрета у спортској анализи,
  • виртуелна и проширена реалност (VR/AR).

Шта ће ученици научити?

  • шта је IMU сензор,
  • како функционише I2C комуникација,
  • како се повезује MPU-9250 са ESP32,
  • како се читају подаци са сензора,
  • како се добијени подаци могу приказати у Arduino IDE и касније у Processing окружењу.

 

Вежба 1 – Рад са магнетометром (дигитални компас)

У овој вежби ученици ће први пут комуницирати са MPU-9250 сензором и научити како да очитавају вредности магнетног поља. Магнетометар ради као дигитални компас и мери јачину Земљиног магнетног поља по три осе (X, Y и Z).

Циљ није да одмах направимо компас, већ да разумемо како изгледају подаци које сензор шаље ESP32 микроконтролеру.

Magnetometar MPU-9250

Магнетометар

Мери Земљино магнетно поље и омогућава одређивање смера кретања.

Потребна опрема

  • ESP32 развојна плоча
  • MPU-9250 модул
  • Breadboard
  • Повезне жице
  • USB кабл
  • Arduino IDE

Инсталација библиотеке

Пре покретања програма потребно је инсталирати библиотеку:

  • Sketch → Include Library → Manage Libraries
  • потражити MPU9250_asukiaaa
  • инсталирати последњу верзију библиотеке

Повезивање MPU-9250 са ESP32

Иако у овој вежби користимо само магнетометар, повезује се цео MPU-9250 модул. Магнетометар се налази унутар сензора и није потребно посебно повезивање његових пинова. Довољно је успоставити I2C комуникацију између ESP32 и MPU-9250 модула.

MPU-9250 ESP32 Опис
VCC 3.3V Напајање модула
GND GND Заједничка маса
SDA GPIO21 I2C линија за пренос података
SCL GPIO22 I2C линија такта

Важно

Иако је циљ ове вежбе рад са магнетометром, преко I2C комуникације ESP32 приступа целом MPU-9250 модулу. Програм једноставно користи само део сензора који представља магнетометар.

Povezivanje MPU-9250 sa ESP32 za magnetometar

Повезивање за Вежбу 1

За очитавање магнетометра користе се само четири жице: VCC, GND, SDA и SCL.

Instalacija biblioteke

Инсталација библиотеке

Библиотека омогућава једноставно очитавање свих сензора MPU-9250.

Arduino програм


#include <Wire.h>
#include <MPU9250_asukiaaa.h>

MPU9250_asukiaaa mpu;

void setup() {

  Serial.begin(115200);

  Wire.begin(21,22);

  mpu.setWire(&Wire);

  mpu.beginMag();

}

void loop() {

  mpu.magUpdate();

  Serial.print("MX: ");
  Serial.print(mpu.magX());

  Serial.print("  MY: ");
  Serial.print(mpu.magY());

  Serial.print("  MZ: ");
  Serial.println(mpu.magZ());

  delay(200);

}

Објашњење програма

  • Wire.begin(21,22) покреће I2C комуникацију.
  • mpu.beginMag() активира магнетометар.
  • magUpdate() чита нове вредности.
  • magX(), magY() и magZ() враћају вредности по све три осе.
  • Serial Monitor приказује измерене податке.
Serial Monitor magnetometar

Приказ у Serial Monitor-у

Вредности се непрекидно мењају приликом окретања сензора.

Шта треба испробати?

  1. Покрените програм.
  2. Отворите Serial Monitor.
  3. Полако ротирајте сензор.
  4. Посматрајте како се мењају вредности MX, MY и MZ.
  5. Приближите магнет сензору и посматрајте велике промене.

 

Визуелизација у Processing окружењу

Уместо приказа бројева могуће је направити једноставну графичку визуелизацију. Processing ће читати серијске податке и ротирати стрелицу која представља смер магнетног поља.

Processing kompas

Предлог визуелизације

Стрелица се ротира у зависности од вредности које шаље MPU-9250.

Пример Processing кода


import processing.serial.*;

Serial port;

float angle = 0;

void setup(){

  size(600,600);

  port = new Serial(this,"COM5",115200);

}

void draw(){

  background(240);

  translate(width/2,height/2);

  rotate(radians(angle));

  strokeWeight(5);

  line(0,0,0,-180);

  fill(255,0,0);

  triangle(-12,-170,12,-170,0,-210);

}

void serialEvent(Serial p){

  String s=p.readStringUntil('\n');

  if(s!=null){

    // Ovde se kasnije može izračunavati ugao
    // iz MX i MY vrednosti.
  }

}

Објашњење

У овој лекцији још не израчунавамо правац компаса. Processing служи само као пример како се подаци могу графички приказати. Израчунавање угла и правог дигиталног компаса биће тема једне од наредних лекција.

Задатак за ученике

  • Испробати програм.
  • Посматрати промене вредности приликом ротирања сензора.
  • Утврдити која оса највише реагује приликом окретања око вертикалне осе.
  • Размислити како би се од MX и MY могао израчунати угао компаса.

 

Вежба 2 – Рад са акцелерометром (детекција нагиба)

У овој вежби користимо само акцелерометар који се налази унутар MPU-9250 сензора. Акцелерометар мери убрзање по три осе (X, Y и Z), али када сензор мирује, он заправо мери утицај Земљине теже. Управо захваљујући томе можемо одредити нагиб плоче у простору.

Овај принцип користи се у мобилним телефонима, дроновима, паметним сатовима, роботима и многим индустријским системима.

Повезивање MPU-9250 са ESP32

Акцелерометар је такође интегрисан унутар MPU-9250 модула. Ни у овој вежби није потребно посебно повезивање додатних пинова, већ се користи исто I2C повезивање као и код претходне вежбе.

MPU-9250 ESP32 Опис
VCC 3.3V Напајање сензора
GND GND Маса
SDA GPIO21 I2C подаци
SCL GPIO22 I2C такт

Напомена

Иако програм користи само акцелерометар, ESP32 комуницира са целим MPU-9250 модулом. Библиотека затим издваја само податке који припадају акцелерометру.

Povezivanje MPU-9250 sa ESP32 za akcelerometar

Повезивање за Вежбу 2

И код рада са акцелерометром користе се иста четири прикључка јер су сви сензори интегрисани у једном модулу.

Akcelerometar MPU-9250

Акцелерометар

Мери убрзање по X, Y и Z оси и омогућава одређивање нагиба уређаја.

Зашто су повезивања иста?

MPU-9250 није скуп три одвојена сензора већ једно интегрисано коло. Акцелерометар, жироскоп и магнетометар налазе се унутар истог чипа и са ESP32 комуницирају преко заједничке I2C магистрале. Због тога су за све три вежбе потребна иста четири прикључка (VCC, GND, SDA и SCL), док се разлика прави искључиво у програмском коду који одређује који део сензора ће бити коришћен.

Циљ вежбе

  • Очитавање вредности акцелерометра.
  • Посматрање промена приликом нагиба плоче.
  • Разумевање координатног система X, Y и Z.
  • Приказ вредности у Serial Monitor-у.

Arduino програм


#include <Wire.h>
#include <MPU9250_asukiaaa.h>

MPU9250_asukiaaa mpu;

void setup() {

  Serial.begin(115200);

  Wire.begin(21,22);

  mpu.setWire(&Wire);

  mpu.beginAccel();

}

void loop() {

  mpu.accelUpdate();

  Serial.print(mpu.accelX());
  Serial.print(",");

  Serial.print(mpu.accelY());
  Serial.print(",");

  Serial.println(mpu.accelZ());

  delay(50);

}

Објашњење програма

  • beginAccel() покреће акцелерометар.
  • accelUpdate() чита нове податке.
  • accelX(), accelY() и accelZ() враћају вредности убрзања.
  • Вредности се шаљу у једном реду раздвојене зарезима како би их Processing лако читао.
Serial Monitor akcelerometar

Приказ у Serial Monitor-у

Вредности по осама X, Y и Z мењају се приликом нагињања плоче.

Шта треба испробати?

  1. Поставити сензор на сто.
  2. Посматрати вредности по све три осе.
  3. Нагнути плочу улево и удесно.
  4. Нагнути плочу напред и назад.
  5. Уочити која оса највише реагује.

 

Визуелизација у Processing окружењу

Уместо приказа бројева можемо направити електронску либелу. На екрану се приказује круг унутар кога се налази куглица. Како се ESP32 плоча нагиње, тако се куглица помера у одговарајућем смеру.

Elektronska libela Processing

Електронска либела

Куглица прати нагиб сензора у реалном времену.

Processing програм


import processing.serial.*;

Serial port;

float ax=0;
float ay=0;

void setup(){

  size(600,600);

  port=new Serial(this,"COM5",115200);

}

void draw(){

  background(245);

  translate(width/2,height/2);

  noFill();

  strokeWeight(3);

  ellipse(0,0,320,320);

  fill(0,180,255);

  ellipse(ax*120,-ay*120,35,35);

}

void serialEvent(Serial p){

  String s=p.readStringUntil('\n');

  if(s!=null){

    String[] data=split(trim(s),",");

    if(data.length==3){

      ax=float(data[0]);

      ay=float(data[1]);

    }

  }

}

Како функционише визуелизација?

ESP32 шаље вредности X и Y осе преко серијске комуникације. Processing чита сваки ред података, издваја вредности и на основу њих помера плаву куглицу по екрану. На тај начин добијамо једноставну електронску либелу која приказује нагиб плоче у реалном времену.

Demo elektronske libele

Рад програма

Померањем ESP32 плоче помера се и куглица на екрану.

Задатак за ученике

  • Покренути програм и посматрати вредности у Serial Monitor-у.
  • Проверити како реагују X и Y осе приликом различитих нагиба.
  • Покренути Processing програм и упоредити положај куглице са положајем плоче.
  • Покушати да задржите куглицу у самом центру круга.

Шта смо научили?

У овој вежби смо научили како се користи акцелерометар за мерење нагиба и како се подаци могу визуелизовати у реалном времену. Овај принцип користи се код електронских либела, баланс робота, паметних телефона и великог броја индустријских уређаја.

 

Идеје за употребу у пројектима

Након што сте научили како се читају подаци са акцелерометра, жироскопа и магнетометра, можете почети да правите сопствене пројекте. MPU-9250 је један од најкоришћенијих IMU сензора у роботици, аутоматизацији и IoT системима јер омогућава праћење положаја, кретања и оријентације уређаја у простору.

Primena MPU-9250 senzora.jpg

Примене MPU-9250 сензора

Од робота и дронова до паметних уређаја и STEM пројеката.

 

Електронски компас

Приказ смера кретања помоћу магнетометра на OLED дисплеју или TFT екрану.

Детектор нагиба

Праћење угла нагиба и активирање аларма ако се предмет превише накрене.

Самобалансирајући робот

Акцелерометар и жироскоп омогућавају мерење нагиба робота ради одржавања равнотеже.

Контрола покретима

Управљање игрицом, роботом или презентацијом померањем руке.

Бројач корака

Обрада података акцелерометра ради препознавања корака и физичке активности.

Детекција пада

Праћење наглих промена убрзања ради препознавања пада особе или предмета.

 

Визуелизација података у Processing окружењу

Једна од најзанимљивијих примена овог сензора јесте приказ мерења у реалном времену. Processing омогућава да податке које ESP32 шаље преко серијске комуникације претворимо у графике, показиваче, инструменте или чак тродимензионалне моделе.

Processing vizuelizacija MPU-9250.jpg

Processing визуелизација

Подаци са ESP32 могу се приказивати као графици, казаљке или 3D модел.

У овој лекцији приказали смо једноставан пример визуелизације магнетометра, али исти принцип може да се примени и за приказ акцелерометра или жироскопа.

Предлог домаћег задатка

  • Приказати вредности акцелерометра као три покретне линије различитих боја.
  • Направити график који приказује промене X, Y и Z осе током времена.
  • Приказати положај виртуелне куглице која се помера у зависности од нагиба сензора.
  • Направити 3D коцку која прати оријентацију MPU-9250 сензора.

 

Шта смо научили?

IMU сензори

Научили смо шта представља инерцијални мерни уређај (IMU).

I2C комуникација

Повезали смо MPU-9250 и ESP32 преко I2C магистрале.

Arduino програмирање

Очитавали смо вредности са акцелерометра, жироскопа и магнетометра.

Визуелизација

Приказивали смо податке на Serial Monitor-у и у Processing окружењу.

 

Закључак

MPU-9250 представља један од најкомплетнијих сензора који се користе у образовању, роботици и савременим електронским системима. Захваљујући томе што у једном модулу садржи акцелерометар, жироскоп и магнетометар, омогућава прецизно праћење покрета, нагиба и оријентације уређаја.

У овој лекцији научили сте како се сензор повезује са ESP32, како се читају основни подаци и како се они могу приказати у Arduino IDE и Processing окружењу. То представља основу за израду сложенијих пројеката који ће бити обрађени у наредним лекцијама.

У наставку курса правићемо електронски компас, визуелизацију оријентације у 3D простору, детектор нагиба, систем за препознавање покрета и друге практичне STEM пројекте засноване на MPU-9250 сензору.

Vrati se na vrh