Sadržaj:
- Korak 1: Što vam treba …
- Korak 2: Lemljenje ploče
- Korak 3: Postavljanje Arduina
- Korak 4: Postavljanje Pythona
- Korak 5: Gdje se čarolija događa
Video: Servodriver ploča s Python-GUI-om i Arduinom: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Prilikom izrade prototipova ili izgradnje modela zrakoplova često nailazite na problem da morate provjeriti vožnju servom ili postaviti servo u srednji položaj.
U slučaju da ne želite izgraditi cijeli RC sustav ili testirati, koliko daleko možete gurnuti servo ili gdje je sredina, onda je ova ploča za vas! Omogućuje vam da pomaknete servo u određene položaje ili da putujemo naprijed -nazad.
Radi iznenađujuće dobro, čak i sa 6 servo pogona koji petljaju s jednog položaja na drugi.
Također, to je lijep projekt za učenje o komunikaciji između Python-GUI-ja i Arduina pomoću Seriala.
Korak 1: Što vam treba …
Za ovaj projekt trebat će vam sljedeće:
Hardver
- Arduino nano s kabelom. Koristio sam klon, a Python kod zapravo očekuje CH340-čip klona
- Ploča za izradu prototipa. 7x5 cm je dovoljno
- Nekih 2, 54 mm zaglavlja i igle
- 1-6 servo pogona
- Napajanje za servomotore (koristio sam bateriju sa 4 baterije)
Softver
- Python 3:
- USB-upravljački program za čipove CH340: Samo potražite u Googleu upravljačke programe za upravljačke programe CH340
- Arduino IDE:
Korak 2: Lemljenje ploče
Lemljenje je zapravo ravno prema Fritzingu na slici. Samo provjerite možete li jednostavno priključiti servo pogone na 3-polne redove.
- 3-pinski redovi pričvršćeni su na digitalni pin 3, 5, 6, 9, 10 i 11 Arduino nano.
- Crvena žica je pričvršćena na 5V pin Arduina
- Crna žica spojena je na GND-pin Arduina
- Par pinova ispod 3-polnog reda namijenjen je priključivanju tipičnog napajanja RC-prijamnika, možete dodati konektore po želji, poput vijaka, XT-konektora, JST ili … ili …
Osobno volim redove ženskih zaglavlja u koje se stavlja Arduino, ali to ovisi o vama.
Imajte na umu da su kratki ženski zaglavlji kratkospojnici koji vam omogućuju napajanje servo uređaja pomoću 5V izvora Arduina za potrebe testiranja. Ako ga previše naprežete, Arduino će se resetirati i izgubiti pravi tempo. MORAJU se ukloniti prije priključivanja drugog izvora napajanja.
Korak 3: Postavljanje Arduina
Instalirajte Arduino IDE i bljesnite Arduino nano s priloženom skicom.
Korak 4: Postavljanje Pythona
Instalirajte Python 3 nakon preuzimanja. Provjerite opciju za stvaranje varijable "PATH".
Morate instalirati još dva paketa pomoću pipa. Za to pritisnite tipku "Windows", upišite "cmd" i pritisnite "enter". U naredbeni redak upišite sljedeće naredbe:
- pip install serijski
- piip instalirajte pyserial
- pip install tkinter
Kao što vidite, potrebni su mi moduli serijski, kao i pyserial, što najvjerojatnije nije najučinkovitije, budući da bi pyserial trebao zamijeniti serijski. Ipak djeluje i tek počinjem učiti;).
Otvorite Python-Script u IDE-u i pokrenite ga ili pokrenite izravno s terminala.
Na padajućem izborniku možete birati između dva načina, "Idi ravno" i "Ping Pong":
- Idi ravno: Unesite servo-poziciju u mikrosekundama u prvi stupac i pritisnite "Start" kako bi se servo pomaknuo na navedeni položaj.
- Ping Pong: Unesite donju granicu i gornju granicu u drugi i treći stupac. To su donji i gornji položaj, između kojih će se servo kretati naprijed -natrag. U stupcu "Vrijeme za stolni tenis" možete odrediti vrijeme u milisekundama koje će servo čekati kada dosegne gornji ili donji položaj. Pritisnite "Start" i servo će se početi kretati naprijed -nazad, pritisnite "Stop" i servo će se zaustaviti.
Korak 5: Gdje se čarolija događa
Na kraju, ali ne i najmanje važno, želim istaknuti neke detalje u kodu za one koji žele ući u malo serijske komunikacije između Pythona i Arduina.
Što se događa u Python programu?
Prije svega, program provjerava što je priključeno na COM-portove u ovom retku i sprema ga na popis:
self. COMPortsList = popis (serial.tools.list_ports.comports ())
Zatim se petlja po popisu sve dok ne pronađe ozloglašeni CH340 čip, spremi ga, a zatim uspostavi serijsku vezu nakon for-petlje. Imajte na umu da se for-loop prekida čim se pronađe prvi CH340.
za p u self. COMPortsList: ako je "CH340" u p [1]: # Tražim Arduino Clone self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
Serijska veza je uspostavljena s COM-portom s brzinom prijenosa od 57600.
A što radi Arduino kod? Pa, budući da Arduino ima samo jedan COM-port, serijska veza je samo jedna linija:
Serial.begin (57600);
Sada možemo koristiti oba porta za komunikaciju. U ovom slučaju samo poruke s Pythona na Arduino. Poruke se ovdje šalju s Pythona. Serijska veza prema zadanim postavkama prenosi bajtove. To je ujedno i najbrži način slanja podataka, a koliko ja znam i dalje je prilično raširen. Dakle, ints za broj serva (tako da Arduino zna koji servo premjestiti) i položaj u mikrosekundama pretvoreni su u bajt.
Command = struct.pack ('> B', self. Place) # Int-varijabla "self. Place" pretvorena je u bajt
self. Ser.write (Command) # Zapisivanje bajta u naredbu serijskog porta = int (self. ServoPos.get ()) // 10 # Čitanje unosa iz polja i uključivanje int Command = struct.pack (' > B ', Command) # Pretvaranje int-a u bajtu self. Ser.write (Command) # Zapisivanje bajta na serijski port
Također, za raščlanjivanje podataka potrebno je vrijeme (na primjer tumačenje četiri bajta "1", "2", "3" i "0" kao int 1230, a ne kao četiri različita znaka) i bolje je to učiniti ne na Arduinu.
Na strani Arduina, poslane informacije se prikupljaju na sljedeći način:
if (Serial.available ()> 1) {// Ako su serijski podaci dostupni, tada se unosi petlja c = Serial.read (); // Prvi bajt (broj serva) sprema se u varijablu Micros = Serial.read (); // Ovdje se sprema položaj serva Micros = Micros * 10; }
Preporučeni:
Moj CR10 novi život: SKR matična ploča i Marlin: 7 koraka
Moj CR10 New Life: SKR matična ploča i Marlin: Moja standardna MELZI ploča je bila mrtva i bila mi je potrebna hitna zamjena kako bih oživio svoj CR10.Prvi korak, odaberite zamjensku ploču, pa sam odabrao Bigtreetech skr v1.3 koji je 32 -bitna ploča s upravljačkim programima TMC2208 (s podrškom za UART način rada
MXY ploča - niskobudžetna robotska ploča za crtanje XY plotera: 8 koraka (sa slikama)
MXY ploča - niskobudžetna robotska ploča za crtanje XY plotera: Moj cilj je bio dizajnirati mXY ploču kako bi niskobudžetna postala stroj za crtanje XY plotera. Stoga sam dizajnirao ploču koja olakšava onima koji žele napraviti ovaj projekt. U prethodnom projektu, koristeći 2 komada Nema17 koračnih motora, ova ploča koristi
Interaktivni laserski generator ploča s Arduinom: 11 koraka (sa slikama)
Interaktivni generator laserskih ploča s Arduinom: Laseri se mogu koristiti za stvaranje nevjerojatnih vizualnih efekata. U ovom projektu konstruirao sam novu vrstu laserskog zaslona koji je interaktivan i reproducira glazbu. Uređaj rotira dva lasera tako da tvore dvije ploče svjetla slične vrtlogu. Uključio sam senzor udaljenosti
Claqueta Digital Con Arduino (digitalna ploča s Arduinom): 7 koraka
Claqueta Digital Con Arduino (Digitalna ploča s Arduinom): Crea tu propia claqueta digital, también puedes convertir una claqueta no digital en una, koristite Arduino.MATERIJALI Prikaz 7 segmenata MAX7219 sa 8 digitalnih kompatibilnih arduino.Modulo de Reloj RTC model DS3231 kompatibilan con arduino.Arduin
Signalna svjetlosna ploča i ploča krede Batman Bat: 5 koraka (sa slikama)
Signalno svjetlo Batman Bat i ploča s kredom: Obično ne biste mislili da je Batman svjetlo puno boja, ali budući da je i ploča s kredom, može imati onoliko boja koliko želite koliko vidite sa slike