جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
مرحبا يا شباب! سأحاول في هذا المشروع شرح تجاربي على PIC MCU و Python للاتصالات التسلسلية. عبر الإنترنت ، هناك العديد من البرامج التعليمية ومقاطع الفيديو حول كيفية التواصل مع PIC MCU عبر محطة افتراضية وهو أمر مفيد للغاية. ومع ذلك ، في مشروعي الرئيسي ، فإن أحد المتطلبات هو إنشاء اتصال تسلسلي بين PIC MCU و Python والذي لم أجد تعليميًا جيدًا. لذلك دعونا نبدأ:)
الخطوة 1: ماذا نحتاج؟
لذا ، أولاً وقبل كل شيء ، دعنا نرى ما نحتاج إليه. من حيث الأجهزة:
- بالتأكيد ، PIC MCU وهو في حالتي PIC16f877a (لست بحاجة إلى هذا اللوحة. هذا من أجل تبسيط بعض الاتصالات المتسخة)
- محول USB إلى TTL للتواصل مع PIC MCU عبر منفذ USB باستخدام دبابيس TX و RX.
- مبرمج MCU وهو في حالتي مبرمج K150 ، ولكن يمكنك استخدام PicKit 2 أو 3 أو أي شيء آخر.
- وأخيرا جهاز كمبيوتر:)
من حيث البرمجيات:
- IDE من أجل كتابة كود Python وهو في حالتي Pycharm ، ولكن يمكنك استخدام Python IDE العادي أيضًا.
- بيئة لبرمجة MCU وهي في حالتي MPLAB X IDE مع مترجم CCS C.
الخطوة 2: توصيلات الأجهزة
في الصورة ، يتم توفير توصيلات الأجهزة المرفقة بين PIC MCU ومحول USB TTL على النحو التالي:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
لا تحتاج إلى توصيل دبوس VCC بمحول USB TTL (ومع ذلك ، إذا كنت تريد ذلك ، يمكنك القيام بذلك). هذه الوصلات الثلاثة كافية تمامًا.
الخطوة 3: برنامج Python
لنبدأ في كتابة برنامج لجانب Python والذي سيكون جهاز الإرسال في حالتنا ، لأنه سيرسل السلسلة إلى MCU.
import serial #import serial librarydata = '24' # البيانات التي سنرسلها = a + '\ 0' ser = serial. Serial ('COM17' ، معدل الباود = 9600 ، المهلة = 1) # connect to the port ser.write (a.encode ()) # إرسال البيانات
بادئ ذي بدء ، يتم استيراد المكتبة التسلسلية من أجل استخدام مستقبلها. نريد إرسال بيانات سلسلة من الأمثلة للتأكيد في كود MCU على قبولنا لها. أريد هنا أن أشير إلى شيء واحد. هذا هو السبب في أننا أضفنا "\ 0" إلى السلسلة. هذا لأنه ، من جانب MCU ، من المستحيل قراءة السلسلة بالكامل. يقرأ حرفًا بحرف. لذا ، نريد معرفة نهاية السلسلة لنتوقف عن القراءة. لذلك ، نضيف '\ 0' إلى السلسلة التي تشير إلى نهاية السلسلة. ثم نقوم بالاتصال بالمنفذ المتصل بـ MCU. يمكنك تحديد هذا المنفذ من خلال البحث في "إدارة الأجهزة". لذا كن حذرًا أنك على نفس المنفذ. بعد كل شيء ، نرسل البيانات إلى MCU. يجب إضافة ".encode ()" إلى بيانات السلسلة لتتمكن من إرسالها إلى جهاز الاستقبال.
الخطوة 4: برنامج الميكروكونترولر
لذلك ، دعنا نرى كود MCU الخاص بنا. بادئ ذي بدء ، أود أن أريكم ملف "config.h" الموجود بداخله وهو غير مطلوب ، لكنني فعلت ذلك من أجل البساطة. هنا فقط قم بتغيير تردد MCU الخاص بك.
#ifndef CONFIG_H # حدد CONFIG_H
#يشمل
#device ADC = 16
#FUSES NOWDT // No Watch Dog Timer
#FUSES NOBROWNOUT // لا يوجد إعادة تعيين Brownout #FUSES NOLVP // لا يوجد جهد منخفض ، B3 (PIC16) أو B5 (PIC18) يستخدم للإدخال / الإخراج
# تأخير الاستخدام (كريستال = 6000000)
الآن دعنا نرى الكود الرئيسي:
#يشمل
#يشمل
#use rs232 (الباود = 9600 ، xmit = pin_C6 ، rcv = pin_C7 ، التكافؤ = N ، التوقف = 1)
#define LED_RED PIN_D0
شار انب شار cmp _ = "24" ؛ شار عازلة [3] ؛
#int_rda
باطل serial_comm Communication_interrupt () {disable_interrupts (int_rda) ؛ int i = 0 ؛ inp = getc () ؛ putc (inp) ؛ while (inp! = '\ 0') {عازلة = inp؛ inp = getc () ؛ putc (inp) ؛ أنا ++ ؛ }}
باطل رئيسي (باطل) {
set_tris_d (0x00) ؛ الإخراج_d (0xFF) ؛ enable_interrupts (عالمي) ؛ بينما (1) {enable_interrupts (int_rda) ؛ إذا (strcmp (المخزن المؤقت ، cmp_) == 0) output_low (LED_RED) ؛ آخر output_high (LED_RED) ؛ }}
في البداية نقوم بتضمين مكتبة السلاسل التي سنكون مفيدة في عمليات السلسلة والتي في حالتنا هي عملية مقارنة السلسلة (strcmp). لذلك ، هدفنا في هذا الكود هو تشغيل الصمام المتصل بالرقم D0 إذا كانت القيمة المرسلة هي نفس القيمة المعطاة لدينا وهي "cmp_" تساوي "24".
بادئ ذي بدء ، نقوم بتمكين مقاطعة "rda" التي ستؤدي إلى مقاطعة عند إرسال البيانات.
ثانيًا ، دعنا ننظر داخل ISR (روتين خدمة المقاطعة) والذي يسمى "serial_comm Communication_interrupt". في الداخل ، نقوم أولاً بتعطيل علامة المقاطعة من أجل قراءة القيمة المستلمة والتسبب في مزيد من المقاطعة. بعد ذلك قرأنا السلسلة حرفًا بحرف حتى وصلنا إلى "\ 0". أثناء القراءة داخل السلسلة ، نكتب أيضًا كل حرف إلى المخزن المؤقت من أجل الحصول على سلسلة مستلمة.
في النهاية ، دخلنا مرة أخرى أثناء. نحن هنا نقارن بين سلسلة المخزن التي تم استلامها من السلسلة و cmp_ من أجل معرفة ما إذا كنا نحصل على السلسلة بشكل صحيح. إذا كانت متساوية ، فأنا أقوم بتشغيل المصباح ، وإلا أطفئ.
* في الكود ، قمت بالعكس لأن لوحي يعكس قيم دبوس منفذ D. في التعليمات البرمجية الخاصة بك قم بتغييرها إلى:
إذا (strcmp (المخزن المؤقت ، cmp_) == 0) output_high (LED_RED) ؛ وإلا output_low (LED_RED) ؛
أخيرًا ، قم بتجميعه وتحميله إلى MCU الخاص بك ثم قم بتشغيل الكود في Python. يجب أن ترى تشغيل الصمام.
الخطوة 5: الخاتمة
لقد انتهينا من مهمة واحدة بنجاح. آمل أن يكون مفيدًا لك. إذا كان لديك أي سؤال ، من فضلك لا تتردد في طرح:) حتى المشروع التالي.
موصى به:
Arduino to Node Communication: 4 خطوات
Arduino to Node Communication: هذا التوجيه مخصص فقط لعرض أساسي للغاية حول كيفية إرسال واستقبال البيانات عبر UART (تسلسلي) بين لوحين متوافقين مع Arduino
طويلة المدى ، 1.8 كيلومتر ، من Arduino إلى Arduino Wireless Communication مع HC-12: 6 خطوات (بالصور)
طويلة المدى ، 1.8 كيلومتر ، من Arduino إلى Arduino Wireless Communication مع HC-12: ستتعلم في هذه التعليمات كيفية التواصل بين Arduinos على مسافة طويلة تصل إلى 1.8 كيلومتر في الهواء الطلق. HC-12 هو منفذ تسلسلي لاسلكي وحدة اتصال مفيدة للغاية وقوية للغاية وسهلة الاستخدام. أولا سوف تتسرب
كيفية برمجة PIC MCU مع PICkit Programmer باستخدام لوحة توصيل: 3 خطوات
كيفية برمجة PIC MCU مع PICkit Programmer باستخدام Breadboard: لا تحتاج إلى أدوات باهظة الثمن ومتطورة للعب باستخدام متحكمات PIC (أو أي وحدات تحكم أخرى). كل ما تحتاجه هو لوحة توصيل حيث تختبر دائرتك وبرمجتك. بالطبع من الضروري وجود نوع من المبرمج و IDE. في هذه التعليمات
لوحة اكتشاف STM32F4 و Python USART Communication (STM32CubeMx): 5 خطوات
لوحة اكتشاف STM32F4 و Python USART Communication (STM32CubeMx): مرحبًا! سنحاول في هذا البرنامج التعليمي إنشاء اتصال USART بين STM32F4 ARM MCU و Python (يمكن استبداله بأي لغة أخرى). لذلك دعونا نبدأ:)
ESP8266 و Python Communication For & nbsp؛ Noobs: 6 خطوات
ESP8266 و Python Communication For & nbsp؛ Noobs: يسمح لك هذا الدليل بالحصول على أي بيانات من ESP8266 والتحكم فيها على Python بدون أوامر AT. بالنسبة للمبتدئين ، فإن معظم الأدلة حول استخدام ESP8266 صعبة ، لأنهم يريدون منك وميض "أوامر AT" "في الرقاقة ، وهي: إهدار غير ضروري