Wednesday, September 24, 2014

Introduction to Rapid Prototyping

Most of the time when a hardware engineer, hobbyists or technical instructor/tutor come up with an idea it takes him/her ages to realize it and build a proof of concept, in this article we are going to list as many of hardware platforms, CAD and software development tools required to accelerate prototyping and realize your idea in a shorter period of time.  
Basically, almost all hardware designs and products include one microcontroller unit (MCU) or more depending on complexity of the design, and usually MCU circuit might get complicated especially if you don’t have a full, clear image of the project, so a development kit would be the best solution, it takes away the burden of building MCU hardware and provide you with generic features to use for testing and prototyping like GPIO headers and easy wiring, LEDs, connectors (USB, DB-9…etc), so, here is a list of most popular low-cost MCU platforms:   

- Arduino platforms: a series of MCU platforms based on Atmel 8-bit and 32-bit microcontrollers, the cheapest one is Arduino Uno for 25$, development environment required: Arduino IDE (free). Website: http://arduino.cc/

- Texas Intsruments LaunchPad (LP) series: another low cost MCU kits based on Texas Instruments 16-bit and 32-bit microcontrollers, LP kits prices range from 10$ to 30$, development environment required: Energia (free) or Code Composer Studio (lite version is available for free).
Energia IDE: http://energia.nu/

- STM32VL Discovery kit: a low cost MCU kit based on STMicroelectronics ARM Cortex-M0 32-bit microcontroller, kit’s price: 15$, development environment required: IAR embedded workbench. Website: http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF250863?sc=stm32-discovery#

- Cypress PSoC 4 CY8CKIT-049 4xxx: a very low cost MCU kit (for 4$ only) based on Cypress PSoC4 microcontroller platform, development environment required: PsoC Creator (available for free on Cypress semiconductor website).

If you are looking for a low cost connectivity platform for home automation, data acquisition, controls, IoT (Internet of Things), remote access/sensing and computer interfacing applications then these are my recommendations:

MCU kits with Wi-fi connectivity:
- Texas Instruments CC3200 Launchpad (30$)
- Texas Instruments CC3100 (20$) and CC3000 (35$) boosterpacks (i.e. expansion boards) for Texas Instruments Launchpad Kit.
- Arduino wi-fi shield.

MCU kits with wired Ethernet connectivity:
- Arduino Ethernet, price: 51$.
- Texas Instruments Tiva C connected Launchpad, price: 20$.
- PIC32 Ethernet Starter Kit, price: 75$

MCU kits with USB connectivity:
- Texas Instruments MSP430F5529 Launchpad, low cost and very powerful platform for 13$ only.
- Texas Instruments Tiva C (for 13$) and Tiva C Connected Launchpad (20$) kits.
- PIC32 USB Starter Kit II, price: 55$.

But if you have your mind set to add USB connectivity to your design directly then you can use chipsets with standalone USB peripheral controller like:
- FTDI USB chipsets and modules (USB to UART/RS232, RS485, I2C, JTAG, SPI).
- Maxim Integrated MAX3420E USB peripheral controller with SPI.

Or use an MCU with built-in USB module like Microchip PIC18F4550 and PIC18F4553 microcontrollers, but they don’t come pre-programmed with USB stack, you will have to compile the USB stack and program MCU yourself.

For motor control and lighting related applications you will need an MCU with plenty PWM pins and capable of handling real-time control, like Texas Instruments C2000 LaunchPad  for 17$, but usually low cost kits don’t come with power drivers on-board, you will have to build additional circuit for this purpose or buy an expansion board for the kit that provides power drivers.
Note: power drivers are H-bridge circuits, power switches, power transistors.

If you are willing to build your own power driver circuit and control it from an MCU kit then these are my recommendations for chipsets (easy to use, their circuitry aren't complicated):
- L298: Full bridge IC (maximum current: 2A).
- L293B: quad push-pull driver for motor and actuators control (maximum current: 0.5A per channel).
- ULN2803: darlington pair array (8 pairs, each 500mA).
- ULN2069: darlington pair array (4 pairs, each 1.5A).
- L297: Stepper motor controller.

If you want to go more advanced to develop mobile applications and embedded operating systems for entertainment, display (with displays, touch screens or projectors via HDMI), gaming, standalone web-services and connectivity applications using any of the popular embedded operating systems (Android, embedded Linux, Windows mobile/CE, QNX OS) but you don’t want to spend a lot then I would recommend you these kits:
- BeagleBone Black (55$).
- Raspberry Pi (35$).

Second phase, if you are good at hardware and not afraid to build your own boards or willing to learn, these tools are quite useful for schematic capture and PCB layout (i.e. drawing schematics and printed circuit board layout/wiring):

- DipTrace: schematic capture and PCB layout tool, demo version is available for free.
- PCB Artist: PCB layout tool, free.
- Eagle PCB: schematic capture and PCB layout tool, free.

Now your design is ready and you want to build it, you have two options, to build your PCB yourself YouTube is full of videos and tutorials on how to do it OR you can send your design to a professional PCB fabrication/manufacturing services like:

Important note: depending on local preferences and availability choose your PCB fabrication/manufacturing, these aren't the best or the cheapest but the most convenient to me, might be different for you or where you are.
Hardware and software go hand-in-hand in most of modern designs, you can’t develop an MCU based design with writing a firmware for it, and these are my recommendations for software development tools you might need to speed up prototyping for your project:

C/C++ compiler and IDE (all free):

Other useful software libraries:
- DISLIN: C/C++/Fortran library for 2D/3D plotting and GUI design (free for academic and non-commercial use): https://www.mps.mpg.de/dislin/
- Basic4Android: for Android mobile apps development, free trial for 30 days is available: http://www.basic4ppc.com/
- Processing: A programming language and IDE used for rapid prototyping, supports development for both PC and Android OS (free): https://processing.org/
- MoSync: C/C++ Software Development Kit (SDK) and IDE for Android development, useful for rapid prototyping Android apps (free): http://www.mosync.com/
- VISA IVI: C/C++ library for communication with external devices over USB, TCP/IP, serial and PXI/VXI (free): http://www.keysight.com/en/pd-1985909/io-libraries-suite-162?nid=-33330.977662.00&cc=CA&lc=eng&cmpid=zzfindiosuite
OR from: http://ivifoundation.org/shared_components/Default.aspx
- SDL: C++ library for gaming and graphics (free): http://www.libsdl.org/
- GNU Scientific Library: C/C++ numerical library (free): http://www.gnu.org/software/gsl/
- HIDAPI: C/C++ library for communication with USB-HID devices (free): http://www.signal11.us/oss/hidapi/


--
Karim El-Rayes
Vancouver, Canada
September 24, 2014