شعار STM32

STM32F103C8T6 الحد الأدنى لمجلس تطوير النظام

STM32F103C8T6-الحد الأدنى-لوحة-تطوير-النظام-المنتج

معلومات المنتج

وحدة لوحة تطوير النظام الأدنى STM32F103C8T6 ARM STM32 هي لوحة تطوير تعتمد على وحدة التحكم الدقيقة STM32F103C8T6. تم تصميمه ليتم برمجته باستخدام Arduino IDE وهو متوافق مع العديد من نسخ Arduino والتنوعات ولوحات الطرف الثالث مثل ESP32 وESP8266.

تعمل اللوحة، المعروفة أيضًا باسم Blue Pill Board، بتردد أعلى بحوالي 4.5 مرة من Arduino UNO. يمكن استخدامه في مشاريع مختلفة ويمكن توصيله بالأجهزة الطرفية مثل شاشات TFT.

تشتمل المكونات المطلوبة لبناء المشاريع باستخدام هذه اللوحة على لوحة STM32، ومبرمج FTDI، وشاشة TFT ملونة، وزر ضغط، ولوحة تجارب صغيرة، وأسلاك، وبنك الطاقة (اختياري للوضع المستقل)، ومحول USB إلى تسلسلي.

تخطيطي

لتوصيل لوحة STM32F1 بشاشة TFT ملونة مقاس 1.8 ST7735 وزر ضغط، اتبع اتصالات الدبوس إلى الدبوس الموضحة في المخططات المتوفرة.

إعداد Arduino IDE لـ STM32

  1. افتح Arduino IDE.
  2. انتقل إلى الأدوات -> اللوحة -> مدير مجلس الإدارة.
  3. في مربع الحوار الذي يحتوي على شريط بحث، ابحث عن "STM32F1" وقم بتثبيت الحزمة المقابلة.
  4. انتظر حتى يكتمل إجراء التثبيت.
  5. بعد التثبيت، يجب أن تكون لوحة STM32 متاحة الآن للاختيار ضمن قائمة لوحات Arduino IDE.

برمجة لوحات STM32 مع Arduino IDE

منذ بدايته، أظهر Arduino IDE الرغبة في دعم جميع أنواع المنصات، بدءًا من نسخ Arduino وأشكال مختلفة من الشركات المصنعة المختلفة إلى لوحات الطرف الثالث مثل ESP32 وESp8266. مع ازدياد عدد الأشخاص الذين يتعرفون على IDE، فقد بدأوا في دعم المزيد من اللوحات التي لا تعتمد على شرائح ATMEL وفي البرنامج التعليمي اليوم سنلقي نظرة على إحدى هذه اللوحات. سوف ندرس كيفية برمجة لوحة التطوير STM32F32C103T8 المستندة إلى STM6 باستخدام Arduino IDE.

STM32F103C8T6-Minimum-System-Development-Board-fig-1

لوحة STM32 التي سيتم استخدامها في هذا البرنامج التعليمي ليست سوى لوحة تطوير STM32F103 المستندة إلى شريحة STM8F6C32T1 والتي يشار إليها عادةً باسم "Blue Pill" بما يتماشى مع اللون الأزرق لثنائي الفينيل متعدد الكلور الخاص بها. يتم تشغيل Blue Pill بواسطة معالج STM32F32C103T8 ARM القوي 6 بت، بسرعة 72 ميجاهرتز. تعمل اللوحة على مستويات منطقية 3.3 فولت ولكن تم اختبار منافذ GPIO الخاصة بها لتكون متسامحة مع 5 فولت. على الرغم من أنه لا يأتي مزودًا بشبكة WiFi أو Bluetooth مثل متغيرات ESP32 وArduino، إلا أنه يوفر 20 كيلو بايت من ذاكرة الوصول العشوائي و64 كيلو بايت من ذاكرة الفلاش مما يجعله مناسبًا للمشاريع الكبيرة. كما أنها تمتلك 37 منفذ GPIO، 10 منها يمكن استخدامها لأجهزة الاستشعار التناظرية نظرًا لتمكين ADC، بالإضافة إلى منافذ أخرى ممكّنة لـ SPI وI2C وCAN وUART وDMA. بالنسبة للوحة تبلغ تكلفتها حوالي 3 دولارات، فإنك تتفق معي على أن هذه المواصفات مثيرة للإعجاب. يتم عرض نسخة مختصرة من هذه المواصفات مقارنة بمواصفات Arduino Uno في الصورة أدناه.

