- المواد المستخدمة
- وحدة NEO6M GPS
- شاشة 1.3 بوصة I2C OLED
- مخطط الرسم البياني
- برمجة Arduino لـ Arduino OLED عداد السرعة
تستخدم عدادات السرعة لقياس سرعة حركة السيارة. استخدمنا سابقًا مستشعر الأشعة تحت الحمراء ومستشعر القاعة لبناء عداد سرعة تناظري وعداد سرعة رقمي على التوالي. سنستخدم اليوم نظام تحديد المواقع العالمي (GPS) لقياس سرعة مركبة متحركة. تعد عدادات السرعة لنظام تحديد المواقع العالمي (GPS) أكثر دقة من عدادات السرعة القياسية لأنها يمكنها تحديد موقع السيارة باستمرار ويمكنها حساب السرعة. تُستخدم تقنية GPS على نطاق واسع في الهواتف الذكية والمركبات لتنبيهات التنقل وحركة المرور.
في هذا المشروع ، سنقوم ببناء عداد سرعة Arduino GPS باستخدام وحدة NEO6M GPS مع شاشة OLED.
المواد المستخدمة
- اردوينو نانو
- وحدة NEO6M GPS
- شاشة 1.3 بوصة I2C OLED
- اللوح
- ربط صداري
وحدة NEO6M GPS
نحن هنا نستخدم وحدة GPS NEO6M. وحدة NEO-6M GPS هي جهاز استقبال GPS مشهور بهوائي سيراميك مدمج ، والذي يوفر قدرة بحث قوية عبر الأقمار الصناعية. يتمتع جهاز الاستقبال هذا بالقدرة على استشعار المواقع وتتبع ما يصل إلى 22 قمراً صناعياً وتحديد المواقع في أي مكان في العالم. مع مؤشر الإشارة الموجود على اللوحة ، يمكننا مراقبة حالة الشبكة للوحدة. يحتوي على بطارية احتياطية للبيانات بحيث يمكن للوحدة حفظ البيانات عند إيقاف تشغيل الطاقة الرئيسية عن طريق الخطأ.
القلب الأساسي داخل وحدة مستقبل GPS هو شريحة GPS NEO-6M من u-blox. يمكنه تتبع ما يصل إلى 22 قمرًا صناعيًا على 50 قناة ولديه مستوى حساسية مثير للإعجاب يبلغ -161 ديسيبل ميلي واط. يتميز محرك تحديد المواقع u-blox 6 المكون من 50 قناة بـ Time-To-First-Fix (TTFF) الذي يقل عن ثانية واحدة. تدعم هذه الوحدة معدل الباود من 4800 إلى 230400 بت في الثانية ولديها الباود الافتراضي 9600.
ميزات:
- جهد التشغيل: (2.7-3.6) فولت تيار مستمر
- التشغيل الحالي: 67 مللي أمبير
- معدل الباود: 4800-230400 بت في الثانية (9600 افتراضي)
- بروتوكول الاتصال: نيما
- الواجهة: UART
- هوائي خارجي و EEPROM مدمج.
Pinout من وحدة GPS:
- VCC: دبوس جهد الإدخال للوحدة
- GND: دبوس الأرض
- RX ، TX: دبابيس اتصال UART مع متحكم دقيق
لقد قمنا سابقًا بتوصيل GPS مع Arduino وقمنا ببناء العديد من المشاريع باستخدام وحدات GPS بما في ذلك تتبع المركبات.
شاشة 1.3 بوصة I2C OLED
يرمز المصطلح OLED إلى " الصمام الثنائي الباعث للضوء العضوي" ، وهو يستخدم نفس التقنية المستخدمة في معظم أجهزة التلفزيون لدينا ولكن بها عدد بكسلات أقل مقارنة بها. من الممتع حقًا أن يتم ربط وحدات العرض الرائعة هذه مع Arduino لأنها ستجعل مشاريعنا تبدو رائعة. لقد قمنا بتغطية مقال كامل حول شاشات OLED وأنواعها هنا. هنا ، نستخدم شاشة OLED أحادية اللون ذات 4 سنون SH1106 OLED مقاس 1.28 بوصة. يمكن أن تعمل هذه الشاشة فقط مع وضع I2C.
المواصفات الفنية:
- سائق IC: SH1106
- جهد الإدخال: 3.3 فولت -5 فولت تيار مستمر
- القرار: 128x64
- الواجهة: I2C
- الاستهلاك الحالي: 8 مللي أمبير
- لون البكسل: أزرق
- زاوية الرؤية:> 160 درجة
دبوس الوصف:
VCC: مصدر طاقة الإدخال 3.3-5V DC
GND: دبوس مرجعي أرضي
SCL: دبوس الساعة لواجهة I2C
SDA: دبوس البيانات التسلسلي لواجهة I2C
لقد قدم لنا مجتمع Arduino بالفعل الكثير من المكتبات التي يمكن استخدامها مباشرة لجعل هذا الأمر أكثر بساطة. لقد جربت بعض المكتبات ووجدت أن مكتبة Adafruit_SH1106.h كانت سهلة الاستخدام للغاية ولديها عدد قليل من الخيارات الرسومية ، وبالتالي سنستخدمها في هذا البرنامج التعليمي.
يبدو OLED رائعًا جدًا ويمكن ربطه بسهولة بوحدات التحكم الدقيقة الأخرى لبناء بعض المشاريع المثيرة للاهتمام:
- واجهة عرض SSD1306 OLED مع Raspberry Pi
- واجهة عرض SSD1306 OLED مع Arduino
- ساعة الإنترنت باستخدام شاشة ESP32 و OLED
- تحكم تلقائي في درجة حرارة التيار المتردد باستخدام Arduino و DHT11 و IR Blaster
مخطط الرسم البياني
يرد أدناه مخطط الدائرة لعداد السرعة Arduino GPS باستخدام OLED.
سيبدو الإعداد الكامل كما يلي:
برمجة Arduino لـ Arduino OLED عداد السرعة
يتم تقديم الكود الكامل للمشروع في الجزء السفلي من البرنامج التعليمي. نحن هنا نوضح الكود الكامل سطرًا بسطر.
بادئ ذي بدء ، قم بتضمين جميع المكتبات. هنا تستخدم مكتبة TinyGPS ++. h للحصول على إحداثيات GPS باستخدام وحدة مستقبل GPS ويستخدم Adafruit_SH1106.h لـ OLED.
#تضمن
بعد ذلك ، يتم تحديد عنوان OLED I2C ، والذي يمكن أن يكون إما OX3C أو OX3D ، وهنا هو OX3C في حالتي. أيضًا ، يجب تحديد دبوس إعادة تعيين الشاشة. في حالتي ، يتم تعريفه على أنه -1 ، حيث أن الشاشة تشارك دبوس إعادة تعيين Arduino.
#define OLED_ADDRESS 0x3C # تعريف OLED_RESET -1 عرض Adafruit_SH1106 (OLED_RESET) ؛
بعد ذلك، الكائنات ل TinyGPSPlus و Softwareserial يتم تعريف الطبقة كما هو مبين أدناه. تحتاج فئة البرامج التسلسلية إلى رقم دبوس Arduino. للاتصال التسلسلي ، والذي يتم تعريفه على أنه 2 و 3 هنا.
int RX = 2 ، TX = 3 ؛ TinyGPSPlus GPS ؛ SoftwareSerial gpssoft (RX ، TX) ؛
داخل الإعداد () ، تتم التهيئة للاتصال التسلسلي و OLED. ويعرف معدل سرعة نقل البيانات الافتراضي لبرنامج الاتصال التسلسلي كما 9600. هنا SH1106_SWITCHCAPVCC يستخدم لتوليد الجهد العرض من 3.3V داخليا و display.begin يتم استخدام الدالة تهيئة الشاشة.
إعداد باطل () { Serial.begin (9600) ؛ gpssoft.begin (9600) ؛ display.begin (SH1106_SWITCHCAPVCC، OLED_ADDRESS) ؛ display.clearDisplay () ، }
في الداخل أثناء التكرار الصحيح ، يتم التحقق من صحة البيانات التسلسلية المستلمة ، إذا تم تلقي إشارات GPS صالحة ، يتم استدعاء عرض السرعة () لإظهار قيمة السرعة على OLED.
بينما (gpssoft.available ()> 0) إذا كان (gps.encode (gpssoft.read ())) يعرض السرعة () ؛
داخل displayspeed () وظيفة، يتم التحقق من البيانات بسرعة من وحدة GPS باستخدام وظيفة gps.speed.isValid () وإذا كان إرجاع القيمة الحقيقية، ثم يتم عرض قيمة السرعة على شاشة OLED. هنا يتم تحديد حجم النص على OLED باستخدام وظيفة display.setTextSize ويتم تحديد موضع المؤشر باستخدام وظيفة display.setCursor . يتم فك تشفير بيانات السرعة من وحدة GPS باستخدام وظيفة gps.speed.kmph () وأخيراً يتم عرضها باستخدام display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2) ؛ display.setCursor (40 ، 40) ؛ display.print (gps.speed.kmph ()) ؛ display.display () ، }
أخيرًا ، قم بتحميل الكود في Arduino Uno ووضع النظام في مركبة متحركة ، ويمكنك رؤية السرعة على شاشة OLED كما هو موضح في الصورة أدناه.
الكود الكامل مع الفيديو التوضيحي معطى أدناه.