Cortex-M0 vs. Cortex-M0 + para un sensor IoT usando LoRA [cerrado]

1

Aunque soy un ingeniero de software con experiencia, todavía soy un principiante en ingeniería eléctrica. Así que por favor déjame explicarte mis requisitos:

Tengo un pequeño jardín en mi jardín y me gustaría agregar un sensor de humedad del suelo en el suelo, conectándolo con un RFM95W como un nodo LoRaWAN.

Es probable que el sensor tome una medición cada 6 a 9 horas y se ponga en reposo para ahorrar batería.

La placa que use se conectará a otro RFM95W que es una puerta de enlace LoraWAN conectada a un Rpi dentro de mi hogar, para que pueda enviar los datos a un servidor LoRa local (MQTT).

Finalmente, espero llegar a un punto donde la placa abra una fuente de agua cuando el suelo esté seco (sobre el control del motor PWM, lo que he hecho con el Pi sobre metal desnudo antes).

En segundo lugar, espero ejecutar un aprendizaje profundo muy básico sobre los datos, directamente en la MCU como se explica en esta publicación de blog

Por lo tanto, elegir una MCU ARM parece un buen ajuste. Ahí está el Cortex-M0 y su sucesor el M0 + .

El problema que tengo al tomar la decisión entre ellos se basa en lo siguiente:

1) El M0 + se comercializa como una MCU muy eficiente y, por lo tanto, puede funcionar bien con una batería durante mucho tiempo

2) Sin embargo, el M0 parece tener un precio muy razonable en sus tableros de desarrollo, como SMT32F Por lo tanto, me pregunto si el bajo consumo de energía es el caso de la diferencia de precio y si todavía puedo obtener el mismo rendimiento; es decir, larga duración de la batería, desde el M0 ?

    
pregunta Sam Hammamy

1 respuesta

2

Realmente no es posible responder a esta pregunta con precisión, porque ni usted ni el artículo que vincula para proporcionar ningún tipo de definición útil de "aprendizaje profundo". Dependiendo de con quién hable, esto puede abarcar el trabajo simple de filtrado y correlación, hasta lo que DeepMind está haciendo. El término es ambiguo hasta el punto de no tener sentido.

A un nivel más práctico, hay muy pocas diferencias entre M0 y M0 +. Si bien el M0 + tiene el potencial de ser más eficiente en el uso de la energía, la realidad es que depende mucho más de la implementación real del proveedor. En un sistema de muy bajo consumo de energía, los periféricos y los circuitos de reloj pueden anular fácilmente cualquier ahorro de energía en el núcleo mismo. La mayoría de los proveedores tienen rangos específicos de chips que están optimizados para el ahorro de energía, y usted solo debe tomar una decisión basándose en las características de estos chips, ignorando si la implementación interna es un M0 / M0 + o incluso cualquier otro núcleo Cortex M.

Una cosa a tener en cuenta es que la arquitectura M0 / M0 + está muy mal restringida en cuanto a IO, ya que generalmente toma 2-3 ciclos de instrucción para cargar / almacenar un registro desde la memoria o IO. Tampoco existe una canalización de carga / almacenamiento como en los chips Cortex de gama alta. El resultado es que si está realizando una gran cantidad de ataques de bits, un procesador de 8 bits normalmente puede ejecutar anillos alrededor de un M0 / M0 +. Por ejemplo, invertir un bit de puerto IO en el PIC12 se puede hacer en 1 ciclo de instrucción. En un Cortex M0 / M0 + tomaría entre 5 y 7.

En el otro extremo del espectro de rendimiento, esta lentitud de las transferencias de registros también puede tener un impacto profundo en la capacidad del chip para procesar grandes conjuntos de datos (por ejemplo, si está implementando un filtro o correlacionador). Ir a algo más poderoso, como un M3 / M4, en realidad podría aumentar su eficiencia energética en grandes cantidades de matemáticas, pero debería saber mucho más sobre qué análisis planea hacer antes de poder determinar eso.

    
respondido por el Jon

Lea otras preguntas en las etiquetas