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

Servodriver-Board مع Python-GUI و Arduino: 5 خطوات
Servodriver-Board مع Python-GUI و Arduino: 5 خطوات

فيديو: Servodriver-Board مع Python-GUI و Arduino: 5 خطوات

فيديو: Servodriver-Board مع Python-GUI و Arduino: 5 خطوات
فيديو: Driving a Servo-motor from a #Python🐍Tkinter GUI via pyFirmata + #Arduino + #Firmata protocol 2024, شهر نوفمبر
Anonim
Servodriver-Board مع Python-GUI و Arduino
Servodriver-Board مع Python-GUI و Arduino

عند القيام بنماذج أولية أو بناء طائرات نموذجية ، غالبًا ما تصادف المشكلة ، حيث يتعين عليك التحقق من السفر المؤازر أو ضبط الماكينات على الوضع المتوسط.

في حال لم تكن ترغب في بناء نظام RC بالكامل أو الاختبار ، إلى أي مدى يمكنك دفع المؤازرة أو حيث يكون الوسط ، فإن هذه اللوحة مناسبة لك! يسمح لك بنقل المؤازرة إلى المواضع المحددة أو دعنا نسافر ذهابًا وإيابًا.

إنه يعمل بشكل جيد بشكل مدهش ، حتى مع وجود 6 أجهزة تتسابق من موقع إلى آخر في الحلقة.

أيضًا ، إنه مشروع لطيف للتعرف على الاتصال بين Python-GUI و Arduino باستخدام Serial.

الخطوة 1: ما تحتاجه …

بالنسبة لهذا المشروع ، سوف تحتاج إلى ما يلي:

المعدات

  • اردوينو نانو مع كابل. لقد استخدمت استنساخًا ، وتتوقع شفرة Python بالفعل شريحة CH340 من استنساخ
  • لوحة النماذج الأولية. 7x5 سم يكفي
  • حوالي 2 ، 54 مم من الرؤوس والمسامير
  • 1-6 الماكينات
  • مزود الطاقة لأجهزة الماكينة (لقد استخدمت حزمة بطاريات مع 4 بطاريات)

برمجة

  • بايثون 3:
  • برنامج تشغيل USB لرقائق CH340: ابحث فقط عن برامج تشغيل برامج تشغيل CH340 على google
  • Arduino IDE:

الخطوة 2: لحام اللوح

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

يتم اللحام في الواقع بشكل مستقيم للأمام وفقًا لـ Fritzing على الصورة. فقط تأكد من أنه يمكنك توصيل الماكينات بسهولة بالصفوف ذات الثلاثة أسنان.

  • يتم توصيل الصفوف المكونة من 3 أسنان بالدبوس الرقمي 3 و 5 و 6 و 9 و 10 و 11 من Arduino nano.
  • السلك الأحمر متصل بدبوس 5 فولت في Arduino
  • السلك الأسود متصل بدبوس GND في Arduino
  • يهدف زوج المسامير الموجود أسفل الصفوف ذات الثلاثة سنون إلى توصيل مصدر طاقة نموذجي لمستقبل RC ، ويمكنك إضافة موصلات كما تريد ، مثل أطراف البراغي أو موصلات XT أو JST أو … أو …

أنا شخصياً أحب صفوفاً من رؤوس النساء لوضع Arduino فيها ، لكن الأمر متروك لك.

يرجى ملاحظة أن الرؤوس الأنثوية المختصرة عبارة عن وصلة مرور ، تتيح لك توفير المؤازرة باستخدام مصدر 5V من Arduino لأغراض الاختبار. إذا قمت بإجهادها كثيرًا ، فسيتم إعادة تعيين Arduino وفقدان السرعة الصحيحة. يجب إزالتها قبل توصيل مصدر طاقة آخر.

الخطوة 3: إعداد Arduino

قم بتثبيت Arduino IDE وفلاش Arduino nano بالرسم المرفق.

الخطوة 4: إعداد بايثون

إعداد بايثون
إعداد بايثون

قم بتثبيت Python 3 بعد تنزيله. تأكد من تحديد الخيار لإنشاء متغير "PATH".

تحتاج إلى تثبيت حزمتين إضافيتين باستخدام النقطة. لذلك ، اضغط على مفتاح "Windows" ، واكتب "cmd" واضغط على "Enter". في موجه الأوامر ، اكتب الأوامر التالية:

  • تسلسل تثبيت نقطة
  • piip تثبيت pyserial
  • نقطة تثبيت tkinter

كما ترون ، أحتاج إلى الوحدات التسلسلية وكذلك pyserial ، والتي على الأرجح ليست الأكثر كفاءة ، لأن pyserial يجب أن يحل محل المسلسل. ومع ذلك ، فهو يعمل وأنا بدأت للتو في التعلم ؛).

افتح Python-Script في IDE وقم بتشغيله ، أو قم بتشغيله مباشرة من الجهاز.

في القائمة المنسدلة ، يمكنك الاختيار بين وضعين ، "Go Straight" و "Ping Pong":

  • الذهاب مباشرة: أدخل موضع مؤازر بالميكروثانية في العمود الأول واضغط على "ابدأ" لجعل المؤازرة تتحرك إلى الموضع المحدد.
  • Ping Pong: أدخل حدًا أدنى وحدًا أعلى في العمود الثاني والثالث. هذا هو الموضع السفلي والعلوي ، حيث ستعود المؤازرة جيئة وذهابا. في العمود "Ping Pong Time" ، يمكنك تحديد وقت بالمللي ثانية ، حيث سينتظر المؤازر عندما يصل إلى الموضع العلوي أو السفلي. اضغط على "ابدأ" وستبدأ المؤازرة في التحرك ذهاباً وإياباً ، واضغط على "إيقاف" وستتوقف المؤازرة.

الخطوة 5: أين يحدث السحر

أخيرًا وليس آخرًا ، أود أن أشير إلى بعض التفاصيل الموجودة في الكود لأولئك الذين يرغبون في الدخول في القليل من الاتصالات التسلسلية بين Python و Arduino.

الآن ، ماذا يحدث في برنامج بايثون؟

بادئ ذي بدء ، يقوم البرنامج بفحص ما يتم إرفاقه بمنافذ COM في هذا السطر وحفظه في قائمة:

self. COMPortsList = list (serial.tools.list_ports.comports ())

ثم يتنقل عبر القائمة حتى يعثر على شريحة CH340 سيئة السمعة ، ويحفظها ثم ينشئ اتصالاً تسلسليًا بعد الحلقة. لاحظ أن حلقة for-loop تنكسر بمجرد العثور على CH340 الأول.

لـ p في self. COMPortsList: إذا كان "CH340" في p [1]: # البحث عن Arduino Clone self. COMPort = p [0] فاصل آخر: pass self. Ser = serial. Serial (self. COMPort، 57600)

تم إنشاء الاتصال التسلسلي مع منفذ COM مع معدل باود 57600.

وماذا يفعل كود اردوينو؟ حسنًا ، نظرًا لأن Arduino يحتوي على منفذ COM واحد فقط ، فإن الاتصال التسلسلي عبارة عن سطر واحد فقط:

Serial.begin (57600) ؛

الآن ، يمكننا استخدام كلا المنفذين للتواصل. في هذه الحالة بالذات ، الرسائل فقط من Python إلى Arduino. يتم إرسال الرسائل هنا من Python. ينقل الاتصال التسلسلي البايت كإعداد افتراضي. هذه أيضًا أسرع طريقة لإرسال البيانات وما زالت على نطاق واسع على حد علمي. لذا فإن ints لرقم المؤازرة (بحيث يعرف Arduino أي المؤازرة يتحرك) والموضع بالميكروثانية يتم تحويلهما إلى بايت.

الأمر = Struct.pack ('> B'، self. Place) # تم تحويل "self. Place" int-variable إلى بايت

self. Ser.write (الأمر) # كتابة البايت في أمر المنفذ التسلسلي = int (self. ServoPos.get ()) // 10 # قراءة الإدخال من الحقل وتشغيل الأمر int = Struct.pack (' > B '، Command) # تحويل int في بايت self. Ser.write (الأمر) # كتابة البايت على المنفذ التسلسلي

أيضًا ، يستغرق تحليل البيانات وقتًا (على سبيل المثال تفسير أربعة بايت "1" و "2" و "3" و "0" على أنها int 1230 ، وليس كأربعة أحرف مختلفة) ومن الأفضل القيام بذلك ليس على Arduino.

على جانب Arduino ، يتم التقاط المعلومات المرسلة على النحو التالي:

إذا (Serial.available ()> 1) {// إذا كانت البيانات التسلسلية متاحة ، فسيتم إدخال الحلقة c = Serial.read () ؛ // يتم حفظ البايت الأول (عدد المؤازرة) في متغير Micros = Serial.read () ؛ // يتم حفظ موضع المؤازرة هنا Micros = Micros * 10 ؛ }

موصى به: