An ultra-low-cost, battery-optimized mechanical puzzle lock box that physically decrypts via a live pulse rhythm stream. Built entirely on an open-source framework by RikMakersHub.
Hardware routing map for interconnecting the low-power sensing loop, battery regulation, and alerting hardware.
📍 PIN A0 ➔ Pulse Sensor Signal
📍 VCC ➔ 3.7V Step-Up Rail
📍 PIN 9 ➔ Servo Signal Line
📍 PIN 13 ➔ Status Validation LED
Value-engineered hardware matrix targeting an active field deployment cost under ₹500 ($5.80 USD).
| Component Name | Specification / Type | Cost (₹500) | Primary Operational Function |
|---|---|---|---|
| Microcontroller Unit | Arduino Pro Mini (5V / 16MHz ATmega328P) | ₹160 | Core logic execution loop. Onboard trace cuts isolate and remove the power indicator LED. |
| Energy Reservoir | Upcycled 18650 Li-Ion Cell + 5V Mini Epoxy Solar Panel | ₹70 | Autonomous, off-grid power management loop. Completely bypasses household grid lines. |
| Sensing Infrastructure | Optical Analog Pulse Sensor Module | ₹140 | Provides raw data input arrays for biometric heart rate interval variance parsing. |
| Switching & Alerts | TowerPro SG90 Micro Servo Actuator | ₹80 | Isolates processing pin from direct load demands. Physically drives the locking bolt mechanism. |
| System Shielding | IP65 Weatherproof Electrical PVC Junction Box | ₹50 | Protects core processing traces from intense monsoon downpours and thermal field degradation. |
| Total Value-Engineered Build Cost | ₹500 / $6.00 USD (Success) | ||
Watchdog-gated production script optimized via RikEcoCode-Pro computational analytics to remove blocking delay() lines.
#include
const int pulseSensorPin = A0;
const int servoActuatorPin = 9;
const int trackingThreshold = 550;
const int pulseLockoutInterval = 300; // Minimum time between distinct beats
Servo latchServo;
int beatCadenceCounter = 0;
unsigned long lastBeatTime = 0;
unsigned long servoTriggerTime = 0;
bool servoActive = false;
bool signalAboveThreshold = false;
void setup() {
pinMode(13, OUTPUT);
latchServo.attach(servoActuatorPin);
latchServo.write(0);
}
void loop() {
int rawSignalValue = analogRead(pulseSensorPin);
unsigned long currentTimestamp = millis();
// Non-blocking servo retraction mechanism
if (servoActive && (currentTimestamp - servoTriggerTime >= 5000)) {
latchServo.write(0);
servoActive = false;
}
// Check for the rising edge of a heartbeat peak
if (rawSignalValue > trackingThreshold && !signalAboveThreshold) {
unsigned long timeDeltaInterval = currentTimestamp - lastBeatTime;
// Prevent accidental double-triggering on a single noisy pulse
if (timeDeltaInterval > pulseLockoutInterval) {
signalAboveThreshold = true;
if (timeDeltaInterval >= 800 && timeDeltaInterval <= 850) {
beatCadenceCounter++;
digitalWrite(13, HIGH); // Flash LED
} else if (timeDeltaInterval > 850) {
beatCadenceCounter = 0; // Reset cadence if too slow
}
lastBeatTime = currentTimestamp;
if (beatCadenceCounter >= 3) {
latchServo.write(90);
servoTriggerTime = currentTimestamp;
servoActive = true;
beatCadenceCounter = 0;
}
}
}
// Reset flag when signal drops back down below threshold
else if (rawSignalValue < (trackingThreshold - 10)) { // 10 point hysteresis to prevent noise flicker
signalAboveThreshold = false;
digitalWrite(13, LOW);
}
}