Sisällysluettelo:
- Vaihe 1: Mitä tarvitset…
- Vaihe 2: Levyn juottaminen
- Vaihe 3: Arduinon asentaminen
- Vaihe 4: Pythonin asentaminen
- Vaihe 5: Missä taikuus tapahtuu
Video: Servodriver-kortti Python-GUI: lla ja Arduinolla: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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:
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullinen: 5 vaihetta
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullista: Tein Bluetooth Arduino -auton, kuten tässä kuvattu, Ardumotive_com. Ongelmani olivat akut ja niiden paino sekä kustannukset. Sittemmin matkapuhelimien halvoista virtapankkeista on tullut erittäin edullisia. Kaikki mitä tarvitsen
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: lla, säädettävä asetuspiste: 3 vaihetta
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: llä, säädettävä asetuspiste: Olen rakentanut tämän projektin, koska sisäkasvieni on oltava terveitä, vaikka olen lomalla pitkään ja pidän ajatuksesta hallita tai ainakin seurata kaikkia mahdollisia asioita, joita kotona tapahtuu Internetin kautta
Älypuhelintelakka USB: llä ja HDMI: llä: 6 vaihetta
Älypuhelintelakka USB: llä ja HDMI: llä: Tämä on opas rakentaa älypuhelintelakka, jossa on neljä USB -tuloa, HDMI -lähtö ja USB C -läpivienti lataamista varten. monenlaisiin USB -laitteisiin, kuten näppäimistöihin, hiiriin
Levynvaihto PS1: llä (tai PSX: llä): 8 vaihetta
Levynvaihdon vaihtaminen PS1: llä (tai PSX: llä): Tämä näyttää sinulle vaihe vaiheelta kuinka vaihtaa levyt Ps1: lle (tai PSX: lle). Tämä on melko vaikeaa. jos sinulla on ongelmia, käy tällä sivustolla http://www.angelfire.com/ca/PlaystationHouse/SwapTrick.html