BBN NMEA XDR sensors hub esp32 hardware
It's really two devices in one. Both use atomS3-lite esp32s3 microcontroller from m5stack: https://shop.m5stack.com/products/atoms3-lite-esp32s3-dev-kit
Hub A is mostly environental sensors:
- Lightning strike detector
- Pressure
- Temperature/Humidity
- Multiple 1-wire waterproof temperature probes
- Illuminance
- Motion detector
- Hatch open/closed limit switch sensor
- i2c connector for more external i2c sensors supported by the Hub A firmware
Hub B is for electrical and liquid level sensors:
- Current/Voltage/Power sensors
- Resistance sensor for fuel level, engine oil pressure, rudder position, or trim
- Water quality (TDS - Total Dissolved Solids) sensor
- Liquid level (0-20 mAmps)
- Waterproof box. Hinged with stainless steel hardware, transparent lid, base plate and legs
- Various cable glands
- Grove cables from m5stack
- M3 standoffs
- In-Sure lever wire connectors for splicing wires (3-Port and 5-port): https://www.idealind.com/us/en/category/product.html/In_Sure_Lever_5_Port.html
- Cable ties
- Grove2Dupont Conversion Cables: https://shop.m5stack.com/products/grove2dupont-conversion-cable-20cm-5pairs
- USB-C to USB-A cables with small support tang on USB-C end
- Lightning strike detector AS3935: https://www.dfrobot.com/product-1828.html (Placed inside the box)
- Barometer via i2c DPS310: https://www.adafruit.com/product/4494 (DPS310 inside the box on the picture but several others are supported by firmware too)
- Temperature/Humidity SHTC3: https://www.aliexpress.us/item/3256807428285646.html (SHTC3 as pictured but others SHT30, DHT12, some more supported by firmware too)
- Multiple 1-wire waterproof temperature probes DS18B20: https://gikfun.com/products/gikfun-ds18b20-waterproof-digital-temperature-sensor-with-adapter-module-for-arduino-pack-of-3-sets (via DS18B20 with GikFun plugin terminal board)
- Illuminance M5Stack DLight BH1750FVI-TR: https://shop.m5stack.com/products/dlight-unit-ambient-light-sensor-bh1750fvi-tr (Placed and connected via i2c outside of the box)
- Motion detector M5Stack PIR Unit AS312: https://shop.m5stack.com/products/pir-module (Placed outside of the box)
- Hatch open/closed limit switch sensor https://shop.m5stack.com/products/limit-switch-unit (Limit Switch Unit from m5stack placed outside of the box)
- i2c connector for more external i2c sensors supported by the Hub A firmware (See: https://github.com/bareboat-necessities/bbn_sensors_hub_A)
- ATOMIC PortABC Extension Base to expose esp32 ports: https://shop.m5stack.com/products/atomic-portabc-extension-base
- M5Stack 1 to 3 HUB Expansion Unit: https://shop.m5stack.com/products/mini-hub-module
For all supported hardware and software of Hub A firmware look here: https://github.com/bareboat-necessities/bbn_sensors_hub_A
For pins used in connections browse through the firmware code: https://github.com/bareboat-necessities/bbn_sensors_hub_A
M5Stack connectors are well color coded and pins are labeled on m5stack portABC.
Long press side button on atomS3 till you see green to enter the mode for uploading firmware.
NOTE: /dev/ttyACM1 in the script below is for example. In your case device name might be different. You can find out what it is by inspecting differences in output of
ls -ltr /dev/tty*
with the device unplugged from USB and plugged into USB.
# shutdown signalk
sudo systemctl stop signalk
if [ -f bbn-flash-sensors-hub-A.sh ]; then rm bbn-flash-sensors-hub-A.sh; fi
wget https://raw.githubusercontent.com/bareboat-necessities/my-bareboat/refs/heads/master/m5stack-tools/bbn-flash-sensors-hub-A.sh
chmod +x bbn-flash-sensors-hub-A.sh
./bbn-flash-sensors-hub-A.sh -p /dev/ttyACM1
Unplug and plug the device into USB to reboot.
stty -F /dev/ttyACM1 38400
socat stdio /dev/ttyACM1
- Current/Voltage/Power INA219 sensors: https://www.adafruit.com/product/904 (Two inside the box as on the picture but more are supported by the firmware)
- Water quality Ocean TDS Total Dissolved Solids sensor: https://www.cqrobot.com/index.php?route=product/product&product_id=1122
- Liquid level (0-20 mAmps) M5Stack Ammeter ADS1115 Unit https://shop.m5stack.com/products/ammeter-unit-ads1115 and Submersible Stainless Steel 0-20 mA Liquid Level Sensor: https://www.aliexpress.us/item/3256807215987468.html
- Resistive sensors 240-33 ohms or 10-180 ohms for fuel level, engine oil pressure, rudder position, or trim (Not on the picture but supported by Hub B firmware)
- ATOMIC PortABC Extension Base to expose esp32 ports: https://shop.m5stack.com/products/atomic-portabc-extension-base
- M5Stack 1 to 3 HUB Expansion Unit: https://shop.m5stack.com/products/mini-hub-module
For all supported hardware and software of Hub B firmware look here: https://github.com/bareboat-necessities/bbn_sensors_hub_B
For pins used in connections browse through the firmware code: https://github.com/bareboat-necessities/bbn_sensors_hub_B
M5Stack connectors are well color coded and pins are labeled on m5stack portABC.
Long press side button on atomS3 till you see green to enter the mode for uploading firmware.
NOTE: /dev/ttyACM1 in the script below is for example. In your case device name might be different. You can find out what it is by inspecting differences in output of
ls -ltr /dev/tty*
with the device unplugged from USB and plugged into USB.
# shutdown signalk
sudo systemctl stop signalk
if [ -f bbn-flash-sensors-hub-B.sh ]; then rm bbn-flash-sensors-hub-B.sh; fi
wget https://raw.githubusercontent.com/bareboat-necessities/my-bareboat/refs/heads/master/m5stack-tools/bbn-flash-sensors-hub-B.sh
chmod +x bbn-flash-sensors-hub-B.sh
./bbn-flash-sensors-hub-B.sh -p /dev/ttyACM1
Unplug and plug the device into USB to reboot.
stty -F /dev/ttyACM1 38400
socat stdio /dev/ttyACM1
Integration with SignalK is done via NMEA XDR Parser SignalK plugin.
More: https://github.com/GaryWSmith/xdr-parser-plugin
Recommended config file for XDR Parser SignalK plugin:
When registering a serial connection in SignalK use device symbolic link from /dev/serial/by-id/ (instead of direct /dev/ttyXXX name).
Project Home: https://bareboat-necessities.github.io/
- Alarms Box: https://github.com/bareboat-necessities/bbn_alarms_A
- Engine Sensors Box: https://github.com/bareboat-necessities/bbn_sensors_hub_C
- NMEA N2K to USB: https://github.com/bareboat-necessities/bbn-m5-s3-n2k-usb
- Instruments Displays on esp32: https://github.com/bareboat-necessities/bbn-m5stack-tough
- Boat Heave Sensor: https://github.com/bareboat-necessities/bbn-wave-period-esp32
- I2C over USB for Linux: https://github.com/bareboat-necessities/bbn-i2c-over-usb
- N2K Senders: https://github.com/bareboat-necessities/bbn-m5-s3-n2k-i2c




