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.
575 lines
17 KiB
575 lines
17 KiB
# Desarrollo hardware
|
|
|
|
## Arduino IDE
|
|
|
|
Bajamos los paquetes de la página [web](https://www.arduino.cc),
|
|
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 comentamos la
|
|
sección que borra el _modemmanager_ del fichero
|
|
`arduino-linux-setup.sh` y lo ejecutamos para que instale el resto.
|
|
|
|
Yo añado el fichero 99-arduino.rules que se encarga de inhibir el modemmanager para que no capture al CircuitPlayground Express:
|
|
|
|
```bash
|
|
# 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"
|
|
```
|
|
|
|
Después de añadir ficheros de reglas podemos recargar las reglas ejecutando:
|
|
|
|
`udevadm control --reload-rules && udevadm trigger`
|
|
|
|
Tenemos que crear los ficheros `.desktop`.
|
|
|
|
### Arduino IDE 2
|
|
|
|
Descargamos el fichero _appmimage_ de la página de Arduino y creamos el fichero `.desktop`.
|
|
|
|
|
|
### Añadir soporte para _Feather M0_
|
|
|
|
Arrancamos el IDE Arduino y en la opción de _Preferences::Aditional Board 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:
|
|
|
|
* <https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json> (esta deber ser la oficial)
|
|
|
|
Pero la oficial no da soporte para usar el _st-link_, necesitamos añadir alguna más.
|
|
|
|
* <http://dan.drown.org/stm32duino/package_STM32duino_index.json> (recomendada por Tutoelectro, nos da soporte para el st-link)
|
|
|
|
---------------------------------------------
|
|
|
|
__NOTA__: Hasta donde yo se la de arriba es la única URL que permite usar el st-link
|
|
|
|
---------------------------------------------
|
|
|
|
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](#figura_1)
|
|
|
|
![Opciones Arduino para STM32 con st-link](src/img/stm32_arduino_opts.jpg "Menu Arduino desplegado"){#figura_1 width=30% }
|
|
|
|
### Añadir soporte para ESP32 y ESP8266
|
|
|
|
Añadimos las URL:
|
|
|
|
* <https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json> (soporte para ESP32)
|
|
* <http://arduino.esp8266.com/stable/package_esp8266com_index.json> (soporte para ESP8266)
|
|
|
|
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](https://github.com/Makeblock-official/Makeblock-Libraries).
|
|
|
|
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](http://pinguino.cc/download.php)
|
|
|
|
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
|
|
|
|
------------------------------------------
|
|
|
|
__MUY IMPORTANTE__ es más fácil instalar el esp-idf a través de _Platformio_ pero dejo las instrucciones de instalación que usé en su dia como referencia.
|
|
|
|
------------------------------------------
|
|
|
|
|
|
|
|
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.
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
~~~~bash
|
|
sudo apt-get install gperf cmake ninja-build ccache libffi-dev libssl-dev
|
|
~~~~
|
|
|
|
Ahora creamos un directorio para nuestro _tool-chain_:
|
|
|
|
~~~~bash
|
|
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
|
|
|
|
~~~~bash
|
|
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:
|
|
|
|
~~~~bash
|
|
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`:
|
|
|
|
~~~~bash
|
|
. ~/apps/esp/esp-idf/export.sh
|
|
~~~~
|
|
|
|
## KiCAD
|
|
|
|
En la [página web del proyecto](http://kicad-pcb.org/download/linux-mint/) 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](https://github.com/freetronics/freetronics_kicad_library)
|
|
una libreria que no solo incluye Shield para Arduino sino una
|
|
completa colección de componentes que nos permitirá hacer proyectos
|
|
completos. [Freetronics](http://www.freetronics.com) 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](http://meta-blog.eklablog.com/kicad-librairie-arduino-pretty-p930786)
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
### Actualizar a KiCAD 7
|
|
|
|
```bash
|
|
sudo add-apt-repository --yes ppa:kicad/kicad-7.0-releases
|
|
sudo apt update
|
|
sudo apt install --install-recommends kicad
|
|
```
|
|
|
|
|
|
## Wireviz
|
|
|
|
Una herramienta para documentar cableados de proyectos. Es una aplicación _Python_ que usa _Graphviz_, lo he instalado con `pipx`.
|
|
|
|
```bash
|
|
pyenv global ve_sys
|
|
pipx install wireviz
|
|
pyenv global system
|
|
```
|
|
|
|
## Analizador lógico
|
|
|
|
Mi analizador es un OpenBench de
|
|
Seedstudio,
|
|
[aquí hay mas info](http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer)
|
|
|
|
### Sigrok
|
|
|
|
Instalamos __Sigrok__, simplemente desde los repos de Debian:
|
|
|
|
~~~~bash
|
|
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](https://www.sump.org), o más concretamente de [esta
|
|
página](https://www.sump.org/projects/analyzer/) y descomprimimos en
|
|
_~/apps_.
|
|
|
|
Instalamos las dependencias:
|
|
|
|
~~~~bash
|
|
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](https://www.lxtreme.nl/ols/)
|
|
|
|
## IceStudio
|
|
|
|
Instalamos dependencias con `sudo apt install xclip`
|
|
|
|
Bajamos el _AppImage_ desde el [github de
|
|
IceStudio](https://github.com/FPGAwars/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](https://docs.platformio.org/en/latest/ide/vscode.html#quick-start)
|
|
|
|
### 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
|
|
|
|
~~~~bash
|
|
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
|
|
~~~~
|
|
|
|
|
|
## 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](https://slic3r.org) 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](https://www.prusa3d.com/slic3r-prusa-edition/) 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](https://www.raise3d.com/pages/ideamaker). Instalamos con el
|
|
gestor de software.
|
|
|
|
### Ultimaker Cura
|
|
|
|
Descargamos el _AppImage_ desde la [página
|
|
web](https://github.com/Ultimaker/Cura/releases)
|
|
|
|
### 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:
|
|
|
|
~~~~bash
|
|
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:
|
|
|
|
~~~~bash
|
|
pip install python-usb
|
|
~~~~
|
|
|
|
Instalamos el fichero `.deb` desde la web
|
|
<https://github.com/fablabnbg/inkscape-silhouette/releases>
|
|
|
|
|
|
## Drone
|
|
|
|
### qgroundcontrol
|
|
|
|
Descargamos [el appimage](https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage)
|
|
|
|
|
|
### missionplanner
|
|
|
|
Para usar *Mission Planner* en Linux Mint se recomienda instalar los paquetes:
|
|
|
|
~~~~bash
|
|
sudo apt install mono-complete festival
|
|
~~~~
|
|
|
|
Descargamos el MissionPlanner desde [aquí](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.zip)
|
|
|
|
[Descripción de la instalación](https://www.rcgroups.com/forums/showthread.php?2179591-Installing-MissionPlanner-1-3-X-on-Ubuntu-17-04)
|
|
|
|
|
|
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 **n**ode **v**ersion **m**anager.
|
|
|
|
Para ello ejecutamos el siguiente comando (la versión actual de `nvm` es la 0.37.0)
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
scsp mosquitto.service
|
|
scd mosquitto.service
|
|
```
|
|
|
|
Y sin alias sería:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
nvm use node
|
|
npm install -g --unsafe-perm node-red
|
|
```
|