STM32F103C8T6-Minimum-System-Development-Board-fig-2

بناءً على المواصفات المذكورة أعلاه، فإن التردد الذي تعمل به Blue Pill أعلى بنحو 4.5 مرة من Arduino UNO، في البرنامج التعليمي اليوم، كمثال سابق.ampللتعرف على كيفية استخدام لوحة STM32F1، سنقوم بتوصيلها بشاشة TFT مقاس 1.44 بوصة وبرمجتها لحساب ثابت "Pi". سوف نلاحظ المدة التي استغرقتها اللوحة للحصول على القيمة ومقارنتها بالوقت الذي يستغرقه Arduino Uno لأداء نفس المهمة.

المكونات المطلوبة

المكونات التالية مطلوبة لبناء هذا المشروع؛

  • مجلس STM32
  • مبرمج FTDI
  • لون تي اف تي
  • زر
  • اللوح الصغير
  • الأسلاك
  • بنك الطاقة
  • محول USB إلى تسلسلي

كالعادة، يمكن شراء جميع المكونات المستخدمة في هذا البرنامج التعليمي من الروابط المرفقة. ومع ذلك، لا تكون هناك حاجة إلى بنك الطاقة إلا إذا كنت تريد نشر المشروع في وضع مستقل.

تخطيطي

  • كما ذكرنا سابقًا، سنقوم بتوصيل لوحة STM32F1 بشاشة TFT ملونة مقاس 1.8 بوصة ST7735 مع زر ضغط.
  • سيتم استخدام زر الضغط لتوجيه اللوحة لبدء الحساب.
  • قم بتوصيل المكونات كما هو موضح في المخطط أدناه.

STM32F103C8T6-Minimum-System-Development-Board-fig-3

لتسهيل تكرار الاتصالات، يتم وصف الاتصالات بين STM32 والشاشة أدناه.

STM32 – ST7735

STM32F103C8T6-Minimum-System-Development-Board-fig-4

قم بمراجعة الاتصالات مرة أخرى للتأكد من أن كل شيء كما ينبغي أن يكون لأنه يميل إلى أن يصبح صعبًا بعض الشيء. بعد الانتهاء من ذلك، انتقلنا إلى إعداد لوحة STM32 ليتم برمجتها باستخدام Arduino IDE.

إعداد Arduino IDE لـ STM32

  • كما هو الحال مع معظم اللوحات التي لم يتم تصنيعها بواسطة Arduino، يجب إجراء القليل من الإعداد قبل استخدام اللوحة مع Arduino IDE.
  • وهذا ينطوي على تثبيت اللوحة file إما عبر Arduino Board Manager أو التنزيل من الإنترنت ونسخ الملف fileفي مجلد الأجهزة.
  • يعد مسار مدير مجلس الإدارة هو المسار الأقل مللاً وبما أن STM32F1 من بين اللوحات المدرجة، فسوف نسير في هذا الطريق. ابدأ بإضافة رابط لوحة STM32 إلى قوائم تفضيلات Arduino.
  • اذهب الى File -> التفضيلات، ثم أدخل هذا URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) في المربع كما هو موضح أدناه ثم انقر فوق موافق.

STM32F103C8T6-Minimum-System-Development-Board-fig-5

  • Now go to Tools -> Board -> Board Manager, it will open a dialogue box with a search bar. بحث عن STM32F1 and install the corresponding package.

STM32F103C8T6-Minimum-System-Development-Board-fig-6

  • سوف يستغرق إجراء التثبيت بضع ثوان. بعد ذلك، يجب أن تكون اللوحة متاحة الآن للاختيار ضمن قائمة لوحات Arduino IDE.

شفرة

  • سيتم كتابة الكود بنفس الطريقة التي نكتب بها أي رسم تخطيطي آخر لمشروع Arduino، مع الاختلاف الوحيد هو الطريقة التي تتم بها الإشارة إلى المسامير.
  • لكي نتمكن من تطوير التعليمات البرمجية لهذا المشروع بسهولة، سنستخدم مكتبتين تعدان بمثابة تعديلات على مكتبات Arduino القياسية لجعلها متوافقة مع STM32.
  • سوف نستخدم النسخة المعدلة من مكتبات Adafruit GFX وAdafruit ST7735.
  • ويمكن تحميل كلا المكتبتين عبر الروابط المرفقة بهما. كالعادة، سأقوم بتحليل قصير للكود.
  • نبدأ الكود باستيراد المكتبتين اللتين سنستخدمهما.

STM32F103C8T6-Minimum-System-Development-Board-fig-7

  • بعد ذلك، نحدد أطراف STM32 التي تتصل بها أطراف CS وRST وDC لشاشة LCD.

STM32F103C8T6-Minimum-System-Development-Board-fig-8

  • بعد ذلك، نقوم بإنشاء بعض تعريفات الألوان لتسهيل استخدام الألوان حسب أسمائها في الكود لاحقًا بدلاً من قيمها السداسية.

STM32F103C8T6-Minimum-System-Development-Board-fig-9

  • بعد ذلك، قمنا بتعيين عدد التكرارات التي نريد أن تمر بها اللوحة بالإضافة إلى مدة التحديث لشريط التقدم الذي سيتم استخدامه.

STM32F103C8T6-Minimum-System-Development-Board-fig-10

  • بعد الانتهاء من ذلك، نقوم بإنشاء كائن من مكتبة ST7735 والذي سيتم استخدامه كمرجع للعرض خلال المشروع بأكمله.
  • نشير أيضًا إلى دبوس STM32 الذي يتصل به زر الضغط وننشئ متغيرًا للاحتفاظ بحالته.

STM32F103C8T6-Minimum-System-Development-Board-fig-11

  • بعد الانتهاء من ذلك، ننتقل إلى وظيفة void setup().
  • نبدأ بإعداد pinMode() للدبوس الذي يتصل به زر الضغط، وتنشيط مقاومة السحب الداخلية على الدبوس حيث أن زر الضغط يتصل بالأرض عند الضغط عليه.

STM32F103C8T6-Minimum-System-Development-Board-fig-12

  • بعد ذلك، نقوم بتهيئة الاتصال التسلسلي والشاشة، وضبط خلفية الشاشة على اللون الأسود واستدعاء وظيفة الطباعة () لعرض الواجهة.

STM32F103C8T6-Minimum-System-Development-Board-fig-13

  • التالي هو وظيفة حلقة الفراغ (). وظيفة حلقة الفراغ بسيطة جدًا وقصيرة، وذلك بفضل استخدام المكتبات/الوظائف.
  • نبدأ بقراءة حالة زر الضغط. إذا تم الضغط على الزر، فإننا نزيل الرسالة الحالية على الشاشة باستخدام وظيفة RemovePressKeyText() ونرسم شريط التقدم المتغير باستخدام وظيفة drawBar().
  • نقوم بعد ذلك باستدعاء وظيفة حساب البداية للحصول على قيمة Pi وعرضها بالإضافة إلى الوقت المستغرق لحسابها.

STM32F103C8T6-Minimum-System-Development-Board-fig-14

  • إذا لم يتم الضغط على زر الضغط، يظل الجهاز في وضع الخمول وتطالب الشاشة بالضغط على مفتاح للتفاعل معه.

STM32F103C8T6-Minimum-System-Development-Board-fig-15

  • أخيرًا، يتم إدراج تأخير في نهاية الحلقة لإعطاء القليل من الوقت قبل رسم "الحلقات".

STM32F103C8T6-Minimum-System-Development-Board-fig-16

  • الجزء المتبقي من الكود هو الوظائف التي يتم استدعاؤها لتحقيق المهام بدءًا من رسم الشريط وحتى حساب Pi.
  • تمت تغطية معظم هذه الوظائف في العديد من البرامج التعليمية الأخرى التي تتضمن استخدام شاشة العرض ST7735.

STM32F103C8T6-Minimum-System-Development-Board-fig-17STM32F103C8T6-Minimum-System-Development-Board-fig-18STM32F103C8T6-Minimum-System-Development-Board-fig-19STM32F103C8T6-Minimum-System-Development-Board-fig-20STM32F103C8T6-Minimum-System-Development-Board-fig-21STM32F103C8T6-Minimum-System-Development-Board-fig-22

  • الكود الكامل للمشروع متاح أدناه ومرفق ضمن قسم التنزيل.

