- جهاز استشعار المدى VL6180X وقت الطيران (ToF)
- مخطط الرسم البياني
- إضافة المكتبات المطلوبة لجهاز الاستشعار VL6180 ToF
- شرح البرمجة والعمل
TOF أو Time of flight هي طريقة شائعة الاستخدام لقياس مسافة الأجسام البعيدة بواسطة مستشعر قياس المسافة المختلفة مثل مستشعر الموجات فوق الصوتية. يُشار إلى قياس الوقت الذي يستغرقه جسيم أو موجة أو جسم للسفر لمسافة عبر وسيط باسم زمن الرحلة (TOF). يمكن بعد ذلك استخدام هذا القياس لحساب السرعة أو طول المسار. يمكن استخدامه أيضًا للتعرف على الجسيمات أو خصائص الوسيط مثل التركيب أو معدل التدفق. يمكن اكتشاف الجسم المتحرك بشكل مباشر أو غير مباشر.
تعد أجهزة قياس المسافة بالموجات فوق الصوتية واحدة من أقدم الأجهزة التي تستخدم مبدأ وقت الرحلة. تصدر هذه الأجهزة نبضة فوق صوتية وتقيس المسافة إلى مادة صلبة بناءً على الوقت الذي تستغرقه الموجة للارتداد إلى الباعث. استخدمنا مستشعر الموجات فوق الصوتية في العديد من تطبيقاتنا لقياس المسافة:
- قياس المسافة من Arduino & Ultrasonic
- قم بقياس المسافة باستخدام جهاز استشعار الموجات فوق الصوتية Raspberry Pi و HCSR04
- كيفية قياس المسافة بين جهازي استشعار بالموجات فوق الصوتية
يمكن أيضًا استخدام طريقة وقت الرحلة لتقدير حركة الإلكترون. في الواقع ، تم تصميمه لقياس الأغشية الرقيقة منخفضة التوصيل ، ثم تم تعديله لاحقًا لأشباه الموصلات الشائعة. تُستخدم هذه التقنية في ترانزستورات تأثير المجال العضوي وكذلك الهياكل المعدنية العازلة للكهرباء. عن طريق تطبيق الليزر أو نبضة الجهد ، يتم توليد الشحنات الزائدة.
يستخدم مبدأ TOF لقياس المسافة بين المستشعر والجسم. يتم قياس الوقت الذي تستغرقه الإشارة للوصول إلى المستشعر بعد الانعكاس من جسم ما ، ويتم استخدامه لحساب المسافة. يمكن استخدام أنواع مختلفة من الإشارات (الناقلات) مثل الصوت والضوء مع مبدأ TOF. عند استخدام TOF لإيجاد النطاق ، يكون قويًا جدًا عند إصدار الضوء بدلاً من الصوت. بالمقارنة مع الموجات فوق الصوتية ، فإنها توفر قراءة أسرع ودقة أعلى ونطاق أكبر مع الحفاظ على وزنها المنخفض وصغر حجمها وخصائص استهلاكها المنخفض للطاقة.
هنا في هذا البرنامج التعليمي سنستخدم مستشعر VL6180X TOF Range Finder مع Arduino لحساب المسافة بين المستشعر والكائن. يخبر هذا المستشعر أيضًا قيمة شدة الضوء في LUX.
جهاز استشعار المدى VL6180X وقت الطيران (ToF)
يختلف VL6180 عن مستشعرات المسافات الأخرى لأنه يستخدم ساعة دقيقة لقياس الوقت الذي يستغرقه الضوء للانعكاس من أي سطح. هذا يعطي VL6180 فائدة على المستشعرات الأخرى لأنه أكثر دقة ومقاوم للضوضاء.
VL6180 عبارة عن حزمة 3 في 1 تتضمن باعث الأشعة تحت الحمراء ومستشعر الإضاءة المحيطة ومستشعر المدى. يتواصل عبر واجهة I 2 C. يحتوي على منظم 2.8 فولت. لذا ، حتى لو قمنا بتوصيل جهد أكبر من 2.8 فولت ، فسيتم إزاحته تلقائيًا دون إتلاف اللوحة. أنه يقيس مدى يصل إلى 25 سم. يتم توفير اثنين من GPIOs القابلة للبرمجة فيه.
مخطط الرسم البياني
هنا يتم استخدام شاشة Nokia 5110 LCD لعرض مستوى الضوء والمسافة. تعمل شاشة Nokia 5110 LCD عند 3.3 فولت ، لذا لا يمكن توصيلها بأطراف التوصيل الرقمية Arduino Nano مباشرة. لذا أضف مقاومات 10 كيلو متسلسلة مع إشارات البيانات لحماية خطوط 3.3 فولت من دبابيس رقمية 5 فولت. تعرف على المزيد حول استخدام Nokia 5110 LCD مع Arduino.
يمكن توصيل مستشعر VL6180 مباشرة بـ Arduino. الاتصال بين VL6180 و Arduino هو I2C. في الواقع ، يجمع بروتوكول الاتصال I2C بين أفضل ميزات SPI و UART. هنا يمكننا توصيل عدة عبيد بسيد واحد ويمكن أن يكون لدينا عدة سادة يتحكمون في عبد واحد أو متعدد. مثل اتصال UART ، يستخدم I2C سلكين للاتصال SDA (البيانات التسلسلية) و SCL (الساعة التسلسلية) ، وخط البيانات وخط الساعة.
يظهر أدناه مخطط الدائرة لتوصيل مستشعر البحث عن المدى VL6180 ToF مع Arduino :
- قم بتوصيل RST Pin الخاص بشاشات LCD بالدبوس 6 في Arduino من خلال المقاوم 10K.
- قم بتوصيل دبوس CE لشاشة LCD بالدبوس 7 من Arduino من خلال المقاوم 10K.
- قم بتوصيل DC Pin of LCD بالدبوس 5 من Arduino من خلال المقاوم 10K.
- قم بتوصيل DIN Pin الخاص بشاشات الكريستال السائل بالدبوس 4 من Arduino من خلال المقاوم 10K.
- قم بتوصيل CLK Pin of LCD بالدبوس 3 من Arduino من خلال المقاوم 10K.
- قم بتوصيل VCC Pin الخاص بشاشات LCD بدبوس 3.3V في Arduino.
- قم بتوصيل GND Pin of LCD بـ GND الخاص بـ Arduino.
- قم بتوصيل دبوس SCL الخاص بـ VL6180 إلى دبوس A5 من Arduino
- قم بتوصيل دبوس SDA الخاص بـ VL6180 إلى A4 دبوس من Arduino
- قم بتوصيل دبوس VCC الخاص بـ VL6180 إلى دبوس 5V من Arduino
- قم بتوصيل دبوس GND الخاص بـ VL6180 بدبوس GND في Arduino
إضافة المكتبات المطلوبة لجهاز الاستشعار VL6180 ToF
سيتم استخدام ثلاث مكتبات في توصيل مستشعر VL6180 مع Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 هي مكتبة لشاشات LCD أحادية اللون Nokia 5110. تستخدم شاشات العرض هذه SPI للاتصال. يلزم وجود أربعة أو خمسة دبابيس لتوصيل شاشة LCD هذه. رابط تنزيل هذه المكتبة مذكور أدناه:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
مكتبة Adafruit_GFX الخاصة بـ Arduino هي مكتبة الرسومات الأساسية لشاشات LCD ، حيث توفر بنية مشتركة ومجموعة من الرسوم الأساسية (النقاط ، الخطوط ، الدوائر ، إلخ). يجب إقرانها بمكتبة خاصة بالأجهزة لكل جهاز عرض نستخدمه (للتعامل مع وظائف المستوى الأدنى). رابط تنزيل هذه المكتبة مذكور أدناه:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 هي مكتبة Arduino بالوظائف الأساسية لمستشعر VL6180. يتكون VL6180 من باعث الأشعة تحت الحمراء ، ومستشعر المدى ، ومستشعر الإضاءة المحيطة الذي يتواصل عبر واجهة I2C. تتيح لك هذه المكتبة قراءة المسافة ومخرجات الضوء من المستشعر ، وإخراج البيانات عبر اتصال تسلسلي. رابط تنزيل هذه المكتبة مذكور أدناه:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
أضف جميع المكتبات واحدة تلو الأخرى بالانتقال إلى Sketch >> Include library >> إضافة مكتبة ZIP في Arduino IDE. ثم قم بتحميل المكتبة التي قمت بتنزيلها من الروابط أعلاه.
في بعض الأحيان ، لن تحتاج إلى إضافة مكتبات سلكية و SPI ، ولكن إذا تلقيت خطأ ، فيرجى تنزيلها وإضافتها إلى Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
شرح البرمجة والعمل
يتم تقديم رمز كامل مع فيديو عملي في نهاية هذا البرنامج التعليمي ، وهنا نوضح البرنامج الكامل لفهم عمل المشروع.
في هذا البرنامج ، يتم التعامل مع غالبية الأجزاء بواسطة المكتبات التي أضفناها ، لذلك لا داعي للقلق بشأن ذلك.
في جزء الإعداد ، قم بتعيين معدل البث بالباود على أنه 115200 وقم بتهيئة مكتبة Wire لـ I2C. ثم تحقق مما إذا كان مستشعر VL6180 يعمل بشكل صحيح أم لا ، وإذا كان لا يعمل ، فقم بإظهار رسالة خطأ.
في الجزء التالي نقوم بإعداد العرض ، يمكنك تغيير التباين إلى القيمة التي تريدها هنا أقوم بتعيينها على 50
إعداد باطل () { Serial.begin (115200) ؛ // بدء المسلسل بسرعة 115200 بت في الثانية Wire.begin () ؛ // بدء تأخير مكتبة I2C (100) ؛ // تأخير. if (sensor.VL6180xInit ()! = 0) { Serial.println ("فشل في التهيئة") ؛ // تهيئة الجهاز والتحقق من وجود أخطاء } ؛ جهاز الاستشعار.VL6180xDefautSettings () ، // تحميل الإعدادات الافتراضية للبدء. تأخير (1000) ؛ // تأخير 1 ثانية display.begin () ؛ // init done // يمكنك تغيير التباين حولها لتكييف العرض // للحصول على أفضل مشاهدة! display.setContrast (50) ؛ display.display () ، // إظهار عرض شاشة البداية. ClearDisplay () ؛ }
في جزء الحلقة الفارغة ، قم بإعداد الإرشادات لعرض القيم على شاشة LCD. نعرض هنا قيمتين ، الأولى هي "مستوى الضوء المحيط في لوكس" (واحد لوكس هو في الواقع لومن واحد لكل متر مربع مساحة) ، والثاني هو "المسافة تقاس بالملم". لعرض قيم مختلفة على شاشة LCD ، حدد موضع كل نص يجب عرضه على شاشة LCD باستخدام "display.setCursor (0،0)؛".
حلقة باطلة () { display.clearDisplay () ، // احصل على مستوى Ambient Light والتقرير في LUX Serial.print ("مستوى الضوء المحيط (Lux) =") ؛ Serial.println (sensor.getAmbientLight (GAIN_1)) ؛ display.setTextSize (1) ، display.setTextColor (أسود) ؛ display.setCursor (0،0) ؛ display.println ("مستوى الضوء") ؛ display.setCursor (0،12) ؛ display.println (sensor.getAmbientLight (GAIN_1)) ؛ // الحصول على المسافة والتقرير بالملم Serial.print ("المسافة المقاسة (مم) =") ؛ Serial.println (sensor.getDistance ()) ؛ display.setTextSize (1) ، display.setTextColor (أسود) ؛ display.setCursor (0 ، 24) ؛ display.println ("المسافة (مم) =") ؛ display.setCursor (0 ، 36) ؛ ب = sensor.getDistance () ؛ عرض. println (ب) ؛ display.display () ، تأخير (500) ؛ }
بعد تحميل البرنامج ، افتح الشاشة التسلسلية ويجب أن تظهر الإخراج كما هو موضح أدناه.
تُستخدم مكتشفات النطاق VL6180 TOF في الهواتف الذكية والأجهزة المحمولة التي تعمل باللمس والكمبيوتر اللوحي والكمبيوتر المحمول وأجهزة الألعاب والأجهزة المنزلية / الأجهزة الصناعية.
نعرض هنا مستوى الضوء المحيط في لوكس والمسافة بالمليمتر.
ابحث عن البرنامج الكامل والفيديو التوضيحي أدناه. تحقق أيضًا من كيفية قياس المسافة باستخدام مستشعر الموجات فوق الصوتية ومستوى الضوء باستخدام مستشعر الإضاءة المحيطة BH1750.