jueves, 10 de agosto de 2017

Módulos con micros de bajo coste

Después de bastante tiempo desconectado del mundillo, el otro día mirando qué había disponible en el mercado me apareció una miriada de opciones nuevas y reducción de precio de las viejas.

Así pues, la situación a día de hoy es la reflejada en la siguiente tabla:



Comparativa de módulos bajo coste
Detalles STM8S103F STM32F103 ATmega328 ATmega32u4 ESP8266 ESP32 OrangePi
Precio 0.66€ 1.75€ 1.60€/2€ 3€ 1.60€/3€ 6€ 12€
Bits 8 bit 32 bit 8 bit 8 bit 32 bit 32 bit 32 bit
Frecuencia 16 MHz 72 MHz 16 MHz 16 MHz 80/160 MHz 2x 160/340 MHz 2x 1.2 GHz
Memoria RAM 1 Kb 20 Kb 2 Kb 2.5 Kb 160 Kb 512 Kb 512 Mb
Memoria FLASH 8 Kb 64 Kb 32 Kb 32 Kb 4 Mb 4 Mb? externa






me aparecieron unos módulos basados en el microcontrolador STM8S103 de ST por menos de 0.7€. Después de indagar un poco al respecto, compré tres unidades y el programador, por menos de 5€ en total.

Ya los tengo en mis manos. Los módulos no son maravillosos a nivel de calidad de soldadura (algo habitual en los china-clones) pero considerando el coste, tampoco se puede pedir mucho más.

STM8 vs ATmega328P / "Arduino uno"

Esta sea quizá la primera pregunta que nos venga a la cabeza, cómo se compara el STM8 con la placa de Arduino típica basada en el ATmega328.

STM8S103F3P6 vs ATmega328P

Lo primero es comparar los dos micros típicos de cada sistema. En ambos casos estamos hablando de micros de 8bits y típicamente 16MHz, aunque en el caso del STM8, lo hace funcionando a 3.3V, mientras que el ATmega típicamente usa 5V.

Comparativa STM8S103 y ATmega328
Detalles ATmega328 STM8S103F
Frecuencia 16MHz ext 16MHz int
Tension 5.0V 3.3V
Puertos SPI/I2C/UART SPI/I2C/UART
ADC 7xMUX 12bit 5xMUX 10bit
Timers 2x8bit 1x16bit 1x8bit 2x16bit
Encapsulado 32 TQFP 10 TSSOP
RAM 2Kbyte 1Kbyte
ROM 32Kbyte 8Kbyte


El STM8 tiene algunas características especialmente interesantes: puertos 'true open drain' que permiten conectar a 5.5V aún con el micro a 3.3V, posibilidad de drenar hasta 20mA en algunos puertos (por defecto serían 4mA), entradas flotantes, salidas rápidas hasta 10MHz...

Programando el STM8S103F3P6 vs ATmega328P

Para todos los que estén acostumbrados a programar en Arduino, programar los STM8 supone un cambio muy importante: no existe la misma comunidad detrás ni es tan abierto, por lo que encontraremos pocas librerías, escasos ejemplos y casi ningún foro dedicado.

Del mismo modo, las herramientas son completamente diferentes, por lo que no podemos utlizar el mismo programa, ni el mismo programador, lo que es otra pega.

Vale la pena el STM8?

Considerando los puntos anteriores, para el usuario medio que únicamente quiere hacer algunos proyectos y no quiere complicarse la vida, probablemente sea mejor utilizar un módulo con ATmega328 como este o este.
Sin embargo, para usuarios avanzados o que quieran hacer tiradas más largas, la diferencia de precio entre los micros puede inclinar la balanza hacia el STM8.

Sin embargo, hay otros motivos por los que personalmente me gusta el STM8:

  1. Es más compacto: no siempre necesitamos tantos pines ni tantos puertos.
  2. Es tan barato que podemos utilizarlo para tareas 'tontas' como reemplazar un NE555.
  3. Es ideal para aprender programación 'correcta': la simplicidad de Arduino proporciona un nivel de abstracción que nos hace olvidarnos de lo que hay debajo, para bien y para mal.
  4. Es un micro que nos podemos encontrar en diferentes módulos como voltímetros de panel. Si sabemos cómo programar un STM8, podremos utilizar los voltímetros como placas de desarrollo.

Material de la entrada:
Módulos STM8S103F por 0.65€
Programador/Debugger para STM8 y STM32 por menos de 2€, con carcasa de aluminio y cables de conexión.

Módulo ATmega328 por 1.3€
Módulo ATmega328 con convertidor uart/USB por 1.8€

Módulo STM32F103 por 1.50€

2 comentarios:

  1. Un gusto volver a leerte, espero nuevas entradas, que nos tienes abandonados.
    Un saludo campeón!!

    ResponderEliminar
    Respuestas
    1. Gracias! A ver si puedo contribuir un poco, que últimamente ando liadísimo!

      Un saludo!!!

      Eliminar