Nano v3 (Arduino Compatible) Based 4-Port SATA Switcher, with 24 hour auto-switching Function.
(Poor Man's Physical Layer Switch)
This Stack-able Backup Unit, allows 4 (and up to 20!) Laptop 2.5" Hard drives or Solid state drives, to be switched out like cartridges automatically, every 24 hours. (Using a Single Arduino Nano!) Eliminating Human Error and Providing a Power Down and FULL DISCONNECT of all drives not currently selected.
(Preventing backups from being infected while those volumes are powered down)
This unit is FULLY programmable, Fully Open Source, and ALL Sketchup, Fritzing, and Arduino files are INCLUDED!
EVERY Part is available online, thus, the unit should be serviceable... Forever!
LCD Status Display
Hot Swap Design
Trayless System (No Drive Hardware, just slide Drives In/out!)
Optical Button Interface
Low Parts and Build cost
Unlimited Lifespan - 100% Easily Sourced Parts
Easy 2 Print Design, works on any 7x7x7+ Print Bed
Prints well in PLA or ABS
FULLY Programmable Arduino NanoV3 Core
Simple to Advanced Firmware Options. (Simple and advanced Code Samples Included)
Configurable Alarms to Trigger Drive Selection
Switch Pos#5 Eliminated in the code to prevent all drives from being powered down.
All ATX Molex Power Connectors.
USB3 or ESATA connection to PC (Either Option, not both... Yet)
Arduino USB Port Accessible from the back panel for additional programming/updates.
Up to 12.5mm Drive Height, with 2.5mm Clearance over each drive for airflow.
12v or 5v cooling fan ready (Power-Wise... Just add mounts)
Space left in design to allow for massive amounts of feature expansion.
Stack multiple units, and control the switching all from a single Arduino Nano, up to 20 Drives! (Code Still needs to be Written for This)
Designed using the SATA switcher found at the sites below as a "Core" to do the physical layer switching.
Step 1: Inventory of Items Needed +Cost Assessment
After you have the Sata Switcher "Core" found at the bottom of the Introduction, You will also need the following items to construct the NanoDrives Unit.
PARTS List: (With links to where I got my parts)
1. x4 Laptop 2.5" SATA Hard Drives (See Pricewatch.com or Newegg.com) 25$+ Each
2. LCD and I2C interface board - Amazon 9$
3. RTC module - Amazon 6$
4. Arduino Nano - Amazon 4.50$
5. USB to SATA Adapter (Includes The Projects Power Supply!) - Amazon 23$
6. Prototype PCB - Amazon 5$ (for x5)
7. Male Break Away Header Pins - Sparkfun 1.50$
8. Female Break Away Pins - Sparkfun 1.50$
9. Project Wire with Pins - Amazon 7$
x1 White LED (2.5v or 5v)
x1 LED Pulldown Resistor to Limit Current. (220 Ohm)
x1 150 Ohm Resistor to Limit Ground Current on the Circuit (Input Side)
x1 Tactile/Momentary Switch for Reset (Optional)
Another 2-4 $ Total...
Step 2: Building the Unit and Getting It Programmed!
(EDIT: SATA Switcher must be mounted in the included 5.25" Adapter bracket to accomodate the design dimensions.)
Step 1: Print All Parts
All Parts Except for the Drive Cage Print as they are, The Drive Cage Must be re-oriented Vertical With the Tabs Facing UP away from your build Plate. Do NOT use Supports on the Drive Cage, as it will cause issues with Removal after printing. The NanoDrivesTM itself MUST Be printed with Supports, and was ONLY tested with Cura 15.04.06. However, it is a basic geometry that should print well from any slicer.
Step 2: Solder Together the interface board.
See the Fritzing Diagram included in the download, and use it to Wire up Your interface board onto your PCB Prototype. Pay CLOSE Attention to the placement of the components. Especially the NANO!
Step 3: Rewire the Switch Button to the Nano
Interfere with (Cut) the button Wiring on the front of the SATA switcher, and wire it up to the Arduino as your main switch (Larger one pictured in the Circuit Diagram) You may need to make the Poor Man's Optocoupler listed in the Circuit Design Unless you have a sharp PC817 laying around :-) Use it to complete the button Interface by coupling it into the socket on the Sata switcher, where its original button used to plug in. (Now connected to our Nano)
Step 4: Program the Nano
Get the Sketch (code) Of your choice from the downloaded files, and upload it to your Nano using the Arduino IDE.
Step 5: Test the Circuit
At this point, with all items powered up, the button should behave much as it did before we started. but with a slight input lag. (From the Interface, can be adjusted and fine tuned to be almost unnoticeable.) If this appears to be working as normal, you are in the right track!
Step 6: Set the Time
Use the Included Time Set code to Set the time on the RTC in the Serial Console. Arduino forums Thread - (See Pages 4, 5, 6 for help on this.)
Step 7: Set Your Alarm Time
Set the time of each day that you would like the arduino to switch the SATA position. Arduino forums Thread - (See Pages 4, 5, 6 for help on this.)
Step 8: Set the Auto ON position of your Switcher
HOLD down the button on the switcher While it is set to Position # 1. This will save the "Power On" position of the SATA Switcher. This MUST be set to position #1 in order for the Arduino code to work on a single unit. Stacked units will be programmed differently. But for your first unit, Hold it down for 5 Seconds while on Position 1, and release and wait for all the lights to go solid, confirming that you have saved the position.
Step 9: Drive Cage Install
Using the Provided SATA combo cables that came with the SATA switcher, Connect one to a Laptop hard drive and size it up onto the slot so that it fits within the tabs molded into the cage. Then Using Hot Glue, Epoxy, or Even Super glue, Apply the connector to the recessed area between the tabs and secure it with glue. then using the Drive cage spacer, Secure the connector Down Permanently into the Recess by pressing the insert in through the back and then locking it in with a glue as mentioned above. Then carefully route the SATA and Power Cables According to the Guide Included with the Switch. You can arrange 1-4 Top Down or Bottom up. Totally up to you. Hot Glue the Drive cage into the unit, so that it cannot come back out of the Nanodrives Unit, as you will need to use some force to pull drives from the bays. Then Clamshell the unit back together, and secure it to the SATA switcher base with screws. (ToDo: Add holes to the STL for this) The unit is now physically ready/built.
Step 10: Backup configuration
Set up all drives in Windows to associate with the same drive letter when connected. Since the switcher only EVER connects one drive at a time, this will not be an issue for the device or the backup software. Use the link below to accomplish this.
Step 11: Final Thoughts and Testing
Once Configured, Test the Unit for at least 5 days to see the whole cycle repeat before deploying. I would test for 30 days on your first unit to prevent sending it out into the field with possible build issues. Test Long, Test Well, Test Hard! :-D
**** A Special Thanks to "Cattledog" for writing the majority of the NanoDrives initial Code! ****
(Our entire thread can be found here) --> Arduino forums Thread
If you have ANY questions on the build or the process, feel free to comment here or on the Arduino forums Thread. I'll be happy to answer what I can.
This Project was designed with the Financial assistance of WEFIXCOMPUTERS in Sarasota/Bradenton Florida. (My Employer) This project was undertaken in an effort to provide an automated swap/out style backup and to better protect our Customers from RANSOMWARE, MALWARE, and The Like.
Please make whatever use of it you can, and just give credit where credit is due. This project is for use in the Commercial IT sector, at Home, or in your Home Office or Small Business. Retail Suggested for a bare 4-bay Main unit without drives, is $429.00 The CLOSEST physical Layer SATA switch i could find to what this unit does (though FAR more advanced), was in the neighborhood of 3500$... So, here is to saving your customers 3000$! :-D
- NanoDrives LCD CaseV4_Back.stl
- DriveCage SpacerV2.stl
- NanoDrives LCD EndCAP V4.stl
- NanoDrives LCD CaseV5.stl
- SATA Switcher1.fzz
- Sata_Switcher_Simple_ With_TimeAlarm.ino
- NanoDrives LCD CaseV5.skp
- SATA Switcher1_bbv2.pdf
Step 3: Final Thoughts:
FINAL Thoughts and other Notes:
Stack-able units are still a work in progress and there is no code to run the second unit at this time, however the control mechanism and setup is relatively easy. Simply leave out the Nano PCB, RTC, and LCD, and just install the SATA Switcher and Drives into the Second or other Units. then just run extra opto couplers off the original Nano circuit, to the Pushbutton and switch mainboard on the other Sata Switchers to gain control over them and enable the automated button press.
SATA Switches A (Main) and B (Slave) power on. Switch A powers up to Position 1 Switch B powers up to Position 5 (All off.) The Timing must be coded so that the first switch has 4 days to switch through its 4 drives, then the 1st Drive on switch B is powered up, while we power OFF switch A for 4 days. Then reverse the process. With the RTC, We should be able to get the timing correct so that the cycles are nice and seamless to the PC that is hosting the Drives. (Please see the Arduino Forums for assistance getting the code modified in this way. I am NOT a coder, nor do I fully understand the programming for Arduino yet. I am still learning , and got a LOT of help from the Arduino Forums. Cattledog basically wrote 99% of the current code. Big Props to Him for being able to make it work so smoothly. Considering he has never even laid hands on the SATA switch, and coded the project without 1/2 the equipment even being present. Pretty awesome if you ask me :-)
Things that could still be added to the Project:
- More buttons and functions
- Additional LED indicators
- Bluetooth Control and Updates
- Web Based Management Portal
- NAS Capabilities (Add an SoC and GO!)
- Alerts and Notifications
- Expanded LCD Menu System
- Cloud mirroring and connectivity
And so much more that I can't even think of!
This project is also available at Thingiverse: HERE