Мазмұны:

Python-GUI және Arduino қосылған серводрайвер тақтасы: 5 қадам
Python-GUI және Arduino қосылған серводрайвер тақтасы: 5 қадам

Бейне: Python-GUI және Arduino қосылған серводрайвер тақтасы: 5 қадам

Бейне: Python-GUI және Arduino қосылған серводрайвер тақтасы: 5 қадам
Бейне: Урок №11. Интеграция Arduino с ПК и базами данных. Beyond Robotics 2024, Шілде
Anonim
Python-GUI және Arduino қосылған серводрайвер тақтасы
Python-GUI және Arduino қосылған серводрайвер тақтасы

Ұшақтардың прототипін жасау немесе құрастыру кезінде сіз жиі жүретін жолды тексеруге немесе сервоприводты орташа күйге қоюға тура келетін мәселеге тап боласыз.

Егер сіз бүкіл RC-жүйесін немесе тестін жасамасаңыз, серваны қаншалықты итере аласыз немесе ортаңғы позиция қайда болса, онда бұл тақта сізге арналған! Бұл серводы белгіленген орындарға жылжытуға немесе артқа -артқа жүруге мүмкіндік береді.

Бұл таңқаларлық түрде жақсы жұмыс істейді, тіпті циклде бір позициядан екіншісіне жүгіретін 6 серво.

Сонымен қатар, Python-GUI мен Arduino арасындағы Serial көмегімен байланыс туралы білуге болатын жақсы жоба.

1 -қадам: Сізге не қажет …

Бұл жоба үшін сізге мыналар қажет:

Аппараттық құрал

  • Ардуино нано кабельмен. Мен клон қолдандым, ал Python коды клонның CH340 чипін күтеді
  • Прототип тақтасы. 7х5 см жеткілікті
  • Кейбір 2, 54 мм тақырыптар мен түйреуіштер
  • 1-6 сервос
  • Сервоға арналған қуат көзі (мен 4 аккумуляторлы батарея пакетін қолдандым)

Бағдарламалық қамтамасыз ету

  • Python 3:
  • CH340 чиптеріне арналған USB драйвері: CH340 драйверлері үшін драйверлерге арналған Google
  • Arduino IDE:

2 -қадам: тақтаны дәнекерлеу

Тақтаға дәнекерлеу
Тақтаға дәнекерлеу

Дәнекерлеу суреттегі Фритзингке сәйкес тікелей алға қарай жүреді. Серводы 3 түйреуішке оңай қосуға болатынына көз жеткізіңіз.

  • 3 істікшелі жолдар Arduino нано 3, 5, 6, 9, 10 және 11 цифрлық түйреуішіне бекітілген.
  • Қызыл сым Arduino 5V-істігіне бекітілген
  • Қара сым Arduino GND түйреуішіне қосылған
  • 3 істікшелі жолдардың астындағы түйреуіштер әдеттегі RC қабылдағыш қуат көзін қосуға арналған, сіз бұрандалы терминалдар, XT-Коннекторлары, JST немесе… немесе… сияқты қосқыштарды қалауыңызша қосуға болады.

Мен өз басым, Arduino -ны кірістіру үшін әйелдердің жоғарғы қатарларын ұнатамын, бірақ бұл сізге байланысты.

Есіңізде болсын, қысқартылған әйел тақырыптары тестілеу үшін Arduino 5V көзін пайдаланып серво беруге мүмкіндік беретін секіргіш болып табылады. Егер сіз оны шамадан тыс жүктесеңіз, Arduino қалпына келеді және қажетті қарқыннан айырылады. Оларды басқа қуат көзіне қоспас бұрын алып тастау керек.

3 -қадам: Arduino орнату

Arduino IDE орнатыңыз және бекітілген нобаймен Arduino нано жарқылын қосыңыз.

4 -қадам: Python орнату

Python орнату
Python орнату

Жүктелгеннен кейін Python 3 орнатыңыз. «PATH» айнымалысын жасау опциясын тексеріңіз.

Pip көмегімен тағы екі пакетті орнату қажет. Ол үшін «Windows» пернесін басып, «cmd» деп теріп, «enter» түймесін басыңыз. Пәрмен жолында келесі пәрмендерді теріңіз:

  • pip сериялық орнатыңыз
  • piip pyserial орнатыңыз
  • pip tkinter орнатыңыз

Көріп отырғаныңыздай, маған сериялық модульдер де керек, бұл ең тиімдісі емес, себебі сериялық серияны алмастыруы керек. Дегенмен, ол жұмыс істейді және мен енді үйрене бастадым;).

Python-сценарийді IDE-де ашыңыз, оны іске қоспаңыз немесе оны терминалдан тікелей іске қосыңыз.

Ашылмалы мәзірде сіз екі режимнің бірін таңдай аласыз: «Тікелей өту» және «Пинг-понг»:

  • Тікелей өту: Серво-позицияны микросекундтарда бірінші бағанға енгізіңіз және servo көрсетілген позицияға ауысуы үшін «Бастау» түймесін басыңыз.
  • Пинг -понг: екінші және үшінші бағанға төменгі шекараны және жоғарғы шекараны енгізіңіз. Бұл төменгі және жоғарғы позиция, олардың арасында серво артқа -артқа өтеді. «Пинг -понг уақыты» бағанында сервис жоғарғы немесе төменгі позицияға жеткенде күтетін уақытты миллисекундпен көрсетуге болады. «Бастау» түймесін басыңыз, сонда серво артқа -артқа қозғала бастайды, «Тоқтату» түймесін басыңыз, сонда серво тоқтайды.

5 -қадам: Сиқыр қайда болады

Ақырында, мен Python мен Arduino арасында сериялық байланысқа түскісі келетіндерге арналған кодтағы кейбір мәліметтерді атап өткім келеді.

Енді Python бағдарламасында не болады?

Ең алдымен, бағдарлама осы жолдағы COM-порттарына не қосылғанын тексереді және оны тізімге сақтайды:

self. COMPortsList = тізім (serial.tools.list_ports.comports ())

Содан кейін ол әйгілі CH340 чипін тапқанша, оны сақтап, содан кейін циклден кейін тізбекті байланыс орнатқанша тізім бойынша айналады. Назар аударыңыз, цикл бірінші CH340 табылғаннан кейін үзіледі.

for in in. COMPortsList: if «CH340» in p [1]: # Arduino Clone өзін іздейді. COMPort = p [0] үзіліс басқа: pass self. Ser = serial. Serial (self. COMPort, 57600)

Сериялық байланыс 57600 жылдамдықтағы COM-портымен орнатылады.

Ал Arduino коды не істейді? Ардуинода тек бір COM-порт болғандықтан, сериялық байланыс тек бір жолдан тұрады:

Serial.begin (57600);

Енді біз екі портты байланыс үшін пайдалана аламыз. Бұл жағдайда тек Python -дан Arduino -ға хабарламалар. Хабарлар мұнда Python -дан жіберіледі. Сериялық байланыс байттарды әдепкі бойынша жібереді. Бұл сонымен қатар деректерді жіберудің ең жылдам әдісі және мен білемін, әлі де кең таралған. Серво санының инттері (сондықтан Arduino қай серво жылжу керектігін біледі) және микросекундтардағы орын байтқа айналады.

Command = struct.pack ('> B', self. Place) # «self. Place» int айнымалысы байтқа айналады

self. Ser.write (Пәрмен) # Байтты сериялық порттық пәрменге жазу = int (self. ServoPos.get ()) // 10 # Кірісті өрістен оқу және int Command = struct.pack (' > B ', Command) # Int byt in self. Ser.write (Command) # Сериялық портта байтты жазу

Сондай -ақ, деректерді талдау уақытты қажет етеді (мысалы, төрт байт «1», «2», «3» және «0» төрт түрлі таңба ретінде емес, int 1230 ретінде интерпретацияланады) және мұны Arduino -да емес жасаған дұрыс.

Arduino жағында жіберілген ақпарат келесі түрде алынады:

if (Serial.available ()> 1) {// Егер сериялық деректер болса, онда цикл енгізіледі c = Serial.read (); // Бірінші байт (серво саны) Micros = Serial.read () айнымалысына сақталады; // Серваның позициясы мұнда сақталады Micros = Micros * 10; }

Ұсынылған: