მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
Anonim
Image
Image

MPU-6000 არის 6-ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3-ღერძიანი ამაჩქარებელი და 3-ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. ის შეიძლება გამოყენებულ იქნას სისტემებში, რომლებიც საჭიროებენ პოზიციის ანალიზს უმაღლესი სიზუსტით.

ამ გაკვეთილში ილუსტრირებულია MPU-6000 სენსორის მოდულის ინტერფეისი ნაწილაკების ფოტონთან. აჩქარების და ბრუნვის კუთხის მნიშვნელობების წასაკითხად, ჩვენ გამოვიყენეთ ნაწილაკი I2c ადაპტერით. ეს I2C ადაპტერი სენსორულ მოდულთან კავშირს იოლი და საიმედო ხდის.

ნაბიჯი 1: საჭირო აპარატურა:

საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა

ჩვენი ამოცანის შესასრულებლად საჭირო მასალები მოიცავს ქვემოთ ჩამოთვლილ აპარატურულ კომპონენტებს:

1. MPU-6000

2. ნაწილაკების ფოტონი

3. I2C კაბელი

4. I2C ფარი ნაწილაკების ფოტონისთვის

ნაბიჯი 2: აპარატურის დაკავშირება:

აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება

აპარატურის დაკავშირების განყოფილება ძირითადად განმარტავს გაყვანილობის კავშირებს სენსორსა და ნაწილაკ ფოტონს შორის. სწორი კავშირების უზრუნველყოფა არის ძირითადი აუცილებლობა ნებისმიერ სისტემაზე მუშაობისას სასურველი გამომუშავებისთვის. ამრიგად, საჭირო კავშირები შემდეგია:

MPU-6000 იმუშავებს I2C– ზე. აქ არის გაყვანილობის დიაგრამა, რომელიც აჩვენებს, თუ როგორ უნდა დააკავშიროთ სენსორის თითოეული ინტერფეისი.

ყუთის გარეშე, დაფა კონფიგურირებულია I2C ინტერფეისისთვის, ამიტომ ჩვენ გირჩევთ გამოიყენოთ ეს კავშირი, თუ სხვაგვარად ხართ აგნოსტიკოსი. ყველაფერი რაც თქვენ გჭირდებათ არის ოთხი მავთული!

მხოლოდ ოთხი კავშირია საჭირო Vcc, Gnd, SCL და SDA ქინძისთავები და ეს დაკავშირებულია I2C კაბელის დახმარებით.

ეს კავშირები ნაჩვენებია ზემოთ მოცემულ სურათებში.

ნაბიჯი 3: მოძრაობის თვალთვალის კოდი:

მოძრაობის თვალთვალის კოდი
მოძრაობის თვალთვალის კოდი

დავიწყოთ ნაწილაკების კოდით ახლა.

სენსორული მოდულის arduino– ს გამოყენებისას, ჩვენ ვიყენებთ application.h და spark_wiring_i2c.h ბიბლიოთეკას. "application.h" და spark_wiring_i2c.h ბიბლიოთეკა შეიცავს ფუნქციებს, რომლებიც ხელს უწყობს სენსორსა და ნაწილაკს შორის i2c კომუნიკაციას.

მომხმარებლის ნაწილის მოხერხებულობისთვის ქვემოთ მოცემულია ნაწილაკების მთელი კოდი:

