unsurv documentation#
unsurv is a project concerned with biometric surveillance and its dangers. Here you will find different hardware/software projects working on detecting, mapping and quantifying potential biometric surveillance cameras.
Feel free to contact me if you have any requests, suggestions, ideas for collaboration.
Table of Contents:
Projects#
unsurv-offline#
Tutorials#
Here are the different ways you can use your unsurv-offline:
Surveillance camera counting#
Prerequsites#
This is the only usecase where you need some outside data. For the camera tracking to work you need an outside data source for the camera locations.
Data#
Camera locations are based on the OpenStreetMap database. For this to work you must provide data via an SD card.
Hardware#
unsurv-offline
micro USB cable for flashing
microSD card compatible with the ESP32
phone for NFC communication
Software#
You will need the following software:
Arduino IDE
unsurv-offline example from GitHub
NFC reader app or unsurv-companion for
Step counting#
Prerequsites#
Prerequisites for step counting.
Hardware#
Software#
Battery Management#
Battery choice#
Connector#
Charging#
unsurv-offline offers a plug and play solution for off the shelf 4.2 V LiIon batteries. If you do not plan to use any addon boards there is space for a 250 - 300 mAh battery inside the provided case.
BQ25180#
The choice for the battery management IC was a difficult one. Since the BQ25181 (a more common formfactor of the BQ25180) is still not available
Features#
I2C programmable charging voltage / current
automatic power selection between USB and battery (power path)
protection features
Battery undervoltage protection
Battery short protection
Battery overcurrent protection
Deep sleep#
BMA400#
BMA400 is a feature ritch 3-axis accelerometer developed by Bosch. All movement based use cases such as auto deep sleep, step counting, tap-to-wake are based on the features of this IC. It has two interrupt outputs for easy reporting of states to the main IC.
How to activate#
The main way to activate deep sleep is via the BMA 400 accelerometer. After a few seconds of non movement the accelerometer generates an interrupt read by the ESP32 which in turn goes to sleep after setting the CAM M8C GNSS receiver to sleep and disabling all peripherals.
How to wake up#
The default way the device wakes up is similar to the way it goes to sleep just in reverse. After the BMA400 detects movement it sends another interrupt on a second output. The ESP32 receives it on one of the pins available while in deep sleep.
Another way is to double tap the device.
Note
Double tapping requires one of the interrupt pins from the BMA400. Therefore it can’t be used together with the auto wakeup feature.
Power Consumption#
unsurv offline consumes about 3 mA when in deep sleep while the USB to Serial adapter is switched off via the installed dipswitch. With an installed battery capacity of 250 - 300 mAh we are able to get multiple days of standby time.

PPK2 measurement over 7 seconds#
These measurements were taken with the nrf PPK2
Currently available on crowdsupply
This project is part of the unsurv framework to fight privacy invasive technologies in the offline world. unsurv-offline logs your encounters with surveillance cameras and creates a daily report for you via NFC to review in the unsurv-companion Android app.

main PCB design#
This device can easily be adapted to different use cases via the Arduino IDE. Arduino library + board integration are planned.
List of features#
ESP32 D4
ublox M8C GNSS receiver
RF430CL330H NFC
BMA400 accelerometer
SD card reader
MCP73831 single cell LiPo charging
CH340 USB to Serial
Software#
other examples (tap to log location, location logging + step counting)
Hardware#
PCB design (KiCad files)
case design (FreeCAD + STL files)
Special thanks to#
SparkFun for maintaining the ublox library
awong1900 for his work on the RF430
kriswiner for his BMA400 library
mapping#
unsurv offers multiple ways to map public surveillance cameras in a privacy focused way.
Check out
unsurv-mapping for a lightweight android app focused on manual mapping
unsurv-android for an extensive android app including a retrained Tensorflow object detection model to automatically detect two types of surveillance cameras
camera-evaluation a basic browser based evaluation software to check if OpenStreetMap already has a database entry for a mapped camera.
open360#
open360 is an open-source 360° camera based on the NXP 8M plus processor. With its integrated neural processing unit (NPU) the goal is to map surveillance cameras on device in a compact form factor.
Note
This project is still in early development.
Crowd supply#
unsurv offline is currently available on crowdsupply.
Contact#
Contact me via: