Cov txheej txheem:

Servodriver-Board Nrog Python-GUI thiab Arduino: 5 Kauj Ruam
Servodriver-Board Nrog Python-GUI thiab Arduino: 5 Kauj Ruam

Video: Servodriver-Board Nrog Python-GUI thiab Arduino: 5 Kauj Ruam

Video: Servodriver-Board Nrog Python-GUI thiab Arduino: 5 Kauj Ruam
Video: Simply Servos Board for Raspberry Pi Pico 2024, Lub Xya hli ntuj
Anonim
Servodriver-Board Nrog Python-GUI thiab Arduino
Servodriver-Board Nrog Python-GUI thiab Arduino

Thaum ua qauv lossis tsim qauv dav hlau, koj feem ntau hla qhov teeb meem, uas koj yuav tsum tau tshuaj xyuas kev mus los lossis teeb tsa servos mus rau txoj haujlwm nruab nrab.

Nyob rau hauv rooj plaub koj tsis thim kev txhim kho koj li RC-system lossis kev sim, nyob deb npaum li cas koj tuaj yeem thawb lub servo lossis qhov chaw nruab nrab yog, tom qab ntawv no yog rau koj! Nws tso cai rau koj txav cov servo mus rau txoj haujlwm tshwj xeeb lossis cia peb rov qab mus los.

Nws ua haujlwm zoo kawg li, txawm tias muaj 6 tus neeg ua haujlwm sib tw los ntawm ib txoj haujlwm mus rau lwm qhov hauv lub voj.

Tsis tas li, nws yog txoj haujlwm zoo los kawm txog kev sib txuas lus ntawm Python-GUI thiab Arduino siv Serial.

Kauj Ruam 1: Yam Koj Xav Tau…

Rau qhov haujlwm no, koj yuav xav tau cov hauv qab no:

Kho vajtse

  • Arduino nano nrog cable. Kuv siv clone, thiab Python code yeej xav tau CH340-nti ntawm clone
  • Pawg thawj coj saib xyuas. 7x5cm yog txaus
  • Qee qhov 2, 54mm lub taub hau thiab tus pin
  • 1-6 servos
  • Fais fab mov rau servos (Kuv siv lub roj teeb nrog 4 lub roj teeb)

Software

  • Nab hab sej 3:
  • USB-Tsav Tsheb rau CH340-chips: Tsuas yog google rau cov tsav tsheb rau CH340 tsav tsheb
  • Arduino IDE:

Kauj ruam 2: Soldering Board

Soldering Pawg Thawj Coj
Soldering Pawg Thawj Coj

Kev siv tshuaj yaj yeeb yog qhov ncaj ncaj rau pem hauv ntej raws li Fritzing ntawm daim duab. Tsuas yog ua kom ntseeg tau, tias koj tuaj yeem sib txuas cov servos yooj yim rau 3-pin-kab.

  • 3-tus lej-kab tau txuas rau tus lej digital 3, 5, 6, 9, 10 thiab 11 ntawm Arduino nano.
  • Cov xaim liab tau txuas rau 5V-tus pin ntawm Arduino
  • Cov xaim dub txuas nrog GND-tus pin ntawm Arduino
  • Cov khub ntawm tus pin hauv qab 3-tus pin-kab txhais tau tias yuav txuas ib qho RC-tau txais lub zog siv hluav taws xob, koj tuaj yeem ntxiv cov khoom sib txuas raws li koj nyiam, zoo li cov ntsia hlau txuas, XT-Txuas, JST lossis … lossis …

Tus kheej, Kuv nyiam kab ntawm poj niam lub taub hau los tso Arduino rau hauv, tab sis qhov ntawd yog ntawm koj.

Thov nco ntsoov, tias cov poj niam luv luv lub taub hau yog jumper, uas tso cai rau koj muab cov servo siv 5V-qhov chaw ntawm Arduino rau kev ntsuas lub hom phiaj. Yog tias koj lim nws ntau dhau, Arduino yuav rov pib dua thiab xoob raws txoj cai. Lawv yuav tsum raug tshem tawm, ua ntej txuas lwm lub hwj chim.

Kauj Ruam 3: Teeb tsa Arduino

Nruab Arduino IDE thiab nyem Arduino nano nrog daim duab txuas nrog.

Kauj Ruam 4: Teeb tsa Python

Teeb tsa Python
Teeb tsa Python

Nruab Nab hab sej 3 tom qab rub tawm nws. Nco ntsoov xyuas qhov kev xaiv los tsim "PATH" -variable.

Koj yuav tsum teeb tsa ob pob ntxiv siv pip. Rau qhov ntawd, nias "Windows" -key, ntaus "cmd" thiab ntaus "enter". Hauv qhov hais kom ua sai sai sau cov lus txib hauv qab no:

  • pib install serial
  • piip nruab pyserial
  • pip nruab tkinter

Raws li koj tuaj yeem pom, Kuv xav tau cov qauv txheej txheem ntxiv rau pyserial, uas feem ntau yuav tsis yog qhov ua tau zoo tshaj plaws, txij li pyserial yuav tsum hloov pauv. Txawm li cas los nws ua haujlwm thiab kuv nyuam qhuav pib kawm;).

Qhib Python-Script hauv IDE und khiav nws, lossis khiav ncaj qha los ntawm lub davhlau ya nyob twg.

Hauv cov ntawv qhia zaub mov nco, koj tuaj yeem xaiv ntawm ob hom, "Mus Ncaj" thiab "Ping Pong":

  • Mus Ncaj: Nkag mus rau Servo-Position hauv microseconds hauv thawj kab ntawv thiab ntaus "Pib" kom cov servo txav mus rau txoj haujlwm tshwj xeeb.
  • Ping Pong: Nkag mus rau tus ciam qis thiab thaj tsam sab saud hauv kab thib ob thiab thib peb. Qhov ntawd yog txoj haujlwm qis thiab sab saud, nruab nrab ntawm qhov servo yuav rov qab mus. Hauv kab ntawv "Ping Pong Time" koj tuaj yeem hais qhia lub sijhawm nyob rau hauv milliseconds, qhov kev pabcuam yuav tos thaum nws mus txog saum lossis qis dua. Ntaus "Pib" thiab servo yuav pib txav rov qab los, tsoo "Nres" thiab servo yuav tsum nres.

Kauj Ruam 5: Qhov twg Khawv koob tshwm sim

Qhov kawg tab sis tsis tsawg kawg, Kuv xav taw qhia qee yam ntawm cov ntsiab lus ntxaws rau cov cai, uas xav kom nkag mus rau hauv me ntsis ntawm kev sib txuas lus ntawm Python thiab Arduino.

Tam sim no, muaj dab tsi tshwm sim hauv Python programm?

Ua ntej tshaj plaws, cov phiaj xwm tshuaj xyuas, dab tsi txuas rau COM-cov chaw nres nkoj hauv kab no thiab khaws nws rau hauv cov npe:

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

Tom qab ntawd nws loops los ntawm cov npe kom txog thaum nws pom muaj npe tsis zoo CH340-nti, txuag nws thiab tom qab ntawd teeb tsa kev sib txuas txuas ntxiv tom qab rau-lub voj. Nco tseg, tias rau-lub voj so sai li sai tau thaum pom thawj CH340.

rau p hauv tus kheej. COMPortsList: yog "CH340" hauv p [1]: # Nrhiav rau Arduino Clone tus kheej. COMPort = p [0] so lwm tus: hla tus kheej. Ser = serial. Serial (self. COMPort, 57600)

Qhov txuas txuas tau tsim nrog COM-chaw nres nkoj nrog baudrate ntawm 57600.

Thiab Arduino code ua dab tsi? Zoo, txij li Arduino tsuas muaj ib qho COM-Port, qhov txuas txuas tsuas yog ib kab xwb:

Serial.begin (57600);

Tam sim no, peb tuaj yeem siv ob qho chaw nres nkoj los sib txuas lus. Hauv qhov xwm txheej no, tsuas yog cov lus los ntawm Python mus rau Arduino. Cov lus xa los ntawm Python. Qhov txuas txuas txuas xa tawm bytes raws li lub neej ntawd. Qhov ntawd tseem yog txoj hauv kev nrawm tshaj plaws ntawm kev xa cov ntaub ntawv thiab kom deb li kuv paub kuj tseem zoo nkauj thoob plaws. Yog li cov ints rau tus lej ntawm servo (yog li Arduino paub tias servo txav mus rau qhov twg) thiab txoj haujlwm hauv microseconds tau hloov pauv mus rau hauv byte.

Hais kom = struct.pack ('> B', tus kheej. Place) # Qhov sib txawv ntawm tus kheej "tus kheej. Place" tau hloov mus ua ib qho byte

self. Ser.write (Command) # Sau tus lej byte ntawm Serial-Port Command = int (tus kheej. ServoPos.get ()) // 10 # Nyeem Ntawv Tawm tswv yim los ntawm daim teb thiab tig rau hauv Command = struct.pack (' > B ', Hais kom ua) # Hloov qhov int hauv tus lej byte tus kheej. Ser.write (Hais kom ua) # Sau tus lej byte ntawm Serial-Port

Tsis tas li, kev txheeb xyuas cov ntaub ntawv siv sijhawm (piv txwv li txhais plaub bytes "1", "2", "3" thiab "0" raws li int 1230, tsis yog plaub yam sib txawv) thiab nws zoo dua los ua qhov ntawd tsis yog ntawm Arduino.

Ntawm Arduino-sab, cov ntaub ntawv xa tuaj raug khaws raws li hauv qab no:

yog (Serial.available ()> 1) {// Yog tias muaj cov ntaub ntawv muaj nyob, tom qab ntawd lub voj nkag c = Serial.read (); // Thawj byte (tus naj npawb ntawm servo) raug cawm mus rau qhov sib txawv Micros = Serial.read (); // Txoj haujlwm ntawm servo tau txais kev cawmdim ntawm no Micros = Micros * 10; }

Pom zoo: