Sadržaj:
- Korak 1: Šta 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 sa Python-GUI-om i Arduinom: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Prilikom izrade prototipova ili izgradnje modela aviona, često nailazite na problem da morate provjeriti servo hod ili postaviti servo u srednji položaj.
U slučaju da ne želite izgraditi cijeli RC sistem ili testirati, koliko daleko možete gurnuti servo ili gdje je sredina, onda je ova ploča za vas! Omogućava 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 jedne pozicije na drugu.
Također, to je lijep projekt za učenje o komunikaciji između Python-GUI-a i Arduina koristeći Serial.
Korak 1: Šta vam treba …
Za ovaj projekat trebat će vam sljedeće:
Hardver
- Arduino nano sa kablom. Koristio sam klon, a Python kod zapravo očekuje CH340 čip klona
- Ploča za izradu prototipova. 7x5cm je dovoljno
- Nekih 2, 54 mm zaglavlja i igle
- 1-6 servomotora
- Napajanje za servomotore (koristio sam komplet baterija 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 pazite da možete jednostavno priključiti servo pogone na 3-pinske redove.
- 3-pinski redovi su spojeni na digitalni pin 3, 5, 6, 9, 10 i 11 Arduino nano.
- Crvena žica je pričvršćena na 5V pin Arduina
- Crna žica je spojena na GND-pin Arduina
- Par pinova ispod 3-polnog reda namijenjen je za priključivanje tipičnog napajanja RC prijemnika, 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 kreiranje "PATH" -varijable.
Morate instalirati još dva paketa pomoću pipa. U tu svrhu pritisnite tipku "Windows", upišite "cmd" i pritisnite "enter". U naredbeni redak upišite sljedeće naredbe:
- pip install serial
- piip install pyserial
- pip install tkinter
Kao što vidite, potrebni su mi moduli serijski, kao i pyserial, koji najvjerojatnije nije najefikasniji, jer bi pyserial trebao zamijeniti serijski. Ipak funkcionira i tek počinjem učiti;).
Otvorite Python-Script u IDE-u i pokrenite ga ili pokrenite direktno s terminala.
U padajućem izborniku možete birati između dva načina rada, "Idi ravno" i "Ping Pong":
- Idi ravno: Unesite servo-poziciju u mikrosekundama u prvu kolonu i pritisnite "Start" da se servo pomakne na zadani položaj.
- Ping Pong: Unesite donju granicu i gornju granicu u drugu i treću kolonu. To su donji i gornji položaj, između kojih će se servo kretati naprijed -nazad. U koloni "Vrijeme za ping pong" možete odrediti vrijeme u milisekundama koje će servo čekati kada dosegne gornju ili donju poziciju. 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.
Šta se dešava u Python programu?
Prije svega, program provjerava šta je priključeno na COM portove u ovoj liniji i sprema ga na listu:
self. COMPortsList = lista (serial.tools.list_ports.comports ())
Zatim se petlja po popisu dok ne pronađe ozloglašeni CH340 čip, spremi ga i 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 sa COM-portom sa brzinom prijenosa od 57600.
I šta 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 rasprostranjen. Dakle, ints za broj serva (tako da Arduino zna koji servo premjestiti) i položaj u mikrosekundama pretvaraju se u bajt.
Command = struct.pack ('> B', self. Place) # Int-varijabla "self. Place" je pretvorena u bajt
self. Ser.write (Command) # Zapisivanje bajta na naredbi 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.
Sa Arduino strane, 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) se sprema u varijablu Micros = Serial.read (); // Položaj serva je sačuvan ovdje Micros = Micros * 10; }
Preporučuje se:
Moj CR10 New Life: 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 TMC2208 upravljačkim programima (s podrškom za UART način rada
Nasa kontrolna ploča za djecu: 10 koraka (sa slikama)
Nasina kontrolna tabla za djecu: Ovo sam napravio za svoju šogoricu koja vodi dnevni boravak. Vidjela je moj lager koji sam sagradio prije skoro tri godine za sajam proizvođača i jako mi se svidio pa sam mu napravio ovaj za božićni poklon. Link do mog drugog projekta možete pronaći ovdje: https: //www
MXY ploča - niskobudžetna robotska ploča za crtanje XY plotera: 8 koraka (sa slikama)
MXY ploča - Robotska ploča za crtanje niskobudžetnih XY plotera: Moj cilj je bio dizajnirati mXY ploču tako da bude niskobudžetna mašina za crtanje XY plotera. Zato 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 listova s Arduinom: Laseri se mogu koristiti za stvaranje nevjerojatnih vizualnih efekata. U ovom projektu sam konstruisao novu vrstu laserskog ekrana koji je interaktivan i reprodukuje muziku. Uređaj rotira dva lasera kako bi formirao dva svjetlosna lista nalik na vrtlog. Uključio sam senzor udaljenosti
Claqueta Digital Con Arduino (digitalna ploča sa Arduinom): 7 koraka
Claqueta Digital Con Arduino (Digitalni Clapperboard sa Arduinom): Stvorite tu propia claqueta digitalnu, tambien puedes pretvarač za digitalnu i digitalnu verziju, koristite Arduino.MATERIJALI Prikaz 7 segmenata MAX7219 sa 8 digitalnih kompatibilnih arduino.Modulo de Reloj RTC model DS3231 kompatibilan con arduino.Arduin