Taula de continguts:
- Pas 1: què necessiteu …
- Pas 2: Soldar la Junta
- Pas 3: Configuració de l'Arduino
- Pas 4: Configuració de Python
- Pas 5: On succeeix la màgia
Vídeo: Servodriver-Board amb Python-GUI i Arduino: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Quan es fan prototips o es construeixen models d’avions, sovint es troba el problema, que ha de comprovar el recorregut del servo o posar els servos a la posició mitjana.
En cas que no vulgueu acumular tot el vostre sistema RC o provar, fins a quin punt podeu empènyer el servo o on es troba la posició mitjana, llavors aquest tauler és per a vosaltres. Us permet moure el servo a posicions especificades o bé anem cap enrere i cap enrere.
Funciona sorprenentment, fins i tot amb 6 servos que corren d'una posició a una altra al bucle.
A més, és un bon projecte per aprendre sobre la comunicació entre Python-GUI i Arduino mitjançant Serial.
Pas 1: què necessiteu …
Per a aquest projecte, necessitareu el següent:
Maquinari
- Arduino nano amb cable. He utilitzat un clon i el codi Python realment espera un xip CH340 d’un clon
- Una placa de prototipatge. N’hi ha prou amb 7x5cm
- Alguns capçals i pins de 2, 54 mm
- 1-6 servos
- Font d'alimentació per als servos (he utilitzat una bateria amb 4 bateries)
Programari
- Python 3:
- Un controlador USB per als xips CH340: només necessiteu google per als controladors CH340
- ID Arduino:
Pas 2: Soldar la Junta
La soldadura és realment senzilla segons Fritzing a la imatge. Assegureu-vos que podeu connectar els servos fàcilment a les files de 3 pins.
- Les files de 3 pins s’uneixen als pins digitals 3, 5, 6, 9, 10 i 11 de l’Arduino nano.
- El cable vermell està unit al pin de 5V de l’Arduino
- El cable negre està connectat al pin GND de l’Arduino
- El parell de pins a sota de les files de 3 pins està dissenyat per connectar una font d’alimentació típica del receptor RC; podeu afegir connectors com vulgueu, com ara terminals de rosca, connectors XT, JST o … o …
Personalment, m’agraden les files de capçaleres femenines per posar l’Arduino, però això depèn de vosaltres.
Tingueu en compte que les capçaleres femenines en curtcircuit són un pont, que us permet subministrar el servo mitjançant la font de 5 V de l’Arduino per a proves. Si el coleu massa, l'Arduino es restablirà i perdrà el ritme adequat. S’han d’eliminar abans de connectar una altra font d’alimentació.
Pas 3: Configuració de l'Arduino
Instal·leu l'Arduino IDE i feu flaixar Arduino nano amb l'esbós adjunt.
Pas 4: Configuració de Python
Instal·leu Python 3 després de descarregar-lo. Assegureu-vos de marcar l'opció per crear una variable "PATH".
Cal instal·lar dos paquets més amb pip. Per a això, premeu la tecla "Windows", escriviu "cmd" i premeu "enter". Al símbol del sistema, escriviu les ordres següents:
- pip instal·la la sèrie
- piip instal·lar pyserial
- pip install tkinter
Com podeu veure, necessito tant els mòduls sèrie com pyserial, que probablement no siguin els més eficients, ja que pyserial hauria de substituir la sèrie. Tot i això, funciona i estic començant a aprendre;).
Obriu Python-Script a l'IDE i executeu-lo, o executeu-lo directament des del terminal.
Al menú desplegable, podeu triar entre dos modes, "Ves directament" i "Ping Pong":
- Ves directament: introdueix una posició de servo en microsegons a la primera columna i prem "Inici" per fer que el servo es mogui a la posició especificada.
- Ping Pong: introduïu un límit inferior i un límit superior a la segona i tercera columna. Aquesta és la posició inferior i superior, entre les quals el servo anirà i tornarà. A la columna "Temps de Ping Pong" podeu especificar un temps en mil·lisegons que el servo esperarà quan hagi assolit la posició superior o inferior. Feu clic a "Inici" i el servo començarà a moure's cap endavant i cap enrere, premeu "Stop" i el servo s'aturarà.
Pas 5: On succeeix la màgia
Per últim, però no menys important, vull assenyalar alguns dels detalls del codi per a aquells que vulguin entrar en una mica de comunicació en sèrie entre Python i Arduino.
Ara, què passa al programa Python?
Primer de tot, el programa comprova què s’adjunta als ports COM d’aquesta línia i el desa en una llista:
self. COMPortsList = llista (serial.tools.list_ports.comports ())
Després passa per la llista fins que troba un famós xip CH340, el desa i, a continuació, estableix una connexió sèrie després del bucle for. Tingueu en compte que el bucle for es trenca tan aviat com es troba el primer CH340.
per p a self. COMPortsList: si "CH340" a p [1]: # Cerqueu un clon Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
La connexió sèrie s’estableix amb el port COM amb una velocitat de transmissió de 57600.
I què fa el codi Arduino? Bé, donat que l'Arduino només té un port COM, la connexió sèrie només és una línia:
Serial.begin (57600);
Ara, podem utilitzar els dos ports per comunicar-nos. En aquest cas, només els missatges de Python a Arduino. Els missatges s’envien aquí des de Python. La connexió sèrie transmet els bytes per defecte. Aquesta és també la forma més ràpida d’enviar dades i, pel que sé, encara està força estesa. Per tant, les intes del nombre del servo (per tant, l’Arduino sap quin servo s’ha de moure) i la posició en microsegons es converteixen en un byte.
Command = struct.pack ('> B', self. Place) # La variable int "self. Place" es converteix en un byte
self. Ser.write (Ordre) # Escriptura del byte a l'ordre de port sèrie = int (self. ServoPos.get ()) // 10 # Llegint l'entrada des del camp i gireu int Ordre = struct.pack (' > B ', ordre) # Girar l'int en un byte self. Ser.write (ordre) # Escriure el byte al port sèrie
A més, analitzar les dades requereix temps (per exemple, interpretar quatre bytes "1", "2", "3" i "0" com a int 1230, no com a quatre caràcters diferents) i és millor fer-ho no a l'Arduino.
Al costat d'Arduino, la informació enviada es recull de la manera següent:
if (Serial.available ()> 1) {// Si hi ha dades de sèrie disponibles, s'introdueix el bucle c = Serial.read (); // El primer byte (nombre de servo) es desa en una variable Micros = Serial.read (); // Aquí es guarda la posició del servo Micros = Micros * 10; }
Recomanat:
Control de moviment amb Raspberry Pi i LIS3DHTR, acceleròmetre de 3 eixos, amb Python: 6 passos
Control de moviment amb Raspberry Pi i LIS3DHTR, acceleròmetre de 3 eixos, utilitzant Python: la bellesa ens envolta, però normalment cal caminar per un jardí per conèixer-la. - Rumi Com a grup educat que semblem ser, invertim la gran majoria de la nostra energia treballant abans que els nostres ordinadors i telèfons mòbils. Per tant, sovint deixem el nostre benestar
Control de diversos LEDs amb els pins GPIO de Python i del vostre Raspberry Pi: 4 passos (amb imatges)
Control de diversos LEDs amb Python i els pins GPIO del vostre Raspberry Pi: aquest instructiu mostra com controlar diversos pins GPIO al vostre RaspberryPi per alimentar 4 LED. També us presentarà paràmetres i declaracions condicionals a Python. La nostra instrucció prèvia utilitzant els pins GPIO de Raspberry Pi per
Comandament a distància sense fils que utilitza el mòdul NRF24L01 de 2,4 Ghz amb Arduino - Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter - Helicòpter Rc - Avió Rc amb Arduino: 5 passos (amb imatges)
Comandament sense fils que utilitza un mòdul NRF24L01 de 2,4 Ghz amb Arduino | Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter | Helicòpter Rc | Avió Rc amb Arduino: per fer funcionar un cotxe Rc | Quadcopter | Drone | Avió RC | Vaixell RC, sempre necessitem un receptor i un transmissor, suposem que per RC QUADCOPTER necessitem un transmissor i un receptor de 6 canals i aquest tipus de TX i RX és massa costós, així que en farem un al nostre
DIY "PC Usage Meter ROG Base" amb Arduino i Python: 5 passos (amb imatges)
DIY "PC Usage Meter ROG Base" amb Arduino i Python: ************************************* + En primer lloc, aquestes instruccions havien estat escrites per un anglès que no fos nadiu …… No era un professor d’anglès, així que informeu qualsevol error gramatical abans de burlar-se de mi
Control de l'accés a Arduino YÚN amb MySQL, PHP5 i Python: 11 passos (amb imatges)
Controlar l'accés a Arduino YÚN amb MySQL, PHP5 i Python: Hola amics! Bé, com ja sabeu, al setembre es va crear el nou escut d’Arduino, Arduino YUN. Aquest petit amic té un sistema incrustat de Linux amb el qual podem executar qualsevol cosa que se us acudeixi (almenys fins ara). Tot i que hi ha molt poca informació