- المكونات مطلوبة
- وحدة GPS
- دبوس خارج STM32F103C8
- مخطط الدائرة والتوصيلات
- برمجة STM32F103C8 لواجهة وحدة GPS
- البحث عن خطوط الطول والعرض باستخدام GPS و STM32
يشير نظام تحديد المواقع العالمي (GPS) إلى نظام تحديد المواقع العالمي ويستخدم لاكتشاف خطوط الطول والعرض لأي موقع على الأرض ، مع التوقيت العالمي المنسق (UTC) (تنسيق التوقيت العالمي). يستقبل هذا الجهاز الإحداثيات من القمر الصناعي لكل ثانية مع الوقت والتاريخ. يوفر GPS دقة كبيرة ويوفر أيضًا بيانات أخرى إلى جانب إحداثيات الموقع.
نعلم جميعًا أن GPS جهاز مفيد للغاية وشائع الاستخدام في الهواتف المحمولة والأجهزة المحمولة الأخرى لتتبع الموقع. لديها مجموعة واسعة جدًا من التطبيقات في كل مجال من استدعاء سيارة الأجرة في منزلك لتتبع ارتفاع الطائرات. فيما يلي بعض المشاريع المفيدة المتعلقة بنظام تحديد المواقع العالمي (GPS) ، والتي أنشأناها سابقًا:
- نظام تتبع المركبات
- ساعة GPS
- نظام إنذار كشف الحوادث
- Raspberry Pi GPS Module Interfacing Tutorfacing
- واجهة وحدة GPS مع متحكم PIC
هنا في هذا البرنامج التعليمي ، سنقوم بتوصيل وحدة GPS مع متحكم STM32F103C8 للعثور على إحداثيات الموقع وعرضها على شاشة LCD مقاس 16 × 2.
المكونات مطلوبة
- متحكم STM32F103C8
- وحدة GPS
- شاشة LCD مقاس 16 × 2
- اللوح
- توصيل الأسلاك
وحدة GPS
إنها وحدة GPS GY-NEO6MV2 XM37-1612. تحتوي وحدة GPS هذه على أربعة أسنان + 5 فولت و GND و TXD و RXD. يتصل باستخدام المسامير التسلسلية ويمكن توصيله بسهولة بالمنفذ التسلسلي لـ STM32F103C8.
وحدة GPS ترسل البيانات بتنسيق NMEA (انظر الصورة أدناه). يتكون تنسيق NMEA من عدة جمل ، نحتاج فيها فقط إلى جملة واحدة. تبدأ هذه الجملة من $ GPGGA وتحتوي على الإحداثيات والوقت والمعلومات المفيدة الأخرى. يشار إلى GPGGA هذا إلى بيانات إصلاح نظام تحديد المواقع العالمي. تعرف على المزيد حول قراءة بيانات GPS وسلاسلها هنا.
يوجد أدناه نموذج واحد لسلسلة GPGGA $ ، بالإضافة إلى وصفه:
GPGGA بالدولار الأمريكي ، 104534.000،7791.0381 ، N ، 06727.4434 ، E ، 1،08،0.9،510.4 ، M ، 43.9 ، M ، * 47
GPGGA $ ، HHMMSS.SSS ، خطوط العرض ، N ، خطوط الطول ، E ، FQ ، NOS ، HDP ، الارتفاع ، M ، الارتفاع ، M ، بيانات المجموع الاختباري
ولكن هنا في هذا البرنامج التعليمي ، نستخدم مكتبة TinyGPSPlus GPS التي تستخرج جميع المعلومات المطلوبة من جملة NMEA ، ونحتاج فقط إلى كتابة سطر بسيط من التعليمات البرمجية للحصول على خط الطول والعرض ، والذي سنراه لاحقًا في البرنامج التعليمي.
دبوس خارج STM32F103C8
STM32F103C8 (BLUE PILL) تظهر منافذ الاتصال التسلسلي USART في صورة التثبيت أدناه. وهي زرقاء اللون لها (PA9-TX1 ، PA10- RX1 ، PA2-TX2 ، PA3- RX2 ، PB10-TX3 ، PB11- RX3). لديها ثلاث قنوات اتصال من هذا القبيل.
مخطط الدائرة والتوصيلات
اتصالات الدائرة بين وحدة GPS و STM32F103C8
وحدة GPS |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5 فولت |
+ 5 فولت |
GND |
GND |
التوصيلات بين شاشة LCD مقاس 16 × 2 و STM32F103C8
رقم دبوس LCD |
اسم دبوس LCD |
اسم دبوس STM32 |
1 |
الأرض (Gnd) |
مطحون (G) |
2 |
VCC |
5 فولت |
3 |
VEE |
دبوس من مركز مقياس الجهد |
4 |
اختيار التسجيل (RS) |
PB11 |
5 |
قراءة / كتابة (RW) |
مطحون (G) |
6 |
تمكين (بالإنكليزية) |
PB10 |
7 |
بت البيانات 0 (DB0) |
لا يوجد اتصال (NC) |
8 |
بت البيانات 1 (DB1) |
لا يوجد اتصال (NC) |
9 |
بت البيانات 2 (DB2) |
لا يوجد اتصال (NC) |
10 |
بت البيانات 3 (DB3) |
لا يوجد اتصال (NC) |
11 |
بت البيانات 4 (DB4) |
PB0 |
12 |
بت البيانات 5 (DB5) |
PB1 |
13 |
بت البيانات 6 (DB6) |
PC13 |
14 |
بت البيانات 7 (DB7) |
PC14 |
15 |
LED إيجابي |
5 فولت |
16 |
سلبي LED |
مطحون (G) |
سيبدو الإعداد بالكامل كما يلي:
برمجة STM32F103C8 لواجهة وحدة GPS
تم تقديم برنامج كامل للعثور على الموقع باستخدام وحدة GPS باستخدام STM32 في نهاية هذا المشروع. يمكن برمجة STM32F103C8 باستخدام Arduino IDE ببساطة عن طريق توصيله بجهاز الكمبيوتر عبر منفذ USB. تأكد من إزالة دبابيس TX و RX أثناء تحميل الرمز وتوصيله بعد التحميل.
لواجهة GPS مع STM32 ، يتعين علينا أولاً تنزيل مكتبة من رابط GitHub TinyGPSPlus. بعد تنزيل المكتبة ، يمكن تضمينها في Arduino IDE عن طريق Sketch -> Include Library -> Add.zip Library. يمكن استخدام نفس المكتبة لربط GPS مع Arduino.
لذلك قم أولاً بتضمين ملفات المكتبة الضرورية وحدد دبابيس لشاشة LCD مقاس 16 × 2:
#تضمن
ثم قم بإنشاء كائن يسمى GPS للفئة TinyGPSPlus.
TinyGPSPlus GPS ؛
بعد ذلك ، في إعداد الفراغ ، ابدأ الاتصال التسلسلي مع وحدة GPS باستخدام Serial1.begin (9600). يتم استخدام Serial1 كمنفذ تسلسلي 1 (Pins-PA9 ، PA10) من STM32F103C8.
Serial1.begin (9600) ؛
ثم اعرض رسالة الترحيب لبعض الوقت.
lcd.begin (16.2) ؛ lcd.print ("ملخص الدائرة") ؛ lcd.setCursor (0،1) ؛ lcd.print ("STM32 مع GPS") ؛ تأخير (4000) ؛ lcd.clear () ؛
بعد ذلك ، في الحلقة الفارغة () ، نتلقى خطوط الطول والعرض من نظام تحديد المواقع العالمي (GPS) ونتحقق مما إذا كانت البيانات المستلمة صالحة أم لا ونعرض المعلومات في الشاشة التسلسلية وشاشة LCD.
التحقق مما إذا كانت بيانات الموقع المتاحة صالحة أم لا
loc_valid = gps.location.isValid () ،
يتلقى بيانات خط العرض
lat_val = gps.location.lat () ؛
يتلقى بيانات خط الطول
lng_val = gps.location.lng () ،
في حالة استلام بيانات غير صالحة ، يتم عرض "*****" في الشاشة التسلسلية وعرض "الانتظار" على شاشة LCD.
if (! loc_valid) { lcd.print ("Waiting") ؛ Serial.print ("Latitude:") ؛ Serial.println ("*****") ؛ Serial.print ("خط الطول:") ؛ Serial.println ("*****") ؛ تأخير (4000) ؛ lcd.clear () ؛ }
في حالة تلقي بيانات صحيحة ، يتم عرض خط العرض وخط الطول على الشاشة التسلسلية وكذلك على شاشة LCD.
lcd.clear () ؛ Serial.println ("قراءة GPS:") ؛ Serial.print ("Latitude:") ؛ Serial.println (lat_val ، 6) ؛ lcd.setCursor (0،0) ؛ lcd.print ("LAT:") ؛ lcd.print (lat_val ، 6) ؛ Serial.print ("خط الطول:") ؛ Serial.println (lng_val، 6) ؛ lcd.setCursor (0،1) ؛ lcd.print ("LONG:") ؛ lcd.print (lng_val ، 6) ؛ تأخير (4000) ؛
الوظيفة التالية توفر التأخير في قراءة البيانات. يستمر في البحث عن البيانات الموجودة على المنفذ التسلسلي.
GPSDelay الفراغ الثابت (مللي ثانية طويلة بدون إشارة) { بداية طويلة غير موقعة = ميلي () ؛ افعل { while (Serial1.available ()) gps.encode (Serial1.read ()) ؛ } while (millis () - start <ms) ؛ }
البحث عن خطوط الطول والعرض باستخدام GPS و STM32
بعد إنشاء الإعداد وتحميل الرمز ، تأكد من وضع وحدة GPS في منطقة مفتوحة لاستقبال الإشارة بسرعة. في بعض الأحيان يستغرق الأمر بضع دقائق لتلقي الإشارة ، لذا انتظر بعض الوقت. سيبدأ مؤشر LED في الوميض في وحدة GPS عندما يبدأ في استقبال الإشارة وسيتم عرض إحداثيات الموقع على شاشة LCD.
يمكنك التحقق من خطوط الطول والعرض للموقع باستخدام خرائط جوجل. ما عليك سوى الانتقال إلى خرائط Google مع تشغيل GPS والنقر على النقطة الزرقاء. سيظهر العنوان مع خطوط الطول والعرض كما هو موضح في الصورة أدناه
و الكامل رمز والفيديو مظاهرة يرد أدناه.