- అవసరమైన భాగాలు:
- MPU6050 గైరో సెన్సార్:
- వివరణ:
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
- MPU6050 గైరో సెన్సార్ కోసం రాస్ప్బెర్రీ పైని కాన్ఫిగర్ చేస్తోంది:
- ప్రోగ్రామింగ్ వివరణ:
MPU6050 సెన్సార్ సింగిల్ చిప్ కంటే చాలా విధులను కలిగి ఉంది. ఇది MEMS యాక్సిలెరోమీటర్, MEMS గైరో మరియు ఉష్ణోగ్రత సెన్సార్ను కలిగి ఉంటుంది. అనలాగ్ విలువలను డిజిటల్గా మార్చేటప్పుడు ఈ మాడ్యూల్ చాలా ఖచ్చితమైనది ఎందుకంటే ప్రతి ఛానెల్కు డిజిటల్ కన్వర్టర్ హార్డ్వేర్కు 16 బిట్ అనలాగ్ ఉంది. ఈ మాడ్యూల్ ఒకే సమయంలో x, y మరియు z ఛానెల్ను సంగ్రహించగలదు. హోస్ట్ కంట్రోలర్తో కమ్యూనికేట్ చేయడానికి దీనికి I2C ఇంటర్ఫేస్ ఉంది. ఈ MPU6050 మాడ్యూల్ యాక్సిలెరోమీటర్ మరియు గైరో రెండింటినీ కలిగి ఉన్న కాంపాక్ట్ చిప్. డ్రోన్లు, రోబోట్లు, మోషన్ సెన్సార్లు వంటి అనేక అనువర్తనాలకు ఇది చాలా ఉపయోగకరమైన పరికరం. దీనిని గైరోస్కోప్ లేదా ట్రిపుల్ యాక్సిస్ యాక్సిలెరోమీటర్ అని కూడా అంటారు.
ఈ రోజు ఈ వ్యాసంలో మేము ఈ MPU6050 ను రాస్ప్బెర్రీ పైతో ఇంటర్ఫేస్ చేయబోతున్నాము మరియు 16x2 LCD కన్నా ఎక్కువ విలువలను చూపుతున్నాము.
అవసరమైన భాగాలు:
- రాస్ప్బెర్రీ పై
- MPU-6050
- 10 కె పాట్
- జంపర్ వైర్
- బ్రెడ్బోర్డ్
- విద్యుత్ పంపిణి
MPU6050 గైరో సెన్సార్:
MPU-6050 అనేది ఒకే చిప్లో 8 పిన్ 6 యాక్సిస్ గైరో మరియు యాక్సిలెరోమీటర్. ఈ మాడ్యూల్ అప్రమేయంగా I2C సీరియల్ కమ్యూనికేషన్లో పనిచేస్తుంది, అయితే ఇది రిజిస్టర్ను కాన్ఫిగర్ చేయడం ద్వారా SPI ఇంటర్ఫేస్ కోసం కాన్ఫిగర్ చేయవచ్చు. I2C కొరకు దీనికి SDA మరియు SCL లైన్లు ఉన్నాయి. దాదాపు అన్ని పిన్లు బహుళ-పనితీరును కలిగి ఉన్నాయి, అయితే ఇక్కడ మనం I2C మోడ్ పిన్లతో మాత్రమే ముందుకు వెళ్తున్నాము.
పిన్ కాన్ఫిగరేషన్:
Vcc: - ఈ పిన్ భూమికి సంబంధించి MPU6050 మాడ్యూల్ను శక్తివంతం చేయడానికి ఉపయోగించబడుతుంది
GND: - ఇది గ్రౌండ్ పిన్
SDA: - నియంత్రిక మరియు mpu6050 మాడ్యూల్ మధ్య డేటా కోసం SDA పిన్ ఉపయోగించబడుతుంది
SCL: - గడియారం ఇన్పుట్ కోసం SCL పిన్ ఉపయోగించబడుతుంది
XDA: - ఇది బాహ్య సెన్సార్ల నుండి కాన్ఫిగర్ చేయడానికి మరియు చదవడానికి సెన్సార్ I2C SDA డేటా లైన్ ((ఐచ్ఛికం) మా విషయంలో ఉపయోగించబడదు)
XCL: - ఇది బాహ్య సెన్సార్ల నుండి కాన్ఫిగర్ చేయడానికి మరియు చదవడానికి సెన్సార్ I2C SCL క్లాక్ లైన్ ((ఐచ్ఛికం) మా విషయంలో ఉపయోగించబడదు)
ADO: - I2C స్లేవ్ చిరునామా LSB (మా విషయంలో వర్తించదు)
INT: - డేటా సిద్ధంగా ఉందని సూచించడానికి అంతరాయ పిన్.
మేము ఇంతకుముందు MPU6050 ను Arduino తో ఇంటర్ఫేస్ చేసాము.
వివరణ:
ఈ వ్యాసంలో, మేము రాస్ప్బెర్రీ పైతో MPU6050 ను ఉపయోగించి LCD పై ఉష్ణోగ్రత, గైరో మరియు యాక్సిలెరోమీటర్ రీడింగులను చూపిస్తున్నాము. మీరు రాస్ప్బెర్రీ పైకి కొత్తగా ఉంటే, మా రాస్ప్బెర్రీ పై ట్యుటోరియల్స్ విభాగం ద్వారా వెళ్లి రాస్ప్బెర్రీ పైతో ప్రారంభించడం నేర్చుకోండి.
ఈ ప్రాజెక్ట్లో, మేము మొదట ఎల్సిడి కంటే ఉష్ణోగ్రత విలువను చూపించాము మరియు కొంత సమయం తరువాత మేము గైరో విలువలను చూపిస్తాము మరియు కొంత సమయం తరువాత ఈ క్రింది చిత్రాలలో చూపిన విధంగా యాక్సిలెరోమీటర్ రీడింగులను కలిగి ఉన్నాము:
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
రాస్ప్బెర్రీ పైతో MPU6050 ను ఇంటర్ఫేస్ చేయడానికి సర్క్యూట్ రేఖాచిత్రం, ఇక్కడ మేము చాలా సులభం LCD మరియు MPU6050. LCD యొక్క ప్రకాశాన్ని నియంత్రించడానికి 10k కుండ ఉపయోగించబడుతుంది. MPU6050 కి సంబంధించి, మేము 4 కనెక్షన్లు చేసాము, దీనిలో మేము 3.3v విద్యుత్ సరఫరా మరియు MPU6050 యొక్క భూమిని 3.3v మరియు రాస్ప్బెర్రీ పై గ్రౌండ్కు అనుసంధానించాము. MPU6050 యొక్క SCL మరియు SDA పిన్స్ రాస్ప్బెర్రీ యొక్క భౌతిక పిన్ 3 (GPIO2) మరియు పిన్ 5 (GPIO3) తో అనుసంధానించబడి ఉన్నాయి. LCD యొక్క RS, RW మరియు EN నేరుగా GPIO18, మరియు 23 కోరిందకాయ పైతో అనుసంధానించబడి ఉన్నాయి. డేటా పిన్ నేరుగా డిజిటల్ పిన్ నంబర్ GPIO24, GPIO25, GPIO8 మరియు GPIO7 లకు అనుసంధానించబడి ఉంది. రాస్ప్బెర్రీ పైతో ఎల్సిడిని ఇంటర్ఫేస్ చేయడం గురించి ఇక్కడ మరింత తెలుసుకోండి.
MPU6050 గైరో సెన్సార్ కోసం రాస్ప్బెర్రీ పైని కాన్ఫిగర్ చేస్తోంది:
ప్రోగ్రామింగ్ ప్రారంభించడానికి ముందు, ఇచ్చిన పద్ధతిని ఉపయోగించి మేము రాస్ప్బెర్రీ పై యొక్క i2c ని ప్రారంభించాలి:
దశ 1: I2C కమ్యూనికేషన్ను ప్రారంభించండి
అడాఫ్రూట్ SSD1306 లైబ్రరీని ఇన్స్టాల్ చేసే ముందు మేము రాస్ప్బెర్రీ పైలో I2C కమ్యూనికేషన్ను ప్రారంభించాలి.
రాస్ప్బెర్రీ పై కన్సోల్లో ఈ రకాన్ని చేయడానికి:
sudo raspi -config
ఆపై నీలిరంగు తెర కనిపిస్తుంది. ఇప్పుడు ఇంటర్ఫేస్ ఎంపికను ఎంచుకోండి
దీని తరువాత, మనం I2C ని ఎంచుకోవాలి
దీని తరువాత, మనం అవును ఎంచుకుని ఎంటర్ నొక్కండి, ఆపై సరే
దీని తరువాత, మేము క్రింద ఆదేశాన్ని ఇవ్వడం ద్వారా కోరిందకాయ పైని రీబూట్ చేయాలి:
సోడో రీబూట్
దశ 2: పైథాన్-పిప్ మరియు GPIO లైబ్రరీని వ్యవస్థాపించండి
sudo apt-get install బిల్డ్-ఎసెన్షియల్ పైథాన్-దేవ్ పైథాన్-పిప్
దీని తరువాత, మేము కోరిందకాయ పై GPIO లైబ్రరీని వ్యవస్థాపించాలి
సుడో పైప్ RPi.GPIO ని ఇన్స్టాల్ చేస్తుంది
దశ 3: smbus లైబ్రరీని వ్యవస్థాపించండి
చివరగా, ఇచ్చిన ఆదేశాన్ని ఉపయోగించి రాస్ప్బెర్రీ పైలో smbus లైబ్రరీని వ్యవస్థాపించాలి:
sudo apt-get install python-smbus
దశ 4: లైబ్రరీ MPU6050 ని ఇన్స్టాల్ చేయండి
దీని తరువాత మనం ఇచ్చిన ఆదేశాన్ని ఉపయోగించి MPU6050 లైబ్రరీని ఇన్స్టాల్ చేయాలి
sudo pip install mpu6050
ఇప్పుడు మనం ఉదాహరణలలో ఉదాహరణ కోడ్లను కనుగొనవచ్చు. వినియోగదారుడు రాస్ప్బెర్రీ పైకి నేరుగా అప్లోడ్ చేయడం ద్వారా ఆ కోడ్ను పరీక్షించవచ్చు లేదా అవసరానికి అనుగుణంగా అనుకూలీకరించవచ్చు. ఇక్కడ మేము 16x2 LCD లో MPU6050 యొక్క X, Y మరియు Z అక్షం విలువలను ప్రదర్శించాము. మీరు ట్యుటోరియల్ చివరిలో పూర్తి పైథాన్ కోడ్ను కనుగొనవచ్చు.
ప్రోగ్రామింగ్ వివరణ:
పూర్తి పైథాన్ కోడ్ చివరిలో ఇవ్వబడింది ఇక్కడ మేము కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాన్ని వివరిస్తున్నాము.
పైథాన్ ప్రోగ్రామ్లో, మేము సమయం, smbus మరియు GPIO వంటి అవసరమైన లైబ్రరీని దిగుమతి చేసాము.
దిగుమతి smbus దిగుమతి సమయం దిగుమతి RPi.GPIO ను gpio గా
దీని తరువాత, MPU6050 ను కాన్ఫిగర్ చేయడానికి మరియు దాని నుండి విలువలను పొందడానికి మేము కొంత రిజిస్టర్ చిరునామాను తీసుకోవాలి. I2C కోసం బస్సును క్రమాంకనం చేయడానికి మరియు ప్రారంభించడానికి మేము కొన్ని వేరియబుల్స్ కూడా తీసుకున్నాము.
PWR_M = 0x6B DIV = 0x19 CONFIG = 0x1A GYRO_CONFIG = 0x1B INT_EN = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0xB = 0x) AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
అప్పుడు మేము డ్రైవింగ్ 16x2LCD కోసం డెఫ్ స్టార్ట్ (), డెఫ్ సెం.డి (సి), డెఫ్ రైట్ (సి), డెఫ్ ప్రింట్ (స్ట్రింగ్), డెఫ్ క్లియర్ () మొదలైన వాటి కోసం కొన్ని ఫంక్షన్లను వ్రాసాము. మీరు రాస్ప్బెర్రీ పైతో LCD యొక్క ఇంటర్ఫేసింగ్ను మరింత తనిఖీ చేయవచ్చు.
దీని తరువాత, మేము MPU6050 మాడ్యూల్ను ప్రారంభించాలి
def InitMPU (): bus.write_byte_data (Device_Address, DIV, 7) bus.write_byte_data (Device_Address, PWR_M, 1) bus.write_byte_data (Device_Address, CONFIG, 0) bus.write_byte_dd_D_D_D_, INT_EN, 1) time.sleep (1)
దీని తరువాత, MPU6050 నుండి విలువలను చదవడానికి మరియు వాటిని LCD కి ప్రదర్శించడానికి మేము కొన్ని ఫంక్షన్లను వ్రాయాలి. MPU6050 నుండి డేటాను చదవడానికి ఇచ్చిన ఫంక్షన్ ఉపయోగించబడుతుంది
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low) if (value> 32768): value = value - 65536 తిరిగి విలువ
ఇచ్చిన ఫంక్షన్ యాక్సిలెరోమీటర్ మరియు గైరో మీటర్ డేటాను చదవడానికి ఉపయోగించబడుతుంది
def accel (): x = readMPU (ACCEL_X) y = readMPU (ACCEL_Y) z = readMPU (ACCEL_Z) Ax = (x / 16384.0-AxCal) Ay = (y / 16384.0-AyCal) Az = (z / 16384.0-AzCal) #print "X =" + str (Ax) display (Ax, Ay, Az) time.sleep (.01) def gyro (): గ్లోబల్ GxCal గ్లోబల్ GyCal గ్లోబల్ GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z = readMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - GzCal #print "X =" + str (Gx) display (Gx, Gy, Gz) time.sleep (. 01)
దీని తరువాత, మేము ఉష్ణోగ్రత పఠనం ఫంక్షన్ వ్రాసాము
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) ప్రింట్ ("టెంప్:") ప్రింట్ (str (tempC)) time.sleep (.2)
MPU6050 ను క్రమాంకనం చేయడానికి డెఫ్ కాలిబ్రేట్ () ఫంక్షన్ ఉపయోగించబడుతుంది మరియు LCD లో విలువలను ప్రదర్శించడానికి డెఫ్ డిస్ప్లే () ఫంక్షన్ ఉపయోగించబడుతుంది. క్రింద ఇచ్చిన పూర్తి కోడ్లో ఈ విధులను తనిఖీ చేయండి.
ఈ తరువాత, మేము ప్రారంభించును, LCD ప్రారంభమైన MPU6050 సామర్ధ్యాన్ని మరియు అప్పుడు అయితే మనం MPU- నుండి విలువల అన్ని మూడు సెట్ పిలుపునిచ్చారు లూప్ ఉష్ణోగ్రత, యాక్సిలెరోమీటర్ మరియు గైరో మరియు LCD పైగా వాటిని చూపించింది.
ప్రారంభం (); ప్రింట్ ("MPU6050 ఇంటర్ఫేస్") సెట్ కర్సర్ (0,1) ప్రింట్ ("సర్క్యూట్ డైజెస్ట్") time.sleep (2) InitMPU () క్రమాంకనం () అయితే 1: InitMPU () క్లియర్ () నేను పరిధిలో (20): టెంప్ () క్లియర్ () ప్రింట్ ("యాక్సెల్") టైమ్.స్లీప్ (1) నేను పరిధిలో (30): అక్సెల్ () క్లియర్ () ప్రింట్ ("గైరో") టైమ్.: గైరో ()
MPU6050 గైరో మరియు యాక్సిలెరోమీటర్ రెండూ ఏదైనా పరికరం యొక్క స్థానం మరియు ధోరణిని గుర్తించడానికి ఉపయోగిస్తారు. X, y మరియు z- అక్షం స్థానాలను నిర్ణయించడానికి గైరో భూమి గురుత్వాకర్షణను ఉపయోగిస్తుంది మరియు కదలిక యొక్క మార్పు రేటు ఆధారంగా యాక్సిలెరోమీటర్ కనుగొంటుంది. మేము ఇప్పటికే మా అనేక ప్రాజెక్టులలో ఆర్డునోతో యాక్సిలెరోమీటర్ను ఉపయోగించాము:
- యాక్సిలెరోమీటర్ బేస్డ్ హ్యాండ్ సంజ్ఞ నియంత్రిత రోబోట్
- ఆర్డునో బేస్డ్ వెహికల్ యాక్సిడెంట్ అలర్ట్ సిస్టమ్
- ఆర్డునో ఉపయోగించి భూకంప డిటెక్టర్ అలారం