Skip to content

Development Hardware

OpticWorks provides various hardware resources for development, testing, and CI/CD purposes. This guide covers how to access and use our development hardware.

CategoryHardwarePurposeLocation
Dev NodesIntel N100 Mini PCsLocal CI, Home Assistant, testingOffice / Remote
SensorsRS-1 Dev KitshardwareOS developmentOffice Lab
IoTESP32 + LD2410Presence Engine developmentPersonal / Lab
AccessoriesVariousCables, power supplies, mountsOffice Lab

Intel N100-based mini PCs that serve as local development servers, CI runners, and Home Assistant test hosts. These low-power (~15W) machines run 24/7 and provide:

  • Local GitHub Actions runners for hardware testing
  • Home Assistant instances for integration testing
  • Development databases and caches
  • Firmware flashing stations
NodeSpecsPurposeOwner
n100-lab-1N100, 16GB, 512GB NVMePrimary CI runnerShared
n100-lab-2N100, 16GB, 256GB NVMeHome Assistant hostOSS Team
n100-remote-ryanN100, 8GB, 256GB NVMeRemote dev/flashRyan
n100-remote-[name]VariesRemote developmentIndividual
Terminal window
# SSH access (requires VPN or office network)
ssh developer@n100-lab-1.local
# Alternative via Tailscale
ssh developer@n100-lab-1.ts.optic.works
n100-lab-1
├── GitHub Actions Runner (hardware tests)
├── Docker (local registry)
└── USB passthrough for RS-1 flashing
n100-lab-2
├── Home Assistant (test instance)
├── MQTT Broker (Mosquitto)
├── ESPHome Dashboard
└── PostgreSQL (test database)

Access the test Home Assistant instance:

The lab nodes run self-hosted GitHub Actions runners:

# Use self-hosted runner for hardware tests
jobs:
hardware-test:
runs-on: [self-hosted, hardware]
steps:
- name: Flash ESP32
run: esphome run test-device.yaml

For remote work with hardware testing needs:

  1. Submit IT ticket with justification
  2. Specify your home network setup
  3. IT will ship pre-configured N100
  4. Connect to Tailscale network
  5. Access via n100-remote-[yourname].ts.optic.works

Each RS-1 dev kit contains:

ItemDescription
RS-1 DeviceRV1106-based sensor fusion unit
USB-C Debug CableFor serial console and flashing
Power Adapter5V 3A USB-C power
Mounting Bracket3D printed desk mount
Quick Start GuideSetup instructions

In Office:

  • Check out from the hardware lab
  • Sign the equipment log
  • Return when done

Remote:

  1. Submit IT ticket for dev kit loan
  2. Provide shipping address
  3. Kit ships within 2 business days
  4. Return when project completes
Terminal window
# Connect USB-C debug cable
# Find serial device
ls /dev/ttyUSB* # Linux
ls /dev/cu.usbserial* # macOS
# Connect via serial console
screen /dev/ttyUSB0 115200
# Or use minicom
minicom -D /dev/ttyUSB0 -b 115200
Terminal window
# Navigate to hardwareOS directory
cd ~/workspace/hardwareOS
# Build firmware
./tools/build.sh --type debug
# Flash via USB (device in boot mode)
./tools/flash.sh dist/firmware-debug.bin

To enter boot mode for flashing:

  1. Disconnect power
  2. Hold BOOT button
  3. Connect power
  4. Release BOOT button after 2 seconds
  5. Device is now in flash mode
Terminal window
# View live logs
ssh root@192.168.1.x 'journalctl -f'
# Debug fusion algorithm
./tools/debug.sh --component fusion
# Remote GDB session
./tools/gdb-remote.sh 192.168.1.x

Standard ESP32 development setup for Presence Engine:

ComponentModelQuantitySource
MicrocontrollerESP32-WROOM-32 DevKit1Amazon/AliExpress
Radar SensorHLK-LD24101AliExpress
Jumper WiresFemale-to-Female4Amazon
USB CableUSB-A to Micro-USB1Any
BreadboardHalf-size (optional)1Amazon

Approximate Cost: $15-20 per kit

ESP32 LD2410
┌─────────────┐ ┌─────────────┐
│ 3V3 │────────│ VCC │
│ GND │────────│ GND │
│ GPIO17 │────────│ RX │
│ GPIO16 │────────│ TX │
└─────────────┘ └─────────────┘
Terminal window
# Install ESPHome
pip install esphome
# Navigate to presence engine repo
cd ~/workspace/presence-detection-engine/esphome
# Create secrets file
cp secrets.yaml.example secrets.yaml
# Edit with your WiFi credentials
# Compile and flash
esphome run base.yaml
Terminal window
# Serial logs (USB connected)
esphome logs base.yaml --device /dev/ttyUSB0
# OTA logs (WiFi)
esphome logs base.yaml

“Failed to connect to ESP32”

  • Hold BOOT button while flashing begins
  • Check USB cable (some are power-only)
  • Try different USB port

“LD2410 not responding”

  • Verify wiring (TX→RX, RX→TX)
  • Check 3.3V power (not 5V)
  • Baud rate should be 256000

The hardware lab is located at [Office Address]. Access requires badge.

ResourceDescription
OscilloscopeRigol DS1054Z for signal debugging
Logic AnalyzerSaleae for UART/SPI analysis
Soldering StationHakko FX-888D
3D PrinterPrusa MK3S+ for enclosures
Power SuppliesBench PSUs for testing
Component StorageResistors, capacitors, connectors
  1. Sign in/out on the lab log
  2. Return equipment to designated locations
  3. Report any broken equipment immediately
  4. Clean up your workspace
  5. No food or drinks at workbenches

For dedicated lab sessions:

  1. Check the Lab Calendar in Google Calendar
  2. Book 2-4 hour slots
  3. Include project name in booking
  4. Cancel if plans change
ProjectRequired Hardware
StoreNone (software only)
Presence EngineESP32 + LD2410 kit
hardwareOSRS-1 dev kit + N100 node

If developing in a VM:

Terminal window
# VirtualBox - pass USB device to guest
VBoxManage modifyvm "VM Name" --usb on
VBoxManage modifyvm "VM Name" --usbehci on
# Add USB filter for ESP32
VBoxManage usbfilter add 0 --target "VM Name" \
--name "ESP32" --vendorid 10c4 --productid ea60

Windows users with WSL2:

Terminal window
# Install usbipd
winget install usbipd
# List USB devices
usbipd list
# Attach ESP32 to WSL
usbipd attach --wsl --busid 1-4
  1. Submit IT ticket with:

    • Hardware type needed
    • Project/justification
    • Duration of loan
    • Shipping address (if remote)
  2. Approval from:

    • Team lead (standard equipment)
    • Engineering lead (expensive items)
Request TypeTurnaround
Check out from labSame day
Ship to remote2-3 business days
Purchase new equipment1-2 weeks
  • Clean and test before return
  • Include all cables and accessories
  • Note any issues on return form
  • Ship back via prepaid label (provided)

These can be expensed directly:

  • USB cables and adapters (<$30)
  • ESP32 dev boards (<$20)
  • Common sensors and components (<$50)

Submit purchase request for:

  • N100 mini PCs
  • Oscilloscopes and test equipment
  • 3D printing filament (bulk)
  • Anything over $100