Microprocesadores: apuntes

arduinos

Notas conectando distintos procesadores al portátil y al IDE Arduino

Troubleshooting

Prueba a parar el infame ModemManager:

1
sudo systemctl stop ModemManager

attiny

Es necesario instalar libusb-0.1-4 en nuestro S.O.

1
sudo apt install libusb-0.1-4

También debemos crear el fichero /etc/udev/rules.d/49-digispark.rules con el siguiente contenido:

1
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0753", MODE="0660", GROUP="dialout"

Una vez hecho esto lo attiny funcionan correctamente, pero son peculiares: hay que lanzar el download desde el arduino IDE con el dispositivo desconectado y conectarlo al puerto usb cuando nos lo indique el IDE.

Configuración en IDE Arduino

  • Board: Digispark (Default - 16.5mhz)
  • Port: No creo que importe
  • Programmer: Micronucleous

ch340/ch341

Añadimos además una linea al fichero 99-arduino.rules que queda así:

1
2
3
4
5
6
7
8
# 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"
# for ardupilot brand, stop ModemManager grabbing port
ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
# for ch401, stop ModemManager grabbing port
ATTRS{idVendor}=="1a86", ENV{ID_MM_DEVICE_IGNORE}="1"

Estas reglas como indican los comentarios evitan que ModemManager capture estas marcas de dispositivos.

Arduino Nano con ch341

  • Board: Arduino Nano
  • Processor: atmega168
  • Port: El que toque (ttyUSBn)
  • Programmer: None

Arduino Pro mini

Hay que usar FTDI adapter, con el mio el cable va plano.

Pin Adap. Pin micro
3.3v No usado
GND GND
VBUS VCC
TXD RXI
RXD TXO
DTR DTR
  • Board: Arduino Pro or Pro mini
  • Processor: atmega328P 5V 16mhz
  • Port: El que toque (ttyUSBn)
  • Programmer: None

/images/microproc/arduinos_a.jpg

Arduino IDE

Orígenes de bibliotecas configurados en el IDE Arduino

1
2
3
4
5
6
7
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
http://dan.drown.org/stm32duino/package_STM32duino_index.json
https://dl.espressif.com/dl/package_esp32_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json
http://digistump.com/package_digistump_index.json
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

ESP8266

ESP8266 Arduino IDE

Seguimos esta página a ver a donde llegamos.

Añadimos este origen en el IDE Arduino: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Works!! al menos el blink

La tarjeta que tenemos equipa un ESP-12E

  • Board: NodeMCU 1.0 (ESP-12E Module)
  • Port: El que toque (ttyUSBn)

Wemos D1 Lite

Wemos D1 Lite en Arduino IDE
  • Board: LOLIN(Wemos) D1 mini Lite (con mi placa)
  • Port: El que toque (ttyUSBn)
  • Resto de parámetros por defecto

Funciona sin necesidad de virtualenv ni nada (cargado WifiScan)

Probas

Vamos a echar un ojo al código que nos propone Andreas Spiess en este video

Nos descargamos el repo de ejemplos de aqui y los programas corregidos por el señor Spiess de aqui

Aunque tampoco es que consigamos gran cosa mirando esto.

Vamos a instalar la Biblioteca para el sensor SHT30 descargando de el github

Y con este programilla funciona:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <WEMOS_SHT3X.h>

SHT3X sht30(0x45);

void setup() {

  Serial.begin(115200);

}

void loop() {

  if(sht30.get()==0){
    Serial.print("Temperature in Celsius : ");
    Serial.println(sht30.cTemp);
    Serial.print("Temperature in Fahrenheit : ");
    Serial.println(sht30.fTemp);
    Serial.print("Relative Humidity : ");
    Serial.println(sht30.humidity);
    Serial.println();
  }
  else
  {
    Serial.println("Error!");
  }
  delay(1000);

}

Para probar el OLED instalamos la librería Adafruit SSD 1306 Wemos mini OLED (de Adafruit y mcauser) también necesitamos la Adafruit GFX

NO FUNCIONA (creo que me he cargado el OLED)

Biblioteca para MQTT en ESP8266 https://github.com/knolleary/pubsubclient

ESP32

ESP32 Arduino IDE

Mi placa funciona en el IDE Arduino:

  • Arrancar el IDE desde el virtualenv de PlatformIO (el IDE Arduino necesita pyserial instalado)
  • Board: ESP32 Dev Module
  • El resto por defecto

Probar con esto:

TTGO T4

  • Instalamos la librería TFT_eSPI

Aparentemente hay que usar el ‘ESP32 Dev Module’ en el IDE Arduino

Andreas Spies

Mas cosas:

ESP32-C3

Para el Arduino IDE instalamos las bibliotecas latest siguiendo las instrucciones de este enlace

Basicamente:

1
2
3
4
5
mkdir -p ~/Arduino/hardware/espressif && \
cd ~/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32/tools && \
python3 get.py

Reiniciamos el Arduino IDE si estaba arrancado y en el menú de Boards veremos la entrada ESP32 Arduino (in sketchbook) con las últimas versiones de las tarjetas.

Actualizar ESP32 Arduino (in sketchbook)
Es de suponer que estas bibliotecas se actualizan via git,

STM32

PlatformIO

Hacemos la instalación de Platformio a través de VS Code como detallamos en este documento.

udev rules

En mi ordenador todas las pruebas con distintos micros han funcionado hasta ahora sin problemas con los udev rules que tenía configurados. Pero desde el propio Platformio recomiendan instalar a mayores el fichero 99-platformio-udev.rules

Para recargar las udev rules: udevadm control --reload-rules && udevadm trigger

Por defecto deja los proyectos en ~/Documents/PlatformIO/Projects

Probado con un Arduino Nano y funciona a la primera con VsCode:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:nanoatmega168]
platform = atmelavr
board = nanoatmega168
framework = arduino

ESP32

Framework ‘arduino’

Creamos un nuevo proyecto con

1
2
3
4
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino

Si es la primera vez que usas el framework (arduino en este caso) tardará un ratillo en descargarlo de internet.

Framework ‘ESP-IDF’

Creamos un nuevo proyecto con:

1
2
3
4
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidf

El código del blink:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <driver/gpio.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>

#define LED_PIN 2

void led_blink(void *pvParams) {
    gpio_pad_select_gpio(LED_PIN);
    gpio_set_direction (LED_PIN,GPIO_MODE_OUTPUT);
    while (1) {
        gpio_set_level(LED_PIN,0);
        vTaskDelay(1000/portTICK_RATE_MS);
        gpio_set_level(LED_PIN,1);
        vTaskDelay(1000/portTICK_RATE_MS);
    }
}

void app_main() {
    xTaskCreate(&led_blink,"LED_BLINK",512,NULL,5,NULL);
}

Referencias

Micropython

Instalación del editor Thonny

Para poder usar la biblioteca Tkinter en cualquier entorno virtual parece que tenemos que tener instalado el paquete python3-tk en nuestro sistema.

En principio nos dicen que Thonny viene con Python 3.7 incluido, pero para Linux no parece que traiga ningún Python. Thonny arrancará usando el Python por defecto del entorno virtual que creemos, pero nos dejará seleccionar otras versiones si las ve disponibles. De momento creamos el entorno virtual para Thonny con la última versión disponible (en pyenv) de Python 3.7

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo apt install python3-tk            # Asegurate de tener esto instalado

pyenv install 3.7.13                   # Instalamos el último python 3.7
pyenv virtualenv 3.7.13 ve_thonny      # creamos el entorno virtual

mkdir ~/work/thonny                    # creamos un directorio de trabajo
cd ~/work/thonny
pyenv local ve_thony                   # asignamos un ve al directorio
pip install thonny                     # instalamos thonny
thonny                                 # y lo arrancamos

MicroPython con las Raspberry Pi Pico

Para instalar el MicroPython en nuestra Pico necesitamos que se monte como un dispositivo de almacenamiento externo. Si viene directa de fábrica es el comportamiento por defecto, de lo contrario tenemos que:

  • Desconectar el USB de la Pico del ordenador
  • Con el USB desconectado pulsamos el boton de Boot Select en la Pico y sin soltarlo la conectamos por USB al ordenador
  • Mantenemos el botón pulsado tres segundos y soltamos, deberíamos ver la Pico montada como almacenamiento externo

