Steps To Develop A Great Project

Objective Identification

Don’t just make a project for the sake of it. Invest your time, attention, and funds towards something that will solve a problem, make something easier, save you time of money, or otherwise automate a monotonous task. Do you have a noisy college room mate that constantly snoops through your stuff? Maybe you have a sibling who constantly takes your car and you want to know where he’s not stealing your car to go off to? Maybe you want an automated house but don’t have premade automated house sensors money? Once you have your problem and thus solution you have to ask the next question. How are you gonna do it?

They’re a lot of ways to skin a cat, so what’s your method? What base sensors and materials will you need? As you pick your sensors and materials analyze the use, limitations and mitigation factors when using each component. Perhaps one component has a higher voltage drop than another, or the communication method is faster, or requires less voltage. Size is also a consideration if you have limited space on the printed circuit/ wiring board. Don’t forget to consult your datasheets or pinouts diagrams for reference and to minimize mistakes. Nothing like the wrong pin connection to fry your board or summon the beautiful accursed blue smoke.

 

Financial Analysis

You know what you want, you know what you need, but is it too expensive? There’s nothing wrong with choosing a suitable substitute if the first choice costs too much. Even if true costs are realized in the middle of the project, never get so emotionally attached to a project that you hurt your wallet when a cheaper alternative exists. Also crosscheck with multiple websites to get the best bang for your buck, balancing it out with component quality. You can get the same car from a league of car dealerships, but that car may be used, fresh from the factory, or maintained by a moonshiner in the Appalachians. So ensure you vet the companies you’re sourcing your parts from.

 

Feasibility Analysis

You know what you need, where to get them, and all without breaking the bank. But how easy will all this be to make? Don’t make a mountain of a mole hill. but don’t overestimate your ability, especially if your project is limited by time constraints or hitting certain goalposts. Do you have a team to breakup the build process such as quality assurance (QA), research and development, experimentation and fielding, etc.? If your a one man shop it’d be great to make your life easy by developing a catalog of all the sensors, passive components, and ICs you have and document all of their characteristics for easy decision making.

 

Iterative Design

Even with checking all the boxes and covering everything down that doesn’t mean when you build it will all be perfect. Throughout your design you must be flexible as you build and your situation changes. Perhaps by the time you start ordering some components are out of stock or you make a few slips of the mind and fry your boards. Always have backup measures as you design, implement, and field your sensor arrays as anything can happen. Skill is only developed through experimentation and failure. Nothing will be perfect nor should it. There have been many design and coding techniques I’ve discovered through failure and blowing things up, so don’t be afraid to get your hands dirty and make a few accidental smoke bombs.

 

Troubleshooting

Troubleshooting is vital to realizing your mistakes and learning from them. When programming your microcontroller here are a few common mistakes I’ve noticed:

  1. Incorrect wires hooked up to microcontroller.
  2. Wrong pin designations declared in software.
  3. Not starting a process in code (sensor.begin()).
  4. Forgetting semicolon “;” placement.
  5. Not keeping track of nested curly braces “{}” and what processes stay within what curly brace.
  6. Frying sensors by not paying attention to what sensor is 5v tolerant vs. 3.3v.
  7. Internal wire breaks. Solved by using a multimeter in continuity mode.
  8. Wrong wires connected to wrong pin designations to the sensor or micro controller.