Selección de un microcontrolador para un proyecto de recopilación de datos con batería


18

Estoy planeando medir el nivel del agua en un pozo, que tiene unos 10 m de profundidad con un nivel máximo de agua de hasta 5 m. Mi plan es usar el sensor ultrasónico HC SR04 para medir la profundidad, transmitirlo a través de ZigBee a una Raspberry Pi dentro de mi casa.

Como discutí en mi pregunta anterior , necesito seleccionar un microcontrolador para conectar el sensor de ultrasonido y el módulo ZigBee.

Los parámetros para la selección son:

  1. Bajo consumo: estoy planeando ejecutar esto con batería, por lo que el bajo consumo de energía es una prioridad. A partir de ahora no tengo ningún objetivo para el uso de energía o días entre cambios de batería o incluso qué batería usar. Como se trata más de un proyecto de aprendizaje y está en mi hogar, soy flexible, pero un menor consumo de energía es mejor.

  2. Bajo costo: este es un proyecto de aprendizaje para mí, y no quiero gastar una cantidad escandalosa de dinero en esto, por lo que un mejor costo es mejor.

  3. Trabajando dentro de un pozo: todo el proyecto funcionará desde el interior de un pozo y estará expuesto a la fuerte luz solar y la lluvia. Sin embargo, proporcionaré un buen caso y protección.

  4. Fácil de programar

Elegí ZigBee porque es simple, cumple con mi caso de uso y baja potencia. Pero mi requisito es transportar los datos del sensor y estoy abierto a otros transportes. La distancia desde mi pozo hasta Raspberry Pi es de unos 6 metros con una pared en el medio. Estoy planeando medir la profundidad del agua cada 10 minutos y dos veces por minuto cuando la bomba de agua esté funcionando (aproximadamente 20 minutos diarios).


2
Esto se siente bastante amplio, o tal vez fuera de tema. Cualquier MCU pequeño en un tablero sería adecuado. Si no se hubiera decidido por Zigbee, le sugiero que mire el micro: bit de la BBC, que tiene BLE a bordo, y un conector de batería.
Sean Houlihane

2
Si desea una radio zigbee, al menos debe evaluar las partes que combinan eso con una CPU MCU (típicamente ARM Cortex-M). No significa que tenga que ir por esa ruta, pero si decide no hacerlo, debe ser por una buena razón.
Chris Stratton

2
¿Qué quieres decir con "dentro de un pozo"? ¿El caso estará bajo el agua? No espere ninguna transmisión o recepción de los módulos Xbee bajo el agua. Muchos operan en la banda de 2.4 GHz, que es bien absorbida por el agua; otros operan alrededor de 900 MHz, lo que probablemente tampoco puede penetrar muy bien en el agua. Si el estuche no está bajo el agua, la pared de 6m + debería estar bien con xbees.
Jonas Schäfer

"dentro de un pozo" significa que el dispositivo se colocará dentro del pozo, pero por encima del agua.
Raj

Respuestas:


20

Un proceso general de selección de microcontroladores.

  1. Resuma sus requisitos para el microcontrolador. Por ejemplo en este caso:

    • 1 temporizador de hardware , para medir el tiempo entre los pulsos de activación y eco.
    • 2 pines GPIO para conectar los pines Echo y Trigger del sensor.
    • Posiblemente UART para interconectar el módulo de comunicación RF.
    • 1 entrada ADC para monitorear el voltaje de la batería.


    Puede llevarse bien con un controlador de 8 pines para esto, lo que puede requerir el uso de los pines del programador para fines generales también.

  2. Decida el rendimiento requerido de la CPU y los requisitos de memoria . ¿Es suficiente usar una MCU de 8 bits o necesita una de 32 bits? ¿Qué velocidades de reloj de la CPU son aceptables decenas de MHz o 1 MHz es suficiente? ¿Cuánta memoria de programa, RAM y ROM se necesitan?

    Dada la aplicación descrita, no necesita un alto rendimiento informático. Probablemente un controlador de 8 bits será suficiente (aunque no será mucho más barato que uno de 32 bits, por lo que puede decidir aquí por el precio tal vez).

  3. De baja potencia . Cuando no es crucial, probablemente pueda llevarse bien con casi cualquier tipo de controlador que utilice su modo de baja potencia con el voltaje de suministro más bajo y la frecuencia de reloj del sistema. Si es más importante, puede comenzar a reducir su lista de búsqueda comenzando con núcleos de MCU de baja potencia dedicados como (núcleos de CPU ARM® Cortex®-M0 o M0 +). Por lo general, las hojas de datos contienen tablas para la mayoría de los modos de baja potencia / frecuencia VCC / SysClk , los mejores también enumerarán el consumo de cada periférico.

  4. Herramientas para desarrolladores . Lo considero un aspecto muy importante. Las herramientas dedicadas de programación de hardware pueden costar fortunas, por lo que generalmente me quedo con las MCU para las que ya he tenido programadores. Cuando cambia a otra familia o marca, es bueno invertir en una placa de desarrollo que tenga un programador a bordo que podría usarse más tarde para programar sus placas personalizadas. En general, compruebe siempre primero cuánto costará poder descargar programas a un microcontrolador.

Como @Sean ha señalado en los comentarios, una solución posible y rentable sería buscar dichos módulos de RF que vienen con una aplicación MCU integrada y programable, que también puede ejecutar su firmware mientras maneja la parte de comunicación de RF. Tales módulos existen para BLE, WiFi y ZigBee y posiblemente para muchas otras tecnologías.

Además sobre cómo sobrevivirá cualquier MCU en el pozo. Todo se reducirá en el gabinete que proporcionará para el dispositivo. Por ejemplo, no importará mucho qué MCU elija si el gabinete no es 100% resistente al agua.


TL; DR; Aquí viene la parte específica del producto.

  1. Puede elegir el ATtiny25 que cuesta 0.87 $ / 1 pieza en Farnell. 8 bits, 8 pines, por lo que no ocupará mucho espacio. En el modo de apagado, consume 0.2 μA con watchdog deshabilitado, a 3 V. 2-4 μA si el watchdog está habilitado. Es compatible con Arduino, por lo que programar no le costará mucho (el programador USBasp o AVRdude cuesta alrededor de $ 2 en eBay). ( Tenga en cuenta que : debe usar la biblioteca en serie del software Arduino para interactuar con un módulo de comunicación de RF, ya que esta MCU solo tiene SPI por hardware). En general, es pequeño, barato, con un consumo de energía relativamente bajo, pero el UART con golpes de bits podría aunque lo complica . Tiene una memoria de programa de 2 kB que debería ser suficiente para ti.

  2. O vaya con un ARM Cortex M0, que consume 2 μA en modo de espera y 5 μA en modo de parada. Tal MCU es, por ejemplo, STM32F030F4 que cuesta 1.09 $ / 1 pieza . Es un controlador de 32 bits más potente con una frecuencia de reloj del sistema máxima de 48 MHz, pero como puede ver solo por + 0.2 $. Viene con una memoria de programa de 16 kB, mucho más que suficiente para esta simple tarea. Tiene SPI, UART, I2C y muchos otros periféricos. Programarlo costará más, un programador dedicado cuesta 20 $ en Farnell. En mi opinión, no vale la pena. En cambio, puede invertir en una placa de desarrollo para la familia F0 que tiene un programador a bordo (ST-LINK) . STM32F0 La placa de descubrimiento cuesta ~ 10 $. Puede comenzar a crear prototipos con esta placa y usarla como programador más adelante.


3
Tenga en cuenta que los ST-LINK de placas de descubrimiento y nucleo a menudo se pueden utilizar para otras MCU que no sean las de la placa en sí. No estoy seguro acerca de esa placa específica, pero por lo que parece, usa SWD y se puede desconectar usando los puentes de la derecha. Lo bueno de eso es que ST-LINK no son solo programadores, sino también depuradores en circuito , lo que facilita mucho el desarrollo .
Jonas Schäfer

3
Además, si no le importan las respuestas de XBEE, puede usar la Interfaz serial universal de ATtiny para obtener un UART que es más rápido que la implementación de software de bits.
Jonas Schäfer

3
Vale la pena señalar que los módulos de radio con frecuencia vienen con recursos MCU no dedicados (y existen módulos para simplificar el tipo de aproximación). La CPU generalmente se comparte con la pila de RF, por lo que debe aceptar interrupciones periódicas, etc.
Sean Houlihane

3
ULPBENCH es un buen recurso cuando la operación de baja potencia (batería) es importante.
neonzeon

5

Mirando la facilidad de programación y el bajo costo, probablemente comenzaría con algún tipo de módulo Arduino (o clon de bajo costo). El código para su sensor ultrasónico ya existe, al igual que el código de ejemplo para ZigBee, por ejemplo, utilizando los módulos Digi XBee. En este último, conecta el XBee a un puerto serie y, después de realizar la conexión con la antigua interfaz de comando "AT", tiene un canal punto a punto al que puede enviar cualquier texto (a su Raspberry Pi ) ZigBee no es el tipo más barato de comunicación de corto alcance, pero los módulos XBee han bajado de precio en términos reales en los últimos 5 años.

Sé que algunas personas tienen un problema con el lenguaje basado en C / C ++ que se usa en Arduino, pero en este caso estarían fusionando en gran medida los scripts ya existentes de otros usuarios.

Si buscas en Google el "modo de suspensión Arduino", encontrarás ejemplos de cómo puedes poner el Arduino en modo de bajo consumo, y despertar esporádicamente para tomar una lectura, comunicarlo y luego volver a ingresar al modo de suspensión.


1
Si bien es posible una buena administración de energía con un chip ATmega, una placa Arduino típica tiene drenajes de energía parásitos que limitarán drásticamente la vida útil de la batería.
Chris Stratton
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.