Overview
A 480MHz Swiss Army knife of the embedded team☮️
Table of Contents
Page 1:Table of Contents & OverviewPage 2:GNSS (GPS) SensorPage 3:pH SensorPage 4:IMU (Inertial Measurement Unit)Page 5:Load Cell SensorPage 6:Pressure SensorPage 7:Sensor Basics Utility LibraryPage 8:System Architecture & IntegrationPage 9:TestingPage 10:ConfigurationPage 11:Reference
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
Ethernet
LAN8742 PHY, RMII, LwIP stack (LAN8742static PHY)
Serial logging
ST-Link VCP (MultipleUSART3, sensor115200 connections)
FreeRTOS heap
64 KB (IMU,configTOTAL_HEAP_SIZE pressure= sensors)
Message 64KBencoding
nanopb heap(Protocol allocatedBuffers), fordefinitions FreeRTOS
Key Board Features
Multi-sensorSinglefusionmainwithtaskindependentpollssensorallthreadssensors 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
PacketStaticdispatcherARP entry forincomingthecontroldestinationsignalsboard, 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 - 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; positioningandisvelocityhandled elsewhere in the rover.Related Pages