ARDUINO GY87 સંયુક્ત સેન્સર ટેસ્ટ સ્કેચ
પરિચય
જો તમે ઉત્સુક નિર્માતા અથવા રોબોટિક્સ ઉત્સાહી છો, તો તમે આ નાનકડા છતાં શક્તિશાળી મોડ્યુલ પર આવ્યા છો જો તમે ઉત્સુક નિર્માતા અથવા રોબોટિક્સ ઉત્સાહી છો, તો તમે આ નાના છતાં શક્તિશાળી મોડ્યુલ BMP085 બેરોમીટર પર આવ્યા છો. GY-87 IMU મોડ્યુલ એ તમારા પ્રોજેક્ટ્સમાં મોશન સેન્સિંગ ઉમેરવાનો શ્રેષ્ઠ માર્ગ છે, જેમ કે સ્વ-સંતુલિત રોબોટ અથવા ક્વાડકોપ્ટર.
પરંતુ તમે GY-87 IMU મોડ્યુલ સાથે પ્રયોગ કરવાનું શરૂ કરો તે પહેલાં, તમારે તેને તમારા Arduino બોર્ડ સાથે કેવી રીતે ઇન્ટરફેસ કરવું તે જાણવાની જરૂર છે. કે જ્યાં આ બ્લોગ આવે છે! નીચેના ફકરાઓમાં, અમે GY-87 IMU મોડ્યુલની મૂળભૂત બાબતોને આવરી લઈશું, તેને કેવી રીતે સેટ કરવું અને સેન્સર ડેટા વાંચવા માટે Arduino કોડ કેવી રીતે લખવો. અમે સામાન્ય સમસ્યાઓના નિવારણ માટે કેટલીક ટિપ્સ અને સંસાધનો પણ પ્રદાન કરીશું.
તેથી, જો તમે શરૂ કરવા માટે તૈયાર છો, તો ચાલો અંદર જઈએ અને GY-87 IMU મોડ્યુલને Arduino સાથે ઇન્ટરફેસ કરવા વિશે શીખીએ!
GY-87 IMU MPU6050 શું છે
GY-87 જેવા ઇનર્શિયલ મેઝરમેન્ટ યુનિટ (IMU) મોડ્યુલ્સ ઘણા સેન્સરને એક જ પેકેજમાં જોડે છે, જેમ કે MPU6050 એક્સીલેરોમીટર/ગેરોસ્કોપ, HMC5883L મેગ્નેટોમીટર અને BMP085 બેરોમેટ્રિક પ્રેશર સેન્સર. આથી, GY-87 IMU MPU6050 એ એક ઓલ-ઇન-વન 9-એક્સિસ મોશન ટ્રેકિંગ મોડ્યુલ છે જે 3-એક્સિસ ગાયરોસ્કોપ, 3-એક્સિસ એક્સીલેરોમીટર, 3-એક્સિસ મેગ્નેટોમીટર અને ડિજિટલ મોશન પ્રોસેસરને જોડે છે. ક્વાડકોપ્ટર અને અન્ય માનવરહિત એરિયલ વાહનો (યુએવી) જેવા રોબોટિક પ્રોજેક્ટ્સમાં તેનો ઘણો ઉપયોગ થાય છે, કારણ કે તે ઓરિએન્ટેશન અને ગતિને ચોક્કસ રીતે માપી અને ટ્રેક કરી શકે છે. તેનો ઉપયોગ નેવિગેશન, ગેમિંગ અને વર્ચ્યુઅલ રિયાલિટી જેવી અન્ય એપ્લિકેશન્સમાં પણ થાય છે.
હાર્ડવેર ઘટકો
તમને Arduino સાથે GY-87 IMU MPU6050 HMC5883L BMP085 મોડ્યુલ ઇન્ટરફેસ કરવા માટે નીચેના હાર્ડવેરની જરૂર પડશે.
ઘટકો | મૂલ્ય | જથ્થો |
Arduino UNO | – | 1 |
MPU6050 સેન્સર મોડ્યુલ | જીવાય -87 | 1 |
બ્રેડબોર્ડ | – | 1 |
જમ્પર વાયર | – | 1 |
Arduino સાથે GY-87
હવે તમે GY-87 ને સમજી ગયા છો, આ Arduino સાથે ઇન્ટરફેસ કરવાનો સમય છે. તે કરવા માટે, અનુસરો હવે જ્યારે તમે GY-87 સમજી ગયા છો, તે Arduino સાથે ઇન્ટરફેસ કરવાનો સમય છે. તે કરવા માટે, અનુસરો
યોજનાકીય
નીચે આપેલ સર્કિટ ડાયાગ્રામ અનુસાર જોડાણો બનાવો
GY-87 IMU MPU6050 HMC5883L BMP085 આર્ડુઇનવાયરિંગ / જોડાણો
આર્ડુઇનો | MPU6050 સેન્સર |
5V | વીસીસી |
જીએનડી | જીએનડી |
A4 | એસડીએ |
A5 | SCA |
Arduino IDE ઇન્સ્ટોલ કરી રહ્યું છે
પ્રથમ, તમારે તેના અધિકારી પાસેથી Arduino IDE સોફ્ટવેર ઇન્સ્ટોલ કરવાની જરૂર છે webસાઇટ Arduino. અહીં "Arduino IDE કેવી રીતે ઇન્સ્ટોલ કરવું" પર એક સરળ પગલું-દર-પગલાની માર્ગદર્શિકા છે.
પુસ્તકાલયો સ્થાપિત કરી રહ્યા છીએ
તમે કોડ અપલોડ કરવાનું શરૂ કરો તે પહેલાં, /પ્રોગ્રામ પર નીચેની લાઇબ્રેરીઓને ડાઉનલોડ કરો અને અનઝિપ કરો Files (x86)/Arduino/Libraries (ડિફૉલ્ટ) Arduino બોર્ડ સાથે સેન્સરનો ઉપયોગ કરવા માટે. અહીં "Arduino IDE માં પુસ્તકાલયો કેવી રીતે ઉમેરવી" પર એક સરળ પગલું-દર-પગલાની માર્ગદર્શિકા છે.
- MPU6050
- એડફ્રૂટ_બીએમપી085
- HMC5883L_સરળ
કોડ
હવે નીચેના કોડની નકલ કરો અને તેને Arduino IDE સોફ્ટવેર પર અપલોડ કરો.
# "I2Cdev.h" # સમાવેશ થાય છે "MPU6050.h" # સમાવેશ થાય છે # સમાવેશ થાય છે MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simple હોકાયંત્ર; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; રદબાતલ સેટઅપ() { Serial.begin(16); Wire.begin(); // ઉપકરણોને પ્રારંભ કરો Serial.println("I13C ઉપકરણોની શરૂઆત..."); // bmp9600 પ્રારંભ કરો જો (!bmp.begin()) { Serial.println(“માન્ય BMP2 સેન્સર શોધી શક્યા નથી, તપાસો (!bmp.begin()) { Serial.println(“માન્ય BMP085 સેન્સર શોધી શક્યા નથી, Serial.println(accelgyro.testConnection() ? “MPU085 કનેક્શન સફળ” : “MPU085 કનેક્શન નિષ્ફળ થયું”; accelgyro.setI6050CBypassEnabled(true); // hmc6050L ના ગેટવે માટે બાયપાસ મોડ સેટ કરો // પ્રારંભ કરો hmc2l 5883, 'E'); Compass.SetSampલિંગમોડ(COMPASS_SINGLE);
કંપાસ.સેટસ્કેલ(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // પ્રવૃત્તિ પિનમોડ (LED_PIN, OUTPUT) ચકાસવા માટે Arduino LED ને ગોઠવો; } રદબાતલ લૂપ() {
Serial.print("તાપમાન = "); Serial.print(bmp.readTemperature());
Serial.println(”*C”); Serial.print(“પ્રેશર = “);
Serial.print(bmp.readPressure()); Serial.println("Pa"); // 'સ્ટાન્ડર્ડ' બેરોમેટ્રિક // 1013.25 મિલીબાર = 101325 પાસ્કલ સીરીયલ. પ્રિન્ટ (“ઊંચાઈ = “) નું દબાણ ધારીને ઊંચાઈની ગણતરી કરો; Serial.print(bmp.readAltitude()); Serial.println(“મીટર”); Serial.print("સીલ લેવલ પર દબાણ (ગણતરી) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print("વાસ્તવિક ઊંચાઈ = "); Serial.print(bmp.readAltitude(101500));
Serial.println("મીટર"); // ઉપકરણ accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // ડિસ્પ્લે ટેબ-સેપરેટેડ accel/gyro x/y/z મૂલ્યો Serial.print(“a/g:\t”); સીરીયલ. પ્રિન્ટ(કુહાડી);
સીરીયલ.પ્રિન્ટ(“\t”); સીરીયલ.પ્રિન્ટ(ay); સીરીયલ.પ્રિન્ટ(“\t”); સીરીયલ.પ્રિન્ટ(az);
સીરીયલ.પ્રિન્ટ(“\t”); સીરીયલ.પ્રિન્ટ(gx); સીરીયલ.પ્રિન્ટ(“\t”); સીરીયલ.પ્રિન્ટ(gy);
Serial.print(“\t”); Serial.println(gz); ફ્લોટ હેડિંગ =
Compass.GetHeadingDegrees(); Serial.print("મથાળું: \t"); Serial.println( હેડિંગ); // Blink LED પ્રવૃત્તિ સૂચવવા માટે blinkState = !blinkState;
ડિજિટલરાઈટ(LED_PIN, blinkState); વિલંબ(500); }
ચાલો તેનું પરીક્ષણ કરીએ
એકવાર તમે કોડ અપલોડ કરી લો, તે સર્કિટને ચકાસવાનો સમય છે! Arduino પ્રોગ્રામમાંનો કોડ તેમની લાઈબ્રેરીનો ઉપયોગ કરીને સેન્સર્સ સાથે ઈન્ટરફેસ કરે છે, જે તેને સેન્સર ડેટા વાંચવા અને સેન્સરની વિવિધ રૂપરેખાંકનો સેટ કરવાની મંજૂરી આપે છે. પછી તે સીરીયલ પોર્ટ પર સેન્સર ડેટાને છાપે છે. સર્કિટ કંઈક કરી રહ્યું છે તે બતાવવા માટે LED નો ઉપયોગ થાય છે. આનો અર્થ એ છે કે જ્યારે પણ લૂપ ફંક્શન ચાલે છે ત્યારે LED ઝબકશે, જે દર્શાવે છે કે કોડ સક્રિયપણે સેન્સર મૂલ્યો વાંચી રહ્યો છે.
કાર્યકારી સમજૂતી
કોડ એ મુખ્ય વસ્તુ છે જેના પર સર્કિટનું કાર્ય આધારિત છે. તો, ચાલો કોડ સમજીએ:.
- પ્રથમ, તેમાં સેન્સર સાથે ઇન્ટરફેસ કરવા માટે ઘણી લાઇબ્રેરીઓનો સમાવેશ થાય છે:
- “I2Cdev.h” અને “MPU6050.h” એ MPU6050 6-એક્સિસ એક્સીલેરોમીટર/ગેરોસ્કોપ સેન્સર માટેની લાઇબ્રેરીઓ છે
- "Adafruit_BMP085.h" એ BMP085 બેરોમેટ્રિક પ્રેશર સેન્સર માટેની લાઇબ્રેરી છે.
- "HMC5883L_Simple.h" એ HMC5883L મેગ્નેટોમીટર સેન્સર માટેની લાઇબ્રેરી છે.
- પછી તે ત્રણ સેન્સર માટે વૈશ્વિક વસ્તુઓ બનાવે છે: MPU6050 accelgyro, Adafruit_BMP085 bmp, અને HMC5883L_Simple Compass.
- આગળ, તે સેન્સર મૂલ્યોને સંગ્રહિત કરવા માટે કેટલાક ચલોને વ્યાખ્યાયિત કરે છે, જેમ કે MPU6050 ના એક્સીલરોમીટર માટે ax, ay અને az અને HMC5883L ના મેગ્નેટોમીટર માટે હેડ. અને તે LED_PIN સ્થિરાંક અને blinkState ચલ વ્યાખ્યાયિત કરે છે.
- સેટઅપ() ફંક્શન સીરીયલ કોમ્યુનિકેશન શરૂ કરે છે અને I2C કોમ્યુનિકેશન શરૂ કરે છે. પછી તે ત્રણ સેન્સરને પ્રારંભ કરે છે:
- BMP085 સેન્સર બીગિન() મેથડને કૉલ કરીને શરૂ કરવામાં આવે છે. જો આ ખોટું પરત કરે છે, જે દર્શાવે છે કે સેન્સર મળી શક્યું નથી, તો પ્રોગ્રામ અનંત લૂપમાં પ્રવેશ કરે છે અને સીરીયલ પોર્ટ પર એક ભૂલ સંદેશ છાપે છે.
- MPU6050 સેન્સરને ઇનિશિયલાઈઝ() મેથડને કૉલ કરીને અને તે યોગ્ય રીતે કામ કરી રહ્યું છે કે કેમ તે તપાસીને પ્રારંભ કરવામાં આવે છે. અને તે MPU2 માટે સક્ષમ કરેલ I6050C બાયપાસ સેટ કરે છે.
- HMC5883L સેન્સર કેટલાક કાર્યોને કૉલ કરીને શરૂ કરવામાં આવે છે, જેમ કે SetDeclination, SetSampસેન્સર માટે વિવિધ રૂપરેખાંકનો સેટ કરવા માટે lingMode, SetScale અને SetOrientation.
- લૂપ() ફંક્શનમાં, કોડ ત્રણ સેન્સરમાંથી ડેટા વાંચે છે અને તેને સીરીયલ પોર્ટ પર છાપે છે:
- તે સેન્સરથી દરિયાની સપાટી પર તાપમાન, દબાણ, ઊંચાઈ અને દબાણ વાંચે છે.
- તે MPU6050 સેન્સરમાંથી કાચા પ્રવેગક અને જાયરોસ્કોપ માપને વાંચે છે.
- તે HMC5883L સેન્સરનું મથાળું વાંચે છે, જે સેન્સર જે દિશામાં નિર્દેશ કરી રહ્યું છે અને જે દિશામાં ચુંબકીય ઉત્તર આવેલું છે તેની વચ્ચેનો ખૂણો છે.
- છેલ્લે, તે પ્રવૃત્તિ દર્શાવવા માટે LED ને ઝબકાવી દે છે અને સેન્સર્સને ફરીથી વાંચતા પહેલા એક ક્ષણ રાહ જુએ છે.
દસ્તાવેજો / સંસાધનો
![]() |
ARDUINO GY87 સંયુક્ત સેન્સર ટેસ્ટ સ્કેચ [પીડીએફ] વપરાશકર્તા માર્ગદર્શિકા GY87 સંયુક્ત સેન્સર ટેસ્ટ સ્કેચ, GY87, સંયુક્ત સેન્સર ટેસ્ટ સ્કેચ, સેન્સર ટેસ્ટ સ્કેચ, ટેસ્ટ સ્કેચ |