#მოიცავს #მოიცავს // MPU-6000 I2C მისამართი არის 0x68 (104) #განსაზღვრეთ Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// ცვლადის დაყენება Particle.variable ("i2cdevice", "MPU-6000"); ნაწილაკი. ცვლადი ("xAccl", xAccl); ნაწილაკი. ცვლადი ("yAccl", yAccl); ნაწილაკი. ცვლადი ("zAccl", zAccl); ნაწილაკი. ცვლადი ("xGyro", xGyro); ნაწილაკი. ცვლადი ("yGyro", yGyro); ნაწილაკი. ცვლადი ("zGyro", zGyro); // I2C კომუნიკაციის ინიციალიზაცია როგორც Master Wire.begin (); // სერიული კომუნიკაციის ინიციალიზაცია, დაყენებული baud rate = 9600 Serial.begin (9600); // I2C გადაცემის დაწყება Wire.beginTransmission (Addr); // შეარჩიეთ გიროსკოპის კონფიგურაციის რეგისტრი Wire.write (0x1B); // სრული მასშტაბის დიაპაზონი = 2000 dps Wire.write (0x18); // შეაჩერე I2C გადამცემი Wire.endTransmission (); // I2C გადაცემის დაწყება Wire.beginTransmission (Addr); // აირჩიეთ აქსელერომეტრის კონფიგურაციის რეგისტრი Wire.write (0x1C); // სრულმასშტაბიანი დიაპაზონი = +/- 16 გ Wire.write (0x18); // შეაჩერე I2C გადამცემი Wire.endTransmission (); // დაწყება I2C გადაცემა Wire.beginTransmission (Addr); // ენერგიის მართვის რეგისტრის არჩევა Wire.write (0x6B); // PLL xGyro მითითებით Wire.write (0x01); // შეაჩერე I2C გადამცემი Wire.endTransmission (); დაგვიანება (300); } void loop () {ხელმოუწერელი int მონაცემები [6]; // დაწყება I2C გადაცემა Wire.beginTransmission (Addr); // მონაცემთა რეგისტრაციის არჩევა Wire.write (0x3B); // შეაჩერე I2C გადამცემი Wire.endTransmission (); // მოითხოვეთ მონაცემების 6 ბაიტი Wire.requestFrom (Addr, 6); // წაიკითხეთ მონაცემების 6 ბაიტი თუ (Wire.available () == 6) {data [0] = Wire.read (); მონაცემები [1] = Wire.read (); მონაცემები [2] = Wire.read (); მონაცემები [3] = Wire.read (); მონაცემები [4] = Wire.read (); მონაცემები [5] = Wire.read (); } დაყოვნება (800); // მონაცემების კონვერტაცია xAccl = ((მონაცემები [1] * 256) + მონაცემები [0]); თუ (xAccl> 32767) {xAccl -= 65536; } yAccl = ((მონაცემები [3] * 256) + მონაცემები [2]); if (yAccl> 32767) {yAccl -= 65536; } zAccl = ((მონაცემები [5] * 256) + მონაცემები [4]); if (zAccl> 32767) {zAccl -= 65536; } დაყოვნება (800); // I2C გადაცემის დაწყება Wire.beginTransmission (Addr); // მონაცემთა რეგისტრაციის არჩევა Wire.write (0x43); // შეაჩერე I2C გადამცემი Wire.endTransmission (); // მოითხოვეთ მონაცემების 6 ბაიტი Wire.requestFrom (Addr, 6); // წაიკითხეთ მონაცემების 6 ბაიტი თუ (Wire.available () == 6) {data [0] = Wire.read (); მონაცემები [1] = Wire.read (); მონაცემები [2] = Wire.read (); მონაცემები [3] = Wire.read (); მონაცემები [4] = Wire.read (); მონაცემები [5] = Wire.read (); } // მონაცემების კონვერტაცია xGyro = ((მონაცემები [1] * 256) + მონაცემები [0]); თუ (xGyro> 32767) {xGyro -= 65536; } yGyro = ((მონაცემები [3] * 256) + მონაცემები [2]); თუ (yGyro> 32767) {yGyro -= 65536; } zGyro = ((მონაცემები [5] * 256) + მონაცემები [4]); if (zGyro> 32767) {zGyro -= 65536; } // მონაცემების გამოტანა დაფაზე Particle.publish ("აჩქარება X- ღერძში:", სიმებიანი (xAccl)); დაგვიანება (1000); Particle.publish ("აჩქარება Y- ღერძში:", სიმებიანი (yAccl)); დაგვიანება (1000); Particle.publish ("აჩქარება Z- ღერძში:", სიმებიანი (zAccl)); დაგვიანება (1000); Particle.publish ("ბრუნვის X- ღერძი:", სიმებიანი (xGyro)); დაგვიანება (1000); Particle.publish ("ბრუნვის Y- ღერძი:", სიმებიანი (yGyro)); დაგვიანება (1000); Particle.publish ("ბრუნვის Z- ღერძი:", სიმებიანი (zGyro)); დაგვიანება (1000); }

Particle.variable () ფუნქცია ქმნის ცვლადებს სენსორის გამომუშავების შესანახად და Particle.publish () ფუნქცია აჩვენებს გამომავალს საიტის დაფაზე.

სენსორის გამომავალი ნაჩვენებია ზემოთ მოცემულ სურათზე თქვენი მითითებისთვის.

ნაბიჯი 4: პროგრამები:

პროგრამები
პროგრამები

MPU-6000 არის მოძრაობის თვალთვალის სენსორი, რომელიც აღმოაჩენს მის გამოყენებას სმარტფონებისა და ტაბლეტების მოძრაობის ინტერფეისში. სმარტფონებში ეს სენსორები შეიძლება გამოყენებულ იქნას ისეთ პროგრამებში, როგორიცაა ჟესტების ბრძანებები პროგრამებისთვის და ტელეფონის კონტროლი, გაძლიერებული თამაში, გაძლიერებული რეალობა, პანორამული ფოტო გადაღება და ნახვა და ფეხით მოსიარულეთა და მანქანების ნავიგაცია. MotionTracking ტექნოლოგიას შეუძლია გადააქციოს ტელეფონები და ტაბლეტები ძლიერ 3D ინტელექტუალურ მოწყობილობებად, რომლებიც შეიძლება გამოყენებულ იქნას პროგრამებში ჯანმრთელობისა და ფიტნესის მონიტორინგიდან დაწყებული ადგილმდებარეობის სერვისებით დამთავრებული.

გირჩევთ: