Wirelessly connect all the things with Sapphire
Wirelessly connect all the things with Sapphire
An open source, wireless hardware and software platform for connecting anything to everything.
An open source, wireless hardware and software platform for connecting anything to everything. Read more
About this project
We want to help you connect all the things.
Things like lights, temperature and motion sensors, Twitter, smoke alarms, receipt printers, mobile devices, web applications, scripts, databases. Anything to everything.
The Internet of Things is about you. Your things, your data. You should be in control. This is only possible with a completely open platform - hardware, software, protocols.
Big ideas need powerful technology. Hardware is a good start, but it isn’t enough. Connecting all the things requires a complete system designed from the ground up to interoperate seamlessly.
What We've Done
We created an OS to handle wireless communications so you don’t have to. Wireless can be simple, until you want features like security, multi-hop routing, and automatic power management. You can cut corners on some projects, but what happens when you’re controlling your door locks or have a network of two dozen battery powered sensors?
We made it low power so you don’t have to change the batteries all the time. A sensor in your door doesn't need a big processor and a high power WiFi radio, capable of streaming HD video, to tell you the door is “open” or “closed”. It does need to minimize power usage - frequently changing batteries on dozens of devices in hard to reach places isn’t something you want to do. We keep power consumption as low as we can by using a low power microcontroller and radio, and implementing novel wireless communication techniques that we haven’t seen anywhere else!
We implemented more layers of security to keep your system safer. Security is critical on a wireless network, particularly when it comes to safety systems. The Sapphire wireless protocol uses AES encryption to keep your data private, but doesn’t stop there. We have built in authentication and replay protection, to keep rogue devices from joining the network or sending forged messages.
We synchronize time across every device in the network. Every node synchronizes its clock to the rest of the network to within a few milliseconds. In addition to being critical to our power management scheme, tight time synchronization is also incredibly useful when coordinating actions or sensor readings across multiple devices.
We created a software framework so all of your devices, Sapphire or otherwise, can communicate with each other. Connect with Python, REST, or extend the system with your own API. Every part of our system is network aware, meaning data is shared transparently between machines and devices - no complex network programming needed.
We designed hardware to get you started. Hardware is hard, especially once you put a radio on it. Our hardware is designed to be easy to use, but powerful enough to support a comprehensive operating system.
We made it open, so you can own everything. Our entire platform is open source and designed to run locally on your network. No cloud service, no subscriptions, nothing is outside of your control. Of course, the Sapphire network can still connect to the Internet, at your discretion.
We made a mesh network, which you didn’t even realize you wanted! Sapphire’s wireless technology seamlessly routes messages across multiple devices to reach their final destination. Need to cover some serious distance? Just add another Sapphire device in between and let our technology handle the rest. Want to build a huge network? Sapphire is designed to scale from dozens to hundreds of devices.
We actually built things. It works. Touting design goals and features is one thing. Actually putting them to the test is another. We’ve taken our prototype hardware and created networks of over 20 nodes, limited only by the amount of hardware we’ve built. We've connected motion sensors to lights, temperature and light sensors to cloud data-logging, a receipt printer to Twitter, a smoke detector to text and email, weather forecasts to LED displays, and 16 custom LED light bars to an iPad app for outdoor dance parties. As we have time, we will be sharing the designs. Check out the videos throughout the page to see these in action!
We’ve done a lot, but Sapphire is about enabling you. Sapphire is for anyone who wants to focus on their own talents, rather than the wireless portion of a project. The platform is designed with professional quality features, without sacrificing ease of use. A basic introduction to C, Python, and electronics is all you need to get your application online.
Our hardware platform is a microcontroller development board, centered on the venerable Atmel AVR microcontroller, and sports a built in 2.4 GHz radio. We designed in a wide range power supply, USB debug port, and enough IO to do pretty much anything you can imagine. We even threw in one megabyte of flash memory for data storage, firmware upgrades, and system logging. There are a couple of shields available to help get you started out of the box.
Range: The range between two nodes is comparable to WiFi -- up to 100 feet indoors and 300 feet outdoors. With multi-hop technology, Sapphire extends your network coverage as you add more devices by bridging new nodes, even if they can’t reach the gateway directly.
Power supply: The Blue Sapphire has a number of flexible power options:
- The barrel jack accepts 4 to 16 volts DC, which makes it easy to find a wall wart or battery power source that will work.
- The mini USB connector can also be used to supply 5 volts DC power.
- The regulated and unregulated power nets are exposed to the shield headers, allowing the Blue Sapphire to power the shield OR the shield to power the Blue Sapphire.
- Power and ground pads are exposed for soldering wires to a power source.
Power consumption: Power consumption is heavily dependent on application, specifically how much time the device spends sleeping, and how much time it spends on and communicating wirelessly. The CPU and radio use around 1000 times more power when on than asleep, so the operating system is designed to minimize on time as much as possible. We’re continually optimizing and testing our power control software, and by using a unique combination of techniques we have made a lot of advances. Here are some preliminary numbers:
- Sleep current: 25 uA
- CPU + Radio on current: 20 mA
- On time duty cycle: 0.2% and lower
The OS is what sets Sapphire apart from everything else. It runs on Blue Sapphire hardware, making complex wireless networking tasks easy. It implements all of the features necessary for a reliable and successful mesh network, while leaving plenty of system resources available for application software.
Here’s a few things you don’t have to do:
Server and Automation Framework
Our server framework links everything together on the application level. Sapphire devices are automatically discovered and connected to the server. Python and REST APIs are exposed for easy scripting. The server itself is highly modular and extensible. In fact, each component is capable of running on a separate machine on your network. To make getting started as easy as possible, we’re putting together a downloadable virtual machine with everything you need pre-configured.
- Python API
- REST API
- Built on Redis - APIs can be added in any language with a Redis client. See the list of Redis clients here.
- Modular - different components can run on different machines on the network.
- Automatic Sapphire device discovery.
- Light weight - we run many of our demos on a Raspberry Pi.
Sapphire's key-value system simplifies data sharing between devices and the outside world. Key-value pairs declared in firmware are automatically published to the network for read/write access. Push time-stamped notifications of changed values with a single function call. Optional persistence preserves values across reboots. Sapphire handles the network — just set and forget.
It’s open source!
How open source? All of it.
Operating system (coming soon): https://github.com/sapphireos/sapphire-os
Server & Tools: https://github.com/sapphireos/sapphire-tools
Demos and examples: https://github.com/sapphireos/sapphire-apps
We’re working hard on more demos and examples, along with polishing up some features and enhancements. We will have complete API docs and design guides by the time we ship hardware. Interested in collaborating, or want to know more? Drop us a line!
How will your money be spent?
There’s a lot that goes into making a hardware product. Because we want this project to be about a community of developers, not just a company with a product, we are asking for your help to truly crowdfund Sapphire. We have stayed away from angel, venture capitalist, and incubator funding to get this project started the right way.
Here’s a list of all of the things we have to account for in our budget:
Board assembly labor
FCC certification (this alone is approximately $10,000)
Production tooling (SMT programming, PCB phototools, test fixtures, etc)
Packaging, shipping, handling
Legal fees (you cannot escape the lawyers!)
Texas sales tax (only for Texas backers)
Kickstarter and Amazon fees (this is 8%!)
Just-in-case (FCC certification failure/retest, manufacturing issues/fallout, etc.)
What’s our timeline?
Prototype production run: 6 weeks
FCC certification: 4 to 8 weeks
Production run: 6 weeks minimum
Components procurement: This one is trickier, since the market can be very unpredictable, especially at the low production volumes we're starting with. Our entire lead time is defined by the slowest part. Ranges from one week to three months.
A lot of the timing is dependent on component availability or the scheduling constraints of our test lab and manufacturing partner. We’ve set our shipping goal as a reasonable estimate based on these considerations and our experience. We will communicate scheduling updates as we move forward through the project.
Who are we?
Jeremy Billheimer @jbillhei - Chief Engineer. Jeremy’s industry and design experience spans telemetry and control systems design for race cars, FAA certified flight software, high speed PCB design, 3D electromagnetic signal integrity simulation, and technical/customer support. Within Sapphire, Jeremy works on hardware and software design, marketing, and business management. In his free time, he enjoys building LED lighting systems for outdoor dance parties, partner dancing (often at said outdoor dance parties), and riding his motorcycle through the hill country.
Brian Anschutz @banschu - Electrical Engineer. Brian’s experience is in the scientific instrumentation electronics industry, focused primarily on hardware design with the latest technologies in high speed digital devices and radio frequency communications (enabling 802.11ac, passive radar, Li-Fi, etc.). His professional experience also includes electronics manufacturing test, NIST traceable calibration, getting yelled at on the phone, moving pallets around, and painting houses. He likes most electrons, music, outdoors, beer, and volleyball.
Chris Pond @ponddesign - Interface Designer. The man behind the camera. An enigma, little is known about Chris. It is rumored he haunts coffee shops by day and makes digital content look amazing. By night, he can found riding through the mists of time, or synthesizing auditory hallucinations.
Get in touch!
We’d love to hear from you! Here are the best ways to contact us:
Community Forums http://community.sapphireos.com/ We encourage you to direct your questions to our forums rather than Kickstarter’s, as we’d like to have the forum threads available for future Sapphire users.
Risks and challenges
We have an experienced team, so we know that creating a project of this scope is challenging. Here are the biggest risks we face, and what we’re doing to minimize their impact.
This is probably the riskiest challenge. FCC testing is expensive, costing around $10,000. Electromagnetic emissions can be difficult to predict, and the fact that we are certifying a radio transmitter adds to the complexity. However, we have a lot of experience with proper circuit and board design techniques to minimize possible electromagnetic emissions issues. The radio component is designed specifically to comply with FCC requirements and our maximum transmit power is far below the lawful maximum. Our hardware design is finished and ready for certification, so we’ll be able to begin the process with no delay if we reach our funding goal.
Supply chain and logistics
This is a big problem for small startups like us. We’re producing low quantities (as far as the electronics industry is concerned), so we don’t have much in the way of buying power with component suppliers. Most of our buying will be done through distributors and we are often at the mercy of what they have in stock. We’re not going it alone though. We have an experienced manufacturing partner right here in Austin, and we’re able to leverage their connections and much larger buying power to help minimize the possibility of being unable to obtain parts in a timely manner. We are also working on managing expectations by making sure our early supporters receive their boards first. We are fairly confident on our turnaround time for the first thousand boards, but obtaining higher quantities beyond that may impose additional delays, so we may split production into more than one batch. And as always we will keep you posted!
Hardware design problems
Of course with hardware there is always the risk that there will be design problems. Our design has gone through around a dozen revisions spanning several years of development, and many of our prototypes have been in use continuously for over 18 months. We think we’ve covered all of our bases, but if you’d like to review the design, all of our schematics and board layouts are available on Github: https://github.com/sapphireos/sapphire-hardware. Please participate in the public discussion about our hardware in our Discussion Forums: http://community.sapphireos.com/
There is always the possibility of bugs and unexpected corner cases with software. Sapphire is a complex project, comprising around 14,000 lines for the operating system and around 6,000 lines for the server and tool chains. This may sound like a lot, but our lead software engineer has 10 years of experience in embedded software, including experience designing and certifying flight software. Many of the core components of Sapphire have been in use for years and are the results of extensive testing and field use. Our biggest risk is the low power network management software, which is relatively new. However, its design is based on extensive field experience with wireless mesh networks, and is heavily optimized for Sapphire as a complete system. Finally, like our hardware, all of the source code is available on Github https://github.com/sapphireos . As an open community we can test and fix problems as they arise! http://community.sapphireos.com/
Due to the high costs of achieving EMC/EMI certifications in foreign countries, we are currently only pursuing an FCC certification, and therefore are unable to ship to backers outside of the US. However, if you are in Canada or the EU, please let us know! If there is enough interest to cover the additional certifications, we’d love to open up to international backers.
Short answer: Yes at the server/system level, probably not on the wireless.
Long answer: We are using different wireless protocols, even though we are using the same basic radio. Most likely we won't be able to communicate directly over the wireless. However, we should able to interoperate at the server level. Last we heard they are planning on using MQTT at the top of their network, and we can bridge that in to our Python/Redis/message bus architecture. The actual amount of work required will depend on what they release. Once we're farther along we'd love to see how both of our communities (and others!) can collaborate.
Not right now. Why? The answers might surprise you!
1. The wireless communication programming is easier without the Arduino IDE. Seriously! We can do some things at compile time that the Arduino IDE doesn’t let us do (without modification) which makes the API for the wireless communication very simple. This is part of Sapphire’s key-value system. Go ahead and look at example sketches for WiFi or other wireless radio Arduino shields, and compare the code to the examples we’ve started putting in the sapphire-apps github repo.
2. More technically, the way we build code, load code to devices, and even the programming structure and APIs, don’t map well to Arduino. It’s not impossible, but it will take some work to port Sapphire to Arduino.
That being said, if you are interested in adding some kind of Arduino support or compatibility, let’s talk! We can look at not only porting Sapphire to Arduino, but also creating Arduino libraries to make it even easier for a networked Arduino to communicate with Sapphire’s server infrastructure.
Support this project
- (30 days)