

HERMES
My personal Swiss Army Board with a 9DOF IMU, Pressure Sensor, Air Quality Sensor, Humidity Sensor and Temperature Sensor. Built as a YSWS project for my Hack Club RISE ILE
- Size
- 40 × 39.1 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 32
- Nets
- 63
- Pads
- 169
- Tracks, vias
- 305, 23
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 4 Jun 2026
- Updated
- 10 Jun 2026
Overview
HERMES is an open-source printed circuit board by Owenxman, from the Owenxman/HERMES repository on GitHub, published under the MIT licence. It is a 2-layer board of 40 × 39.1 mm with 32 parts on 63 nets, routed with 305 tracks and 23 vias.
It is built around the ATMEGA328-AU, BME680 and FT231XS-R, with the AP2112K-3.3, ICM-20948 and B3SN-3112P among its other parts. Its parts include 15 capacitors, 5 resistors, 5 ICs, 2 diodes and 2 connectors. It belongs with the sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.
Main components
6ATMEGA328-AU
TQFP-32(7x7)-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 2KB 32KB 8 Bit AVR Built-in FLASH TQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)BME680
LGA-8-40℃~+85℃ 0.12hpa 0.6hpa 1.3pa/K 1.71V~3.6V 150nA 30Kpa~1.1bar I2C、SPI Temperature Sensor LGA-8 Pressure Sensors ROHSBosch SensortecPressure SensorsFT231XS-R
SSOP-20-150mil-40℃~+85℃ 125uA 5V 8.4mA USB 2.0 USB to UART SSOP-20-150mil USB Converters ROHSFTDIUSB ConvertersAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedICM-20948
QFN-24(3x3)-40℃~+85℃ 0.5KB 1.71V~3.6V 16bit 8uA Accelerometer Gyroscope SPI、I2C X,Y,Z X,Y,Z ±16g ±2000dps QFN-24(3x3) Accelerometers ROHSTDK InvenSenseAccelerometersB3SN-3112P
SMD-25℃~+70℃ 1.6N 100,000 cycles 24V 3.1mm 50mA 6mm 6mm IP67 J-Lead Round Button SPST-NO Surface Mount,Vertical SMD Tactile Switches ROHSOmronTactile Switches
README
README.mdHERMES (Hardware Environmental & Rotational Motion Evaluation Sensor)
HERMES is a USB-connected sensor board that reads motion, environmental, and GPS data and sends it to a computer in real time. The data is visualized in a browser dashboard that connects directly over Web Serial.
🛰️ Live dashboard: https://owenxman.github.io/HERMES/ Works in desktop Chrome and Edge. Use Demo data if you don't have hardware connected.
What this is
The board combines a 9-axis IMU, environmental sensor, and GPS module with an ATmega328 microcontroller. The microcontroller reads everything and streams it over USB serial to a computer.
The goal is simple: plug it in, open the dashboard, and see live motion + environmental data without any setup beyond a serial connection.
Hardware
| Part | What it does |
|---|---|
| ICM-20948 | 9-axis IMU (accelerometer, gyroscope, magnetometer) |
| BME680 | Temperature, humidity, pressure, gas / VOC |
| GPS module | Position data over UART |
| ATmega328-A | Main microcontroller that reads sensors |
| FT231XS | USB to serial bridge |
| AP2112K-3.3 | 3.3V regulator |
Connection: USB-C (power + data), 8 MHz clock, ICSP header for programming.
Dashboard
The dashboard is a single index.html file. There is no backend, no build system, and nothing to install.
It reads serial data from the board and visualizes it in real time:
| View | Shows |
|---|---|
| Orientation | 3D model that moves with roll, pitch, and yaw |
| Accelerometer | X/Y/Z arrows + combined force vector |
| Magnetometer | Compass-style heading display |
| Environment | Live graphs for temperature, humidity, pressure, and gas |
| GPS | Latitude, longitude, altitude, and satellite count |
| Raw telemetry | Live serial log + update rate (Hz) |
Everything runs in the browser. The board connects directly to your computer using Web Serial, and nothing gets uploaded anywhere.
How to run it
Locally
Open index.html in Chrome or Edge. Click Connect device, select the FT231XS serial port, and set the baud rate (default is 115200).
Browser support
Web Serial only works in Chromium-based browsers on desktop: Chrome, Edge, Brave, Opera.
Firefox, Safari, and mobile browsers will still load the page, but cannot connect to the board. Demo mode still works everywhere.
The web dashboard can be acessed at https://owenxman.github.io/HERMES/
Serial format
The board prints one line per update over serial. The dashboard tries to auto-detect the format. You can use any of:
JSON (recommended)
{"roll":2.1,"pitch":-5,"yaw":143,"ax":0.01,"ay":0.0,"az":1.0,"heading":143,"temp":22.4,"hum":41,"pres":1012.8,"gas":52000,"lat":44.47,"lon":-73.21,"alt":61,"sats":9}key=value
roll=2.1 pitch=-5 yaw=143 ax=0.01 ay=0 az=1 temp=22.4 hum=41 pres=1012.8 gas=52000CSV — first send a header line, then numeric rows:
roll,pitch,yaw,ax,ay,az,heading,temp,hum,pres,gas,lat,lon,alt,sats
2.1,-5,143,0.01,0,1,143,22.4,41,1012.8,52000,44.47,-73.21,61,9Not all fields are required. You can start with just IMU data and add sensors later.
Fields
| Field | Aliases | Units |
|---|---|---|
roll / pitch / yaw | r / p / y | degrees |
qw / qx / qy / qz | — | quaternion |
gx / gy / gz | gyroX/Y/Z | deg/s |
ax / ay / az | accelX / accel_x | g |
mx / my / mz | magX/Y/Z | µT |
heading | hdg / head | degrees |
temp | temperature / t | °C |
hum | humidity / rh | % |
pres | pressure / baro / hPa | hPa |
gas | voc / iaq | Ω / kΩ |
lat / lon | latitude / longitude | decimal degrees |
alt | altitude | meters |
sats | satellites | count |
Orientation priority: quaternion → roll/pitch/yaw → gyro integration
Heading priority: heading → yaw → magnetic calculation (mx/my)
Repo structure
HERMES/
├── firmware/ # Microcontroller Code (not finished yet)
├── PCB/ # KiCad + PCB files
├── Production/ # Production Files
├── CAD/ # CAD Files for the Case
├── index.html # Dashboard
├── LICENSE # MIT License
└── README.mdFirmware
The firmware runs on an ATmega328 at 8 MHz. It reads:
- ICM-20948 over I²C
- BME680 over I²C
- GPS over UART (NMEA)
Then it prints telemetry over USB serial in one of the supported formats.
This section will get updated once the final firmware is cleaned up and documented.
License
Released under the MIT License — you're free to use, copy, modify, and distribute this project, including commercially, as long as the copyright notice and license text are included. See the LICENSE file for the full terms.
Parts
32| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 0.1uF | Capacitor_SMD:C_1206_3216Metric | C1, C2, C4, C18, C19, C20 |
| 5 | 100nF | Capacitor_SMD:C_1206_3216Metric | C9, C14, C21, C22, C23 |
| 2 | 1K | Resistor_SMD:R_1206_3216Metric | R2, R3 |
| 2 | 1uF | Capacitor_SMD:C_1206_3216Metric | C16, C17 |
| 2 | 5.1K | Resistor_SMD:R_1206_3216Metric | R4, R5 |
| 1 | 10K | Resistor_SMD:R_1206_3216Metric | R1 |
| 1 | 10uF | Capacitor_SMD:C_1206_3216Metric | C3 |
| 1 | 4.7uF | Capacitor_SMD:C_1206_3216Metric | C15 |
| 1 | 8MHz | footprints:AWSCR-8.00CV-T_ABR | Y1 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U5 |
| 1 | ATmega328-A | Package_QFP:TQFP-32_7x7mm_P0.8mm | U1 |
| 1 | B3SN-3112P | KiCad2:B3SN3112P | S1 |
| 1 | BME680 | Package_LGA:Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumbering | U4 |
| 1 | Conn_02x03_Top_Bottom | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J8 |
| 1 | FT231XS | Package_SO:SSOP-20_3.9x8.7mm_P0.635mm | U2 |
| 1 | GREEN | LED_SMD:LED_1206_3216Metric | D1 |
| 1 | ICM-20948 | Sensor_Motion:InvenSense_QFN-24_3x3mm_P0.4mm | U6 |
| 1 | RED | LED_SMD:LED_1206_3216Metric | D2 |
| 1 | SolderJumper_2_Bridged | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP1 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J1 |
Questions
How big is the HERMES PCB?
It measures 40 × 39.1 mm and has 2 copper layers, 1.6 mm thick.
What parts does the HERMES use?
32 parts, built around the ATMEGA328-AU, BME680, FT231XS-R and AP2112K-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the HERMES KiCad files?
From the Owenxman/HERMES repository on GitHub, at the commit this page was made from: the board is PCB/HERMES.kicad_pcb and its schematic PCB/HERMES.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the HERMES design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 4 layers33.1 × 64.7 mm

- 6 layers53.3 × 101.6 mm

Mega2560plus
sneakylizard123-4/Mega2560plus
Mega 2560+ is an upgraded version of the Arduino Mega 2560. It keeps the same form factor and pinout as the original so it still works with every Mega shield, but it adds an onboard sensor suite and an ESP32-S3…
149 parts - 4 layers55 × 154.1 mm

GPS module
Dizzerin/Rocket-Flight-Data-Computer
This project uses an STM32H743VGT6 MCU along with some innertial measurement units (IMU)s and barometric pressure sensors to and an SD card to record flight data from a model rocket and for later analysis, graphing, and…
161 parts1 - 4 layers57 × 35 mm

- 2 layers17.5 × 29.5 mm

Micro logger
GaitRehabilitation/mini_data_capture
The current maintainers of this repository are:
33 partsApache-2.0 - 2 layers40 × 22.1 mm

- 4 layers50 × 80 mm

SensBoard
Hazel-H-Chen/PocketSens
Microcontroller based sensor suite for portable environmental measurements.
62 parts1MIT - 2 layers70 × 70 mm
