Developer: Processware
License: CERN-OHL-W (Hardware), MIT (Software), CC BY-SA 4.0 (Documentation)
Version: 1.0
Status: Active Development
PowderSense mounted on a reloading press, showing real-time precision measurement with visual feedback. The device features a 1.47" color display, WiFi connectivity, and professional PLA-CF enclosure.
5 Operational States:
- AP Mode - Initial WiFi setup (SSID: PowderSense, IP: 192.168.4.1)
- No Config - Connected but no profile loaded (0.000 grain, "No Config")
- Measure LOW - Below target (4.585 gr, Target: 4.700 gr, blue bar)
- Measure PERFECT - Within tolerance (4.700 gr, Target: 4.700 gr, green bar)
- Measure HIGH - Above target (4.802 gr, Target: 4.700 gr, red bar)
PowderSense is an open source precision linear displacement measurement system, originally designed for ammunition reloading applications but adaptable for various industrial and educational purposes. The system combines high-precision analog measurement with modern IoT capabilities, providing real-time monitoring, data logging, and web-based configuration.
All design files, firmware, and documentation are freely available:
- Hardware: 3D printable enclosure, schematics, PCB files
- Firmware: Complete ESP32-C6 source code
- Documentation: Assembly guide, BOM, user manual
- Cost: ~€55 in components (see BOM.md)
- Time: 4-6 hours assembly + calibration
Don't want to build? Get a fully assembled and tested unit:
PowderSense Assembled
- €149,- (excl. shipping)
- Fully assembled and tested
- Includes calibration guide (user must calibrate for their specific application)
- Includes USB-C cable
- 1 year warranty
- Email support: info@processware.nl
What's Included:
- Complete assembled device
- 3D printed PLA-CF enclosure (matte black)
- Pre-loaded firmware (latest version)
- Calibration guide and quick start instructions
- Access to web-based user manual
Shipping:
- Netherlands: €6.95 (PostNL)
- EU: €12.95 (tracked)
- Worldwide: Contact for quote
Order: Email info@processware.nl with:
- Quantity
- Shipping address
Note: Each application requires specific calibration. The device ships ready to power on, but you must perform calibration for your specific use case following the included guide.
Note: By purchasing a pre-built unit, you support continued development of this open source project!
- High Precision: 0.0146mm theoretical precision using 16-bit ADC (ADS1115)
- 60mm Measurement Range: Suitable for depth/displacement measurements
- WiFi Connectivity: Real-time monitoring via web interface
- Data Logging: Persistent storage with CSV export capability
- Visual Feedback: 1.47" TFT LCD display (ST7789) with touch interface (not implemented yet)
- Configurable Thresholds: Customizable alarm settings for quality control
- Automatic Measurement: Stability detection for hands-free operation
- Multiple Configurations: Store and switch between different measurement profiles
- OTA Updates: Over-the-air firmware updates for easy maintenance (future implementation)
| Component | Specification | Purpose |
|---|---|---|
| Microcontroller | ESP32-C6 (Waveshare LCD 1.47) | Main processor with WiFi |
| Display | 1.47" TFT LCD (ST7789, 172x320) | User interface |
| ADC | ADS1115 (16-bit, I2C) | Precision analog measurement |
| Position Sensor | 10kΩ Slide Potentiometer (60mm) | Linear displacement sensing |
Bourns PTA6043-2015DPB103
- Travel: 60mm
- Resistance: 10kΩ
- Linearity: ±0.25%
- Mechanical Life: 1 million cycles
See BOM.md for complete component list with supplier links and pricing.
| Parameter | Value |
|---|---|
| Measurement Range | 0-60mm |
| Resolution | 0.0146mm (theoretical) |
| Accuracy | ±0.1mm (after calibration) |
| Sampling Rate | 10 Hz (adjustable) |
| Display Update | 10 Hz |
| WiFi | 802.11 b/g/n (2.4GHz) |
| Power Supply | 5V USB-C |
| Operating Temperature | 0-50°C |
| Storage | 4MB Flash (SPIFFS) |
| Connectivity | WiFi, USB Serial |
Choose your preferred method:
For users who just want to use PowderSense without compiling:
- Download pre-built firmware from
releases/v1.0/ - Install esptool:
pip install esptool - Connect ESP32-C6 board via USB-C
- Flash firmware:
esptool.py --chip esp32c6 --port COM3 write_flash 0x10000 firmware.bin esptool.py --chip esp32c6 --port COM3 write_flash 0x290000 spiffs.bin
- Configure WiFi and start using!
See: releases/v1.0/FLASHING.md for detailed instructions
For users who want to modify the code or compile themselves:
- PlatformIO (recommended) or Arduino IDE
- Visual Studio Code with PlatformIO extension
- USB-C cable for programming
- WiFi network for web interface access
-
Install Visual Studio Code
- Download from: https://code.visualstudio.com/
- Run installer and follow prompts
-
Install PlatformIO Extension
- Open VS Code
- Click Extensions icon (left sidebar) or press
Ctrl+Shift+X - Search for "PlatformIO IDE"
- Click "Install" on the official PlatformIO extension
- Wait for installation to complete (may take a few minutes)
- Restart VS Code when prompted
-
Install Git (if not already installed)
- Download from: https://git-scm.com/download/win
- Run installer with default settings
-
Install USB Drivers (ESP32-C6)
- Most modern Windows versions auto-detect USB serial
- If needed: Download CH340/CP2102 drivers from device manufacturer
-
Clone Repository
Option A: Using Git Bash
git clone https://github.com/me-processware/powdersense.git cd powdersenseOption B: Using VS Code
- Press
Ctrl+Shift+P - Type "Git: Clone"
- Enter:
https://github.com/me-processware/powdersense.git - Select folder location
- Press
-
Open Project in VS Code
- File → Open Folder
- Navigate to
powdersensedirectory - Click "Select Folder"
- PlatformIO will automatically detect
platformio.ini - Wait for PlatformIO to initialize (status bar shows progress)
-
Select Environment
- Click PlatformIO icon in left sidebar (alien head)
- Expand "esp32c6_touch" environment
- This is the default for Waveshare ESP32-C6 1.47" LCD
-
Build Project
- Click "Build" under esp32c6_touch environment
- OR click checkmark (✓) icon in bottom status bar
- OR press
Ctrl+Alt+B - Wait for compilation (first build takes longer)
- Success message: "SUCCESS" in terminal
-
Connect ESP32-C6 Board
- Connect USB-C cable to ESP32-C6 board
- Connect other end to PC
- Windows should detect device (check Device Manager)
- Note the COM port (e.g., COM3, COM4)
-
Upload Firmware
- Click "Upload" under esp32c6_touch environment
- OR click arrow (→) icon in bottom status bar
- OR press
Ctrl+Alt+U - PlatformIO auto-detects COM port
- Wait for upload (progress shown in terminal)
- Device will reboot automatically
-
Monitor Serial Output
- Click "Monitor" under esp32c6_touch
- OR click plug icon in bottom status bar
- OR press
Ctrl+Alt+S - Baud rate: 115200 (auto-configured)
- Watch boot messages and WiFi status
-
Build Filesystem Image
- In PlatformIO sidebar
- Expand "Platform" → "Build Filesystem Image"
- Click to build SPIFFS image from
data/folder - Wait for completion
-
Upload Filesystem
- Click "Upload Filesystem Image" under Platform
- OR in terminal:
pio run -t uploadfs - This uploads HTML/CSS/JS files to device
- Takes ~30 seconds
- Device reboots after upload
-
Access Point Mode
- After first boot, device creates WiFi AP
- SSID: "PowderSense-XXXX" (XXXX = last 4 MAC digits)
- Password: "powdersense"
-
Connect to AP
- On your phone/laptop, connect to PowderSense WiFi
- Captive portal should open automatically
- If not, navigate to:
http://192.168.4.1
-
Configure WiFi
- Select your WiFi network from dropdown
- Enter WiFi password
- Click "Save Configuration"
- Device reboots and connects to your network
-
Find Device IP
- Check serial monitor for IP address
- OR check your router's DHCP client list
- OR use network scanner (e.g., Advanced IP Scanner)
-
Open Web Dashboard
- Open web browser (Chrome, Firefox, Edge)
- Navigate to:
http://<device-ip> - Example:
http://192.168.1.100 - Web interface loads
-
Calibrate and Use
- Follow on-screen calibration wizard
- See USER_MANUAL.md for details
See SETUP.md for comprehensive installation and configuration instructions.
- User Manual - Complete operating instructions
- Calibration Guide - Step-by-step calibration procedure
- Web Interface Guide - Using the web dashboard
- Troubleshooting - Common issues and solutions
- Architecture Overview - System design and structure
- API Reference - WebSocket and HTTP endpoints
- Hardware Assembly - Physical construction guide
- Firmware Development - Contributing to firmware
- PCB Design - Custom PCB schematics and layout
- Reloading Application - Ammunition reloading use case
- Industrial QC - Quality control applications
- 3D Printer Integration - Bed leveling and monitoring
- Educational Use - Teaching measurement principles
powdersense/
├── src/ # Main source code
│ ├── main.cpp # Application entry point
│ └── board_config.h # Board-specific pin definitions
├── include/ # Header files
├── lib/ # Custom libraries
├── data/ # Web interface files (SPIFFS)
│ ├── index.html # Main web dashboard
│ ├── wifi_config.html # WiFi configuration page
│ └── app.py # (Optional) Python test server
├── hardware/ # Hardware design files
│ ├── schematics/ # Circuit diagrams
│ ├── pcb/ # PCB layouts (KiCad)
│ └── enclosure/ # 3D printable case (STL)
├── docs/ # Documentation
├── scripts/ # Utility scripts
├── partitions/ # ESP32 partition tables
├── platformio.ini # PlatformIO configuration
├── LICENSE-HARDWARE.txt # CERN-OHL-W license
├── LICENSE-SOFTWARE.txt # MIT license
└── README.md # This file
This project uses multiple licenses for different components:
All hardware designs, schematics, PCB layouts, and mechanical drawings are licensed under the CERN Open Hardware License Version 2 - Weakly Reciprocal (CERN-OHL-W).
What this means:
- ✅ You can use, modify, and distribute the hardware design
- ✅ You can manufacture and sell products based on this design
- ✅ You can integrate this design into proprietary products
⚠️ Modifications to the hardware design itself must be shared under CERN-OHL-W⚠️ You must provide attribution to the original project
See LICENSE-HARDWARE.txt for full terms.
All firmware, software libraries, and utility scripts are licensed under the MIT License.
What this means:
- ✅ You can use, modify, and distribute the software
- ✅ You can use it in proprietary products
- ✅ You can sublicense and sell it
⚠️ You must include the original copyright notice⚠️ No warranty provided
See LICENSE-SOFTWARE.txt for full terms.
All documentation, tutorials, and guides are licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
What this means:
- ✅ You can use, adapt, and share the documentation
- ✅ You can use it for commercial purposes
⚠️ You must provide attribution⚠️ Derivative works must use the same license
See LICENSE-DOCUMENTATION.txt for full terms.
The name "PowderSense" and associated logos are trademarks of Processware. You may use them to refer to this project, but not to imply endorsement or create confusion about the source of derivative products.
Requirements:
- PlatformIO Core 6.0+
- ESP32 platform package
- Python 3.7+ (for scripts)
Build Commands:
# Build firmware
pio run -e esp32c6_touch
# Upload firmware
pio run -e esp32c6_touch -t upload
# Upload filesystem
pio run -e esp32c6_touch -t uploadfs
# Monitor serial output
pio device monitor -b 115200
# Clean build
pio run -t clean- Create feature branch:
git checkout -b feature/your-feature - Make changes and test thoroughly
- Update documentation if needed
- Commit with clear messages
- Push and create pull request
- C++: Follow Arduino style guide
- Indentation: 2 spaces (no tabs)
- Comments: Explain why, not what
- Naming: camelCase for variables, PascalCase for classes
- Verify web interface on multiple browsers
- Check calibration accuracy with known references
- Test WiFi connectivity in different scenarios
Contributions are welcome! This is an open source project and benefits from community input.
- Bug Reports: Open an issue with detailed reproduction steps
- Feature Requests: Describe the use case and proposed solution
- Code Contributions: Submit pull requests with improvements
- Documentation: Help improve guides and tutorials
- Hardware Variants: Share adaptations for different sensors/displays
- Application Notes: Document new use cases
- Search existing issues before creating new ones
- One issue per bug/feature - don't combine multiple topics
- Provide context - explain why, not just what
- Test your changes - ensure they work on actual hardware
- Update documentation - keep docs in sync with code
- Be respectful - follow code of conduct
See CONTRIBUTING.md for detailed guidelines.
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions, ideas, and general chat
- Email: info@processware.nl (for private inquiries)
We'd love to see what you create! Share your builds:
- Post photos/videos in GitHub Discussions
- Tag #PowderSense on social media
- Submit to Hackaday.io, Hackster.io
- Write blog posts and tutorials
- Watch this repository for updates
- Star if you find it useful
- Fork to create your own variant
- Subscribe to release notifications
- ✅ Basic measurement and display
- ✅ WiFi configuration and web interface
- ✅ Data logging and CSV export
- ✅ Automatic measurement with stability detection
- ✅ Multiple configuration profiles
- OTA implementation
- touchscreen support
Monitor powder depth in reloading presses to detect under/overcharges, ensuring safety and consistency.
Benefits:
- Real-time feedback during reloading
- Automatic detection of anomalies
- Data logging for quality records
- Eliminates manual checking
Measure part dimensions, material thickness, or fill levels in manufacturing.
Benefits:
- High precision at low cost
- WiFi connectivity for remote monitoring
- Data export for SPC analysis
- Customizable for specific applications
Monitor bed level, Z-axis position, or filament diameter.
Benefits:
- Automated bed leveling assistance
- Print quality monitoring
- Filament consistency checking
- Integration with OctoPrint/Klipper
Teach measurement principles, calibration, and data analysis.
Benefits:
- Open source for learning
- Affordable for schools
- Hands-on electronics project
- Real-world engineering example
This project was inspired by the open source hardware movement and successful projects like:
- Arduino - Pioneering open source microcontroller platform
- Adafruit - Open source hardware and excellent documentation
- SparkFun - Community-driven electronics development
- LovyanGFX - High-performance graphics library
- WebSockets - Real-time communication
- ArduinoJson - JSON parsing and serialization
- Adafruit ADS1X15 - ADC driver
For businesses requiring:
- Custom firmware development
- Hardware adaptations
- Integration services
- Training and consulting
- Priority support
Contact: info@processware.nl
Processware offers consulting for:
- Industrial measurement systems
- IoT device development
- ESP32 firmware development
- Open source hardware strategy
This device is provided as-is for educational and experimental purposes. While designed for precision measurement, it should not be used as the sole safety mechanism in critical applications.
For reloading applications: Always follow safe reloading practices, use published load data, and verify charges with a calibrated scale. This device is a supplementary tool, not a replacement for proper reloading procedures.
No warranty: This hardware and software are provided without warranty of any kind. Use at your own risk.
If you use this project in academic work, please cite:
Processware. (2025). PowderSense: Open Source Precision Measurement System.
GitHub repository: https://github.com/me-processware/powdersense
Made with ❤️ by Processware
Open Source Hardware • Community Driven • Built for Makers
- GitHub: https://github.com/me-processware/powdersense
- Website: https://powdersense.nl (TBD)
- Documentation: https://docs.powdersense.com (TBD)
- Hackaday: https://hackaday.io/project/powdersense (TBD)
Last updated: November 2025





