¿Dónde pueden los EE usar Python en su día a día? Aquí hay un vistazo a las aplicaciones donde sobresale Python.
En el artículo anterior, planteamos la pregunta "¿Por qué un ingeniero debería molestarse en aprender Python?"
Ahora, analicemos cómo Python puede ser relevante en el trabajo de un ingeniero eléctrico.
El ingeniero de navajas suizas
Las EE no solo se ocupan del diseño de circuitos. Nos enfrentamos a muchas otras tareas de las que tenemos que ocuparnos también. Hay programación de firmware, depuración, pruebas de hardware y software de prototipos, pruebas de muestras de producción, trabajo en control de calidad y cantidades aparentemente interminables de recopilación, evaluación y análisis de datos.
¿Cómo puede Python ayudar con todo esto?
Entra en Python, el lenguaje de la navaja suiza.
Python es extremadamente bueno en ser un lenguaje de programación de uso múltiple. Los lenguajes como HDL (lenguajes de descripción de hardware como VHDL, Verilog) hacen una cosa específica como sintetizar en hardware. C / C ++ ejecuta Lean y se adapta muy bien a la programación integrada. Pero tener un lenguaje de navaja suiza en su cinturón de herramientas puede ayudar con tareas de propósito general que a menudo conforman la mayoría de las cosas que manejamos.
Por lo general, estas tareas serían cosas como pruebas, recopilación de datos o automatización, que constituyen una gran parte del tiempo de un ingeniero. En mi experiencia, el diseño solo toma alrededor del 5-10% del tiempo de un ingeniero. El 90% aproximadamente lo consumen cosas como investigar, probar prototipos, depurar, crear plantillas y programas de prueba, pruebas de producción, control de calidad y, por supuesto, la temida palabra "D" … documentación.
Muchas de las cosas que vienen antes del diseño (como investigar partes e implementaciones y crear arquitecturas de sistemas) no pueden ser automatizadas. Esas son las tareas que nos hacen los ingenieros creativos, artesanales que somos. Pero, una vez que se implementa el diseño (es decir, la parte divertida), hay una gran cantidad de tareas que aún deben ser manejadas.
Estas son algunas de esas tareas de tipo monótono y cómo Python puede ayudar a lograrlas de manera eficiente.
Procesamiento de archivos para la presentación de archivos Gerber
Una de las aplicaciones que más a menudo necesitan automatización es el procesamiento de archivos. Los flujos de trabajo de proceso varían según el software, el proveedor, el cliente, etc. La mayoría de las veces, esto incluye el procesamiento de archivos en algún formato. Mi proveedor de PCB requiere que envíe mis archivos Gerber con extensiones de archivo específicas para que sus trabajadores puedan analizar, verificar y confirmar que cumplen con los requisitos de diseño.
Como mi herramienta de PCB CAD no genera Gerbers en el formato requerido, debo cambiar mis extensiones de archivo cada vez que envío un PCB. No es una tarea enorme, pero ya que recorro muchos diseños y revisiones de diseño cada año, me resulta agotador cambiar las extensiones de archivo Gerber en aproximadamente 10 archivos diferentes cada vez que envío un diseño a la fábrica.
Un ejemplo más importante de procesamiento de archivos es cuando tiene un archivo en un formato (por ejemplo, XML) y un cliente lo requiere en otro (por ejemplo, CSV). Esta es una situación común que normalmente sería un gran dolor de cabeza, si no un showstopper para algunos clientes. Pero al usar algunas bibliotecas y algunos códigos Python simples, es posible cambiar los archivos de texto entre múltiples formatos.
Equipo de prueba de automatización
Como EE, una de las grandes ventajas de usar Python es controlar y automatizar los equipos de prueba. Cada vez es más común encontrar equipos de prueba de bajo costo equipados con salidas USB que puedan recopilar datos y almacenarlos en formatos comunes, como CSV.
Python se creó originalmente para el análisis de texto, por lo que es increíblemente útil tamizar grandes cantidades de datos de texto para extraer información útil. Por ejemplo, uno de mis osciloscopios portátiles que llevo conmigo en el campo es un antiguo osciloscopio digital de almacenamiento Hantek DSO5202P. Es económico y puede generar formas de onda como datos CSV sin procesar.
Osciloscopio de almacenamiento digital Hantek DSO5202P con interfaz USB
Esto significa que realmente puede capturar los datos de alguna forma de onda, analizarlos, procesarlos y trazar la salida. Estos son datos físicos en vivo que ahora puedes jugar dentro de tu computadora y ver cómo se comportan con tus filtros digitales. Mejor aún, puede formatearlo para alimentar a un generador de formas de onda arbitrarias y recrear la forma de onda exacta para probar en un circuito.
La interfaz GPIB en la parte posterior de un multímetro digital Keysight. Imagen de Farnell.
Si está utilizando equipos de prueba que admiten la interfaz GPIB, también puede usar bibliotecas de Python como pyVISA para controlarlos. Solía tener que comprar una configuración de National Instruments para hacer todo eso, limitándola a compañías más grandes que pudieran pagarlo. Ahora, puede automatizar la configuración de un equipo de prueba por el precio de una computadora y un poco de conocimientos de Python.
Una vez que pueda automatizar su equipo de prueba, se sentirá como un mago. Puede configurar pruebas de bucle cerrado como estimular un dispositivo bajo prueba con un generador de forma de onda arbitraria y recopilar datos sobre cómo responde a través de un osciloscopio, multímetro o registrador de datos. Las posibilidades son infinitas.
Frasco, un microframo de Python
Sin embargo, no se limita a la automatización de los equipos de prueba. En estos días, es cada vez más común diseñar productos que se conectan a algún servicio de Internet o se comunican con él a través de una API REST. Mientras desarrolla el hardware y escribe el firmware de prueba, también puede usar Python para configurar un servidor de prueba con una API REST para conectarse.
No necesitas un desarrollador web sofisticado ni aprender otro idioma para esto porque es bastante fácil configurar una API REST utilizando el marco Python / Flask. Puede, literalmente, configurar una API REST personalizada dentro de una hora.
Como ingeniero eléctrico profesional, es probable que esté involucrado en la fabricación en algún momento y la capacidad de automatizar las pruebas para la producción es extremadamente útil. Cuanto más consistentes y exhaustivas sean las pruebas, mejor será para el balance final de la compañía, ya sea que esos ahorros provengan de menos fallas en el campo, menos existencias devueltas o menos daños a la reputación debido al mal control de calidad.
Para mis diseños de circuitos, obtengo plantillas de prueba personalizadas hechas con sondas de lecho de clavos, arnés de cableado y mecanismo de sujeción. Estas plantillas de prueba pueden interconectarse con una placa personalizada como Arduino o Raspberry Pi y controlarse desde una computadora. Mi sistema de prueba de producción estándar consiste en algo como esto con el arnés de cableado conectado a un Arduino que ejecuta el firmware del protocolo Firmata.
Esto me permite comunicarme con Python usando pyFirmata. Puedo configurar cada pin como entrada o salida, verificar el estado de cada pin, registrar todos los datos, generar un número de serie único y emitir un gran mensaje de PASA o FALLO. Cuando los tableros se encuentran en el centro de ensamblaje de fábrica, solo necesito enseñar a una persona cómo ejecutar el script de prueba de Python, esperar el gran PASO o FALLO, y los datos se almacenan automáticamente junto con las estadísticas de esa ejecución de producción.
SQL: lenguaje de gestión de base de datos
Oh, ¿mencioné el almacenamiento? Eso me lleva al tema de las bases de datos. Realmente trabajar con bases de datos es un placer para Python. Viene con SQLite3 que, como su nombre lo indica, es una base de datos liviana basada en un solo archivo.
Si desea que la opción migre su código a diferentes bases de datos, especialmente las basadas en servidores, le recomiendo una biblioteca llamada SQLAlchemy. Esto le permite interactuar con muchas de las bases de datos relacionales populares como SQLite, PostgreSQL y MySQL sin tener que cambiar su código.
Ahora, ¿cómo usaría una EE una base de datos, preguntas?
Bueno, en la configuración de prueba automatizada que mencioné anteriormente, el sistema de prueba publicó un número de serie, así como otros datos como estadísticas, resultados de pruebas y notas misceláneas. Todos estos pueden almacenarse en una base de datos que usted crea, por lo que hay un registro que rastrea el historial de cada placa que se produce. Cuando se devuelve una placa, se puede buscar el número de serie y se puede examinar el historial de la placa. Tal vez se haya devuelto previamente para un RMA o haya fallado una prueba una vez pero se haya pasado en el siguiente intento.
O incluso quizás el amplificador operacional falló en la placa y, cuando realizó una búsqueda simple en su base de datos, descubrió que era la quinta vez que un amplificador operacional específico fallaba en esta ejecución de producción. Este tipo de información mejora la eficiencia de la producción, los resultados y el valor de un ingeniero para una empresa.
Conclusión
Podría seguir y seguir, y eso es realmente porque Python puede abrirte mundos completamente nuevos como ingeniero.
La base para los ingenieros eléctricos sigue siendo el diseño electrónico. Pero, en estos días, cada vez es más difícil vivir puramente en el mundo de la electrónica. También tenemos que escribir firmware, realizar pruebas, recopilar datos, involucrarse con la producción y hacer análisis forense en productos devueltos o fallidos.
Junto con el pan y la mantequilla de la electrónica y C / C ++, el conocimiento de Python puede ayudar a un ingeniero practicante a completar sus habilidades, desde el diseño de circuitos hasta la participación en el ciclo de vida completo del producto.
Únase a nosotros cuando iniciemos esta serie y analice a Python desde el contexto de un ingeniero eléctrico.