This project is a basic lighting system that can be used with smaller SentrySafe products such as the X125 model.
The project uses Adafruit NeoPixels as a light source, Adafruit Trinket Pro for control, and has a sensor to check if the safe door is open. The build allows users to change brightness and the color of the pixels using a pair of potentiometers. The build includes an on/off switch, always on switch and color/white switch for further control.
There is a Fritzing schematic of the project in the main folder (look for the fzz file) that outlines the parts and connections. The Fritzing document also includes a complete breadboard view for easier prototyping setup. The "Fritzing" directory has all custom parts used so you can import them into the program and use the fzz file.
There is a bill of materials (OpenOffice Calc format) in the main folder listing all parts that were used in the build. Please note the BoM does not include project boxes, PCBs or similar items necessary to "finish the build". Most of those choices are left to the implementer to choose based on need/want.
IMPORTANT: To use the Adafruit Trinket Pro, you must setup a slightly different Arduino IDE as described here: https://learn.adafruit.com/adafruit-arduino-ide-setup/overview . You can use an Arduino Micro as a drop in replacement (identical pinout, follow the schematic/Fritzing docs for wiring).
The build can be customized in the following ways
- Use an Arduino Micro instead of Adafruit Trinket Pro. The code has been tested and is working with the Arduino Micro
- Omit the SparkFun LiPo Fuel Gauge. The code will auto-sense the fuel gauge and enable features if appropriate
- Use a PIR distance sensor instead of the magnetic door switch. The code is setup but untested for PIR sensors
- The battery in the schematic / docs can be swapped for whatever the implementer prefers
- Project boxes and PCBs are left to the implementer to pick what works best for the need at hand
Source Code Tweaks/Config
In the code you'll find the following variables which may need tweaking
- DEBUG : Turn on Serial output of various values read during execution of sketch
- INTERACTIVE_DEBUG : Turn on a wait at start and longer timeouts so the output is easier to debug
- SLEEP_INTERVAL : The amount of time (in miliseconds) that the device sleeps for between checks
- ALERT_LEVEL : The battery level that generates an alert. This must be set between 1 and 32%, inclusive
- NEO_PIX_NUM : Set this to the number of NeoPixels in your build. I setup mine for 5 pixels but it can be more/less depending on need and available power. NeoPixels consumer a lot of power and can easily use a full 500mA of power, overtaxing most power sources.
- USE_PIR : Turn on to enable the PIR distance sensor code. The existing code is only minimally tested and unreliable. You'll want to verify things work properly and/or update code as necessary
Please see the TODO.md document for current, known issues.
All code is licensed under the Apache 2 License (http://www.apache.org/licenses/LICENSE-2.0) unless otherwise specified.
The following external libraries are included and may not be licensed the same as my code/documentation
- Adafruit NeoPixel Library from https://github.com/adafruit/Adafruit_NeoPixel
- Adafruit Fritzing Parts from https://github.com/adafruit/Fritzing-Library
- SparkFun Lipo Fuel Gauge Library / Example code
- "Sleepy" class from https://github.com/jcw/jeelib/
- Metro timing lib from https://github.com/thomasfredericks/Metro-Arduino-Wiring
- SharpIR lib from http://playground.arduino.cc/Main/SharpIR
All non-code Assets, documentation, etc is licensed under the Creative Commons Attribution-ShareAlike 3.0 license (https://creativecommons.org/licenses/by-sa/3.0/us/)