# Particle Boron LTE Security Device Ultra-low-power security monitoring device using Particle Boron LTE with immediate local alarm response and 2+ year battery life. ## ๐ŸŽฏ Overview This firmware transforms a Particle Boron LTE into a professional security monitoring device optimized for: - **Ultra-low power consumption** (130ฮผA sleep current) - **Immediate security response** (sub-second alarm activation) - **Long-term remote operation** (2+ years on battery) - **Reliable cellular communication** (LTE-M/NB-IoT) ## โšก Power Performance ### Power Consumption Breakdown ``` Sleep Mode (STOP): 130ฮผA (99% of time) Wake & Process: 80mA (10-15 seconds) Cellular Connect: 300-800mA (30-60 seconds) Alarm Active: +50mA (10 seconds) ``` ### Battery Life Estimates - **5000mAh Li-Po**: 2-3 years typical operation - **10000mAh Li-Po**: 4-5 years typical operation - **With 6W Solar Panel**: Indefinite operation ## ๐Ÿ”Œ Hardware Requirements ### Core Components - **Particle Boron LTE** (Gen 3) - Main controller - **5000-10000mAh Li-Po Battery** - Primary power - **Microswitch (NC)** - Security sensor - **Alarm Device** - Local deterrent (siren, buzzer, etc.) - **Weatherproof Enclosure** - Environmental protection ### Pin Configuration ``` Boron Pin Connection Description โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ D2 Microswitch Common Security sensor input GND Microswitch NC Normally closed contact D3 Alarm Device + Alarm output (with driver) GND Alarm Device - Alarm ground D7 Status LED (built-in) Visual feedback VIN Battery + (3.7-12V) Power input GND Battery - Power ground ``` ### Microswitch Wiring (NC Configuration) ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Microswitch โ”‚ โ”‚ โ”‚ โ”‚ COM NC โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€ GND (Boron) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€ D2 (Boron) State: CLOSED (normal) = D2 reads HIGH (pulled up) State: OPEN (breach) = D2 reads LOW (pulled to GND) ``` ### Alarm Device Options **Option A: Simple Buzzer (Low Power)** ``` D3 โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€ Buzzer + โ”‚ โ”Œโ–ผโ” โ”‚Rโ”‚ 1kฮฉ resistor โ””โ”ฌโ”˜ โ”‚ GND โ”€โ”€โ”€ Buzzer - ``` **Option B: High Power Siren (Recommended)** ``` D3 โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€ 1kฮฉ โ”€โ”€โ”€ Base (2N2222 NPN) โ”‚ GND Emitter โ”‚ GND Collector โ”€โ”€โ”€โ”€ Siren + VIN โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Siren - ``` ## ๐Ÿ“ก Network Configuration ### Cellular Requirements - **LTE Coverage**: Device requires LTE-M or NB-IoT coverage - **Data Plan**: 1-5MB per month typical usage - **Signal Strength**: Target -70dBm or better for reliability ### Particle Cloud Integration - **Events**: Published to Particle Cloud as private events - **Webhooks**: Particle Cloud forwards to your webhook server - **OTA Updates**: Firmware updates delivered over cellular ## ๐Ÿ”‹ Power Optimization Features ### Sleep Strategy - **STOP Mode**: Ultra-low power sleep (130ฮผA) - **24-Hour Wake Cycle**: Daily battery reports - **Pin Interrupt Wake**: Immediate wake on security breach - **Cellular Management**: Radio only active when needed ### Wake Scenarios 1. **Security Breach**: Microswitch opened (immediate response) 2. **Daily Report**: 24-hour timer for battery status 3. **Cold Start**: Device power-on or reset ### Battery Management - **Proactive Monitoring**: Daily battery level reports - **Low Battery Alerts**: 20% and 10% thresholds - **Critical Shutdown**: Auto-sleep at 5% to prevent damage - **Solar Ready**: Supports solar charging systems ## ๐Ÿ›ก๏ธ Security Features ### Immediate Response - **Local Alarm**: Activates before any network activity - **Sub-Second Response**: <1 second from trigger to alarm - **Guaranteed Duration**: 10-second minimum alarm time - **Network Independent**: Works even without cellular coverage ### Tamper Detection - **Boot Counting**: Tracks device resets and power cycles - **Startup Alerts**: Notifications when device restarts - **Firmware Tracking**: Version monitoring for security - **Signal Monitoring**: Cellular quality tracking ### Data Security - **Private Events**: All Particle.publish() calls use PRIVATE flag - **Encrypted Transport**: All cellular communication encrypted - **Webhook Authentication**: Server validates device authenticity - **No Local Storage**: No sensitive data stored on device ## ๐Ÿš€ Installation Guide ### 1. Hardware Assembly **Basic Wiring:** ```bash # Connect microswitch (NC configuration) # Common terminal โ†’ D2 # NC terminal โ†’ GND # Connect alarm device (with driver circuit) # Control signal โ†’ D3 # Power and ground as appropriate # Connect battery # Li-Po + โ†’ VIN (3.7V nominal) # Li-Po - โ†’ GND ``` **Power Optimization:** ```cpp // Ensure unused pins are configured pinMode(UNUSED_PIN, INPUT_PULLDOWN); // Prevent floating ``` ### 2. Firmware Programming **Using Particle CLI:** ```bash # Install Particle CLI npm install -g particle-cli # Login to your account particle login # Flash the firmware particle flash your-device-name security_device.ino # Monitor device events particle subscribe mine ``` **Using Particle Web IDE:** 1. Go to [build.particle.io](https://build.particle.io) 2. Create new app "SecurityDevice" 3. Copy `security_device.ino` content 4. Click Flash button (lightning icon) 5. Select your Boron device **Using Particle Workbench:** 1. Open VS Code with Particle Workbench 2. Create new Particle project 3. Copy firmware code 4. Use `Particle: Flash application (local)` ### 3. Device Configuration **Claim Device:** ```bash # Claim device to your account particle device add YOUR_DEVICE_ID # Set device name particle device rename YOUR_DEVICE_ID "Security-Device-01" # Check device status particle list ``` **Verify Connectivity:** ```bash # Check device online status particle get YOUR_DEVICE_ID connected # Monitor device events particle subscribe YOUR_DEVICE_ID ``` ## ๐Ÿ“Š Monitoring & Diagnostics ### Event Types The device publishes these event types to monitor health and security: **Security Events:** - `SECURITY_BREACH`: Microswitch opened (intruder detected) - `MOTION_CLEARED`: Security sensor returned to normal (optional) **System Events:** - `DEVICE_STARTUP`: Device powered on or reset - `DAILY_BATTERY_REPORT`: 24-hour battery status - `LOW_BATTERY`: Battery below 20% - `CRITICAL_BATTERY`: Battery below 10% ### Data Format ```cpp // Example event data format: "Type:SECURITY_BREACH|Desc:Microswitch opened|Batt:85.2%|Signal:-45|Quality:3|Boot:15|Alarm:ON" ``` ### Status LED Patterns ``` Startup: 3 slow blinks (500ms each) Security Breach: 5 rapid blinks (100ms each) Daily Report: 2 medium blinks (200ms each) Cellular Connect: Alternating blink during connection Success: 2 quick blinks (100ms each) Error: 10 rapid blinks (50ms each) ``` ## ๐Ÿ”ง Configuration Options ### Adjustable Parameters ```cpp // Sleep and wake timing const unsigned long DAILY_BATTERY_REPORT = 86400; // 24 hours // Options: 43200 (12h), 172800 (48h) // Alarm behavior const unsigned long ALARM_DURATION = 10000; // 10 seconds // Options: 5000 (5s), 15000 (15s), 30000 (30s) // Connection timeouts const unsigned long CELLULAR_TIMEOUT = 60000; // 60 seconds // Options: 30000 (30s), 120000 (2min) // Battery thresholds const float LOW_BATTERY_THRESHOLD = 20.0; // 20% const float CRITICAL_BATTERY_THRESHOLD = 10.0; // 10% ``` ### Environment-Specific Tuning **Indoor Installation:** ```cpp const unsigned long DAILY_BATTERY_REPORT = 43200; // 12-hour reports const unsigned long CELLULAR_TIMEOUT = 30000; // Faster timeout ``` **Remote/Outdoor Installation:** ```cpp const unsigned long DAILY_BATTERY_REPORT = 86400; // 24-hour reports const unsigned long CELLULAR_TIMEOUT = 120000; // Longer timeout ``` **Solar-Powered Installation:** ```cpp const unsigned long DAILY_BATTERY_REPORT = 21600; // 6-hour reports const float LOW_BATTERY_THRESHOLD = 30.0; // Higher threshold ``` ## ๐Ÿงช Testing & Validation ### Bench Testing ```cpp // Add to setup() for testing mode #define TESTING_MODE #ifdef TESTING_MODE void testMode() { Serial.begin(9600); Serial.println("Security Device Test Mode"); // Test all functions testMicroswitch(); testAlarm(); testCellularConnection(); testBatteryReporting(); } #endif ``` ### Field Testing Checklist - [ ] **Microswitch Operation**: NC switch triggers properly - [ ] **Alarm Activation**: Immediate response (<1 second) - [ ] **Cellular Connection**: Reliable within 60 seconds - [ ] **Event Publishing**: Particle Console shows events - [ ] **Power Consumption**: Measure sleep current (target: 130ฮผA) - [ ] **Battery Life**: Validate projected consumption - [ ] **Signal Strength**: Check installation location (-70dBm target) - [ ] **Weather Resistance**: Verify enclosure sealing ### Production Validation ```bash # Monitor power consumption particle get YOUR_DEVICE_ID vitals # Check cellular signal particle get YOUR_DEVICE_ID signal # Verify event publishing particle subscribe YOUR_DEVICE_ID # Test security trigger # (Manually open microswitch and verify alarm + event) ``` ## ๐Ÿšจ Troubleshooting ### Common Issues **Device Won't Sleep (High Power Consumption)** ```cpp // Check for blocking code Serial.println("Checking sleep conditions..."); Serial.println("Cellular ready: " + String(Cellular.ready())); Serial.println("Particle connected: " + String(Particle.connected())); // Remove Serial calls in production! ``` **Microswitch Not Triggering** - Verify NC (normally closed) wiring - Check switch mechanical operation - Test continuity: closed = 0ฮฉ, open = โˆžฮฉ - Confirm pullup resistor configuration **Cellular Connection Issues** - Check signal strength at installation site - Verify SIM card activation and data plan - Test with external antenna if signal weak - Monitor connection timeout settings **Alarm Not Activating** - Verify D3 output voltage (3.3V when HIGH) - Check alarm device power requirements - Test driver circuit with multimeter - Confirm alarm device functionality **High Data Usage** - Reduce event publishing frequency - Check for unnecessary Particle.publish() calls - Monitor cellular data usage in console - Optimize alert message size ### Debug Mode ```cpp // Enable for development only (remove in production) #define DEBUG_MODE #ifdef DEBUG_MODE void debugLog(String message) { Serial.println(String(millis()) + ": " + message); } #endif ``` ### Recovery Procedures **Device Stuck/Unresponsive** 1. Hold RESET button for 10+ seconds 2. Device enters safe mode (breathing magenta) 3. Flash firmware in safe mode 4. Use `particle device doctor` if needed **OTA Update Failed** ```bash # Force update via USB particle flash --usb security_device.ino # Or use DFU mode # Hold SETUP + RESET, release RESET, wait for yellow, release SETUP particle flash --usb tinker # Reset to Tinker particle flash YOUR_DEVICE_ID security_device.ino # Reflash ``` ## ๐Ÿ“ˆ Performance Optimization ### Power Optimization - **Minimize wake time**: Keep cellular connection brief - **Efficient data format**: Compact message structure - **Smart reconnection**: Avoid unnecessary connection attempts - **Sleep verification**: Ensure proper STOP mode entry ### Network Optimization - **Message compression**: Use abbreviated field names - **Batch operations**: Multiple sensor readings per message - **Connection reuse**: Minimize connect/disconnect cycles - **Retry logic**: Smart exponential backoff ### Battery Life Extension - **Solar integration**: 6W+ panel for indefinite operation - **Temperature management**: Avoid extreme temperature exposure - **Maintenance schedule**: Proactive battery replacement - **Load management**: Optimize alarm duty cycle ## ๐Ÿ”„ Over-The-Air Updates ### Safe OTA Practices ```cpp void checkForUpdates() { if (Particle.connected()) { // Allow time for OTA during startup unsigned long otaWindow = millis(); while (millis() - otaWindow < 30000) { // 30 second window Particle.process(); delay(100); } } } ``` ### Version Management ```cpp const String FIRMWARE_VERSION = "1.0.0"; void publishStartupAlert() { String data = String::format( "Type:DEVICE_STARTUP|FW:%s|Batt:%.1f%%", FIRMWARE_VERSION.c_str(), System.batteryCharge() ); Particle.publish("Security Alert", data, PRIVATE); } ``` ## ๐Ÿ“š Additional Resources ### Documentation - **Power Analysis**: `docs/power-analysis.md` - **Hardware Guide**: `docs/hardware-guide.md` - **Troubleshooting**: `docs/troubleshooting.md` - **Performance Tuning**: `docs/performance-tuning.md` ### External Resources - [Particle Documentation](https://docs.particle.io/) - [Boron Datasheet](https://docs.particle.io/reference/datasheets/cellular/boron-datasheet/) - [Cellular Guide](https://docs.particle.io/reference/cellular/) - [Low Power Guide](https://docs.particle.io/reference/cloud-api/webhooks/) --- **โš ๏ธ Important Notes:** - Remove all `Serial` debugging code in production builds - Test thoroughly before deploying to remote locations - Always include physical access for emergency maintenance - Follow local regulations for security devices and alarms