Cuprins:
- Pasul 1: De ce aveți nevoie …
- Pasul 2: lipirea bordului
- Pasul 3: Configurarea Arduino
- Pasul 4: Configurarea Python
- Pasul 5: Unde se întâmplă magia
Video: Servodriver-Board Cu Python-GUI și Arduino: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Când faceți prototipuri sau construiți modele de avioane, întâlniți adesea problema, că trebuie să verificați cursa servo sau să setați servo-urile în poziția mijlocie.
În cazul în care nu obișnuiești să-ți construiești întregul sistem RC sau să testezi, cât de departe poți împinge servo-ul sau unde este poziția mediană, atunci această placă este pentru tine! Vă permite să mutați servo în poziții specificate sau să călătorim înainte și înapoi.
Funcționează surprinzător de bine, chiar și cu 6 servo-uri care aleargă dintr-o poziție în alta în buclă.
De asemenea, este un proiect frumos pentru a afla despre comunicarea dintre Python-GUI și Arduino folosind Serial.
Pasul 1: De ce aveți nevoie …
Pentru acest proiect, veți avea nevoie de următoarele:
Hardware
- Arduino nano cu cablu. Am folosit o clonă, iar codul Python așteaptă de fapt un chip CH340 al unei clone
- O placă de prototipare. 7x5cm este suficient
- Unele anteturi și pini de 2, 54mm
- 1-6 servo
- Alimentare pentru servomotoare (am folosit un pachet de baterii cu 4 baterii)
Software
- Python 3:
- Un driver USB pentru chips-urile CH340: Doar google pentru driverele pentru driverele CH340
- ID Arduino:
Pasul 2: lipirea bordului
Lipirea este de fapt simplă, în conformitate cu Fritzing din imagine. Doar asigurați-vă că puteți conecta servo-urile cu ușurință la rândurile cu 3 pini.
- Rândurile cu 3 pini sunt atașate la pinul digital 3, 5, 6, 9, 10 și 11 al nano Arduino.
- Firul roșu este atașat la pinul de 5V al Arduino
- Firul negru este conectat la pinul GND al Arduino
- Perechea de pini de sub rândurile cu 3 pini este menită să atașeze o sursă de alimentare tipică a receptorului RC, puteți adăuga conectori după cum doriți, cum ar fi bornele de înșurubare, conectorii XT, JST sau … sau …
Personal, îmi plac rândurile de antete de sex feminin pentru a introduce Arduino, dar asta depinde de tine.
Vă rugăm să rețineți că anteturile feminine scurtcircuitate sunt un jumper, care vă permit să furnizați servo utilizând sursa de 5V a Arduino în scopuri de testare. Dacă îl strângeți prea mult, Arduino va reseta și va pierde ritmul potrivit. Acestea TREBUIE îndepărtate, înainte de a atașa o altă sursă de alimentare.
Pasul 3: Configurarea Arduino
Instalați Arduino IDE și blocați Arduino nano cu schița atașată.
Pasul 4: Configurarea Python
Instalați Python 3 după descărcare. Asigurați-vă că bifați opțiunea pentru a crea o variabilă „PATH”.
Trebuie să instalați încă două pachete folosind pip. Pentru aceasta, apăsați tasta „Windows”, tastați „cmd” și apăsați „enter”. În promptul de comandă tastați următoarele comenzi:
- pip instalează serial
- piip instalează pyserial
- pip install tkinter
După cum puteți vedea, am nevoie de module seriale, precum și pyserial, ceea ce cel mai probabil nu este cel mai eficient, deoarece pyserial ar trebui să înlocuiască serialul. Cu toate acestea funcționează și abia încep să învăț;).
Deschideți Python-Script în IDE și rulați-l sau rulați-l direct de la terminal.
În meniul derulant, puteți alege între două moduri, „Go Straight” și „Ping Pong”:
- Mergeți drept: introduceți o servo-poziție în microsecunde în prima coloană și apăsați „Start” pentru a face servo-ul să se deplaseze în poziția specificată.
- Ping Pong: introduceți o limită inferioară și una superioară în a doua și a treia coloană. Aceasta este poziția inferioară și superioară, între care servo va merge înainte și înapoi. În coloana „Ping Pong Time” puteți specifica un timp în milisecunde, pe care servo-ul îl va aștepta când a ajuns la poziția superioară sau inferioară. Apăsați „Start” și servo-ul va începe să se miște înainte și înapoi, apăsați „Stop” și servo-ul se va opri.
Pasul 5: Unde se întâmplă magia
Nu în ultimul rând, vreau să subliniez câteva dintre detaliile din cod pentru cei care doresc să intre într-o comunicare în serie între Python și Arduino.
Acum, ce se întâmplă în programul Python?
În primul rând, programul verifică ce este atașat la porturile COM din această linie și îl salvează într-o listă:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Apoi trece prin listă până când găsește un chip CH340 notoriu, îl salvează și apoi stabilește o conexiune serială după bucla for. Rețineți că bucla for se întrerupe imediat ce este găsit primul CH340.
pentru p în self. COMPortsList: dacă "CH340" în p [1]: # În căutarea unei clone Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
Conexiunea serială este stabilită cu portul COM cu o viteză de transmisie de 57600.
Și ce face codul Arduino? Ei bine, deoarece Arduino are un singur port COM, conexiunea serială este doar o linie:
Serial.begin (57600);
Acum, putem folosi ambele porturi pentru a comunica. În acest caz, numai mesajele de la Python către Arduino. Mesajele sunt trimise aici din Python. Conexiunea serială transmite octeți în mod implicit. Acesta este, de asemenea, cel mai rapid mod de a trimite date și, din câte știu, este încă destul de răspândit. Deci, inte pentru numărul de servo (deci Arduino știe ce servo să se deplaseze) și poziția în microsecunde sunt transformate într-un octet.
Command = struct.pack ('> B', self. Place) # Variabila int "self. Place" este transformată într-un octet
self. Ser.write (Comandă) # Scrierea octetului pe Comanda Serial-Port = int (self. ServoPos.get ()) // 10 # Citirea intrării din câmp și transformarea int Comandă = struct.pack (' > B ', Comandă) # Întoarcerea int într-un octet self. Ser.write (Comandă) # Scrierea octetului pe portul serial
De asemenea, analizarea datelor necesită timp (de exemplu, interpretarea a patru octeți „1”, „2”, „3” și „0” ca int 1230, nu ca patru caractere diferite) și este mai bine să faceți acest lucru nu pe Arduino.
Pe partea Arduino, informațiile trimise sunt preluate după cum urmează:
if (Serial.available ()> 1) {// Dacă datele seriale sunt disponibile, atunci se introduce bucla c = Serial.read (); // Primul octet (numărul de servo) este salvat într-o variabilă Micros = Serial.read (); // Poziția servo-ului este salvată aici Micros = Micros * 10; }
Recomandat:
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Set de baterii MIDI pe Python și Arduino: 5 pași (cu imagini)
MIDI Drum Kit pe Python și Arduino: Întotdeauna am vrut să cumpăr un kit de baterie încă de când eram copil. Pe atunci, toate echipamentele muzicale nu aveau toate aplicațiile digitale, deoarece avem o mulțime de astăzi, prin urmare, prețurile împreună cu așteptările erau prea mari. Recent am decis să cumpăr un c
Recunoașterea și identificarea feței Arduino Face ID folosind OpenCV Python și Arduino .: 6 pași
Recunoașterea și identificarea feței | Arduino Face ID Folosind OpenCV Python și Arduino .: Recunoașterea facială AKA Face ID este una dintre cele mai importante caracteristici de pe telefoanele mobile din zilele noastre. Așadar, am avut o întrebare „pot să am un id al feței pentru proiectul meu Arduino”? iar răspunsul este da … Călătoria mea a început după cum urmează: Pasul 1: Acces la noi
Un joc simplu de ghicit - Python + XBees + Arduino: 10 pași
Un joc simplu de ghicit - Python + XBees + Arduino: Iată cum funcționează jocul: aveți 4 încercări de a ghici o literă între „a” - „h” - > Ghiciți litera potrivită: Câștigați! ? - > Ghiciți litera greșită: Jocul s-a încheiat? - > Ghiciți orice alt personaj în afara „a” - „h”: Jocul terminat? Arduino vă va permite
Plot de intensitate a luminii folosind Arduino și Python Arduino Master Library: 5 pași
Plot de intensitate luminoasă folosind Arduino și Python Arduino Master Library: Arduino fiind un instrument economic, dar extrem de eficient și funcțional, programarea acestuia în Embedded C face procesul de realizare a proiectelor obositor! Modulul Arduino_Master al Python simplifică acest lucru și ne permite să efectuăm calcule, să eliminăm valorile gunoiului