Search Code

Kodi ya Arduino kwa MPU-6050 na LCD1602 I2C Display

Kodi ya Arduino kwa MPU-6050 na LCD1602 I2C Display

Katika mafunzo haya, tutajifunza jinsi ya kuunganisha kipima kasi na gyroscope ya MPU-6050 na skrini ya LCD1602 kwa kutumia mawasiliano ya I2C. MPU-6050 itatoa vipimo vya pembe ambavyo vitaonyeshwa kwenye LCD. Mradi huu utakusaidia kuona pembe za MPU-6050 kwa wakati halisi, kuboresha uelewa wako wa data ya sensorer na uunganishaji wa skrini.

LCD1602-I2C display module with 4 wires

Kufikia mwisho wa mafunzo haya, utakuwa na mfumo unaofanya kazi unaoonyesha pembe za X, Y, na Z kwenye skrini ya LCD. Hii ni njia nzuri ya kupata uzoefu wa vitendo na data ya sensorer na teknolojia ya skrini katika miradi ya Arduino. Kwa ufafanuzi zaidi, hakikisha umeangalia video (katika video saa 00:00).

Vifaa Vimeelezwa

Vipengele vikuu vya mradi huu ni sensor ya MPU-6050 na moduli ya skrini ya LCD1602. MPU-6050 ni sensor yenye matumizi mengi inayochanganya kipima kasi cha mhimili-tatu na gyroscope ya mhimili-tatu, ikitoa vipimo vya pembe kwa wakati halisi. Inawasiliana kupitia I2C, ikiruhusu uunganishaji rahisi na Arduino.

Skrini ya LCD1602 pia hutumia itifaki ya I2C, ambayo hurahisisha wiring na kupunguza idadi ya pini zinazohitajika kwa mawasiliano. Kiolesura cha I2C kinaruhusu vifaa vingi kuunganishwa kwenye basi moja, na kuifanya iwe bora kwa miradi yenye sensorer au vipengele vingi.

Maelezo ya Datasheet

MtengenezajiInvenSense
Nambari ya sehemuMPU-6050
Voltage ya Logic/IO3.3 V / 5 V
Voltage ya usambazaji3.3 V hadi 5 V
Kiwango cha data ya pato1 kHz (kiwango cha juu)
Masafa ya gyroscope±250, ±500, ±1000, ±2000 °/s
Masafa ya kipima kasi±2g, ±4g, ±8g, ±16g
KifurushiQFN
Vidokezo / lahajaInajumuisha Kichakataji cha Mwendo cha Dijiti (DMP)

  • Angalia anwani ya I2C (chaguo-msingi ni 0x68).
  • Hakikisha voltage sahihi ya usambazaji (3.3 V au 5 V).
  • Tumia resistors za kuvuta-juu kwa mistari ya SDA na SCL ikiwa hazipo kwenye bodi.
  • Zingatia kutumia capacitors za kutenganisha karibu na pini za nguvu kwa utulivu.
  • Thibitisha miunganisho ya wiring ili kuepuka matatizo ya mawasiliano.

Maagizo ya Wiring

Arduino wiring for MPU-6050 with LCD

Ili kuunganisha MPU-6050 na skrini ya LCD1602 kwenye Arduino yako, fuata miunganisho hii:

  • Unganisha pini ya VCC ya MPU-6050 kwenye pini ya 5V kwenye Arduino.
  • Unganisha pini ya GND ya MPU-6050 kwenye pini ya GND kwenye Arduino.
  • Unganisha pini ya SDA ya MPU-6050 kwenye pini ya A4 kwenye Arduino.
  • Unganisha pini ya SCL ya MPU-6050 kwenye pini ya A5 kwenye Arduino.
  • Kwa skrini ya LCD1602, unganisha pini ya VCC kwenye 5V kwenye Arduino.
  • Unganisha pini ya GND ya LCD1602 kwenye pini ya GND kwenye Arduino.
  • Unganisha pini ya SDA ya LCD1602 kwenye pini ile ile ya A4 inayotumiwa na MPU-6050.
  • Unganisha pini ya SCL ya LCD1602 kwenye pini ile ile ya A5 inayotumiwa na MPU-6050.

Hakikisha umeangalia mara mbili miunganisho yako, kwani wiring isiyo sahihi inaweza kusababisha kifaa kuharibika au kushindwa kuwasiliana vizuri.

Mifano ya Msimbo na Maelezo

Msimbo huanza kwa kujumuisha maktaba muhimu za MPU-6050 na skrini ya LCD. Sehemu ifuatayo inaonyesha jinsi ya kuanzisha MPU-6050:

MPU6050 mpu6050(Wire);

Hapa, tunaunda kitu cha MPU6050, ambacho kitatumika kusoma data kutoka kwenye sensor. Ifuatayo, tunahitaji kusanidi kifaa katika kazi ya setup():

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
  lcd.begin();
  lcd.backlight();   
}

Msimbo huu huanzisha mawasiliano ya serial, basi ya I2C, na sensor ya MPU-6050. Pia huanzisha LCD na kuwasha mwanga wake wa nyuma. Kitanzi kina mantiki ya kusasisha na kuonyesha pembe:

void loop() {
  mpu6050.update();
  lcd.clear();
  lcdDisplay(0, 0, "X:", 2, 0, mpu6050.getAngleX());
  lcdDisplay(13, 0, "Y:", 0, 1, mpu6050.getAngleY());
  lcdDisplay(7, 1, "Z:", 9, 1, mpu6050.getAngleZ());
  delay(100);
}

Katika kitanzi hiki, pembe za X, Y, na Z zinasasishwa na kuonyeshwa kwenye LCD. Kazi ya lcdDisplay() inatumiwa kupanga matokeo kwa usahihi. Unaweza kupata msimbo kamili uliopakiwa chini ya makala.

Maonyesho / Nini cha Kutarajia

Wakati usanidi ukamilika na msimbo umepakiwa, unapaswa kuona pembe za X, Y, na Z zikionyeshwa kwenye LCD kwa wakati halisi. Ikiwa kila kitu kimeunganishwa kwa usahihi, skrini itaburudishwa kila millisecond 100, ikionyesha mwelekeo wa sasa wa MPU-6050.

Makosa ya kawaida ni pamoja na kuhakikisha miunganisho ya I2C ni sahihi na kwamba usambazaji wa nguvu ni thabiti. Ikiwa MPU-6050 haijaanzishwa vizuri, unaweza kuona data isiyo sahihi au hakuna data kwenye LCD (katika video saa 01:15).

Bilder

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
Arduino wiring for MPU-6050 with LCD
Arduino wiring for MPU-6050 with LCD
118-Arduino code for MPU-6050 accelerometer and gyroscope sensor (all data)
Språk: C++
/*
 * 
 * This code is basic usage of the MPU-6050 accelerometer and gyroscope.
 * Running this code, you will get angles only.
 * The angles at X, Y, and Z are displayed on the LCD1602-I2C display module.
 * 
 * Library and code have been taken from:
 * https://github.com/tockn/MPU6050_tockn
 * 
 * Updated by Ahmad Shamshiri on July 05, 2018 at 22:19 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/uIz6WIis4dc
 * 
 * You will need to watch two videos before following the instructions in this video:
 * 1-MPU6050 Introduction video and code: https://youtu.be/uhh7ik02aDc
 * 2-LCD1602 with I2C module video and code: https://youtu.be/q9YC_GVHy5A
 */
#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);

  // initialize the LCD, 
  lcd.begin();
  // Turn on the backlight and print a message.
  lcd.backlight();   
}

void loop() {

  mpu6050.update();
  Serial.print("angleX : ");
  Serial.print(mpu6050.getAngleX());
  Serial.print("\tangleY : ");
  Serial.print(mpu6050.getAngleY());
  Serial.print("\tangleZ : ");
  Serial.println(mpu6050.getAngleZ());
  
  lcd.clear();// clearn previous values from screen
  lcdDisplay(
             // to print X:
             0, // character 0  
             0, // line 0
             "X:", 

             // to print AngleX
             2, // character 2
             0, // line 0
             mpu6050.getAngleX() 
             );

  lcdDisplay(
             // to print Y:
             13, // character 13 
             0, // line 0
             "Y:", 

             // to print AngleY
             0, // character 0
             1, // line 1
             mpu6050.getAngleY() 
             );  

  lcdDisplay(
             // to print Z:
             7, // character 7 
             1, // line 1
             "Z:", 

             // to print AngleZ
             9, // character 9
             1, // line 0
             mpu6050.getAngleZ() 
             );                         
   delay(100);
}// loop end

/*
 * lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
 * displays value and title on LCD1602
 * How to use:
 * If you want to display: "Voltage: 13.56mV" starting from the first character
 * on the second row.
 * use:
 * lcdDisplay(0, 1, "Voltage: ", 13.56)
 *   
 * tc  is the character number  (0)
 * tr is the row number in the LCD (1)
 * title is the text ("Voltage:")
 * vc is the character number for the value
 * vr is the row number for the value
 * value is the value (13.56)
 */
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
   // Robojax.com MPU6050 Demo
   lcd.setCursor (tc,tr); //
   lcd.print(title);
   
   lcd.setCursor (vc,vr); //
   lcd.print(value);
 
}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Arduino-bibliotek (zip)

Fritzing-fil

Andra filer

  • MPU6050_tockn-master
    Arduino library for the MPU6050 accelerometer and gyroscope module. Provides functions to read acceleration, gyro, and temperature data, with calibration and angle calculation. Designed for easy integration into motion-sensing projects.
    robojax-MPU6050_tockn-master.zip