Comprehensive IoT solution featuring custom Arduino® Nano ESP32 firmware, detailed electrical schematics, scalable AWS cloud infrastructure, and a cross-platform Angular/Electron desktop application. Initially developed as a capstone project for Curtin University's IoT MicroMasters Program (April–July 2023), with full technical implementation finalized following course certification.
Quick Navigation
- Museum Alert API: AWS CDK project for creating infrastructure, APIs, and configuration artifacts required to deploy both "Museum Alert Sensor (MAS)" device and "Museum Alert Desktop" application;
- Museum Alert Sketch: electrical schematic and firmware for building the "Museum Alert Sensor (MAS)";
- Museum Alert Desktop: cross-platform desktop application for registering, configuring, and testing the "Museum Alert Sensor (MAS)".
What Problem is Being Solved?
The conceptual product proposed in this document, branded as “Museum Alert“, represents a proof-of-concept designed to precisely address the emerging problems outlined above by supplying two key features centered around safety of works of art and attendees' engagement:
- basic security assistance to museum personnel via distance and tripwire barriers to help prevent trespassing of safety space limits (e.g.: touching works of art) and unauthorized access to restricted areas;
- proximity push notifications to visitors' mobile devices with descriptive content about the collections they are experiencing.


The Museum Alert Sensor (MAS) offers a streamlined setup process designed for rapid deployment and ease of use. Configuration begins with an organization representative creating a professional account via the desktop application on an internet-connected device. Once authenticated, any unregistered MAS units can be onboarded through a guided four-step process, which includes entering Wi-Fi credentials to connect each sensor to the local network.
Upon successful connection, each sensor is automatically associated with the authenticated user's company device pool. It then initiates secure communication with the Museum Alert broker using MQTT over TLS (MQTTs), while simultaneously broadcasting Bluetooth Low Energy (BLE) beacons to nearby mobile devices. This dual-channel communication enables real-time alert dispatch and proximity-based notifications.
In addition to its role in sensor registration, the desktop application included in the project functions as a comprehensive diagnostic and configuration tool. It enables users to:
- set the BLE-broadcasted Eddystone-URL for each sensor;
- define the minimum distance threshold that triggers alert notifications;
- verify whether alert notifications are being correctly dispatched to the authenticated user's Company topics.
Perimeter Exclusion: The Museum Alert System
Warning signs do not work to stop curious humans from touching priceless museum artifacts. You must construct an aggressive, invisible electronic exclusion zone! The Museum Alert project establishes a literal acoustic radar perimeter. By deploying a high-speed Ultrasonic distance analyzer hidden discreetly beneath the podium, the Arduino continuously executes massive physical sound-wave telemetry against the open air. If a human hand crosses the rigid 30-centimeter boundary threshold attempting a theft, the Arduino evaluates the drop in latency and violently executes a high-decibel piezo siren protocol immediately!
Programming the SR04 Acoustic Radar
The HC-SR04 cannot just be "Read." It must be orchestrated via explosive microsecond square-waves natively!
- The Trigger Pin is blasted
HIGHfor exactly 10 microseconds, forcing the speaker to smash an imperceptible 40KHz ping into the environment! - The Arduino must aggressively halt all logic and utilize the
pulseIn()function waiting for the Echo Pin listener microphone to receive the bounce. - The Speed of Sound is exactly
343 meters per second. It takes29.1 microsecondsfor sound to physically travel 1 centimeter.
// 1. Fire the Acoustic Radar!
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 2. Trapped the Microsecond Bounce!
long duration = pulseIn(echoPin, HIGH);
// 3. Mathematical conversion to Centimeters!
int distance = duration / 29.1 / 2; // Divide by 2 because it's a round trip!
// 4. Perimeter Exclusion Logic!
if (distance < 30) { // The hand broke the 30cm invisible boundary barrier!
tone(BUZZER_PIN, 2000); // BLAST A 2KHZ SIREN!
delay(100);
tone(BUZZER_PIN, 1000); // OSCILLATING WAILING ALARM!
} else {
noTone(BUZZER_PIN); // Safe zone maintained.
}
Eliminating False Positives
If a speck of dust floats by, the alarm activating would severely disrupt the museum environment.
- The
loop()must be configured with a "Confidence Array". - If it detects a breach (
distance < 30), do not alarm instantly! Take 3 rapid subsequent readings. If ALL THREE readings verify an anomaly, then execute the main hardware alarm matrix! This effectively eliminates ghost readings caused by bad Echo reflections!
Alarm Infrastructure Necessary
- Arduino Uno/Nano (Can be perfectly embedded completely out of sight).
- HC-SR04 Ultrasonic Module (Or a more expensive Industrial TF-Luna Lidar module if pinpoint accuracy on small objects like jewels is mandatory over acoustic spreads).
- Loud Active Buzzer or Piezo Siren (Utilizing the
tone(pin, freq)command allows for generating complex police-style oscillating frequencies perfectly!). - Red LED Warning Beacon Strip (Wired via a TIP120 transistor to visually highlight the exact display case breached concurrently with the alarm!).
Concurrent WiFi + BLE operation
An interesting technical aspect is the stable, simultaneous operation of WiFi and Bluetooth Low Energy on the Arduino Nano ESP32, powered by the u-blox® NORA-W106 (ESP32-S3) module. Since the ESP32-S3 uses a single 2.4GHz radio for both protocols, careful RF resource management is essential to avoid conflicts that typically lead to instability in dual-mode implementations.