Mündəricat:

Python-GUI və Arduino ilə Servodriver-Board: 5 Addım
Python-GUI və Arduino ilə Servodriver-Board: 5 Addım

Video: Python-GUI və Arduino ilə Servodriver-Board: 5 Addım

Video: Python-GUI və Arduino ilə Servodriver-Board: 5 Addım
Video: Управление 16 серводвигателями с использованием модуля PCA9685 и Arduino V2 2024, Iyul
Anonim
Python-GUI və Arduino ilə Servodriver Board
Python-GUI və Arduino ilə Servodriver Board

Prototip hazırlayarkən və ya model təyyarələr hazırlayarkən, tez -tez servo səyahətini yoxlamaq və ya servoları orta vəziyyətə qoymaq problemi ilə qarşılaşırsınız.

Bütün RC sisteminizi və ya testinizi qurmaq istəmirsinizsə, servoyu nə qədər itələyə bilərsiniz və ya orta mövqeyin olduğu yerdə, bu lövhə sizin üçündür! Bu servo müəyyən mövqelərə hərəkət və ya geri və geri səyahət imkan verir.

Döngədə bir mövqedən digərinə irəliləyən 6 servo ilə belə təəccüblü dərəcədə yaxşı işləyir.

Python-GUI ilə Arduino arasında Serial istifadə edərək ünsiyyət qurmağı öyrənmək də gözəl bir layihədir.

Addım 1: Ehtiyacınız olan…

Bu layihə üçün aşağıdakılara ehtiyacınız olacaq:

Avadanlıq

  • Arduino nano kabel ilə. Bir klon istifadə etdim və Python kodu əslində bir klonun CH340 çipini gözləyir
  • Prototip lövhəsi. 7x5 sm kifayətdir
  • Təxminən 2, 54 mm başlıqlar və sancaqlar
  • 1-6 servo
  • Servo üçün enerji təchizatı (4 batareyalı batterpack istifadə etdim)

Proqram təminatı

  • Python 3:
  • CH340 çipləri üçün USB Sürücü: CH340 sürücüləri üçün sürücülər üçün yalnız google
  • Arduino IDE:

Addım 2: Lövhənin lehimlənməsi

Lövhənin lehimlənməsi
Lövhənin lehimlənməsi

Lehimləmə, şəkildəki Fritzingə görə əslində düz irəlidir. Sadəcə servoları 3 pinli satırlara asanlıqla bağlaya biləcəyinizə əmin olun.

  • 3 pinli satır, Arduino nanonun rəqəmsal pin 3, 5, 6, 9, 10 və 11-ə yapışdırılır.
  • Qırmızı tel Arduinonun 5V-pininə bərkidilir
  • Qara tel Arduinonun GND pininə qoşulur
  • 3 pinli satırların altındakı cüt pin, tipik bir RC qəbuledici enerji təchizatı bağlamaq üçün nəzərdə tutulmuşdur, vidalanan terminallar, XT-Konnektorlar, JST və ya… və ya…

Şəxsən mən Arduino -nu yerləşdirmək üçün bir sıra qadın başlıqları sevirəm, amma bu sizə bağlıdır.

Diqqət yetirin ki, qısaldılmış qadın başlıqlar test məqsədləri üçün Arduinonun 5V mənbəyindən istifadə edərək servo təmin etməyə imkan verən bir tullanandır. Çox gərginləşdirsəniz, Arduino düzgün tempi sıfırlayacaq və itirəcək. Başqa bir enerji təchizatı bağlamadan əvvəl çıxarılmalıdır.

Addım 3: Arduino qurmaq

Arduino IDE -ni quraşdırın və əlavə edilmiş eskizlə Arduino nanosunu yandırın.

Addım 4: Python qurmaq

Python qurmaq
Python qurmaq

Yüklədikdən sonra Python 3 qurun. Bir "PATH" dəyişən yaratmaq seçimini yoxladığınızdan əmin olun.

Pip istifadə edərək daha iki paket qurmalısınız. Bunun üçün "Windows" düyməsini basın, "cmd" yazın və "enter" düyməsini basın. Əmr əmrinə aşağıdakı əmrləri yazın:

  • pip quraşdırma seriyası
  • piip pyserial quraşdırın
  • pip tkinter quraşdırın

Gördüyünüz kimi, seriyalı modullara ehtiyacım var və çox güman ki, ən səmərəli deyil, çünki pyserial serialı əvəz etməlidir. Buna baxmayaraq işləyir və öyrənməyə yeni başlayıram;).

Python-Script-i IDE-də açın və işə salın və ya birbaşa terminaldan işləyin.

Açılan menyuda "Düz Get" və "Ping Pong" iki rejim arasında seçim edə bilərsiniz:

  • Düz gedin: İlk sütuna mikrosaniyələrdə bir Servo-Mövqe daxil edin və servonun göstərilən mövqeyə keçməsini təmin etmək üçün "Başlat" düyməsini basın.
  • Ping Pong: İkinci və üçüncü sütunda aşağı və yuxarı sərhəd daxil edin. Bunlar servonun geri -geri gedəcəyi aşağı və yuxarı mövqedir. "Ping Pong Time" sütununda, servonun yuxarı və ya aşağı mövqeyə çatdıqda gözləyəcəyi bir saatı milisaniyələrlə göstərə bilərsiniz. "Başlat" düyməsini vurun və servo geri və irəli hərəkət etməyə başlayacaq, "Dur" düyməsini basın və servo dayanacaq.

Addım 5: Sehrin Harada Olduğu

Son olaraq, Python və Arduino arasında bir az ardıcıl ünsiyyət qurmaq istəyənlər üçün koddakı bəzi detalları qeyd etmək istəyirəm.

İndi Python proqramında nə baş verir?

Hər şeydən əvvəl, proqram bu sətirdəki COM portlarına nə əlavə olunduğunu yoxlayır və siyahıya saxlayır:

self. COMPortsList = siyahı (serial.tools.list_ports.comports ())

Daha sonra bədnam bir CH340 çipi tapana qədər siyahıdan keçir, onu saxlayır və sonra for-loopdan sonra serial əlaqəsi qurur. Qeyd edək ki, ilk CH340 tapılan kimi for-loop pozulur.

p in self. COMPortsList: əgər p [1] -də "CH340" varsa: # Arduino Clone self axtarıram. COMPort = p [0] fasilə başqa: self. Ser = serial. Serial keçir (self. COMPort, 57600)

Seriya bağlantısı 57600 baud dərəcəsi olan COM portu ilə qurulur.

Və Arduino kodu nə edir? Yaxşı, Arduinonun yalnız bir COM portu olduğu üçün serial bağlantısı yalnız bir xəttdir:

Serial.begin (57600);

İndi ünsiyyət qurmaq üçün hər iki limanı istifadə edə bilərik. Bu vəziyyətdə, yalnız Python -dan Arduino -ya mesajlar. Mesajlar bura Python -dan göndərilir. Serial əlaqə baytları standart olaraq ötürür. Bu da məlumat göndərməyin ən sürətli yoludur və bildiyimə görə hələ də olduqca geniş yayılmışdır. Beləliklə, servo sayına görə ints (Arduino hansı servonun hərəkət edəcəyini bilir) və mikrosaniyələrdəki mövqe bir bayta çevrilir.

Command = struct.pack ('> B', self. Place) # int-dəyişən "self. Place" bir bayta çevrilir

self. Ser.write (Command) # Baytın Serial-Port Command-a yazılması = int (self. ServoPos.get ()) // 10 # Sahədən Girişin oxunması və int Command = struct.pack (' > B ', Əmr) # int-ni baytda çevir. Ser.write (Command) # Serial-Portda bayt yazmaq

Ayrıca, məlumatların təhlili vaxt aparır (məsələn, "1", "2", "3" və "0" ın dörd fərqli simvol kimi deyil, int 1230 kimi şərh edilməsi) və bunu Arduinoda etməmək daha yaxşıdır.

Arduino tərəfində göndərilən məlumatlar aşağıdakı kimi alınır:

if (Serial.available ()> 1) {// Serial məlumatlar varsa, o zaman loop daxil edilir c = Serial.read (); // İlk bayt (servo sayı) Micros = Serial.read () dəyişəninə qeyd olunur; // Servo mövqeyi burada saxlanılır Micros = Micros * 10; }

Tövsiyə: