جدول المحتويات:

برنامج سهل للغاية: 10 خطوات
برنامج سهل للغاية: 10 خطوات

فيديو: برنامج سهل للغاية: 10 خطوات

فيديو: برنامج سهل للغاية: 10 خطوات
فيديو: ثلاث تطبيقات رح تساعدك جداً بحياتك وتخليك اكثر انتاجيه💪💡| 3 apps will change your life 2024, شهر نوفمبر
Anonim
Image
Image
سهل البرمجة بشكل لا يصدق!
سهل البرمجة بشكل لا يصدق!

اليوم ، سأتحدث عن STM32 Core ، L476RG ، الذي يمثل واجهة Ultra Low Power. يمكنك رؤيته على يسار الصورة. يحتوي هذا الجهاز على قضيبين أنثيين ، أحدهما على كل جانب ، وهما ليسوا أكثر من موصلات لدرع اردوينو. هذا شيء عظيم ، أليس كذلك؟

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

أخيرًا ، فيما يتعلق بمشروع اليوم ، سنستخدم جهازي استشعار DS18b20 بالإضافة إلى L476RG. لذلك سنقوم بتجميع بسيط باستخدام L476RG ، واستيراد مكتبة إلى بيئة MBED ، وإنشاء برنامج في بيئة MBED ، والحصول على البيانات من L476RG عبر USB / المسلسل.

لقد تحدثت بالفعل قليلاً عن L476RG في هذا الفيديو: الطريقة الأسهل لبرمجة وحدة تحكم دقيقة ، حيث أعرض كيفية تكوين بيئة MBED ، الموجودة على الإنترنت.

يسألني بعض الأشخاص الذين يتابعون مقاطع الفيديو الخاصة بي عما إذا كان STM32 يحل محل ESP32. أقول شيئًا واحدًا: إنه لا يحل محل ولا يمكن ، لأنهما شيئان مختلفان تمامًا.

شريحة STM32 هذه عبارة عن متحكم دقيق ، أو بالأحرى ؛ إنه ليس "مجموعة من الأشياء" كما هو الحال مع ESP32. لذلك قد يبدو الاسم متشابهًا ، لكنهما مختلفان تمامًا. STM32 هو متحكم دقيق للأغراض العامة ، مثل PIC ، و Atmel ، على سبيل المثال.

الخطوة 1: الموارد المستخدمة

الموارد المستخدمة
الموارد المستخدمة

1 كور L476RG

مستشعران DS18b20 (نستخدم وحدات مقاومة للماء الشائعة في السوق)

1 4k7 المقاوم

بروتوبورد صغير

صداري للاتصال

الخطوة 2: التجميع

المجسم
المجسم

سنقوم في البداية بالتجميع باستخدام أحد مستشعرات درجة الحرارة.

ستكون قوتها 5 فولت.

سيتم استخدام المقاوم 4k7 لإجراء سحب على خط البيانات (سلك واحد).

سنقرأ البيانات باستخدام دبوس A0.

الخطوة الثالثة: برنامج جديد في MBED

برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED

بمجرد إعداد حسابك في MBED والوصول إليه ، سننشئ برنامجًا جديدًا. للقيام بذلك ، انقر بزر الماوس الأيمن فوق "برامجي" وحدد "برنامج جديد …"

تأكد من أن "النظام الأساسي" يتوافق مع اللوحة التي تستخدمها.

نضغط الآن على "قالب".

سننشئ برنامجًا بناءً على المثال ، "عرض رسالة على الكمبيوتر باستخدام UART".

أدخل اسم البرنامج في "اسم البرنامج".

حدد خيار "تحديث هذا البرنامج والمكتبات لأحدث مراجعة".

سيتم إنشاء مجلد جديد لبرنامجك ، بما في ذلك مكتبة MBED الافتراضية وملف main.cpp.

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

باستخدام محطة تسلسلية من اختيارك ، يمكنك تلقي الرسائل التالية.

الخطوة 4: استيراد مكتبة DS18b20

استيراد مكتبة DS18b20
استيراد مكتبة DS18b20

نظرًا لوجود العديد من إصدارات المكتبات لـ Ds18b20 ، سنقوم بالاستيراد باستخدام عنوان url بحيث يستخدم المثال الخاص بك نفس المكتبة.

الخطوة الخامسة: برنامج جديد في MBED

برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED
برنامج جديد في MBED

في حقل "عنوان URL المصدر" ، قم بملء: https://os.mbed.com/users/Sissors/code/DS1820/ وانقر فوق استيراد.

يجب أن تظهر مكتبة DS1820 الخاصة بك في مجلد البرنامج الخاص بك.

الخطوة 6: كود المصدر

يشمل

بدأنا بتضمين المكتبات الضرورية.

# تضمين "mbed.h" // inclusão da biblioteca padrão do MBED # include "DS1820.h" // inclusão da biblioteca do sensor DS1820

نحدد الثوابت التي ستمثل الدبابيس المستخدمة.

لاحظ أن DS18b20 عبارة عن مستشعر به اتصال بسلك واحد. لهذا السبب ، نستخدم المكتبة التي ستتعامل مع بروتوكول الاتصال الكامل مع الأجهزة. يتضمن ذلك تحديد كل جهاز حتى أوامر القراءة.

#define PINO_DE_DADOS A0 // حدد o pino para leitura dos dados # حدد MAX_SENSORES 16 // حدد o número máximo para o vetor de sensores

نقوم بإنشاء متجه يشير إلى كل من الأجهزة الـ 16 المحتملة المتصلة بخط البيانات.

مستشعر DS1820 * [MAX_SENSORES] ؛ // cria um vetor com 16 posições para os sensores

نبدأ الطريقة الرئيسية () ، حيث باستخدام طريقة "unassignedProbe ()" الموجودة في مكتبة DS1820 ، نبحث عن جميع الأجهزة المتاحة في خط الاتصال.

نملأ متجه المستشعر بالمثيلات التي ستمثل كل من أجهزة الاستشعار المتاحة.

نقوم بذلك حتى يتم العثور على آخر واحد أو حتى نصل إلى الحد الأقصى وهو 16 مستشعرًا.

int main () {int encontrados = 0 ؛ while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensors sensor [encontrados] = DS1820 جديد (PINO_DE_DADOS) ؛ // cria uma instancia para o sensor encontrado encontrados ++ ؛ إذا (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break ؛ }

نرسل عدد المستشعرات الموجودة على الخط.

printf ("Dispositivos encontrado (s):٪ d / r / n / n"، encontrados) ؛

نبدأ حلقة لا نهائية ، ونطلب من جميع المستشعرات المتاحة أن تحسب درجات الحرارة الخاصة بكل منها ، ثم نكررها من خلال ناقل المستشعر عن طريق إرسال القراءات التي تم الحصول عليها.

printf ("Dispositivos encontrado (s):٪ d / r / n / n"، encontrados) ؛ بينما (1) {sensor [0] -> convertTemperature (true ، DS1820:: all_devices) ؛ // solicita a leitura de temodatura para todos os dispitivos encontrados for (int i = 0؛ itemperature ())؛ //… e retorna a Temperatura printf ("\ r / n")؛ انتظر (1) ؛ }

الخطوة 7: البيانات المتلقاة

البيانات المتلقاة
البيانات المتلقاة

باستخدام مستشعر واحد ، نحصل على الإخراج التسلسلي التالي.

الخطوة 8: تضمين المزيد من أجهزة الاستشعار

بما في ذلك المزيد من أجهزة الاستشعار
بما في ذلك المزيد من أجهزة الاستشعار
بما في ذلك المزيد من أجهزة الاستشعار
بما في ذلك المزيد من أجهزة الاستشعار

لاختبار الكود ، نقدم مستشعرًا آخر في خط الاتصال ، ببساطة عن طريق توصيله بالتوازي مع المستشعر الأول.

تذكر إيقاف تشغيل التجميع قبل توصيل أجهزة استشعار جديدة.

عند إعادة تشغيل التجميع ، حصلنا على المخرجات التالية ، دون أي تغييرات في الكود المصدري.

الخطوة 9: عرض المصدر

#include "mbed.h" // inclusão da biblioteca padrão do MBED # include "DS1820.h" // inclusão da biblioteca do sensor DS1820 #define PINO_DE_DADOS A0 // حدد o pino para leitura dos dados # تعريف MAX_SENSORES 16 // حدد o número máximo para o vetor de sensores DS1820 * مستشعر [MAX_SENSORES] ؛ // cria um vetor com 16 posições para os sensores int main () {int encontrados = 0؛ while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensors sensor [encontrados] = DS1820 جديد (PINO_DE_DADOS) ؛ // cria uma instancia para o sensor encontrado encontrados ++ ؛ إذا (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break ؛ } printf ("Dispositivos encontrado (s):٪ d / r / n / n"، encontrados)؛ بينما (1) {sensor [0] -> convertTemperature (true ، DS1820:: all_devices) ؛ // solicita a leitura de temodatura para todos os dispitivos encontrados for (int i = 0؛ itemperature ())؛ //… e retorna a Temperatura printf ("\ r / n")؛ انتظر (1) ؛ }}

الخطوة 10: الملفات

بي دي إف

آحرون

موصى به: