You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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.shque 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:

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

Opciones Arduino para STM32 const-link{ #figura_1 width=30% }

Añadir soporte para ESP32 y ESP8266

Añadimos las URL:

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


Página oficial

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

  1. lanzamos el editor
  2. abrimos el gestor de extensiones
  3. buscamos el platformio ide
  4. 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í

Descripción de la instalación

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