Sisällysluettelo:

Servodriver-kortti Python-GUI: lla ja Arduinolla: 5 vaihetta
Servodriver-kortti Python-GUI: lla ja Arduinolla: 5 vaihetta

Video: Servodriver-kortti Python-GUI: lla ja Arduinolla: 5 vaihetta

Video: Servodriver-kortti Python-GUI: lla ja Arduinolla: 5 vaihetta
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, Marraskuu
Anonim
Servodriver-kortti, jossa Python-GUI ja Arduino
Servodriver-kortti, jossa Python-GUI ja Arduino

Kun teet prototyyppejä tai rakennat mallilentokoneita, törmäät usein ongelmaan, että sinun on tarkistettava servomatka tai asetettava servot keskiasentoon.

Jos et halua rakentaa koko RC-järjestelmääsi tai testata, kuinka pitkälle voit työntää servoa tai missä keskiasento on, tämä levy on sinua varten! Sen avulla voit siirtää servon tiettyihin asentoihin tai matkustaa edestakaisin.

Se toimii yllättävän hyvin jopa 6 servolla, jotka kilpailevat silmukan paikasta toiseen.

Lisäksi se on mukava projekti oppia Python-GUI: n ja Arduinon välisestä viestinnästä Serialin avulla.

Vaihe 1: Mitä tarvitset…

Tätä projektia varten tarvitset seuraavat:

Laitteisto

  • Arduino nano kaapelilla. Käytin kloonia, ja Python-koodi todella odottaa kloonin CH340-sirua
  • Prototyyppitaulu. 7x5cm riittää
  • Noin 2, 54 mm otsat ja nastat
  • 1-6 servoa
  • Servojen virtalähde (käytin 4 paristoa sisältävää akkua)

Ohjelmisto

  • Python 3:
  • USB-ohjain CH340-siruille: Googlen avulla vain CH340-ajureiden ohjaimet
  • Arduino IDE:

Vaihe 2: Levyn juottaminen

Hallituksen juottaminen
Hallituksen juottaminen

Juotos on itse asiassa suoraan eteenpäin kuvan Fritzingin mukaan. Varmista vain, että voit kytkeä servot helposti 3-nastaisiin riveihin.

  • 3-nastaiset rivit on kiinnitetty Arduino nanon digitaalisiin nastoihin 3, 5, 6, 9, 10 ja 11.
  • Punainen johto on kiinnitetty Arduinon 5V-napaan
  • Musta johto on kytketty Arduinon GND-nastaan
  • Kolmen nastaisen rivin alla olevat tapit on tarkoitettu tyypillisen RC-vastaanottimen virtalähteen liittämiseen, voit lisätä liittimiä haluamallasi tavalla, kuten ruuviliittimiä, XT-liittimiä, JST: tä tai… tai…

Henkilökohtaisesti pidän naisten otsikoiden riveistä laittaa Arduino sisään, mutta se on sinun.

Huomaa, että oikosuljetut naaraspäät ovat hyppyjohdin, jonka avulla voit syöttää servon käyttämällä Arduinon 5 V: n lähdettä testaustarkoituksiin. Jos rasitat sitä liikaa, Arduino nollautuu ja menettää oikean tahdin. Ne on poistettava ennen toisen virtalähteen liittämistä.

Vaihe 3: Arduinon asentaminen

Asenna Arduino IDE ja väläytä Arduino nano liitteenä olevan luonnoksen avulla.

Vaihe 4: Pythonin asentaminen

Pythonin asentaminen
Pythonin asentaminen

Asenna Python 3 lataamisen jälkeen. Varmista, että valitset vaihtoehdon "PATH" -muuttujan luomiseksi.

Sinun on asennettava kaksi muuta pakettia käyttäen pip. Tätä varten paina "Windows" -näppäintä, kirjoita "cmd" ja paina "enter". Kirjoita komentokehotteeseen seuraavat komennot:

  • pip asennus sarja
  • piip asennus pyserial
  • pip asenna tkinter

