19 KiB
Desarrollo hardware
Arduino IDE
Bajamos los paquetes de la página web, descomprimimimos en ~/apps/arduino.
La distribución del IDE incluye ahora un fichero install.sh
que se
encarga de hacer la integración del IDE en los menús de Linux.
Además también incluye un script (arduino-linux-setup.sh
) para crear
las devrules y que además desinstala el driver modemmanager y crea
grupos nuevos en el sistema si no existen.
No tengo claro lo de desinstalar el driver así que creamos las devrules a mano mirando por el fichero.
Hay que añadir nuestro usuario a los grupos tty, dialout, uucp y plugdev (no hay que crear grupos nuevos, ya tenemos todos en el sistema)
sudo gpasswd --add <usrname> tty
sudo gpasswd --add <usrname> dialout
sudo gpasswd --add <usrname> uucp
sudo gpasswd --add <usrname> plugdev
Creamos los siguientes ficheros en el directorio /etc/udev/rules.d
Fichero 90-extraacl.rules
mete mi usario en el fichero de reglas (¬_¬)
# Setting serial port rules
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="salvari"
KERNEL=="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="salvari"
Fichero 98-openocd.rules
# Adding Arduino M0/M0 Pro, Primo UDEV Rules for CMSIS-DAP port
ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
#Please keep this list sorted by VID:PID
#CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"
LABEL="openocd_rules_end"
Fichero avrisp.rules
# Adding AVRisp UDEV rules
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"
# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="660", GROUP="dialout"
LABEL="avrisp_end"
Fichero 40-defuse.rules
:
# Adding STM32 bootloader mode UDEV rules
# Example udev rules (usually placed in /etc/udev/rules.d)
# Makes STM32 DfuSe device writeable for the "plugdev" group
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev", TAG+="uaccess"
Fichero 99-arduino-101.rules
:
# Arduino 101 in DFU Mode
SUBSYSTEM=="tty", ENV{ID_REVISION}=="8087", ENV{ID_MODEL_ID}=="0ab6", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_CANDIDATE}="0"
SUBSYSTEM=="usb", ATTR{idVendor}=="8087", ATTR{idProduct}=="0aba", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
Yo añado el fichero 99-arduino.rules
que se encarga de inhibir el
modemmanager para que no capture al CircuitPlayground Express:
# for arduino brand, stop ModemManager grabbing port
ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
# for sparkfun brand, stop ModemManager grabbing port
ATTRS{idVendor}=="1b4f", ENV{ID_MM_DEVICE_IGNORE}="1"
Una vez añadidos todos los ficheros de reglas recargamos con:
udevadm control --reload-rules && udevadm trigger
Añadir soporte para Feather M0
Arrancamos el IDE Arduino y en la opción de Preferences::Aditional
Boar Managers URLs añadimos la dirección
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
,
si tenemos otras URL, simplemente añadimos esta separada por una coma.
Ahora desde el Board Manager instalamos:
- Arduino SAMD Boards
- Adafruit SAMD Boards
Añadir soporte para Circuit Playground Express
Bastaría con instalar Arduino SAMD Boards
Añadir soporte para STM32
Tenemos varias URL posibles para configurar en las preferencias del IDE Arduino:
- http://dan.drown.org/stm32duino/package_STM32duino_index.json (recomendada por Tutoelectro)
- https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json (parece la oficial)
He optado por añadir los dos ficheros json al IDE, la oficial tiene buena pinta pero parece que no soporta st-link. Con la otra podremos usarlo sin problemas.
Instalamos la biblioteca stm32 cores
que corresponde al origen de
software oficial y la biblioteca STM32F1xx/GD32F1xx
, esta última es
la que nos dará soporte explícito para el st-link
Lo probamos con el Blink y funciona perfectamente con las opciones de la Figura 1
Añadir soporte para ESP32 y ESP8266
Añadimos las URL:
- https://dl.espressif.com/dl/package_esp32_index.json
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
Añadimos la librería:
- ESP32 (de espressif)
Añadir biblioteca de soporte para Makeblock
Nota: Pendiente de instalar
Clonamos el repo oficial en github.
Una vez que descarguemos las librerias es necesario copiar el
directorio Makeblock-Libraries/makeblock
en nuestro directorio de
bibliotecas de Arduino. En mi caso ~/Arduino/libraries/
.
Una vez instaladas las bibliotecas es necesario reiniciar el IDE Arduino si estaba arrancado. Podemos ver si se ha instalado correctamente simplemente echando un ojo al menú de ejemplos en el IDE, tendríamos que ver los ejemplos de Makeblock.
Un detalle importante para programar el Auriga-Me es necesario seleccionar el micro Arduino Mega 2560 en el IDE Arduino.
Pinguino IDE
Nota: Pendiente de instalar
Tenemos el paquete de instalación disponible en su página web
Ejecutamos el programa de instalación. El programa descargará los paquetes Debian necesarios para dejar el IDE y los compiladores instalados.
Al acabar la instalación he tenido que crear el directorio ~/Pinguino/v11, parece que hay algún problema con el programa de instalación y no lo crea automáticamente.
El programa queda correctamente instalado en /opt y arranca correctamente, habrá que probarlo con los micros.
stm32 cubeide
Nos bajamos el instalador genérico. Tendremos que:
- aceptar un montón de acuerdos de licencias
- indicarle un directorio de instalación (en mi caso `~/apps/st/st/stm32cubeide_1.4.0)
- darle la password de root para instalar ficheros de udev, concretamente:
- udev/rules.d/49-stlinkv1.rules
- udev/rules.d/49-stlinkv2-1.rules
- udev/rules.d/49-stlinkv2.rules
- udev/rules.d/49-stlinkv3.rules
- udev/rules.d/99-jlink.rules
esp-idf
Instalamos las dependencias (cmake ya lo tenemos instalado)
NOTA: No es necesario instalar los paquetes de python que nos especifican en las instrucciones de instalación del esp-idf, se instalarán automáticamente en el siguiente paso.
sudo apt-get install gperf cmake ninja-build ccache libffi-dev libssl-dev
Ahora creamos un directorio para nuestro tool-chain:
mkdir ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf
También es necesario que nuestro usuario pertenezca al grupo
dialout
, pero eso ya deberíamos tenerlo hecho de antes.
Una vez clonado el repo ejecutamos el script de instalación
cd ~/esp/esp-idf
./install.sh
Este script nos va a dejar instaladas todas las herramientas
necesarias en el directorio ~/.expressif
Nota: para que funcione correctamente en Linux Mint es necesario
que el script tools/idf_tools.py
apunte al python3 de nuestro
sistema. Basta con editar la primera linea shebang del script.
Estas son las bibliotecas que deja instaladas:
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
Para empezar a trabajar bastará con hacer un source del fichero ~/apps/esp/esp-idf/export.sh
:
. ~/apps/esp/esp-idf/export.sh
KiCAD
En la página web del proyecto nos recomiendan el ppa a usar para instalar la última versión estable:
sudo add-apt-repository --yes ppa:kicad/kicad-5.1-releases
sudo apt-get update
sudo apt install kicad
Paciencia, el paquete kicad-packages3d
tarda un buen rato en descargarse.
Algunas librerías alternativas:
- Freetronics una libreria que no solo incluye Shield para Arduino sino una completa colección de componentes que nos permitirá hacer proyectos completos. Freetronics es una especie de BricoGeek australiano, publica tutoriales, vende componentes, y al parecer mantiene una biblioteca para KiCAD. La biblioteca de Freetronics se mantiene en un repo de github. Lo suyo es incorporarla a cada proyecto, por que si la actualizas se pueden romper los proyectos que estes haciendo.
- eklablog Esta biblioteca de componentes está incluida en el github de KiCAD, así que teoricamente no habría que instalarla en nuestro disco duro.
Actualizar a KiCAD 6.0
Hacemos un sudo apt purge
de todos los paquetes del antiguo KiCAD. Desactivamos el antiguo repo y ejecutamos:
sudo add-apt-repository --yes ppa:kicad/kicad-6.0-releases
sudo apt update
sudo apt install --install-recommends kicad
# If you want demo projects
# sudo apt install kicad-demos
No hay demos
de momento en el nuevo KiCAD 6.0
Wireviz
Una herramienta para documentar cableados de proyectos. Es una aplicación Python que usa Graphviz, lo he instalado con pipx
.
pyenv global ve_sys
pipx install wireviz
pyenv global system
Analizador lógico
Mi analizador es un OpenBench de Seedstudio, aquí hay mas info
Sigrok
Instalamos Sigrok, simplemente desde los repos de Debian:
sudo aptitude install sigrok
Al instalar Sigrok instalamos también Pulseview.
Si al conectar el analizador, echamos un ojo al fichero syslog vemos que al conectarlo se mapea en un puerto tty.
Si arrancamos Pulseview (nuestro usuario tiene que estar incluido en el grupo dialout), en la opción File::Connect to device, escogemos la opción Openbench y le pasamos el puerto. Al pulsar la opción Scan for devices reconoce el analizador correctamente como un Sump Logic Analyzer.
Sump logic analyzer
Este es el software recomendado para usar con el analizador.
Descargamos el paquete de la página del proyecto, o más concretamente de esta página y descomprimimos en ~/apps.
Instalamos las dependencias:
sudo apt install librxtx-java
Editamos el fichero ~/apps/Logic Analyzer/client/run.sh y lo dejamos así:
#!/bin/bash
# java -jar analyzer.jar $*
java -cp /usr/share/java/RXTXcomm.jar:analyzer.jar org.sump.analyzer.Loader
Y ya funciona.
OLS
Nota: Pendiente de instalar
IceStudio
Instalamos dependencias con sudo apt install xclip
Bajamos el AppImage desde el github de
IceStudio y lo dejamos en
~/apps/icestudio
PlatformIO
VS Code
Añadimos el origen de software:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
E instalamos
sudo apt update
sudo apt install code # alternativamente code-insiders (es como la versión beta, se pueden instalar los dos)
Ahora
- lanzamos el editor
- abrimos el gestor de extensiones
- buscamos el platformio ide
- instalamos
Seguimos las instrucciones de aqui
Incluir platform.io CLI en el PATH
Esto es una malísima idea, NO LO HAGAS
Las instrucciones indican que hagamos lo siguiente para usar Platformio desde linea de comandos pero no es conveniente hacerlo.
Modificamos el fichero ~/.profile
añadiendo las siguientes lineas:
if [ -d "$HOME/.platformio/penv/bin"] ; then
PATH="$PATH:$HOME/.platformio/penv/bin"
fi
Si quieres usar Platformio desde linea de comandos, es mejor activar
manualmente el entorno virtual con source ~/.platformio/penv/bin/activate
vscodium
wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium.gpg
echo 'deb https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list
sudo apt update && sudo apt install codium
Editor Atom
NOTA: Parece que antes recomendaban instalar Atom para disponer del Platformio CLI, ahora en cambio recomiendan VS Code.
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
sudo apt update
sudo apt install atom
RepRap
OpenScad
El OpenSCAD está disponible en los orígenes de software, así que sudo apt install openscad
.
Slic3r
Descargamos la estable desde la página web y
como de costumbre descomprimimos en ~/apps
y creamos un lanzador con
MenuLibre
Slic3r Prusa Edition
Una nueva versión del clásico Slic3r con muchas mejoras. Descargamos
la appimage desde la página
web y ya sabeis,
descomprimir en ~/apps
y dar permisos de ejecución.
ideaMaker
Una aplicación más para generar gcode con muy buena pinta, tenemos el paquete deb disponible en su página web. Instalamos con el gestor de software.
Ultimaker Cura
Descargamos el AppImage desde la página web
Pronterface
Seguimos las instrucciones para Ubuntu Focal:
Instalamos las dependencias: sudo apt install libsdl2-dev
Clonamos el repo:
cd ~/apps
git clone https://github.com/kliment/Printrun.git
cd Printrun
mkvirtualenv -p /usr/bin/python3 printrun
python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
pip install -r requirements.txt
# sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
Y ya lo tenemos todo listo para ejecutar.
Cortadora de vinilos
Inkcut
Instalado en un entorno virtual:
mkvirtualenv -p `which python3` inkcut
sudo apt install libxml2-dev libxslt-dev libcups2-dev
pip install PyQt5
pip install inkcut
Plugin para inkscape
Instalamos dependencias:
pip install python-usb
Instalamos el fichero .deb
desde la web
https://github.com/fablabnbg/inkscape-silhouette/releases
Drone
qgroundcontrol
Descargamos el appimage
missionplanner
Para usar Mission Planner en Linux Mint se recomienda instalar los paquetes:
sudo apt install mono-complete festival
Descargamos el MissionPlanner desde aquí
Una vez descomprimido el zip
ejecutamos: mono MissionPlanner.exe
node-red
Para instalar node-red en linux necesitamos instalar primero
node.js
. Hay varias formas de instalar node.js
, yo voy a optar por
instalar nvm
que es el node version manager.
Para ello ejecutamos el siguiente comando (la versión actual de nvm
es la 0.37.0)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
El script de instalación añade las siguientes lineas al fichero
~/.bashrc
, nosotros las movemos al fichero ~/.profile
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Para comprobar la instalación usamos command -v nvm
que nos
devolverá nvm
. which
no funciona en este caso por que es un script
para aplicarle source
Instalación de node.js
Ahora que tenemos nvm
instalado, ya podemos instalar fácilmente la versión o versiones que queramos de node.js
nvm ls-remote # para listar las versiones disponibles
nvm install node # instala la última versión disponible
Instalación de mosquitto
mosquitto
es un mqtt broker muy sencillo y completo, aunque no es
capaz de aguantar cargas grandes, para aprender es perfecto.
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt install mosquitto mosquitto-clients
Con esto queda el servicio instalado y funcionando (scs mosquitto
o
systemctl status mosquitto
)
Si queremos el servicio parado para arrancarlo nosotros manualmente:
scsp mosquitto.service
scd mosquitto.service
Y sin alias sería:
sudo systemctl stop mosquitto.service
sudo systemctl disable mosquitto.service
Para arrancarlo cuando lo necesitemos le damos un start con scst mosquitto.service
o sudo systemctl start mosquitto.service
Instalación de Influxdb
Seguimos el método para ubuntu:
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
#source /etc/lsb-release
DISTRIB_ID=ubuntu
DISTRIB_CODENAME=focal
echo "deb https://repos.influxdata.com/${DISTRIB_ID} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt update
apt install influxdb
apt install telegraf
Instalación de node-red
Una vez instalado el node.js
instalar el node-red
es muy fácil
nvm use node
npm install -g --unsafe-perm node-red