Tabla de contenido:
- Paso 1: lo que necesita …
- Paso 2: Soldar la placa
- Paso 3: Configuración del Arduino
- Paso 4: Configurar Python
- Paso 5: Donde sucede la magia
Video: Servodriver-Board con Python-GUI y Arduino: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Al hacer prototipos o construir modelos de aviones, a menudo se encuentra con el problema de que debe verificar el recorrido del servo o configurar los servos en la posición media.
En caso de que no desee construir todo su sistema RC o probar, qué tan lejos puede empujar el servo o dónde está la posición media, ¡entonces esta placa es para usted! Le permite mover el servo a posiciones específicas o viajar de un lado a otro.
Funciona sorprendentemente bien, incluso con 6 servos que corren de una posición a otra en el bucle.
Además, es un buen proyecto para aprender sobre la comunicación entre Python-GUI y Arduino usando Serial.
Paso 1: lo que necesita …
Para este proyecto, necesitará lo siguiente:
Hardware
- Arduino nano con cable. Usé un clon, y el código Python realmente espera un chip CH340 de un clon
- Una placa de creación de prototipos. 7x5cm es suficiente
- Algunos encabezados y pines de 2, 54 mm
- 1-6 servos
- Fuente de alimentación para los servos (usé un paquete de baterías con 4 baterías)
Software
- Python 3:
- Un controlador USB para los chips CH340: solo google para los controladores para los controladores CH340
- IDE de Arduino:
Paso 2: Soldar la placa
La soldadura es realmente sencilla según Fritzing en la imagen. Solo asegúrese de que puede conectar los servos fácilmente a las filas de 3 pines.
- Las filas de 3 pines están conectadas a los pines digitales 3, 5, 6, 9, 10 y 11 del Arduino nano.
- El cable rojo está conectado al pin de 5 V del Arduino
- El cable negro está conectado al pin GND del Arduino
- El par de pines debajo de las filas de 3 pines están destinados a conectar una fuente de alimentación de receptor RC típica, puede agregar conectores como desee, como terminales atornillados, conectores XT, JST o … o …
Personalmente, me gustan las filas de encabezados femeninos para colocar el Arduino, pero eso depende de ti.
Tenga en cuenta que los encabezados hembra en corto son un puente que le permite suministrar el servo utilizando la fuente de 5 V del Arduino para fines de prueba. Si lo esfuerzas demasiado, el Arduino se reiniciará y perderá el ritmo correcto. DEBEN retirarse antes de conectar otra fuente de alimentación.
Paso 3: Configuración del Arduino
Instale el IDE de Arduino y actualice el Arduino nano con el boceto adjunto.
Paso 4: Configurar Python
Instale Python 3 después de descargarlo. Asegúrese de marcar la opción para crear una variable "PATH".
Necesita instalar dos paquetes más usando pip. Para eso, presione la tecla "Windows", escriba "cmd" y presione "enter". En el símbolo del sistema, escriba los siguientes comandos:
- pip instalar serie
- piip instalar pyserial
- pip instalar tkinter
Como puede ver, necesito los módulos serial y pyserial, que probablemente no sea el más eficiente, ya que pyserial debería reemplazar a serial. Sin embargo, funciona y estoy empezando a aprender;).
Abra Python-Script en el IDE y ejecútelo, o ejecútelo directamente desde la terminal.
En el menú desplegable, puede elegir entre dos modos, "Ir recto" y "Ping Pong":
- Ir recto: ingrese una posición de servo en microsegundos en la primera columna y presione "Inicio" para hacer que el servo se mueva a la posición especificada.
- Ping Pong: Ingrese un límite inferior y un límite superior en la segunda y tercera columna. Esa es la posición inferior y superior, entre las cuales el servo irá hacia atrás y hacia adelante. En la columna "Ping Pong Time" puede especificar un tiempo en milisegundos, que el servo esperará cuando haya alcanzado la posición superior o inferior. Presiona "Start" y el servo comenzará a moverse hacia atrás y adelante, presiona "Stop" y el servo se detendrá.
Paso 5: Donde sucede la magia
Por último, pero no menos importante, quiero señalar algunos de los detalles en el código para aquellos que quieran entrar en un poco de comunicación en serie entre Python y Arduino.
Ahora, ¿qué sucede en el programa Python?
En primer lugar, el programa comprueba lo que se adjunta a los puertos COM en esta línea y lo guarda en una lista:
self. COMPortsList = lista (serial.tools.list_ports.comports ())
Luego recorre la lista hasta que encuentra un chip CH340 notorio, lo guarda y luego establece una conexión en serie después del bucle for. Tenga en cuenta que el bucle for se rompe tan pronto como se encuentra el primer CH340.
para p en self. COMPortsList: if "CH340" en p [1]: # Buscando un clon de Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
La conexión en serie se establece con el puerto COM con una velocidad en baudios de 57600.
¿Y qué hace el código Arduino? Bueno, dado que Arduino tiene solo un puerto COM, la conexión en serie es solo una línea:
Serial.begin (57600);
Ahora, podemos usar ambos puertos para comunicarnos. En este mismo caso, solo mensajes de Python a Arduino. Los mensajes se envían aquí desde Python. La conexión en serie transmite bytes de forma predeterminada. Esa es también la forma más rápida de enviar datos y, hasta donde yo sé, también está bastante extendida. Entonces, las entradas para el número del servo (para que Arduino sepa qué servo mover) y la posición en microsegundos se convierten en un byte.
Command = struct.pack ('> B', self. Place) # La variable int "self. Place" se convierte en un byte
self. Ser.write (Command) # Escribiendo el byte en el puerto serial Command = int (self. ServoPos.get ()) // 10 # Leyendo la entrada del campo y entregando int Command = struct.pack (' > B ', Command) # Convirtiendo el int en un byte self. Ser.write (Command) # Escribiendo el byte en el puerto serie
Además, analizar los datos lleva tiempo (por ejemplo, interpretar cuatro bytes "1", "2", "3" y "0" como int 1230, no como cuatro caracteres diferentes) y es mejor hacerlo no en Arduino.
En el lado de Arduino, la información enviada se recoge de la siguiente manera:
if (Serial.available ()> 1) {// Si hay datos seriales disponibles, entonces se ingresa el ciclo c = Serial.read (); // El primer byte (número de servo) se guarda en una variable Micros = Serial.read (); // La posición del servo se guarda aquí Micros = Micros * 10; }
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Controlar varios LED con Python y los pines GPIO de su Raspberry Pi: 4 pasos (con imágenes)
Controlar varios LED con Python y los pines GPIO de su Raspberry Pi: este Instructable demuestra cómo controlar varios pines GPIO en su RaspberryPi para alimentar 4 LED. También le presentará parámetros y declaraciones condicionales en Python.Nuestro Instructable anterior Usando los pines GPIO de su Raspberry Pi para
Supervisión de la aceleración con Raspberry Pi y AIS328DQTR con Python: 6 pasos
Monitoreo de la aceleración usando Raspberry Pi y AIS328DQTR usando Python: la aceleración es finita, creo que de acuerdo con algunas leyes de la física.- Terry Riley Un guepardo utiliza una aceleración asombrosa y cambios rápidos en la velocidad cuando persigue. La criatura más veloz en tierra de vez en cuando utiliza su ritmo máximo para atrapar a sus presas. Los
Estación meteorológica con Raspberry Pi con BME280 en Python: 6 pasos
Estación meteorológica que usa Raspberry Pi con BME280 en Python: is maith an scéalaí an aimir (El clima es un buen narrador) Con los problemas del calentamiento global y el cambio climático, el patrón meteorológico global se está volviendo errático en todo el mundo, lo que lleva a una serie de problemas relacionados con el clima. desastres naturales (sequías, extremos
Controlar el acceso de Arduino YÚN con MySQL, PHP5 y Python: 11 pasos (con imágenes)
Controle el acceso de Arduino YÚN con MySQL, PHP5 y Python: ¡Hola amigos! Bueno, como sabéis, en septiembre se estrena el nuevo escudo de Arduino, Arduino YUN. Este pequeño amigo tiene un sistema integrado Linux con el que podemos ejecutar cualquier cosa que se te ocurra (al menos hasta ahora). Si bien hay muy poca información