Talaan ng mga Nilalaman:
- Hakbang 1: Ano ang Kailangan Mo …
- Hakbang 2: Paghihinang sa Lupon
- Hakbang 3: Pag-set up ng Arduino
- Hakbang 4: Pag-set up ng Python
- Hakbang 5: Kung saan Mangyayari ang Magic
Video: Servodriver-Board Na May Python-GUI at Arduino: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Kapag gumagawa ng prototyping o pagbuo ng mga modelo ng eroplano, madalas mong mahahanap ang problema, na kailangan mong suriin ang paglalakbay ng servo o itakda ang servos sa kalagitnaan ng posisyon.
Kung sakaling hindi mo sanay na buuin ang iyong buong RC-system o pagsubok, kung gaano kalayo ang maaari mong itulak ang servo o kung saan ang midposition, kung gayon ang board na ito ay para sa iyo! Pinapayagan kang ilipat ang servo sa tinukoy na mga posisyon o maglakbay tayo pabalik-balik.
Gumagawa ito ng nakakagulat na mabuti, kahit na may 6 na servos na karera mula sa isang posisyon patungo sa isa pa sa loop.
Gayundin, magandang proyekto ito upang malaman ang tungkol sa komunikasyon sa pagitan ng Python-GUI at Arduino gamit ang Serial.
Hakbang 1: Ano ang Kailangan Mo …
Para sa proyektong ito, kakailanganin mo ang sumusunod:
Hardware
- Arduino nano na may cable. Gumamit ako ng isang clone, at ang Python code ay talagang inaasahan ang isang CH340-chip ng isang clone
- Isang prototyping board. Tama na ang 7x5cm
- Ilang 2, 54mm na mga header at pin
- 1-6 servos
- Suplay ng kuryente para sa mga servos (Gumamit ako ng isang batterypack na may 4 na baterya)
Software
- Python 3:
- Isang USB-Driver para sa CH340-chips: google lang para sa mga driver para sa mga driver ng CH340
- Arduino IDE:
Hakbang 2: Paghihinang sa Lupon
Ang paghihinang ay talagang tuwid na pasulong ayon sa Fritzing sa larawan. Siguraduhin lamang, na maaari mong mai-hook up ang mga servos nang madali sa mga 3-pin-row.
- Ang 3-pin-row ay nakakabit sa digital pin 3, 5, 6, 9, 10 at 11 ng Arduino nano.
- Ang pulang kawad ay nakakabit sa 5V-pin ng Arduino
- Ang itim na kawad ay konektado sa GND-pin ng Arduino
- Ang pares ng mga pin sa ibaba ng 3-pin-row ay nilalayon upang maglakip ng isang tipikal na supply ng kuryente ng RC-receiver, maaari kang magdagdag ng mga konektor ayon sa gusto mo, tulad ng mga terminal ng pag-screw, XT-Connectors, JST o… o…
Sa personal, gusto ko ang mga hanay ng mga babaeng header upang ilagay ang Arduino, ngunit nasa sa iyo iyon.
Mangyaring tandaan, na ang mga nakaikling babaeng header ay isang lumulukso, na magbibigay sa iyo ng supply ng servo gamit ang 5V-source ng Arduino para sa mga layuning pagsubok. Kung sobra mo itong pinagmanahan, ire-reset at maluwag ng Arduino ang tamang bilis. DAPAT na silang alisin, bago mag-attach ng isa pang supply ng kuryente.
Hakbang 3: Pag-set up ng Arduino
I-install ang Arduino IDE at i-flash ang Arduino nano na may kalakip na sketch.
Hakbang 4: Pag-set up ng Python
I-install ang Python 3 pagkatapos i-download ito. Tiyaking suriin ang pagpipilian upang lumikha ng isang "PATH" -variable.
Kailangan mong mag-install ng dalawa pang mga pakete gamit ang pip. Para doon, pindutin ang "Windows" -key, i-type ang "cmd" at pindutin ang "enter". Sa prompt ng utos i-type ang mga sumusunod na utos:
- pip install serial
- i-install ang piip sa pyserial
- pip install tkinter
Tulad ng nakikita mo, kailangan ko ng mga module na serial pati na rin ang pyserial, na malamang na hindi ang pinaka mahusay, yamang dapat palitan ng pyserial ang serial. Gayunpaman ito ay gumagana at nagsisimula pa lamang akong malaman;).
Buksan ang Python-Script sa IDE at patakbuhin ito, o patakbuhin ito diretso mula sa terminal.
Sa drop-down na menu, maaari kang pumili sa pagitan ng dalawang mga mode, "Go Straight" at "Ping Pong":
- Pumunta diretso: Magpasok ng isang Servo-Position sa mga microsecond sa unang haligi at pindutin ang "Start" upang ilipat ang servo sa tinukoy na posisyon.
- Ping Pong: Magpasok ng isang mas mababang hangganan at isang itaas na hangganan sa pangalawa at pangatlong haligi. Iyon ang mas mababa at itaas na posisyon, sa pagitan ng kung saan ang servo ay babalik-balik. Sa haligi na "Ping Pong Time" maaari mong tukuyin ang isang oras sa milliseconds, na maghihintay ang servo kapag naabot nito ang itaas o ang mas mababang posisyon. Pindutin ang "Start" at ang servo ay magsisimulang ilipat pabalik-balik, pindutin ang "Itigil" at ang servo ay titigil.
Hakbang 5: Kung saan Mangyayari ang Magic
Huling ngunit hindi pa huli, nais kong ituro ang ilan sa mga detalye sa code para sa mga, na nais na makakuha ng isang maliit na serial komunikasyon sa pagitan ng Python at Arduino.
Ngayon, ano ang nangyayari sa programang Python?
Una sa lahat, susuriin ng programm, kung ano ang nakakabit sa mga COM-port sa linyang ito at nai-save ito sa isang listahan:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Pagkatapos ay mag-loop ito sa listahan hanggang sa makahanap ito ng isang kilalang-kilala CH340-chip, nai-save ito at pagkatapos ay nagtatatag ng isang serial connection pagkatapos ng for-loop. Tandaan, na ang for-loop ay masisira sa sandaling matagpuan ang unang CH340.
para sa p sa sarili. COMPortsList: kung "CH340" sa p [1]: # Naghahanap ng sarili na Arduino Clone. COMPort = p [0] masira pa: ipasa ang sarili. Ser = serial. Serial (self. COMPort, 57600)
Ang serial connection ay itinatag sa COM-port na may baudrate na 57600.
At ano ang ginagawa ng Arduino code? Kaya, dahil ang Arduino ay may isang COM-Port lamang, ang serial na koneksyon ay isang linya lamang:
Serial.begin (57600);
Ngayon, maaari naming gamitin ang parehong mga port upang makipag-usap. Sa kasong ito, ang mga mensahe lamang mula sa Python hanggang sa Arduino. Ipinadala ang mga mensahe dito mula sa Python. Ang serial na koneksyon ay nagpapadala ng mga byte bilang isang default. Iyon din ang pinakamabilis na paraan ng pagpapadala ng data at sa pagkakaalam ko ay medyo kalat din. Kaya't ang mga ints para sa bilang ng servo (kaya alam ng Arduino kung aling servo ang lilipat) at ang posisyon sa microseconds ay ginawang isang byte.
Command = struct.pack ('> B', self. Place) # Ang int-variable na "self. Place" ay ginawang isang byte
self. Ser.write (Command) # Pagsusulat ng byte sa Serial-Port Command = int (self. ServoPos.get ()) // 10 # Pagbasa ng Input mula sa patlang at lumiko sa int Command = struct.pack (' > B ', Command) # Pagbukas ng int sa isang byte na sarili. Ser.write (Command) # Pagsusulat ng byte sa Serial-Port
Gayundin, ang pag-parse ng data ay tumatagal ng oras (halimbawa ng pagbibigay kahulugan ng apat na byte na "1", "2", "3" at "0" bilang int 1230, hindi bilang apat na magkakaibang mga char) at mas mahusay na gawin iyon hindi sa Arduino.
Sa panig ng Arduino, ang impormasyong ipinadala ay kukuha ng sumusunod:
kung (Serial.available ()> 1) {// Kung magagamit ang serial data, pagkatapos ay ipinasok ang loop c = Serial.read (); // Ang unang byte (bilang ng servo) ay nai-save sa isang variable na mikropono = Serial.read (); // Ang posisyon ng servo ay nai-save dito mikroso = mikros * 10; }
Inirerekumendang:
Ang Laser Pointer na naka-mount sa spectacle para sa Mga Taong May Mga Kapansanan sa Locomotor: 9 Mga Hakbang (na may Mga Larawan)
Ang Laser Pointer na naka-mount sa spectacle para sa Mga Taong May Kapansanan sa Locomotor: Ang mga taong may malubhang mga kapansanan sa lokomotor tulad ng mga sanhi ng cerebral palsy ay madalas na may mga kumplikadong pangangailangan sa komunikasyon. Maaaring kailanganin silang gumamit ng mga board na may alpabeto o karaniwang ginagamit na mga salitang nakalimbag sa kanila upang makatulong sa komunikasyon. Gayunpaman, marami
Pasadyang Arduino upang Panatilihing MAAARI ang Mga Pindutan sa Mga Manibela na May Bagong Car Stereo: 9 Mga Hakbang (na may Mga Larawan)
Pasadyang Arduino upang Panatilihin ang CAN Steering Wheel Buttons Sa Bagong Car Stereo: Napagpasyahan kong palitan ang orihinal na stereo ng kotse sa aking Volvo V70 -02 ng isang bagong stereo upang masisiyahan ako sa mga bagay tulad ng mp3, bluetooth at handsfree. Ang aking kotse ay may ilang mga kontrol sa manibela para sa stereo na nais kong magamit pa rin.
Album ng Mga Litrato ng Mga Bata Na May Komersyal ng Flashcard: 8 Mga Hakbang (na may Mga Larawan)
Kids Photo Album With Flashcard Commercial: Ipinapakita ng mga itinuturo na ito kung paano gumawa ng isang awtomatikong pag-update ng photo album ng WiFi bilang karagdagan sa mga tampok sa komersyal na flash card
Mga Lightsaber na Nakabatay sa Arduino Na May Magaang at Mga Epekto ng Tunog: 14 Mga Hakbang (na may Mga Larawan)
Batay sa Arduino Lightsaber Na May Mga Magaan at Tunog na Mga Epekto: Kamusta jedi! Ang itinuturo na ito ay tungkol sa paggawa ng isang lightsaber, na ang hitsura, tunog at pagganap tulad ng isa sa pelikula! Ang pagkakaiba lamang - hindi ito maaaring mag-cut metal: (Ang aparatong ito ay batay sa platform ng Arduino, at binibigyan ko ito ng maraming mga tampok at pag-andar, ito
Mga Tagapagsalita ng Vintage IPod (na may mga LED!): 7 Mga Hakbang (na may Mga Larawan)
Mga Tagapagsalita ng Vintage IPod (na may mga LED!): Gamit ang tamang mga supply, madaling gumawa ng iyong sariling de-kalidad na iPod o mp3 player dock. Gamit ang ilang mga scrap ng circuit board, mga sample na nagsasalita, at kahoy na aking inilatag sa paligid ng shop, nagawa ko ang isang pares ng disenteng tunog at maayos na hitsura