Kuten näette, tarvitsen sekä sarja- että pyserial -moduuleja, mikä ei todennäköisesti ole tehokkain, koska pyserialin pitäisi korvata sarja. Siitä huolimatta se toimii ja olen vasta oppimassa;).

Avaa Python-Script IDE: ssä ja suorita se tai suorita se suoraan päätelaitteesta.

Avattavasta valikosta voit valita kahdesta tilasta, "Go Straight" ja "Ping Pong":

  • Siirry suoraan: Kirjoita servoasento mikrosekunneissa ensimmäiseen sarakkeeseen ja paina "Käynnistä" saadaksesi servo siirtymään määritettyyn asentoon.
  • Ping Pong: Kirjoita ala- ja yläraja toiseen ja kolmanteen sarakkeeseen. Nämä ovat ala- ja yläasento, joiden välillä servo siirtyy edestakaisin. Sarakkeessa "Ping Pong Time" voit määrittää millisekuntien ajan, jonka servo odottaa, kun se on saavuttanut ylemmän tai alemman asennon. Paina "Start" ja servo alkaa liikkua edestakaisin, paina "Stop" ja servo pysähtyy.

Vaihe 5: Missä taikuus tapahtuu

Viimeisenä mutta ei vähäisimpänä haluan tuoda esiin joitain yksityiskohtia koodista niille, jotka haluavat päästä hieman sarjaviestintään Pythonin ja Arduinon välillä.

Mitä nyt tapahtuu Python -ohjelmassa?

Ensinnäkin ohjelma tarkistaa, mitä tämän rivin COM-portteihin on liitetty, ja tallentaa sen luetteloon:

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

Sitten se kiertää luetteloa, kunnes löytää pahamaineisen CH340-sirun, tallentaa sen ja muodostaa sitten sarjayhteyden for-silmukan jälkeen. Huomaa, että for-loop katkeaa heti, kun ensimmäinen CH340 on löydetty.

p: lle itse.

Sarjaliitäntä muodostetaan COM-portilla, jonka siirtonopeus on 57600.

Ja mitä Arduino -koodi tekee? No, koska Arduinolla on vain yksi COM-portti, sarjayhteys on vain yksi rivi:

Sarja.alku (57600);

Nyt voimme käyttää molempia portteja kommunikointiin. Tässä tapauksessa vain viestit Pythonista Arduinolle. Viestit lähetetään tänne Pythonista. Sarjaliitäntä lähettää tavuja oletuksena. Se on myös nopein tapa lähettää tietoja ja tietääkseni myös edelleen melko laajalle levinnyt. Joten servot numeron inteille (joten Arduino tietää, mitä servoa siirretään) ja sijainti mikrosekunneissa muutetaan tavuksi.

Komento = structure.pack ('> B', self. Place) # Int-muuttuja "self. Place" muutetaan tavuksi

self. Ser.write (Komento) # Tavun kirjoittaminen sarjaportin komennolle = int (self. ServoPos.get ()) // 10 # Syötteen lukeminen kentästä ja int-komento = struk.pack (' > B ', Komento) # Int: n kääntäminen tavuominaisuuksiin. Ser.write (Komento) # Tavun kirjoittaminen sarjaporttiin

Myös tietojen jäsentäminen vie aikaa (esimerkiksi neljän tavun "1", "2", "3" ja "0" tulkitseminen int 1230: ksi, ei neljänä eri merkkinä), ja on parempi tehdä se ei Arduinolla.

Arduinon puolella lähetetyt tiedot noudetaan seuraavasti:

if (Serial.available ()> 1) {// Jos sarjatietoja on saatavilla, syötetään silmukka c = Serial.read (); // Ensimmäinen tavu (servon määrä) tallennetaan muuttujaan Micros = Serial.read (); // Servon sijainti tallennetaan tähän Micros = Micros * 10; }

Suositeltava: