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.


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
| Mtengenezaji | InvenSense |
|---|---|
| Nambari ya sehemu | MPU-6050 |
| Voltage ya Logic/IO | 3.3 V / 5 V |
| Voltage ya usambazaji | 3.3 V hadi 5 V |
| Kiwango cha data ya pato | 1 kHz (kiwango cha juu) |
| Masafa ya gyroscope | ±250, ±500, ±1000, ±2000 °/s |
| Masafa ya kipima kasi | ±2g, ±4g, ±8g, ±16g |
| Kifurushi | QFN |
| Vidokezo / lahaja | Inajumuisha 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

Ili kuunganisha MPU-6050 na skrini ya LCD1602 kwenye Arduino yako, fuata miunganisho hii:
- Unganisha pini ya
VCCya MPU-6050 kwenye pini ya5Vkwenye Arduino. - Unganisha pini ya
GNDya MPU-6050 kwenye pini yaGNDkwenye Arduino. - Unganisha pini ya
SDAya MPU-6050 kwenye pini yaA4kwenye Arduino. - Unganisha pini ya
SCLya MPU-6050 kwenye pini yaA5kwenye Arduino. - Kwa skrini ya LCD1602, unganisha pini ya
VCCkwenye5Vkwenye Arduino. - Unganisha pini ya
GNDya LCD1602 kwenye pini yaGNDkwenye Arduino. - Unganisha pini ya
SDAya LCD1602 kwenye pini ile ile yaA4inayotumiwa na MPU-6050. - Unganisha pini ya
SCLya LCD1602 kwenye pini ile ile yaA5inayotumiwa 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).
/*
*
* 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
-
AmazonPurchase LCD1602-I2C from Amazonamzn.to
-
AmazonPurchase MPU-6050 from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Resurser och referenser
-
Extern.Manufacturer websiteinvensense.com
Filer📁
Arduino-bibliotek (zip)
-
LCD1602 LCD Arduino library from Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB -
Arduino library for MPU9250
robojax-MPU9250-master.zip3.38 MB
Fritzing-fil
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
MPU-6050 Board GY-521
MPU-6050 Board GY-521.fzpz0.01 MB
Andra filer
-
MPU6050_tockn-masterArduino 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