Escribir bibliotecas para admitir nuestros microcontroladores favoritos es una gran tarea, pero ¿y si ChatGPT pudiera echarnos una mano? El propio Limor «Ladyada» Fried de Adafruit ha encargado a ChatGPT que escriba controladores Arduino en su propio estilo, creando un robot «mini-Limor» para manejar la tarea.
Ladyada dedica mucho tiempo a escribir bibliotecas Arduino y ha producido cientos de bibliotecas para respaldar la impresionante gama de placas de Adafruit (muchas de las cuales aparecen en nuestra mejor página de Grove y Stemma QT). GPT-4 ya ha sido entrenado utilizando muchos de los controladores de Adafruit que se encuentran en GitHub. Estos controladores están escritos en el «estilo Ladyada» (Adafruit_BusIO) y eso significa que puede crear controladores utilizando esta plantilla.
El flujo de trabajo implica muchas referencias a hojas de datos, tablas binarias e inserciones de bits, todo lo cual debe comprenderse y convertirse a código C o Python. Esta tarea no es fácil (créanos, lo hemos probado nosotros mismos). No existe un formato estándar para obtener estos datos. Las hojas de datos pueden ser tremendamente diferentes.
Para «mini-Limor», el flujo de trabajo de Fried implica pedirle a ChatGPT que «[write] una biblioteca arduino con el mismo estilo que ladyada / limor Fried». En el ejemplo, Fried le pide a ChatGPT que cree un controlador para el sensor de infrarrojos y luz ambiental VCNL4020, un sensor basado en I2C. El flujo de trabajo utiliza un complemento de análisis de PDF gratuito (AI PDF) que lee una hoja de datos, extrae nombres de registros, valores, crea tablas de enumeración y texto para comentarios.
Luego, Fried le pide a ChatGPT que cree un archivo esqueleto para el VCNL4020, cuya creación logró parcialmente. Luego Fried le pide que cree los registros, utilizando datos directamente de la hoja de datos. Después de eso, Fried pasa a hacer la biblioteca.
¿Es este un proceso más rápido? Bueno no. Según la publicación del blog de Adafruit, «La cantidad de tiempo que le toma a ChatGPT escribir un controlador es aproximadamente la misma que le tomaría a Ladyada» y el controlador resultante requiere interacción humana para verificar que es válido, como afirma Fried en el video. ChatGPT a veces puede «alucinar» e introducir errores. Dicho esto, libera a Fried para realizar otras tareas.
El trabajo producido se basa en el trabajo anterior de Adafruit, pero Adafruit ha confirmado que cuando se utilice cualquier modelo de lenguaje grande (LLM), se divulgará y se vinculará.
Los buenos controladores forman la base sobre la cual los estudiantes pueden aprender sin volverse demasiado técnicos, especialmente con I2C, SPI y muchos otros protocolos. Si el proceso puede refinarse y automatizarse, podría ayudar a desarrolladores como Adafruit a crear controladores y bibliotecas para muchos de los lenguajes de programación populares. El proceso podría utilizarse para abordar el soporte de software de terceros con la gama de placas Arduino Uno R4. Fried también menciona que este proceso también se puede utilizar con CircuitPython, es decir, la gama de placas Raspberry Pi Pico.
Adafruit tiene una publicación de blog y enlaces a todo el proceso, incluidos los registros de ChatGPT como referencia.