System Description/ Objectives
The first step in any project is figuring out what your project is about & what you want to accomplish. When I think about what part of your life could be automated & taken care of by a computer. Must I always go to my garden to water my plants? When I leave for work, wouldn’t it be nice if all my lights turned themselves off? Also consider issues or concerns you may have & how technology can alleviate them. People say that programmers have a way of making a solution to problems that don’t exist & rightfully so! Where would our society be were there not people inventing solutions to unrealized problems?
Once you have an idea of what problem your project will solve you must now think about how it will be done. List everything you want your project to do & what circumstances will result in it executing specific actions. AN example would be wanting a home monitoring system that pivots toward & records a specific room when that room’s sensor goes off. I know that to do this will require a camera on a pan/tilt unit as well as heat sensors in each room to detect any would be intruder. An HC12 pair must be utilized for wireless communication so that the heat sensor in the room can communicate with the camera unit. You see how I not only described the objective, but briefly listed the needed items & described how they relate to accomplishing the goal. The same must be done for your project to not only have a full understanding of the project itself, but to work out any kinks that could hamper its completion.
Now that you know what you want to do, your next step is to make a step by step timeline detailing what tasks must be completed to get the project off the ground. This is a general outline & to do list that covers testing, verification, & the overall process from development to final testing.
This is a detailed examination of the hardware & software making up the system. Not only must you consider the individual items that make up the system, but what is required to get them to interface with other subsystems that make up the overall system. It’s a lot less complicated than it sounds if you consider the brief example for a Home Sentry & Detection System:
Communication Sub System:
Item Requirements (all items are x2):
HC12 (one for room sensor, one for camera sensor)
Antenna w/ pigtail
Motion Detection Sub System:
PIR Sensor x2
When powered on, HC12 units execute channel finder protocol in order to establish wireless communication between like units using system identification programmed into each unit.
The PIR sends a signal to the arduino upon detecting a large heat signature.
The arduino sends a signal to recording unit to alert it of an intrusion detection. A 15 second timer is activated in which a new detection cannot be made & the connected HC12 cannot send another alert signal. Note that PIR is pre-programmed to stop sending a high signal to arduino after a period of time.
Recording unit takes note of the unit identifier and moves the servos on which the camera is mounted to the room. Recording begins when a relay activates, turning on the camera & auto starting the recording process.
After 15 seconds the room sensor looks for a high signal by the PIR. If none is found the HC12 sends a deactivation notice to the recording unit.
Upon receiving deactivation notice, recording unit deactivates camera & returns to normal position.
Another alarm signal is sent if a presence is still detected, reactivating previous procedures.
In my example, you can see how I completed everything I described. I outlined the sub units making the subsystems, discussed how said subsystems interfaced with one another, as well as gave a detailed example of how I want everything to operate in a given scenario.
Note that there are many ways to complete the outline above as everyone has a different outlining style. Do what works for you & ensure that with whatever format you use that its detailed, makes sense to you, & doesn’t take a lot of thinking to understand. Be sure not to leave anything out as sometimes it takes one oversight or presumption that you’ll remember to leave a critical element of the project out.
This is the most important part of developing any project as you determine whether your wallet will be a little sad or downright hate you. Its important to note that no matter the project that you do not sink tons of money into products. Be sure to look outside of Amazon or your local store as they normally get cheap products & mark up the price to make huge profits. I’ve personally found AliExpress to be a great place to find cheap & operational electronics that would normally be 2 to 3 times the price anywhere else.
Go line by line if necessary to ensure you account for every dollar that will be spent in supplies & come up with a final tally. If the price is outside your budget consider buying & building your project in phases to avoid breaking the bank. This also gives you more time to consider the project as a whole & make tweaks as needed. Work within your budget & be realistic about what is needed for the project & what’s a possible future upgrade. If necessary, make an excel file to help you keep track of your finances & how much time it will take to pay off your project expenses. Be sure to include shipping & state taxes if it applies to you!
Troubleshooting/ Repair/ Testing
This is by far the most infuriating part of project building & is the spot in which most makers give up in frustration. Bad solder joints, bad parts, constant glitches in the system or your code makes the process nearly intolerable. Do not give up! If you feel the pressure or frustration mounting you can take a break, take time out to clear your mind & walk away for an hour or so. If you’re not getting it now staring at it for thirty plus minutes isn’t going to magically make it work, so take your time. Be sure to always, always, always, document your work & what you did as often you’ll be able to tease out a solution in the chaos of your notes. I can’t count the amount of times I’ve worked myself to the edge of sanity just to find a solution that would have been discovered had I taken notes. That’s part of the reason why I started kitetalksabout.com, to condense knowledge I have & have found for other makers to utilize.
If despite all of this you still can’t find a solution, reach out to your community or complete some background research on the troublesome unit in case you forgot a sliver of important info. When you do eventually find it be sure to document it & post it online. Nothing like helping a fellow developer, especially when they’re three seconds away from Hulk smashing their parts to bits!