STM32F103C8T6-Minimum-System-Development-Board-fig-23STM32F103C8T6-Minimum-System-Development-Board-fig-24 STM32F103C8T6-Minimum-System-Development-Board-fig-25 STM32F103C8T6-Minimum-System-Development-Board-fig-26 STM32F103C8T6-Minimum-System-Development-Board-fig-27 STM32F103C8T6-Minimum-System-Development-Board-fig-28 STM32F103C8T6-Minimum-System-Development-Board-fig-29 STM32F103C8T6-Minimum-System-Development-Board-fig-30 STM32F103C8T6-Minimum-System-Development-Board-fig-31 STM32F103C8T6-Minimum-System-Development-Board-fig-32 STM32F103C8T6-Minimum-System-Development-Board-fig-33 STM32F103C8T6-Minimum-System-Development-Board-fig-34

تحميل الكود إلى STM32

  • يعد تحميل الرسومات إلى STM32f1 أمرًا معقدًا بعض الشيء مقارنة باللوحات القياسية المتوافقة مع Arduino. لتحميل الكود إلى اللوحة، نحتاج إلى محول USB إلى تسلسلي يعتمد على FTDI.
  • قم بتوصيل USB بالمحول التسلسلي إلى STM32 كما هو موضح في المخططات أدناه.

STM32F103C8T6-Minimum-System-Development-Board-fig-35

فيما يلي خريطة من دبوس إلى دبوس للاتصال

فتدي – STM32

  • بعد الانتهاء من ذلك، نقوم بعد ذلك بتغيير موضع وصلة المرور للوحة إلى الموضع الأول (كما هو موضح في الصورة المتحركة أدناه)، لوضع اللوحة في وضع البرمجة.
  • اضغط على زر إعادة الضبط الموجود على اللوحة مرة واحدة بعد ذلك ونحن جاهزون لتحميل الرمز.

STM32F103C8T6-Minimum-System-Development-Board-fig-37

  • على الكمبيوتر، تأكد من تحديد "Generic STM32F103C board" وحدد المسلسل لطريقة التحميل وبعد ذلك يمكنك الضغط على زر التحميل.

STM32F103C8T6-Minimum-System-Development-Board-fig-38

  • بمجرد اكتمال التحميل، قم بتغيير وصلة الحالة إلى موضعها "ا" سيؤدي هذا إلى وضع اللوحة في وضع "التشغيل" ويجب أن يبدأ تشغيلها الآن بناءً على الكود الذي تم تحميله.
  • عند هذه النقطة، يمكنك فصل FTDI وتشغيل اللوحة عبر USB الخاص بها. في حالة عدم تشغيل الكود بعد التشغيل، تأكد من استعادة وصلة المرور بشكل صحيح وإعادة تدوير الطاقة إلى اللوحة.

العرض التوضيحي

  • بعد اكتمال الرمز، اتبع عملية التحميل الموضحة أعلاه لتحميل الرمز إلى الإعداد الخاص بك.
  • يجب أن تشاهد الشاشة تظهر كما هو موضح في الصورة أدناه.

STM32F103C8T6-Minimum-System-Development-Board-fig-39

  • اضغط على زر الضغط لبدء الحساب. من المفترض أن ترى شريط التقدم ينزلق تدريجيًا حتى النهاية.
  • في نهاية العملية، يتم عرض قيمة Pi مع الوقت الذي استغرقته العملية الحسابية.

STM32F103C8T6-Minimum-System-Development-Board-fig-40

  • يتم تنفيذ نفس الكود على Arduino Uno. وتظهر النتيجة في الصورة أدناه.

STM32F103C8T6-Minimum-System-Development-Board-fig-41

  • وبمقارنة هاتين القيمتين، نرى أن "الحبة الزرقاء" أسرع بأكثر من 7 مرات من الاردوينو أونو.
  • وهذا يجعلها مثالية للمشاريع التي تنطوي على معالجة ثقيلة وقيود زمنية.
  • الحجم الصغير للحبة الزرقاء يعمل أيضًا كمساعدtagهنا لأنه أكبر قليلاً من Arduino Nano ويمكن استخدامه في الأماكن التي لن يكون فيها Nano بالسرعة الكافية.

المستندات / الموارد

STM32 STM32F103C8T6 الحد الأدنى لمجلس تطوير النظام [بي دي اف] دليل المستخدم
STM32F103C8T6 مجلس تطوير النظام الأدنى، STM32F103C8T6، مجلس تطوير النظام الأدنى، مجلس تطوير النظام، مجلس التطوير، المجلس

مراجع

اترك تعليقا

لن يتم نشر عنوان بريدك الإلكتروني. تم وضع علامة على الحقول المطلوبة *