UrbanRest Guardian Project Introduction
Greetings! I'm Enrique, a Spanish software developer working in the credit card payment industry. I've been having trouble sleeping recently. Noise in my neighborhood has gotten crazy. It's a constant mix of traffic, parties, and even the garbage collection (everything from glass to cardboard!). Since they put in the underground bins and switched to open trucks collecting at night, the noise level's exploded.
The Hammond challenge is perfect timing for an idea I've been itching to try: a nighttime noise monitor that tracks volume and figures out what kind of racket is waking me up!
The UrbanRest Guardian capturing night-noises
The UrbanRest Guardian noise monitoring prototype it's letting me analyze nighttime disturbances and I'm learning a lot about my neighborhood's routines. Thanks to the UrbanRest, I now know street cleaning and waste collection times, can identify emergency vehicle sirens, and even hear the comings and goings of the local schools. It's even picked up on the occasional canine confrontation!
UrbanRest Guardian Remote Monitor
One surprising discovery: the abundance of birds! Apparently, my neighbors downstairs have quite the collection of birdhouses. It feels like a peaceful countryside retreat during the day, but nighttime brings the return of unexpected noises.
Mapping noise throughout the neighborhood with a network of these portable "UrbanRest Guardians" will be great.
Mockup of UrbanRest Guardian placement on city streetlights
I'm considering the possibility of deploying some UrbanRest Guardians and lending them to anti-noise associations. Neighbors could then borrow these devices to place on their balconies or windows. This would allow us to create a collaborative map of noise pollution across the entire area. With this kind of data, we might be able to convince the city council to adjust noise ordinances.
Diagram of a Remotely Monitored UrbanRest Guardian Network
Now I'm going to tell you what I've been doing these last two months! This Experimenting with Extreme Environments Design Challenge got me completely hooked and I put all my energy into building this noise monitor prototype that I call the "Urban Rest Guardian." In fact, you can see the full construction story in the five biweekly posts (UrbanRest Guardian Blogs). Many thanks to Hammond Manufacturing and element14 for sponsoring this project!
Table of Contents
- UrbanRest Guardian Project Introduction
- What is the UrbanRest Guardian?
- High-Level System Diagram
- Hardware Breakdown
- Connecting Everything:
- Prototype Construction Guide
- UrbantRest Guardian Agent Software
- Remote monitoring
- Sound Classification with YAMnet
- Experimenting with Extreme Environments: (Fridge, Rain, Sun, Dust)
- Summary
- Conclusion
- Project Resources
- UrbanRest Guardian blog series
What is the UrbanRest Guardian?
Lets see the UrbanRest Guardian in action:
And its remote monitoring:
The UrbanRest Guardian is a noise monitoring device designed to measure and classify nighttime noise pollution in urban environments.
Here's how it works:
The UrbanRest Guardian utilizes a Raspberry Pi CM4 or a Raspberry Pi 4B for real-time noise monitoring and classification. The system captures audio data via a microphone and feeds it to the Pi for analysis. A noise classification program differentiates between traffic noise, construction sounds, loud music, and other environmental sounds. The identified noise type is then displayed on an LCD screen and transmitted to a remote monitoring server for further processing and data storage. This setup allows for continuous noise level monitoring and environmental sound characterization.
Key Features:
- Real-time Awareness: Provides immediate information on the type of noise captured.
- Standalone Operation: Functions with a rechargeable battery, making it portable and independent of a constant power source.
- User Interface: An LCD screen displays real-time noise data, and a 12-key capacitive keypad allows for user interaction and configuration within the enclosure.
- Microphone Flexibility: Supports various microphone configurations through a USB sound capture card. The microphone can be positioned inside or outside the enclosure for different use cases.
- Weatherproof Design: Waterproof connectors allow for charging the battery and swapping microphones without compromising the enclosure's integrity, keeping it weatherproof.
- Privacy-Conscious: Analyzes sound locally, reducing the amount of data sent externally.
Microphone Configuration and ADC Considerations:
- The UrbanRest Guardian leverages a modular microphone approach to capture nighttime noise events and includes a Trust USB Sound Card to address the Raspberry Pi 4 Compute Module's (CM4) lack of an integrated Analog-to-Digital Converter (ADC).
- Microphone Input: The device is designed to work with a single microphone, mono or stereo, which connects to a Trust USB Sound Card.
- Standard 3.5mm Jack: The Trust USB Sound Card features a standard 3.5mm jack for a microphone connection. Also, another TRS connector is placed outside the enclosure
Sound Classification
A convolutional neural network (CNN) is implemented directly on the device, enabling on-the-edge noise classification. This means that noise analysis occurs locally on the UrbanRest Guardian itself, without the need for constant communication with a central server.
Data privacy
The device captures and processes audio data solely for noise classification. No personal identifiable information or any form of voice recognition is performed. The system focuses solely on analyzing sound patterns and noise characteristics. Instead of presenting raw audio data or identifying specific sounds associated with individuals, the system aggregates and visualizes noise levels and noise source categories. This approach provides valuable insights into noise pollution patterns without compromising individual privacy.
Sound Capture
I chose the USB audio capture card as the primary audio input mechanism for several reasons concerning the development and optimization of noise classification models.
First, the USB audio interface offers enhanced microphone flexibility. Unlike a fixed microphone setup, this approach allows for the connection of various microphones, enabling me to experiment with different types and placements. For instance, I can test a high-sensitivity microphone for capturing faint sounds or a directional microphone to focus on specific areas outside the enclosure or place the microphone inside the box.
Second, the USB audio interface makes model verification quicker on a Windows platform. By replicating the Guardian's hardware setup on a Windows computer using the same capture card and microphone, I could establish a controlled test bench. This setup allowed me to validate and refine the noise classification models from Windows before deploying them to the Raspberry Pi of the UrbanRest Guardian.
High-Level System Diagram
- Raspberry Pi4 Compute Module: This is the central processing unit of the prototype, responsible for collecting sensor data, analyzing it, sending to the remote server, and displaying it on the display.
- Waveshare CM4-NANO-A: This compact board acts as a customized interface for the Raspberry Pi Compute Module 4. It provides essential features like power supply, microSD card slot for the operating system, and a USB port for peripherals.
- MIDAS Display, Alphanumeric, 20X4: This small display screen presents information about noise levels, time, temperature and sound classification data.
- Molex RF Antenna: This small antenna enable wireless communication for data transmission or device control over SSH.
- Amphenol Circular Connector, Cable Mount Receptacle and Cable Mount Plug, 4 Contacts: These connectors are used for battery recharge.
- Additional Components:
- USB Sound Card: This component digitalizes audio data from the microphone.
- Mini Condenser Microphone: This microphone converts sound waves into electrical signals for processing by the sound card.
- 20000 mAh Battery: This battery provides power to the prototype, making it portable.
- Sound Sensor for Threshold Detection: This sensor detects when sound levels exceed a specified threshold.
- Capacitive Keyboard: Located beneath the enclosure, this keyboard allows users to interact with the device without exposing internal components to the elements, preventing potential damage from dust, moisture, or other environmental factors.
Hardware Breakdown
In this section, I'll delve into the reasoning behind each component choice for the UrbanRest Guardian. While the majority of components come from the Experimenting with Extreme Environments design challenge kit, I've also incorporated additional elements to fulfill specific project needs and explore functionalities related to the enclosure itself. These experiments included investigating the acoustics within the case, measuring system power consumption, and testing the viability of a capacitive keyboard under the thick, transparent lid.
I'm happy to report that I've successfully integrated and tested all the kit components. Throughout this section, I'll share the aspects that impressed me, the challenges I encountered, and my ideas for future improvements. I hope to offer a deeper understanding of the component selection process and the valuable lessons learned along the way.
The below image offers a visual reference, showcasing the device within its Hammond enclosure with clear labels for each part.
The Experimenting with Extreme Environments Kit
To dive into this "Experimenting with Extreme Environments" challenge, everyone got a sweet component kit like the one in the pic.
Experimenting with Extreme Environments Challenge Kit
But among all the goodies, there was a real star: an IP68-rated Hammond polycarbonate enclosure with a transparent polycarbonate lid as well. This sleek box basically says: "bring on dust, rain, bumps, and crazy temperatures. I can handle it all!"
Hammond 1554VA2GYCL IP68 enclosure:
The Hammond 1554VA2GYCL IP68 enclosure is a great choice for protecting electronics in demanding environments. Made from high-impact polycarbonate, it offers superior protection against dust, moisture, and impacts, making it ideal for both indoor and outdoor applications (IP68 rated).
Rain-soaked UrbanRest Guardian after a heavy storm
The enclosure features a transparent lid for easy viewing of internal components without opening it. However, this transparent lid, while a great advantage for seeing internal components like the MIDAS LCD display, presented some challenges for me during testing. When I tested the enclosure in a horizontal position, the transparency caused issues with direct sunlight. This was because I had made the mistake of leaving the black heatsink attached to the Compute Module 4 visible. During peak sunlight hours, this black heatsink essentially became a free source of infrared radiation, leading to CPU temperatures reaching 91°C on the CM4.
The metal inserts ensure a secure and long-lasting attachment. It also boasts versatile mounting points and PCB slots for various configurations, and Hammond offers customization options for a perfect fit. Easy assembly without special tools makes it a user-friendly choice.
One feature I particularly appreciate about the enclosure is that the captive screws securing the lid never fully exit the holes when removing the cover, making them virtually impossible to lose. It's a great design. I've screwed and unscrewed them countless times, and they still look like new, both the screws and the inserts.
Additional parts included in the kit:
Here's what else was packed in the kit besides the awesome enclosure:
- A tiny Raspberry Pi 4 brain (the Compute Module)
- A companion board for the tiny brain (the Compute Module I/O Board)
- A fancy display to show off all the data (the MIDAS Display)
- A multi-protocol antenna for all wireless needs (Molex RF Antenna)
- Two special connectors to hook everything up (Amphenol Circular Connectors)
Additional parts included in the Experimenting with Extreme Environments kit
Raspberry Pi Compute Module 4:
The Raspberry Pi CM4 has left me pleasantly surprised with its small size. It's incredible that such a tiny module can pack so much power. However, I was less impressed with its high operating temperature and power consumption, which I find a bit high for an IoT application like the UrbanRest Guardian.
Despite this minor drawback, I have taken full advantage of the CM4's processing power for noise processing and classification in the UrbanRest Guardian. Its quad-core processor and 4GB of RAM have been more than enough to handle this task efficiently.
I think the Raspberry Pi CM4 is an excellent option for IoT projects that require high performance in a compact form factor. However, it's important to consider its power consumption and operating temperature if it will be used in low-power applications.
Raspberry Pi Compute Module 4 with Molex Wi-Fi Antenna
Wi-Fi Molex Antenna
The kit includes the Molex antenna you see in the above pic. It is a small (34.9 x 9 mm) omnidirectional antenna. It is a good option for short-range applications that require Wi-Fi, Bluetooth, Zigbee, or Hart connectivity. It has decent power for its size, 4.25 dBi in the 5 GHz band, which is the one I used between the router and the CM4. It comes with a 50mm cable and U.FL/I-PEX MHF connector for easy integration with the Raspberry Pi CM4 board.
I like its small size, perfect for small spaces, and its good performance for its size. Installation is very easy and the end can be fixed with the adhesive that comes with the antenna. I have found that the adhesive protectors come off easily.
I also had flashing problems at a distance of 13 meters with brick walls in between.
The video shows the loss and gain of the Wi-Fi signal as I moved away from the router to the farthest point on the floor (about 13 meters) and then back again.
Strongest signal is at -20 dBm, weakening to -83 dBm (weakest).
When I tested the UrbanRest Guardian inside my metal refrigerator 9 meters from the router, the Wi-Fi connection almost completely failed.
Testing the UrbanRest Guardian inside the refrigerator. Do refrigerators dream of electric sheep?
Raspberry Pi 4 Compute Module I/O board
My initial design for the noise monitor prototype relied on the Raspberry Pi 4 Compute Module's standard I/O board. The I/O board provided all the connection points I needed for peripherals, sensors, and power. However, at 160 mm × 90 mm, it proved a little too bulky to fit comfortably within my Hammond enclosure. To address this size constraint, I opted for the Waveshare CM4-NANO-A board, which offers a more compact design.
Raspberry Pi 4 Compute Module I/O board. A large card for a small module.
The best thing about the standard I/O board is that it comes with the headers already soldered on, ready to be used with any compatible HAT. This makes setup a breeze - simply mount the CM4 and everything is ready for testing. What I liked least is the power supply. It uses a barrel jack and requires 12VDC, which is necessary for the CM4 fan if you plan on using a heatsink with a fan. There's an option to use a common 5VDC power supply, but it involves modifying the board itself, which isn't the most user-friendly solution.
Waveshare CM4-NANO-A
While the standard Raspberry Pi 4 I/O board was great for initial development on the workbench, it simply wouldn't fit within the final, elegant enclosure of the UrbanRest Guardian noise monitor. That's where the Waveshare CM4-NANO-A came in. This miniature baseboard from Waveshare offered all the essential functionalities of the original I/O board in a much smaller package.
Waveshare CM4-NANO-A: Small but capable - Gets the job done.
For the UrbanRest Guardian project, I needed access to specific Raspberry Pi 4 ports:
- Two independent I2C interfaces, one for the MIDAS LCD display and another for the MPR121 capacitive keyboard.
- Two GPIO pins for interrupts from the sound sensor and the capacitive keyboard.
I also needed:
- 5VDC power supply via USB from a power bank.
- A USB 2.0 port to connect a USB audio card for microphone and headphone use (for sound capture and testing).
- Space for the Wi-Fi antenna and a CM4 heatsink.
- An SD card reader, as the CM4 Lite lacks eMMC storage.
The Waveshare CM4-NANO-A turned out to be the ideal board for my project. It offered all these essential features (I2C interfaces, GPIO pins, USB power, and an SD card reader) in a compact design. The fact that the headers weren't pre-soldered was a benefit, as it allowed me the flexibility to experiment with different header options. Since I was using a power bank and a USB audio card, the single USB port wasn't a limitation.
Geekworm C235 heat sink for the Raspberry Pi 4 Compute Module
After my first experience with the Raspberry Pi 4 Compute Module, I noticed that the CPU temperature was much higher than that of a Raspberry Pi 4B, which I had been using to develop the software while waiting for the Compute Module 4 to arrive. So I looked for a heatsink that would allow me to mount the antenna. I decided against using a fan because the noise would have affected the sound recording. I chose the Geekworm C235 heat sink for the Raspberry Pi 4 Compute Module.
The CM4 dissipates less power than the Raspberry Pi 4 Model B, contains less metal in the PCB, and has fewer connectors, which means that it has less passive heat sinking than the Raspberry Pi 4 Model B. Despite consuming less power, it may run warmer than the Raspberry Pi 4 Model B.
Geekworm C235 heatsink: Keeps your CM4 cool and comfortable.
MIDAS Display: LCD Display with Exceptional Daytime and Nighttime Readability
The display is a MIDAS backlit LCD display with 4 lines of 20 characters. It can display ASCII characters and 8 custom characters can be programmed.
MC42005A6W-SPTLYI-V2 MIDAS LCD Display: Superb Day and Night Visibility
Taking advantage of this programmable feature, I "converted" the display into a graphical display capable of showing horizontal bar graphs 100 pixels wide. In the video you can see how it behaves with the backlight in a nighttime outdoor setting.
The visibility of this display is very good, at night with the backlight and during the day even in direct sunlight conditions as in the following image.
Communication with this display is via I2C and although it is powered at 5VDC, I did not need level converters to communicate with it at the logic levels provided by the Raspberry Pi CM4 using the internal pull-up resistors.
I had trouble finding examples of display drivers that would work with this display, so in the end I decided to write my own lightweight Python driver that I have shared through GitHub: Python Driver for RW1063 controlled LCD Displays (Midas MC42005A6W) (github.com)
Amphenol MRD Series: Rugged Circular Connectors (IP67 rated)
These connectors are waterproof and dustproof (IP67), ideal for harsh industrial environments. They come in a 4 pins configuration with circular housings and secure locking with quick-release metal latches.
- MRDBN04M17000 | Circular Harsh MRD Series | Amphenol (amphenol-cs.com)
- MRDBG04L13000 | Circular Harsh MRD Series | Amphenol (amphenol-cs.com)
I have used these two connectors to supply voltage to charge the power bank battery from outside the enclosure without having to open it.
Assembling two cables, one internal to the enclosure that incorporates the MRDBG04L13000 at one end and a USB-C male connector at the other end that connects to the battery that resides inside the UrbanRest Guardian. The other connector that matches the metal Bulkhead Connector has an Amphenol MRDBG04M17000 connector at one end and a USB-C female connector at the other end that allows the UrbanRestGuardian to be connected to any charging source, switched power supply, or solar charger.
I initially found these connectors very user-friendly. Assembly was easy, and the connections are soldered for reliability. I loved the ease of connecting and disconnecting them...until I injured my right hand. Unfortunately, I can no longer pinch with my thumb, and now I require assistance when disconnecting the quick-release metal latch connector.
An unpleasant surprise has been the behavior of the male connector with socket contacts. It seems to lose connection if bumped, and these haven't been intentional bumps - just accidental knocks while moving the enclosure to take better pictures.
Waterproof TRS Audio Connector: A Lesson Learned
I initially used a waterproof external TRS audio connector to mount the microphone outside the enclosure. While it functioned for the past two months without any water leaking into the box, I realized it might not be the best long-term solution.
The external part of the connector is exposed to air, creating a potential for corrosion over time, especially with different metals in the connector and the inserted jack.
In short, this connector served its purpose temporarily, but for a permanent setup, a different approach would be necessary to address the potential for rust.
PowerBank Battery: Didn't meet my expectations
For powering the compute module, I tested a 20,000mAh portable charger (black) with battery level indicators. However, it only delivered 12,000mAh before shutting down, falling short of the advertised capacity. While it functioned, it didn't meet my expectations in terms of runtime.
20000 mAh PowerBank Battery
This test represents a worst-case power consumption scenario for the Raspberry Pi:
- Data transfer over WiFi
- LCD display backlight on
- Data capture and processing
- Multiple SSH connections
- Capacitive keyboard active
- Under this load, the measured current draw was 0.52A at 5.02VDC.
Power Bank Battery Life Test
Test Start: 2024-05-04 12:00
Test Finish: 2024-05-07 8:00
Result: The UrbanRest Guardian lasted 44 hours without recharging.
Conditions: LCD backlight off, Wi-Fi only used for NTP.
A separate 10,000mAh battery was used with the Raspberry Pi 4B.
Trust USB Audio Card:
For capturing sound I used a Trust Microphone with a USB 2.0 sound card. During the experiments, I tested three alternative modules, two of them lower cost and the winner is this Trust USB audio card.
Microphones: The Ears of the UrbanRest Guardian
I used two different microphones for the UrbanRest Guardian:
Topiky Microphone (Sensitivity: 38 ± 3 dB): This small directional microphone did very well at capturing sound inside the enclosure, possibly due to the enclosure acting as a resonance chamber.
https://www.amazon.es/dp/B07ZHFL1DC
Trust Microphone (Sensitivity: 45 dB, Frequency Response: 50 Hz - 16,000 Hz, Impedance: 2200 Ohm, Sound Pressure Level: 115 dB):
https://www.amazon.es/dp/B089NSJRMV
This omnidirectional microphone did better picking up sounds outside the box, thanks to its 360-degree sound capture.
Here's a breakdown of its specifications:
- Frequency Response (50 Hz - 16,000 Hz): This microphone can detect a wide range of sounds, from low bass frequencies (50 Hz) to high-pitched sounds (16 kHz). This ensures it captures most audible sound waves.
- Impedance (2200 Ohm): It's likely compatible with most audio equipment without needing an additional amplifier.
- Sensitivity (45 dB): the Topiky microphone (38 dB)
- Sound Pressure Level (115 dB): This makes it suitable for environments with loud noises.
The best microphone for a particular situation depends on the UrbanRest Guardian placement. I used the Topiky microphone for capturing sounds from inside the box, and the Trust microphone for capturing outside.
The microphone gain must be adjusted in both cases to ensure clear and appropriate audio levels. One must avoid too low or too high gain.
I am still experimenting with microphones and techniques to find the best way to capture audio. And working on software to automatically adjust microphone gain based on ambient noise.
Internal Sound Sensor: Limitations of Interrupt-Based Sound Capture
To capture sound only during periods of bothersome noise, I incorporated an adjustable sound sensor with an LM393 comparator. This sensor would trigger the sound capture and analysis events. The idea was to place the sensor inside the enclosure, but I was unsure if it would effectively capture the noises I was interested in. It was worth testing as an experiment.
Unfortunately, the results weren't what I was hoping for, so the final version of the firmware no longer uses the digital interrupt from this sensor. I also tried waking up the Compute Module 4 when the interrupt was triggered, but it takes too long to boot up, which caused me to miss capturing the target sounds.
Capacitive Keyboard:
The UrbanRest Guardian's functionality was expanded with the addition of an MPR121 capacitive keyboard. While the original design relied solely on remote interaction via the Raspberry Pi 4's WiFi connection, I was curious about the possibility of local user input.
The MPR121 was mounted on the inner side of the transparent enclosure lid, allowing for direct interaction with the device. It's important to note that the lid's thickness is slightly above the recommended range specified by the sensor manufacturer. MPR121 Proximity Detection (nxp.com)
Initial testing of the MPR121 capacitive keyboard's responsiveness through the thick transparent lid yielded disappointing results. The keyboard lacked the sensitivity to detect key presses effectively.
Upon closer examination of the sensor's datasheet, I discovered that it could be repurposed as a proximity sensor, enabling all capacitive inputs to work in unison. By configuring the sensor in this manner, I was able to achieve functionality with at least one large key for interaction. While not ideal, it represented progress.
Encouraged by this success, I continued investigating and eventually stumbled upon a sensor configuration that enabled the detection of all individual keys without delay or bouncing. Extensive testing under various conditions, including bright sunlight, high temperatures, nighttime outdoor use, and even inside a refrigerator at less than 4 degrees Celsius, yielded excellent results.
However, the sensor exhibited some erratic behavior under heavy rain when a layer of water accumulated on the horizontally positioned lid. There were occasional instances of false key press interruptions without actual user input.
Similar to the challenges faced with the MIDAS Display, readily available libraries were not compatible with my desired implementation of the MPR121 capacitive keyboard. To address this challenge, I developed a custom Python library specifically designed for this project. This library is now available for download from the project's public repository, making it easier for others to integrate capacitive keyboard functionality into their projects.
Raspberry Pi 4B: A Backup Guardian for UrbanRest Guardian
The UrbanRest Guardian project relies on a Raspberry Pi Compute Module 4 (CM4) as its primary processing unit. However, to ensure project continuity in case of unexpected CM4 failure, a secondary unit was created utilizing a Raspberry Pi 4B, generously provided by element14 a few years ago. This backup unit served as a safety net, guaranteeing that the UrbanRest Guardian project could progress even if the CM4 encountered issues.
UrbanRest Guardian 2 Deployed on Raspberry Pi 4
Additionally, it enabled the operation of two units simultaneously during remote monitoring tests, marking the foundation of my first UrbanRest Guardians network.
Comparing Sound Levels: UrbanRest Guardian 1 (CM4) vs. Guardian 2 (Raspberry Pi 4)
Two UrbanRest Guardians: Raspberry Pi 4B versus Raspberry Pi 4 Compute Module
Raspberry Pi 4B UrbanRest Guardian Software:
A specific version of the UrbanRest Guardian was deployed. See project repository: https://github.com/javagoza/urbanrest/tree/main/rpi4
Balancing sensitivity
To achieve similar results with the two microphones, one connected to the Raspberry Pi 4B and the other to the Raspberry Pi CM4, I had to adjust the gains using alsamixer. The raw audio signals from the two microphones were not at the same level, and I had to manually compensate for this difference in order to get consistent results.
The two microphones have different sensitivities and one is omnidirectional and the other directional.
After adjusting the gains, as can be seen in the graph on the monitoring website created in ThingsBoard, the classes detected by the two UrbanRest devices were already quite similar. However, due to the lack of synchronization to start sampling at the same time, there may be a difference of about 0.48 seconds between one detection and another, with a sampling time of 0.96 seconds.
I also used Audacity to analyze the audio levels from both microphones.
Connecting Everything:
While creating a custom PCB (Printed Circuit Board) initially seemed like a straightforward route to simplify component connections within the enclosure, several uncertainties existed. Microphone placement and the possibility of using a low-power microcontroller for wake-up functionality introduced variables that a fixed PCB design couldn't easily accommodate. To address these unknowns and provide the flexibility for potential changes, I opted for a different approach: a stripboard prototype.
However, before diving into the clean and organized world of a soldered stripboard, there was a necessary step - the breadboard phase. As you'll see in this video, it wasn't always the most glamorous stage, but it proved invaluable for testing and refining the circuit before permanent connections were made.
Wire Wars: Conquering the Cable Jungle Before Soldering
Schematics:
This section explores the schematics and connections on the stripboard. The simplified board streamlines the connection between key components:
- Raspberry Pi CM4: Mounted on the Waveshare Nano A, this tiny computer acts as the brain of the UrbanRest Guardian.
- MIDAS LCD Display: This display provides a visual interface for user interaction.
- Capacitive Keyboard: This keyboard allows users to input commands and control the device.
- Sound Sensor: This sensor detects and triggers noise capture when sound levels exceed a set threshold.
- USB Sound card: This external sound card captures and digitizes the audio data.
Building on a Stripboard:
The stripboard simplifies construction of the UrbanRest Guardian by organizing and streamlining connections between essential components:
- Raspberry Pi CM4 mounted on Waveshare Nano A
- Power Supply
- MIDAS LCD Display
- JST Headers (for capacitive keyboard and sound sensor)
This eliminates the need for complex wiring, making assembly more manageable. The stripboard itself handles several key functionalities:
- Power Delivery: It distributes power to the Raspberry Pi CM4 and other components via the Waveshare Nano A's power regulator.
- LCD Control:
- A small 20K Bourns dimmer allows adjusting LCD contrast for optimal viewing.
- A two-pin header provides a simple on/off switch for the LCD backlight.
- I2C Bus Management:
- Resistors ensure proper pull-up voltage for the capacitive keyboard's I2C bus communication.
- The Raspberry Pi CM4 internally handles the pull-up for the MIDAS display's I2C bus.
Prototype Construction Guide
Enclosure Modifications: Adding an Audio Input
The original enclosure had a single hole for a circular connector. To accommodate the UrbanRest Guardian, I needed an additional hole for a waterproof TRS audio connector to connect an interchangeable external microphone.
Having no prior experience drilling polycarbonate, I practiced on scrap materials first. Apparently, polycarbonate was very easy to work with! Much more so than the waste materials I used for testing. This made the actual drilling process on the enclosure go smoothly, resulting in a clean hole on the first try.
I opted for a rotary Dremel tool with a wetted helical drill bit at a medium-to-low speed to prevent melting. Due to a right hand injury, I enlisted the help of my partner with carpentry expertise for the final drilling process.
Layered Design for Efficient Use of Space
To accommodate the size of the powerbank and maximize available space within the enclosure, I've opted for a layered design approach. This involves organizing the components in distinct layers for optimal space utilization. The bottom layer will house the larger and heavier components, such as the power bank. I tried not only to optimize space but also improve the center of gravity of the UrbanRest Guardian, potentially enhancing its stability.
Inner Panel
For better organization and protection from vibrations, I built a 3mm thick acrylic inner panel for the Hammond enclosure. Using a Dremel rotary tool, I cut and drilled the acrylic to fit the enclosure. The inner panel provides a sturdy mounting surface for securely attaching the custom stripboard and the foam bed holding the power bank.
I decided to build two panels. Having a backup panel provided peace of mind during construction.
The image below shows how the inner panel fits snugly inside the enclosure, it will be secured with the four corner screws.
Powerbank Integration: Foam Bed
The power bank I planned to use lacked built-in mounting options, and I preferred not to disassemble it. To achieve a secure and user-friendly solution, I opted for a foam bed to hold the battery in place.
Initially, I explored various methods like crafting a wooden or acrylic support, or even 3D printing a battery holder. Discussing options with my family, we came up with the idea of a foam bed.
I utilized leftover foam sheets from an HDMI display packaging. To maximize material usage, I designed the bed like a puzzle with interlocking pieces. Cutting the foam was a breeze with a sharp blade or knife. I used a standard ham knife.
The foam bed rests securely on the acrylic inner panel. It features pass-through holes for the standoffs that support the stripboard with all the connected electronics. Additionally, cable guides at the bottom help organize the wiring.
A small panel, designed to fit into the enclosure's PCB rails, secures the battery on the free side. The top part of the battery is secured by the standoffs supporting the stripboard on top.
Second Layer
The first layer, screwed to the enclosure using the internal acrylic panel, holds the battery in place. The second layer, which overlaps the previous one, is shown in the following image and consists of the stripboard with the rest of the components, the central unit, the LCD display, and other electronic components, such as potentiometers, resistors, and connection headers.
Heatsink and CM4-NANO-A Installation
Ensuring the Raspberry Pi CM4 operates at optimal temperatures is crucial for its stability and performance. This section details the process of attaching the heatsink to the CM4 processor and installing the Waveshare CM4-NANO-A baseboard. The thermal paste facilitates efficient heat dissipation.
- Molex WiFi Antenna: Begin by connecting the Molex WiFi antenna to its socket on the CM4-NANO-A baseboard. Installing the heatsink afterwards can make this step trickier.
- Thermal Paste Application: Use plastic tweezers to apply thermal paste to the designated high-heat areas on the Raspberry Pi 4 compute module's processor.
- Heatsink Attachment: Carefully place the heatsink onto the processor, ensuring good contact with the thermal paste. Gently tighten the heatsink screws in a crisscross pattern to avoid uneven pressure and potential damage to the CM4-NANO-A PCB.
- CM4-NANO-A Baseboard: Solder the headers to the Waveshare CM4-NANO-A baseboard.
Finally, attach the baseboard with the Raspberry Pi 4 compute module securely fastened to it.
Soldering components on the stripboard PCB
The UrbanRest Guardian utilizes a single-sided stripboard (ROTH ELEKTRONIK RE520-HP, Eurocard, FR2, Epoxy Paper, 1.5mm, 100mm x 160mm) for its circuit construction. This section details the key components soldered onto the board:
- 2 x JST-XH connectors: Both the capacitive keyboard and the sound sensor connect using cables with JST-XH connectors (2.54mm pitch). These connectors offer a user-friendly solution for potential future replacements or modifications.
- 2x40 female header: The Raspberry Pi CM4 compute module is mounted on a 2x40 female header.
- 1x16 female header: The MIDAS LCD display connects via a 1x16 female header.
- 1x2 male header: A jumper cap provides a simple on/off switch for the LCD backlight, allowing to adjust its visibility as needed.
- 20kΩ Potentiometer : A 20kΩ Bourns potentiometer allows for fine-tuning the LCD display's contrast for optimal viewing.
- 18Ω resistor: An 18Ω resistor limits the current flowing through the backlight LED.
- 2x1.8kΩ resistors: Two 1.8kΩ resistors are soldered onto the stripboard to provide pull-up voltage for the I2C communication between the Raspberry Pi CM4 and the capacitive keyboard. These resistors ensure a stable and reliable I2C signal.
Assembling the Prototype:
Fast Forward to Finished: UrbanRest Guardian Prototype Assembly
This time-lapse video showcases the assembly process of the UrbanRest Guardian prototype. Witness the components coming together within the enclosure.
The UrbanRest Guardian prototype rests within a Hammond polycarbonate enclosure with a transparent lid. Secured inside is the stripboard, populated with electronic components like the central processing unit (CPU) and resistors. Carefully routed cables connect the various elements.
This completed prototype with its transparent lid showcases the internal organization.
The next image shows the UrbanRest with the microphone positioned within the enclosure and outside the enclosure
And we already have the UrbanRest Guardian ready to listen to the sounds of the street. In the photo, in its usual location for the last two months, on the windowsill.
UrbantRest Guardian Agent Software
User interface:
The UrbanRest Guardian's user interface provides an informative view of the device's real-time activity and environmental data.
Here's a breakdown of the information displayed on the LCD screen:
- Line 1: Classification and Sound Level
- Classification Score: This value represents the probability that the sound classified in the last 0.96 seconds belongs to a specific category (e.g., traffic, speech, barking dog).
- Relative Decibel Value: This indicates the maximum sound pressure level recorded during the same 0.96 seconds, referenced to a value obtained during silence. It's important to note that this value is an estimate due to limitations in calibration equipment.
- Line 2: Sound Pressure Visualization
- This line features a horizontal bar graph that visually represents the sound pressure level in decibels. The graph is based on the Root Mean Square (RMS) calculation of the last 1024 audio samples collected at a rate of 16 kHz (16,000 samples per second). Each sample is a 16-bit integer value.
- Line 3: Identified Sound Class
- This line displays the text description of the sound class identified by the convolutional neural network with the highest probability score within the last 0.96 seconds. It essentially tells you what type of noise the UrbanRest Guardian has classified.
- Line 4: System Status
- Time: This displays the current time obtained through Network Time Protocol (NTP) over the Wi-Fi connection, ensuring accurate timekeeping.
- CPU Temperature: This value provides real-time information about the temperature of the Raspberry Pi 4 compute module's central processing unit (CPU).
Additional Feature: Capacitive Keyboard
The UrbanRest Guardian incorporates a 12-key capacitive keyboard conveniently positioned behind the transparent lid of the enclosure. This keyboard allows for potential future functionalities beyond the current visual interface.
Software Stack
The software powering the UrbanRest Guardian is built on the Raspberry Pi CM4, utilizing Python as the primary programming language.
Here's a breakdown of the software stack key components:
- Keyboard Driver: Handles communication with the 12-key capacitive keyboard.
- YAMNet Sound Classifier: Utilizes the YAMNet machine learning model for sound classification.
- LCD Driver: Controls the LCD display on the device.
- ThingsBoard REST Controller: Manages communication with the ThingsBoard remote monitoring platform using the REST API.
- Python Environment: Represents the Python programming environment running on the Raspberry Pi.
- Tensorflow & Keras: Deep learning libraries used for sound classification (for the YAMNet model).
- PyAudio: Facilitates audio recording and processing interfacing PortAudio from Python.
- I2C & GPIO: Communication protocols used for interacting with the LCD Display and the Keyboard connected to the Raspberry Pi.
- PortAudio: It is a cross-platform, open-source C language library for real-time audio input and output.
- Linux (Raspberry Pi OS Lite is the operating system running on the CM4.
Remote monitoring
The UrbanRest Guardian's capabilities extend beyond the local user interface. Through remote monitoring, we can gain valuable insights from the device even when physically distant.
The following image shows the UrbanRest Guardian side-by-side with a tablet connected to remote monitoring. The real-time classification and the one displayed on the remote monitor can be seen. Both devices are on the same Wi-Fi network.
The image displays the UrbanRest Guardian's main device dashboard.
It features:
- Real-time data: CPU temperature, the most recent sound pressure level, and the corresponding sound classification label with its confidence score.
- Historical data: A graph visualizing recent CPU temperature, sound classifications, and sound pressure levels over two selectable time ranges (short and medium duration).
Choosing the Right Platform: ThingsBoard
For this project, I selected ThingsBoard as the remote monitoring platform. This open-source solution perfectly aligned with my needs due to its compatibility with Java and Spring Boot, programming language and framework I'm familiar with.
Setting Up the ThingsBoard Server
The setup process involved configuring PostgreSQL as the data storage backend and configuring ThingsBoard itself to manage device telemetry effectively. To empower others to replicate this setup, I created detailed tutorials. These tutorials covered:
- Provisioning the UrbanRest Guardian: This section explains how to register the UrbanRest Guardian as a device within the ThingsBoard platform.
- Verifying Connectivity (Raspberry Pi CM4): The tutorial demonstrates how to verify communication between the UrbanRest Guardian (running on Raspberry Pi CM4) and the ThingsBoard server, ensuring a seamless connection.
- Creating Dashboards: The final part of the tutorials guides users through the creation of real-time and historical data dashboards within ThingsBoard's web interface. These user-friendly dashboards allow for easy visualization of device telemetry like sound classifications, sound pressure levels, and CPU temperature.
- Field Testing and Functionality Expansion
Controlling the CM4 remotely using MQTT and shared attributes:
Remote monitoring allows us to track other essential CM4 aspects. In this instance, the CM4 transmits data via MQTT, and the display enables CM4 variable configuration.
Extensive field tests confirmed the UrbanRest Guardian's effectiveness in monitoring various street sounds. Python scripts were implemented to continuously update the telemetry data in ThingsBoard, ensuring real-time updates. Furthermore, these scripts were configured as a Linux service to achieve stable and independent operation.
By combining the UrbanRest Guardian's local user interface with remote monitoring capabilities through ThingsBoard, I gained a comprehensive understanding of the soundscape in the device's vicinity. This information can be used for tracking neighborhood activity and identifying unexpected events.
Sound Classification with YAMnet
The UrbanRest Guardian uses a technology called deep learning, which is like training a computer program to be really good at recognizing patterns in sounds. This allows it to figure out what kind of noise it's hearing.
This section explains the heart of the system: the YAMnet sound classifier.
From Custom Models to Pre-Trained Powerhouse: YAMnet
My initial efforts focused on building custom sound classification models using the UrbanSound8K dataset and tools like Keras and TensorFlow. While promising, these models lacked a crucial element - silence classification.
To address this limitation and explore a more robust approach, the project shifted to YAMnet, a pre-trained deep learning model developed by Google. YAMnet stands for "Yet Another Multilabel Network" and is specifically designed for audio event recognition.
YAMnet's Strengths:
- Extensive Audio Event Coverage: YAMnet boasts the ability to classify a staggering 521 audio events, drawing upon the expansive AudioSet ontology.
- Pre-Trained Efficiency: As a pre-trained model, YAMnet eliminates the need for extensive training from scratch, saving development time and resources.
- Proven Performance: Initial testing on a Windows machine yielded impressive results, prompting further exploration.
Integrating YAMnet with the Raspberry Pi
The success on Windows paved the way for porting YAMnet to the Raspberry Pi, the heart of the UrbanRest Guardian. This involved:
- PyAudio and PortAudio: These libraries facilitated audio capture from the USB microphone.
- Seamless Integration: YAMnet was seamlessly integrated with existing components controlling the LCD display, the capacitive keyboard and the ThingsBoard REST controller.
How YAMnet Works
YAMnet takes audio waveforms as input and analyzes them to identify the most likely audio event from its vast library of 521 categories. This classification process empowers the UrbanRest Guardian to understand the sounds in its environment.
Learning Resources: https://www.kaggle.com/models/google/yamnet serves as a valuable resource for delving deeper into YAMnet's usage.
Field Testing and Optimizations
Extensive field tests evaluated YAMnet's performance within the UrbanRest Guardian enclosure. Key findings included:
- Microphone Placement: Housing the microphone inside the enclosure impacted acoustics.
- Balancing Sensitivity: Microphone gain adjustments were crucial to achieve a balance between capturing sound and amplifying background noise.
Testing Microphone Performance
This video showcases the detection and classification of street music using our UrbanRest Guardian device. In this controlled test, we play a recording of street music from a laptop to simulate a real-world scenario. We'll be testing the performance of our directional microphone with and without the enclosure lid to see how it affects sound detection accuracy.
Real-World Street Party Detection
This video shows a real-time field recording of a lively street party happening right here in my neighborhood. While the music is over 100 meters away, you'll see how well the device detects and identifies the sounds using an external omnidirectional microphone.
This table illustrates the afternoon nightmare I endured while writing this blog post. After several hours, the street music persisted, with noise levels still in the red zone. This project is truly essential.
Experimenting with Extreme Environments: (Fridge, Rain, Sun, Dust)
This experimentation challenge was intended to test the effectiveness of a Hammond IP68 enclosure to protect an electronic project in extreme conditions. The UrbanRest Guardian, housed inside the enclosure, has braved low temperatures (2ºC inside a refrigerator), scorching heat (up to 39°C), direct sunlight, a lot of dust, minor impacts and even a few drops. The case came out unscathed, although the transparent lid suffered some scratches. It is important to note that these scratches did not hinder visibility inside the enclosure and there were no cases of water entry.
Experiment Conditions
To better understand the results of my experiments with the UrbanRest Guardian in an extreme environment of high temperatures and rain of water and dust, it is necessary to understand the conditions of the experiment.
The UrbanRest Guardian has been outdoors for more than four weeks, sometimes under shade during direct sunlight hours, and on selected days exposed to direct sunlight.
During direct exposure hours, two different orientations have been tested: the enclosure in a horizontal position with the transparent lid facing upwards towards the sun,
And the other positioned vertically on one of the sides of the box with the transparent lid facing west. I live in the northern hemisphere and in that position direct sunlight never reaches the transparent lid.
This position, facing the box to the west, has been the winner in terms of performance, but it is difficult to take good photos with a tablet.
UrbanRest Guardian Exposure to Sun and Shadows
The following video shows the exposure to sun and shadows of the location where the UrbanRest Guardian is positioned for a better understanding of the graphs. There are few hours of direct exposure just in the morning from 11 to 15 hours.
Credits: ShadeMap - Simulate sun shadows for any time and place on Earth
Effect of Enclosure Orientation on CPU Temperature
Once the two orientations used for the enclosure and the conditions of exposure to sunlight have been described, we can see in the following graph how the position of the box affects the temperature reached in the CPU of the CM4 on two consecutive days in the hours of maximum exposure.
It is worth noting the peak with maximums of 85 ºC in the horizontal position and the typical valley caused by the shadow of the window sill railing, while when the UrbanRest Guardian is oriented towards the west the changes are less abrupt and the maximum temperature is 65 ºC. The Hammond enclosure with its bright and clear finish does a good job of insulating from the sun's rays. It can also be noted that I chose a bad place to position the black heat sink of the CM4. As I mentioned at the beginning of the blog, under these conditions this heat sink becomes an infrared generator.
Temporal Graph of Raspberry Pi Compute Module 4 CPU Temperature
The following temporal graph shows the variation in CPU temperature of the Raspberry Pi Compute Module 4 over the days of May and June during which the UrbanRest Guardian was tested on the window sill.
The peaks correspond to the temperatures reached on days of maximum exposure in a horizontal position facing the sun, and the rest correspond to situations in a shaded position. The daily variation in temperature between day and night can be observed at a glance, and even a very notable minimum that corresponds to a night of the UrbanRest Guardian sleeping inside the refrigerator.
Curious Phenomenon in CPU Temperature Graph
In the following graph, there is a curious phenomenon that initially drove me a bit crazy. In the CPU temperature graph for the days when the enclosure was facing the sun at the time of maximum exposure, there was a small valley every day.
The first day I thought it was a cloud, but the pattern repeated itself on several occasions. Finally, one day I was able to be at home observing and discovered the culprit, as can be seen in the following image. That drop in temperature corresponds to the shadow that is cast by the window sill railing on the black heat sink of the CM4. Mystery solved, that also explains the good results with the box in the shade.
A Frightening Experience with the UrbanRest Guardian: LCD Darkening
Not all was sunshine and roses during the experiments. One day I had a big scare. I left the box face up exposed to the sun, the outside temperature at that time was 39 ºC and when the CPU temperature reached 95.4 ºC I went to observe the device.
To my surprise, the box was very hot but the display had turned completely black, there was no way to read anything on it.
I quickly took some photos and videos and put the UrbanRest Guardian in the shade.
LCD Completely Dark (navy blue?) under the Enclosure Transparent LID. Lid Scratches from Hard Experimentation Period
In the following timelapse you can see the non-forced cooling process, the box remained closed at all times and the LCD recovered, apparently it was not damaged. It took about 20 minutes to look good again.
The graph also shows that the CPU temperature reaches a peak of approximately 95.4 ºC when the UrbanRest Guardian is exposed to direct sunlight. This is a dangerous temperature for the CPU.
Did High Temperatures Affect the Capacitive Keyboard?
As seen in the video, the capacitive keyboard was not affected by high temperatures. It fared worse in the rain, which produced some false key press detections. Heat, on the other hand, seemed to have no effect on it.
Fridge Experiment:
Prompted by a thread on a JWx blog, I wondered what sounds my refrigerator might emit at night when the rest of the house is silent? This curiosity sparked a question: how could UrbanRest Guardian be used to classify and identify these nocturnal noises?
My goals were to:
- Classify sounds: Identify and categorize the different noises that emanate from the refrigerator throughout the night.
- Door Openings – Track the frequency and time of door openings based on characteristic sounds.
- Temperature Fluctuations: Correlate sound patterns with temperature changes caused by opening the door.
- Compressor anomalies: Detect possible compressor problems by analyzing its noise signature.
- Compressor Activity – Identify periods of peak compressor activity.
- Bottle movement: Discover any telltale signs of improperly stored bottles clinking or vibrating.
00:20 The experiment starts
06:20 The experiment finishes
As can be seen in the graph, shortly after closing the refrigerator (barely half an hour later), the UrbanRest Guardian lost Wi-Fi coverage and didn't reconnect for 3 hours. It then began sending data again with a stable CPU temperature around 36°C (96.8°F). The final temperature increase occurred when I finished the experiment and removed the UrbanRest Guardian from the refrigerator.
The following graph shows the sound pressure levels inside the refrigerator during the periods with Wi-Fi coverage. You can see the moments when the compressor turns on or when the refrigerator door is opened or closed. Therefore, we can say that the experiment was almost a success except for the connectivity issue. A Faraday cage 9 meters away from the router is an extreme condition for the small Molex antenna.
And what does our UrbanRest Guardian hear? Here is an excerpt of some of the noises classified in its nocturnal adventure inside the refrigerator.
rustle, writing, rustle, squish, tick, squeak, squeak, typing, rustle, squish, snort, snort, writing, writing, writing, writing, writing, snort, writing, writing, snort, writing. Can you identify this sequence as the noise of your refrigerator?
The experiment showcased the UrbanRest Guardian's potential for monitoring and analyzing refrigerator sounds, providing insights into appliance activity and potential maintenance needs. While the Wi-Fi connectivity issue highlights the need for careful consideration of signal strength in shielded environments, the overall success of the experiment demonstrates the system's capabilities.
Under Heavy Rain: Testing the waterproof features of the Hammond IP68 enclosure.
In my city, it rains very little. Sometimes there are heavy downpours that last for a short time. During the testing period, we had one such event that included the explosion and fire of a nearby transformer that left us without power for part of the afternoon. The UrbanRest Guardian continued to work without problems thanks to its battery. It handled the rain very well.
On this occasion, I was testing the microphone placed inside the box.
The next rain episode occurred while the UrbanRest Guardian was on the west side of the house. On this occasion, the directional microphone was placed outside the enclosure.
Early Rain Detection with UrbanRest Guardian
One of the most curious aspects of the rain experiments has been the discovery that noise can be used for early detection of rain. This could be used to create a rain alarm to take in laundry or retract awnings that face the street.
Here, the UrbanRest Guardian took a dip, and it seems that the keyboard went a bit haywire with all that water.
Night sound detection
The initial idea of the project was to monitor nighttime noise in the street, and this is where the project has excelled.
With milder temperatures at night and a greater difference between quiet periods and sporadic high-noise events, the UrbanRest Guardian is a good tool for this analysis.
Summary
The "Experimenting with Extreme Environments" challenge focused on testing the UrbanRest Guardian's resilience in various harsh conditions. The Hammond IP68 enclosure successfully protected the device in all tested environments, including: low temperatures (2°C inside a refrigerator), high heat (up to 39°C), direct sunlight, dust, minor impacts and rain.
Impact of Enclosure Orientation on Temperature: CPU temperature was significantly lower when the enclosure was positioned vertically facing west compared to a horizontal position with direct sunlight hitting the transparent lid.
Microphone placement inside the enclosure affected sound quality. Microphone sensitivity adjustments were crucial for balancing sound capture and background noise amplification.
Exposing the enclosure to direct sunlight for extended periods with the black heatsink an the LCD facing the sun led to concerningly high CPU temperatures (around 95°C) and for the LCD. This resulted in the LCD display temporarily turning blue dark but recovered without permanent damage.
The Wi-Fi signal struggled to penetrate the metal walls of the refrigerator, causing temporary disconnection during the fridge experiment. This highlights the need for considering signal strength in shielded environments.
During the project, I discovered that analyzing sound patterns can potentially enable early detection of rain and might be useful for identifying fridge anomalies such as compressor malfunctions, offering unique applications for the UrbanRest Guardian.
Conclusion
The UrbanRest Guardian prototype has demonstrated the potential of readily available components and open source software to create an interesting tool for noise pollution monitoring.
Finally, I would like to thank Hammond Manufacturing, the contest sponsor, and the element14 community, the contest host, for selecting me to participate in this challenge. It has allowed me to learn a great deal about sounds, enclosures, the Raspberry Pi Compute Module CM4, and to get to know my neighborhood better through the spectrum of sounds.
Project Resources
Source code:
- Python Library for the MIDAS Display https://github.com/javagoza/lcdrw1063
- Python Library for the Capacitive Keyboard: https://github.com/javagoza/urbanrest/blob/main/rpicm4/mpr121.py
- Python Script for the Raspberry Pi Compute Module: https://github.com/javagoza/urbanrest/tree/main/rpicm4
- Python Script for the Raspberry Pi 4B: https://github.com/javagoza/urbanrest/tree/main/rpi4
UrbanRest Guardian blog series
Want to know more about this project? Check out the full blog series here:
- Blog 1 - UrbanRest Guardian - Project Introduction
- Blog 2 - UrbanRest Guardian - First contact with the kit components.
- Blog 3 - UrbanRest Guardian - Prototype Construction Journey
- Blog 4 - UrbanRest Guardian - Classifying Urban Sounds
- Blog 5 - UrbanRest Guardian - Remote Monitoring
- Final Blog - UrbanRest Guardian - Smart Street Noise Monitor