Ahora basta con descargar el fichero UF2 de MicroPython desde la página oficial y dejar una copia en el sistema de ficheros de la Pico, en cuanto tenga el fichero descargado se reiniciará y ejecutará el MicroPython

Una vez tengamos la Pico conectada y ejecutando el Python podemos usar el editor Thonny para conectarnos a ella, basta con arrancar el edito y en la opcion Run::Select Interpreter escoger la opción MicroPython (Raspberry Pi Pico), con eso ya estaremo conectados al interprete de la Pico y podremos ejecutar programas (Hay que salvarlos en la Pico, el editor te dejará escoger donde quieres salvarlos)

T-Pico C3

Experimentos con el ESP32

Conversores usb ttl

CP2102 5PIN

  1. tamaño de PCB: 26,5mm * 15,6mm

  2. PCB Color: rojo

  3. Peso: 4g

  4. Uso del nuevo chip CP2102

  5. Con fusible reajustable. En el caso de cortocircuito accidental puede proteger eficazmente su dispositivo y el puerto USB del ordenador para descargar

  6. Con tres ledes: Indicador de potencia, recepción de datos del indicador, indicador de transmisión de datos, estado del trabajo de un vistazo

  7. 3,3 V y 5V con dos salidas de potencia

  8. Todos los pines de plomo útiles

  9. Con la salida de señal de reinicio puede ser directamente Pro mini y otra tarjeta Arduino para descargar!

  10. Sistemas operativos compatibles:

    • Windows 98 / Me / 2000 / XP / 7
    • MAC OS-9
    • MAC OS
    • X-Windows CE
    • Linux 2,40 o posterior

PL2303HX

Características:

  • Controlador importado RS232 TTL, que puede estabilizar el flash con alta velocidad
  • Fusible de autorecuperación de 500mA para protección
  • Dos indicadores de transmisión de datos pueden monitorizar el estado de la transferencia de datos en tiempo real
  • Reserve interfaz de pin de 3,3 V y 5V, fácil para el DDWRT de diferentes sistemas de voltaje que necesitan energía
  • La placa entera está recubierta por una manga termoretráctil transparente de alta calidad, haciendo que la PCB esté aislada desde el exterior,
  • Para que la tabla no se queme con Un corte corto de material.
  • Paquete electrostático, asegura que la placa no se dañará antes de su uso
  • Apoyo WIN7 sistema

Especificaciones:

  • Dimensión: about50x15x7mm
  • Peso neto: 5g
  • Peso del paquete: 15g
  • Color: azul el pin con muchísimas patitas

USB a TTL CH340G

Características:

  • USB incorporado al chip de transferencia TTL.
  • Diseñado para ser utilizado para proyectos electrónicos USB a TTL.
  • Salida de interfaz TTL, fácil de conectar a su MCU.
  • LED de estado
  • Salida de potencia Dual de 3,3 V y 5V, funciona con dispositivos de 3,3v y 5v.
  • Tamaño: 55mm * 16mm
  • ¿Servidor 2008/Win7/Win8 32 bits / 64 bits?
  1. soporte de WINDOWS 98/ME/2000/XP/Server 2003/VISTA/
  2. 3 V3 y 5V por una selección de riesgo de cortocircuito;
  3. No solo tiene led de alimentación PWR, también hay indicador TXD y RXD, si el producto es fácil de aprender e intuitivo de trabajar en la ausencia delinstrumento en la caja;
  4. pin amarillo de alta calidad, pin duradero que el mercado negro, hermoso;
  5. Nuevos chips CH340G originales, los chips se recomiendan USB oficial a los chips TTL no aparecerán debido a diferentes controladores/diferentes ordenadores como resultado de incompatibilidades.

CH340/módulo interruptor USB TTL/Transferencia USB RS232/sobre PL2303/ downloader/ 9 cepillo Junta STC oficial descargar chip Perfectamente compatible con todas las Series MCU no será debido a los diferentes controladores que conduzcan a problemas como PL2303 no puede descargar el programa. Ultra-estable

Referencias

Cursos:

Referencias Generales