Arduino (Español)

Artículos relacionados
AVR
ESP32
Arduino
es una plataforma de prototipos electrónicos de código abierto basada en la flexibilidad, hardware fácil de usar y software. Está destinado a artistas, diseñadores, entusiastas y cualquiera interesado en la creación de objetos o entorno interactivos.
Una vez conectado y configurado el usuario puede realizar tareas de leer/escribir sobre la conexión serial establecida. Algunos ejemplos son la interfaz a través de UART utilizando un
programa de monitoreo serial
, o programando el microcontrolador. Escribir, compilar y cargar tu código es facilitado usando el oficial Arduino IDE, el cual está disponible en los repositorios oficiales. Igualmente el usuario puede usar un compilador y programa preferido para programar el microcontrolador.
Instalación
Instale
arduino-cli
para la CLI oficial.
Instale
arduino-ide-bin
AUR
para la GUI oficial.
Podrías necesitar
cargar
el módulo
cdc-acm
.
Arduino IDE 1.x
La siguiente sección solo aplica a la versión 1.x del IDE. Sin embargo, puede ser posible adaptar algo de esto para el nuevo IDE.
Placas AVR
Para usar placas AVR como la Arduino Uno puedes instalar
arduino-avr-core
AUR
opcionalmente para usar avr-gcc upstream de Arch Linux en vez del viejo avr-core incluido. Si continúas queriendo usar el antiguo arduino-core necesitas
instalar esto en el administrador de placas
. Siempre puedes cambiar entre los diferentes cores en el menú
Tools > Board
.
Pinoccio Scout
Pinoccio Scouts
también puede ser programado usando el Arduino IDE. Las instrucciones pueden ser encontradas
aquí
.
Alternativamente puedes instalar
arduino-pinoccio
AUR
.
Intel Galileo
Para usar las placas Intel Galileo con Arch Linux instale el Arduino IDE y descarga el paquete de las herramientas de Galileo vía
Tools > Board > Board Manager
.
Para arreglar la instalación puedes seguir
este post en GitHub
.
Arduino IDE 1.x o 2.x
Estos pasos deberían ser válidos para ambas versiones del IDE.
Placas AVR
Las placas AVR son instaladas automáticamente por la versión 2.x del IDE sin embargo en las ambas versiones 1.x y 2.x las placas AVR pueden ser manejadas desde el manejador de placas.
SparkFun
Para usar placas SparkFun como la Pro Micro necesitas descargar sus definiciones de placa. Más información
aquí
y
aquí
.
RedBear Duo
Podrías necesitar instalar
perl-archive-zip
u obtendrá un error sobre  crc32 desaparecido.
Configuración
La mayoría de placas Arduino tiene un puerto USB el cual puede ser usado para establecer una conexión serial. Esta conexión serial habilita al usuario para programar la placa. El microcontrolador principal de las mayoría de Arduinos, sin embargo, no tienen una interfaz USB integrada. Por lo tanto, la placa es usualmente equipada con un chip USB a serial entre el microcontrolador principal y el puerto USB.
Para alcanzar la conexión serial como USB, la mayoría de Arduinos genuinos están equipados con otro microcontrolador ATmega (ej: ATmega16U2). Ambos chips registran ellos mismos a través de USB como un dispositivo ACM, y como talm Linux usará el
módulo
cdc_acm
. El Arduino se mostrará entonces como
/dev/ttyACMx
.
Las placas Arduino no genuinas ahorran en la interfaz del chip. Ellas usualmente son equipadas con un WCH CH340x chino o una falsificación de los modelos anteriormente mencionados. El CH340x se presenta como un dispositivo UART propietario a través de USB. Aquí el
módulo
ch341
es usado, haciendo que el Arduino se muestre como
/dev/ttyUSBx
. Este patrón de nombramiento puede ser personalizado por la
modificación de las reglas udev
.
Algunas placas pueden ser equipadas con un microcontrolador principal el cual se presenta como una interfaz USB nativa. Independientemente de si la placa tiene una interfaz de chip dedicado o no, las placas genuinas vendrán de fábrica con un
cargador de arranque
adecuado preinstalado. Tal que los cargadores de arranque automáticamente establezcan una conexión serian USB una vez son conectadas.
Nota
Algunas placas, notablemente las Pro Mini, no presentan USB como todas y deben ser programadas con hardware adicional.
Tip
Puede ser útil monitorear los mensajes del kernel con
dmesg
como la placa está siendo enchufada. Si una conexión correcta ha sido establecida, el puerto asignado puede ser leído en el mismo.
Acceso serial
Para las placas que presentan un UART a través de USB, esto es necesario para habilitar acceso de lectura/escritura a el puerto serial a los usuarios
[1]
. Como es explicado en
Udev#Allowing regular users to use devices
, cree un archivo que contenga:
/etc/udev/rules.d/01-ttyusb.rules
ACTION!="remove", SUBSYSTEMS=="usb-serial", TAG+="uaccess"
Recargue las reglas de udev
y reconecte el dispositivo Arduino. Antes de cargar al Arduino, esté seguro de seleccionar el puerto serial correcto, placa y procesador desde el menú Herramientas en 1.x y la opción Seleccionar placa (localizada en la parte superior del IDE) en 2.x.
Nota
Recuerda mantener cualquier programa de monitoreo serial cerrado durante la carga de código en orden para liberar el puerto serial para el programador.
stty
Preparar:
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Envío de comandos a través de Terminal sin nueva línea después del comando:
# echo -n "Hello World" > /dev/ttyACM0
Nota
Como autoreset en conexión serial está activado por defecto en muchas placas, necesitas desactivar está función si quieres comunicarte directamente con tu placa con el último comando en vez de un emulador de terminal (arduino IDE, screen, picocom...). Si tienes una placa Leonardo, no te preocupes por esto, ya que it no se autoresetea. Si tienes una placa Uno, conecta un capacitor de 10 µF entre los pines RESET y GND. Si tiene otra placa, conecta un resistor de 120 ohms entre los pines RESET y 5V. Vea
https://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection
para más detalles.
Leyendo lo que tu Arduino tiene para decirte:
$ cat /dev/ttyACM0
Arduino-Builder
También puedes compilar sketches de Arduino con la herramienta de línea de comandos
arduino-builder
AUR
. En orden para usar el proporcionado
arduino-avr-core
AUR
con el
avr-gcc
de upstream y
avrdude
necesitas crear un pequeño archivo de configuración:
build.options.json
{
    "fqbn": "archlinux-arduino:avr:uno",
    "hardwareFolders": "/usr/share/arduino/hardware",
    "toolsFolders": "/usr/bin"
}
Compila un sketch con:
$ arduino-builder -build-options-file build.options.json blink.ino
O pasa todas las opciones por línea de comandos:
$ arduino-builder -fqbn archlinux-arduino:avr:uno -hardware /usr/share/arduino/hardware -tools /usr/bin blink.ino
Alternativas al IDE
Arduino-CMake
Usando
Arduino-CMake-Toolchain
y
CMake
puedes construir firmware de Arduino desde la línea de comandos usando multiples sistemas de construcción. CMake te permite generar el sistema de construcción que encaje a lo que necesites, usando las herramientas que te gusten. Esto puede generar cualquier tipo de sistema de construcción, desde Makefiles simples, hasta proyectos completos para Eclipse, Visual Studio, XCode, etc.
Requerimientos:
cmake
,
arduino
,
avr-gcc
,
avr-binutils
,
avr-libc
,
avrdude
.
Makefile
En lugar de usar el IDE de Arduino, puedes usar otro editor y un Makefile.
Crea un directorio para programar tu Arduino y copia el Makefile en él. Puedes obtener una copia del Makefile en
esta plantilla de GitHub
.
Tendrás que modificarlo un poco para que refleje tu configuración. El Makefile es bastante intuitivo. Aquí tienes algunas líneas que podrías tener que editar:
PORT = normalmente /dev/ttyUSBx, donde x es el puerto serie USB al que está conectado tu Arduino.
TARGET = nombre de tu sketch.
ARDUINO = /usr/share/arduino/lib/targets/arduino.
Dependiendo de las funciones de la biblioteca que uses en tu sketch, es posible que tengas que compilar partes de la biblioteca. Para ello, debes editar tus archivos SRC y CXXSRC para incluir las bibliotecas necesarias.
Ahora debería poder
make && make upload
en su placa para ejecutar su boceto.
Vea también
Sitio web oficial
Guía de Inicio IDE v2
https://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/