Skip to main content

Overview

A 480MHz Swiss Army knife of the embedded team☮️

Table of Contents

Purpose

The Sensor Board is a specializedan embedded system designedthat to acquireacquires environmental and motionprocess data from multiple sensors.sensors and actuates the sampling hardware (water pump). It integrates position (GNSS), water quality (pH), motion (IMU), force (load cells), pressure (FSR pads), and pressurewater measurements,flow transmittingmeasurement, and transmits all data over Ethernet using Protocol Buffer encoding. It also receives control packets (for example pump commands) over the same link.

Implementation Status Disclaimer: The sensor board code was only partially tested and never fully implemented on hardware. Due to time constraints and other technical issues faced by the 2025-2026 team, several drivers remain compile gated or placeholder (pH ADC path, pressure ADC path, IMU bus access, flow sensor EXTI line). The load cell (HX711), pump (PWM), networking and protobuf pipeline are implemented in firmware; end to end validation on the assembled board was not completed.

Hardware Platform

  • Microcontroller: 

    Item

    Value

    Microcontroller

    STM32H753ZI (NucleoNUCLEO-H753ZI board)

  • , ARM Cortex-M7 (480 MHz capable, currently clocked at 64 MHz, see STM32CubeMX Sensor Configuration)

Real-Time OS: OS

FreeRTOS with CMSIS-RTOS V2

Communication:

Ethernet

LAN8742 PHY, RMII, LwIP stack (LAN8742static PHY)

UARTIP, no DHCP)

Serial logging

ST-Link VCP (MultipleUSART3, sensor115200 connections)

I2C/SPIbaud)

FreeRTOS heap

64 KB (IMU,configTOTAL_HEAP_SIZE pressure= sensors)

Memory:65536)

Message 64KBencoding

nanopb heap(Protocol allocatedBuffers), fordefinitions FreeRTOS

Clock:in 480the MHzERC-Protobufs ARMsubmodule Cortex-M7

Key Board Features

  • Multi-sensorSingle fusionmain withtask independentpolls sensorall threadssensors in one loop (5 second interval)
  • Network integration via UDP/Ethernet with Protobufprotobuf envelopes (PBEnvelope)
  • Inbound packet dispatcher for control signals (pump command handler actuates hardware)
  • Real-time logging to UART (115200 baud) with uniform per-sensor status lines
  • MAC address filtering for selective communication
  • PacketStatic dispatcherARP entry for incomingthe controldestination signalsboard, re-added on link up
  • LED status indicators (Green, Blue, Red)Red toggled each loop)
  • Heap monitoring with critical threshold alertsalert (below 4096 bytes free pauses the loop)

Core

Integrated Sensors Integrated

and
  1. Actuators

    Device

    Model / Interface

    Count

    Firmware status

    pH Sensor

    DFRobot SEN0161, analog ADC

    1

    Driver complete, ADC path compile gated (PH_SENSOR_USE_ADC), poll returns RESULT_ERR_UNIMPLEMENTED until an ADC is enabled in CubeMX

    IMU

    TBD, I2C1 (PB8/PB9)

    1

    Data structure, math and validation helpers implemented; hardware poll is a placeholder

    Load Cell (Weight)

    HX711 24-bit ADC, GPIO bit-bang

    2

    Implemented, auto-tare on init, scale calibration API

    Pressure (FSR)

    Analog force sensing resistor pads, ADC

    2

    Driver complete, ADC path compile gated (PRESSURE_USE_ADC), poll returns RESULT_ERR_UNIMPLEMENTED until an ADC is enabled

    Flow Sensor

    FM-PS2216 (5.5 pulses/ml), GPIO EXTI pulse counting on PA4

    1

    Implemented; EXTI4 must still be enabled in CubeMX for pulses to be counted

    Water Pump

    Grothen 12 V DC mini peristaltic pump, single MOSFET on TIM3 CH3 PWM (PC8)

    1

    Implemented, open loop, unidirectional; health cross-checked against the flow sensor

    Note: earlier documentation revisions mentioned a GPS (GNSS) -driver. GlobalNo GPS driver exists in the current sensor board source tree; positioning andis velocityhandled elsewhere in the rover.

TestingReference