How to Get Started with your Sensor Project
It's a simple concept. You've identified a need, or you have an idea you want to try. It requires some electronics and probably some code to get it going. But where do you start? What do you need to think about?
This blog covers the general steps we take when we start to build a technical solution. Most of our work is sensor-based for IoT applications so we'll focus there for this example.
Remember, you don't need a PhD in Engineering to get things to work. You just need a curious mindset and a few tips on where to start. Sure, we have experience, but most of what we do honestly relies on some common sense, basic technical fundamentals and a lot of trial-and-error to learn what works and what doesn't work.
First, think it through
Some people dive in quickly to new projects and just go with it. And that's a totally valid approach! However, when you're prototyping hardware, this can be a timely and expensive approach that requires a lot of rework. Here at tincubate we have a lab full of samples and parts to play with and we still take time to make a rough plan.
Define your Sensors
For us, we usually start with very simple requirements. WHAT do you NEED your product to do? This can help define a quick list of sensors.
Looking for movement, orientation or rotation? Look at IMUs. Looking for temperature, humidity, moisture or altitude? These are all examples of environmental sensors. Interested in proximity? Check out ultrasonic sensors.
Identify the data you need to take actions or make decisions and find the sensor set(s) you need.
Then, take a serious look at what you have kicking around your house. Because you may be holding perfectly suitable hardware in your hand already. Smartphones, for example, are packed with sensors. You can get cheap Android tablets online. Maybe your Smart Home hub has everything you need already. Don't reinvent the wheel if you don't have to!
Picture your User Interactions
What would a user be physically interacting with to use the solution? Is it the hardware itself? A mobile app? A web interface on a computer?
And WHERE are these users doing the interaction? There's a big difference between a device that's sitting on an office table vs. one that's on precision sports equipment or in a cave under a mountain.
Picturing the environment for your end user will tell you a lot about your solution requirements. Think about the following areas:
Does your hardware need a display, touchpad or buttons?
Do you need lights, switches, speakers?
Does it need to be battery powered? Recharged?
Should it be waterproof? Water resistant? What environmental factors or temperature ranges might it be exposed to?
How durable will it need to be? Are there mechanical considerations for how it will be installed and stay stationary if that's required?
Are there wireless connections required as part of the solution? If so, at what ranges and how is the data reaching the target device?
Plan ahead for the menial stuff
How will you load software? If it's got wireless communications, do you have to program IDs? Where are they stored? Are there multiple devices in the solution and, if so, how do you label and program them to know which is which?
How will you test to know the sensors are working as expected? Do you need to have a wired connection available for logging? How will you read and report the battery levels? How will you know when it's on or off or broken? Do you need any extra layers of security? How will you set it up? Does it need to know the date and time? If so, how will it get that?
These may seem trivial but thinking of them at the start will help you move quickly in the prototyping phase.
Second, draw it out
IT IS SO IMPORTANT to draw out your architecture. Skipping steps won't help you here. But also, we don't recommend overplanning. This part should take you maybe an hour or two of thought process - if you spend weeks on it, you'll be designing a PRODUCT rather than a PROTOTYPE.
Never, ever, EVER build a hardware product without having a prototype first. Ever. Nope. Don't do it. Trust me.
Plan your architecture
What are the components, how are they connected and what communication protocols will they use? Skipping this step would be like starting to build a structure out of wood without measuring where it goes. You'll make a mess, waste time and money and end up missing key functions.
A key decision in the architecture is to understand WHERE computations need to happen. Specifically, what is being computed on the device itself, and what is being computed elsewhere (cloud, front-end, etc.)
From our experience in IoT, we find it best to compute on-device where possible, so that there's less risk of data loss. As soon as things are being transmitted elsewhere, there's a higher chance of failure. We also recommend having raw sensor data available for you to further develop more features later.
Define your tech specs
From your architecture, you can figure out key constraints for your components. Voltage requirements. Connector types. I/Os. Hubs/gateways to aggregate and transfer data. It will all flush out in the diagrams.
We tend to use Visio to make simple diagrams for each component and label the connections and power requirements for each. We do this at a full solution system architecture level and again digging down into the hardware components (power, sensors, I/Os, processors, communications, etc.)
Again, for this stage, consider what's out there already. Particle.io has some great kits available that include breadboards, cabling, communications and provisioned SIMs. An Arduino or Raspberry Pi can accelerate a ton of the work if it's a suitable choice. You don't need to always build custom things at this point when there's an out-of-the-box solution to a lot of the challenges you'll face!
Only go custom when you need to
As a general rule, we only design custom PCBs for prototypes when we need to for a specific reason. For example, we're currently working on a prototype that needs custom power management and security that's not on the breakout boards we're using, so we've designed a custom PCB for the power portion.
With your prototype, you're proving out that you can actually make it work. Find the quickest path to achieve what you want to prove out. The size, look and feel can always be adjusted once the technical objectives are proven out. The per-unit costs can be negotiated and finalized when you know exactly what you need!
Third, go shopping!
You know you're ready to shop when you have your tech specs clearly defined. Don't just start Googling something general like "How to build an IoT sensor" because you'll be stuck forever in blog posts like this one! Instead, start diving into your specs, make a shopping list and get started!
You may be like us and do a lot of your "shopping" on supplier websites. You can often filter by things like voltage input, capacity, processing speed, resistance, size and - most importantly - availability!
Where we're based (Waterloo, Ontario, Canada), there aren't a lot of shops stocked with the type of electronic parts we need. So, we tend to shop mostly online. It's often easier to check things out online for suitability than it is in-store anyways.
Our favourite spots to shop online are DigiKey, Mouser and SparkFun. We love Sparkfun because they have systems like the Qwicc connectors to easily add the sensors we need to our main board and use the reference code as a starting point. Amazon also has a decent collection of electronics parts that come with quick delivery.
If budget is a priority, we'll often check Ali Baba for deals, but there may be a delay receiving it. If speed is the primary concern, we'll pick up whatever can get delivered fastest. Always check the datasheets and spec sheets and compare them to your tech specs you defined. And caution - datasheets can be wrong!
When in doubt, order extra if you have the budget for it. If you're not sure of a size, order a few sizes to try out for certain things. There are a lot of smaller components (passives, connectors, pins, wiring) that are low-cost but you don't want to pay to ship them individually.
Building your Boards
If you designed a custom PCB, you'll need to get it fabricated and assembled. There are many ways to do this. You can order your PCBs on their own, or order them assembled. Our go-tos for PCBs are JLC and PCBWay. You can get them pretty quickly.
For assembly, there are more options that are all valid and depend on your comfort level with electronics, how sure you are about your design and your schedule or timeline! You can get your PCB manufacturer to source parts and assemble the boards (called PCBA). You can source your own parts and send them to your manufacturer to assemble, called Consignment.
If you're more savvy, you can assemble your own boards. Beware tiny components that may be tricky to solder on! You may be able to find someone locally who assembles boards - we have our go-to for hand mods and complex assemblies!
If you're a constant tinkerer and your boards are always 2-layers or less, you could look at some of the prototyping tools out there like the Voltera V-One PCB printer... you can literally print your own boards.
At tincubate, we have a pretty well-stocked set of samples of breakout boards, breadboards, communication modules, SIMs, gateways, batteries, power supplies and miscellaneous parts so we can start our shopping here first!
I recommend setting up a good storage and labelling system from the start to make it easy to know where to look when you're sourcing parts for your new build. Basically, treat it the same way you would treat your toolbox, where you'd separate your nails from your screws and your hammers from your screwdrivers.
Don't forget things like debuggers, headers and loaders. And any required safety equipment (fans, lamps, eyewear, ESD mats, glove, etc.) so you can have fun responsibly!
Spreadsheet everything so that you can keep track of what's what. Organization up front is invaluable later on to have a record of what's in the final prototype when you're ready to scale it up!
Fourth, get started!
Have fun with the process! Start simple. Connect a power source to your Processor to give it some juice. Get your OS going... whether you're using something like FreeRTOS or Mbed, or you're using a Raspberry Pi or Arduino, get it up and running.
Then, once that's up and going, pick one thing to focus on next. Connect a sensor and seeing if you can read the sensor data live over serial. Got wireless communications? See if you can get the data transmitting wirelessly.
Once you have all your components connected and verified as functional, the real fun begins! Your firmware or software defines your application and sets it apart from any other hardware that may have similar capabilities. Figure out how you want to calculate data, identify decision points and key interactions.
Remember, start simple and then build on it. If you try to start too complex, you'll have trouble figuring out what's going on when things go wrong. Have fun and write down your challenges along the way so that next time you build something, you can learn from your experience!
tincubate supports a variety of different initiatives all being incubated together. We incubate our own ideas into solutions people can buy, and we help incubate other people's ideas into solutions they can own. We also own and operate a collective space where entrepreneurs and businesses can grow their ideas into reality, called the tincubator.
If you have a project you want to explore, reach out today.