Mistakes are a part of design. Often mistakes are our biggest learning opportunities. Research will only take you so far, sometimes you have to be the first one to try that crazy idea.
Mistakes cost money, time, pride, and good feelings to name a few. Every mistake we make is an opportunity to learn. Sometimes the lesson is to be more careful, other times it is a paradigm shift.
Careful planning and well designed experiments can help us reduce the number of mistakes we make. As part of my job, when we finish a layout, we check the plot back against the schematic and part pin diagrams. I have caught many errors and flaws in the design during this process.
This week I saw an advertisement for a potential processor. The Cypres PSoC 4 BLE line of processors
Built in BLE radio (Bluetooth LE connection to many modern cell phones)
Very powerful ARM core processor
highly configurable IO
Wide operating voltage range 1.7 – 5.5 V
$50 dev Kit (CY8CKIT-042-BLE)
very robust library of hardware features
No Built in antenna (requires FCC licensing for commercial products)
High Price tag for for chips around $4 each in quantities of 1K
no USB for firmware update
No Linux support for PSoC creator
Tools are an important part of a project. For this project, I will be using either very inexpensive or free tools. Most chip manufacturers have limited capability software tools. Usually the limitations are either software size restrictions and or optimization options. This project is definitely simple enough to work within the code space of most microcontrollers without size optimization. If I need speed optimization, it will be good to show it done manually here on the blog.
Often Manufacturers sell development kits at or near cost to support developing their products. These are often great tools to start basic design and especially Hello World projects.
Free integrated development environment(IDE)
Free C compiler
Integrated programming software
integrated debugging software
Free schematic and layout software
Low cost chip programmer
5v, 3v variable power supply
Low cost development kit (dev kit)
The process of design requires refinement. As development proceeds, the requirements may change depending multiple factors which may include design choices or part availability.
I plan on using JAVA as my programming language on android devices. If it becomes necessary for performance reasons, I will move to programming in C. These are the only real choices for development on android devices. You can run emulators or virtual machines but they usually take a significant performance hit on low power devices.
For the programmer side of the design, I plan on programming in C for most of the design, and assembly language for performance critical pieces. I will avoid assembly language altogether if possible.
Refinement may require these choices to change, for instance any code written for IOS products must be in objective C. There may not be a C compiler for the microcontroller I decide on.