
CANNONBALL
user-will/PCB_CANNONBALL
An ESP32-C3 dev board with more sensors and features then you could know what to do with

Acquisition and processing server for the NexaSeis collaborative seismic network
NX LSM6DS3 is an open-source printed circuit board by Domiko7, from the Domiko7/NexaSeis repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board of 56 × 56.5 mm with 25 parts on 34 nets, routed with 326 tracks and 23 vias.
It is built around the ESP32-C3-WROOM-02-H4, AMS1117-3.3 and LSM6DS3. Its parts include 7 resistors, 4 diodes, 3 capacitors, 3 ICs and 2 connectors. It belongs with the ESP32 and RISC-V boards of this library.
An open-source, collaborative seismic monitoring network built around affordable ESP32-based stations.
[!WARNING] NexaSeis is incomplete and under active development. Expect unfinished features, breaking changes, and limited documentation. Do not rely on it for safety-critical earthquake monitoring or emergency alerts. Of the projects in
seismometer/, only NX-1D is currently complete; NX-LSM6DS3 and NX-ADXL355 remain unfinished.
NexaSeis collects waveform samples from networked seismometers, processes and stores them, and makes live station data available to other applications. This repository contains the complete stack:
The server can be installed as a Python package, while its runtime behavior and station inventory remain controlled by a JSON configuration file.
ESP32 station ──UDP/TCP──> Python server ──> signal processing ──> SQLite
│
├──> REST API / helicorders
├──> WebSocket stream
├──> DataLink
└──> SeedLinkStations send fixed-size binary packets containing a timestamp, station identifiers, and five signed integer samples. The server matches each packet to a station in src/config.json, applies its channel sensitivity and sample rate, buffers the waveform, calculates ground-motion values, and dispatches the result to enabled outputs.
| Path | Purpose |
|---|---|
src/nexaseis/ | Python server, processing pipeline, database, and services |
src/config.json | Server, station, and output configuration |
nexaseis-web/ | Vue 3, Vuetify, and Vite web application |
seismometer/NX-1D/ | Complete ESP32 firmware for the ADS1256-based one-axis station |
seismometer/NX-LSM6DS3/ | Unfinished ESP32 firmware and KiCad hardware files for LSM6DS3 stations |
seismometer/NX-ADXL355/ | Unfinished ESP32/ADXL355 firmware project |
fdsnws/stations/ | FDSN StationXML metadata |
scripts/ | Development and integration helper scripts |
See the seismometer guide for hardware status, NX-1D setup, and important filter limitations.
For a practical overview of the hardware, read How to build a DIY seismometer.
obspywebsocketssimpledalisimplemseeduvicornfastapi[standard]numpySQLite support is provided by Python's standard library and does not need a separate package.
Create and activate a virtual environment:
python3 -m venv .venv
source .venv/bin/activateInstall NexaSeis and its runtime dependencies in editable mode:
python -m pip install --upgrade pip
python -m pip install -e .Edit src/config.json. At minimum, change data_path to an absolute directory writable by the server process and configure the station records you intend to receive.
Start the server from the repository root:
./run.shThe installed command and equivalent module command are:
nexaseis
python -m nexaseisBy default, a source checkout reads src/config.json. To keep configuration elsewhere, set NEXASEIS_CONFIG to its path before starting the server:
export NEXASEIS_CONFIG=/absolute/path/to/config.json
nexaseisWith the checked-in example configuration, the server listens on:
| Service | Default address | Purpose |
|---|---|---|
| UDP ingest | 0.0.0.0:50006 | Receives station packets |
| REST API | 0.0.0.0:50010 | Station state and helicorder images |
| WebSocket | 0.0.0.0:50007 | Streams processed packets |
| DataLink | 127.0.0.1:16000 | Forwards waveform data to a DataLink server |
| TCP ingest | 0.0.0.0:50005 | Optional TCP packet input; disabled by default |
| SeedLink | 0.0.0.0:18000 | Optional SeedLink service; disabled by default |
Binding to 0.0.0.0 exposes a service on every network interface. Use a firewall and more restrictive bind addresses where appropriate.
Each entry in the stations array identifies a station by its network, code, and location. Channels define their own calibration and sampling parameters:
{
"name": "Example Station",
"network": "XX",
"code": "TEST",
"location": "00",
"channels": {
"EHZ": {
"sensitivity": 5408390926,
"sample_rate": 100
}
},
"lat": 52.0,
"lon": 21.0,
"elevation": 100
}The network, station, location, and channel values sent by the device must match this configuration. Restart the server after changing the file; configuration is loaded at startup.
When the API is enabled, interactive OpenAPI documentation is available at http://localhost:50010/docs.
Useful endpoints include:
GET / — health and server time;GET /stations — latest processed values, grouped by station;GET /helicorder/{network}/{code}/{location}/{channel}?type=standard — generated helicorder image. type may be standard, teleseismic, or raw.Waveform packets are persisted to nexaseis.db beneath the configured data_path.
Run the development server:
cd nexaseis-web
npm ci
npm run devCreate a production build:
npm run buildThe compiled application is written to nexaseis-web/dist/. Preview it locally with npm run preview.
Only seismometer/NX-1D/ is currently considered complete. The NX-LSM6DS3 and NX-ADXL355 directories contain unfinished development work and should not be expected to build or function correctly.
Read seismometer/README.md before configuring the firmware. It documents the required NX-1D settings and the sensor-specific limitations of its compensation and high-pass filters.
Open the NX-1D directory as a PlatformIO project. Before uploading, review its include/settings.h and source files for Wi-Fi credentials, station identifiers, server address, sensor pins, and calibration values.
Build the NX-1D firmware from the command line:
cd seismometer/NX-1D
pio runConnect the target ESP32 and upload with:
pio run --target upload
pio device monitorNever commit real Wi-Fi credentials or other secrets. Keep local values in ignored files or inject them through PlatformIO build settings.
The web application provides the currently configured automated checks:
cd nexaseis-web
npm run lint
npm run buildThere is not yet an automated Python or firmware test suite. When changing the server, verify startup with a writable data_path and exercise the relevant input/output service.
NexaSeis is licensed under the GNU Affero General Public License v3.0.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad | H1, H2, H3, H4 |
| 2 | 330 | Resistor_SMD:R_0805_2012Metric | R6, R7 |
| 2 | 4.7k | Resistor_SMD:R_0805_2012Metric | R1, R2 |
| 2 | 5.1k | Resistor_SMD:R_0805_2012Metric | R4, R5 |
| 2 | D_Schottky | Diode_SMD:D_SOD-123 | D1, D2 |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric | R3 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U3 |
| 1 | BLUE | LED_SMD:LED_0805_2012Metric | D4 |
| 1 | ESP32-C3-WROOM-02 | RF_Module:ESP32-C3-WROOM-02 | U1 |
| 1 | LOGO | NX-LSM6DS3:full_logo | G*** |
| 1 | LOGO | NX-LSM6DS3:logo | G*** |
| 1 | LSM6DS3 | Package_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4y | U2 |
| 1 | RED | LED_SMD:LED_0805_2012Metric | D3 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J2 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |

user-will/PCB_CANNONBALL
An ESP32-C3 dev board with more sensors and features then you could know what to do with
bardiasayyar/Custom-PCB-Wearable-Step-Fall-Tracker
Designing a custom wristband PCB in KiCad integrating an ESP32-C3 microcontroller, LSM6DS3 IMU (I2C), and LiPo battery/charging circuitry for real-time step counting, fall detection, and battery monitoring.

NYDEREK/LineFollower_GRUZIK3.0
Loved the project? Please consider giving a Star ⭐️

NarodniySputnik/Gladiolus-1
Gladiolus-1 - автономный модуль для приема и передачи изображений в формате SSTV (Slow Scan TeleVision) на малом космическом аппарате (МКА) формата CubeSat

C-monC/Drone-simluation
Experimenting with reinforcement learning for drone control.



It measures 56 × 56.5 mm and has 2 copper layers, 1.6 mm thick.
25 parts, built around the ESP32-C3-WROOM-02-H4, AMS1117-3.3 and LSM6DS3. 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.
From the Domiko7/NexaSeis repository on GitHub, at the commit this page was made from: the board is seismometer/NX-LSM6DS3/pcb/NX-LSM6DS3/NX-LSM6DS3.kicad_pcb and its schematic seismometer/NX-LSM6DS3/pcb/NX-LSM6DS3/NX-LSM6DS3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).