Every hardware hobbyist has experienced that painful moment when you smell smoke and discover that it's coming from your hardware project. It's a rite of passage. Wouldn't it be nice if you could test your hardware before burning it? At the Open Hardware Summit, held in Boston recently, I saw that MathWorks' Simulink offers an appealing alternative that allows you to debug your model (embedded software) before deploying it onto hardware.

A Simulink-powered robot caught my eye at the summit. Like a good pet, this robot tracked a green ball moving around on the demo floor. The robot is interesting from a hardware perspective because it uses both a Raspberry Pi and an Arduino Mega2560 communicating over the UART serial port interface. But more interesting is the amount of time spent on writing C code. It's negligible!

If you are a hardware hobbyist like I am, you probably enjoy designing and building systems rather than wrestling with code issues. Simulink makes this possible with its graphical modeling environment and automatic code generation capabilities. From an educatorís perspective, Simulink offers a way to ease the learning curve for programming languages. Also, portability of your design to another hardware platform becomes easier than having to move your C-code to another development environment. I watched the program get worked on at summit -- it looked so easy.

However, letís dig a little deeper into the demo to understand how this is possible. Hereís a snapshot of the Simulink model deployed on the Raspberry Pi. This block diagram matches the mental model of a hardware hobbyist way more than C code does:

Raspberry Pi connects to a webcam and acts as the vision system for this robot. The image-processing algorithm for detecting a green ball is implemented using a built-in block from Simulink. The Pi also computes steering and driving commands for the Arduino based on the ball location in its field of vision. These commands are then communicated over the serial interface. This division of work makes sense, since the Pi is an order of magnitude faster in terms of processing speed as compared to an Arduino Mega. By simulating this model with real-time camera input, you can visualize, debug, and test the computer vision algorithm before you decide to deploy it on the Pi. Once you are confident about the design, you can generate code from this model with the click of a button to deploy it on the Pi.

Similarly, the following snapshot shows the Arduino model used for motor control:

The Arduino Mega2560 drives the motors and interfaces to a couple of sensors, such as a bump sensor, a light sensor, and an ultrasonic distance sensor. As you can see from the model, the Arduino receives steering and driving commands from the Pi, decodes the commands to compute the intended state of the robot (for example, steering, stopping, or driving straight). The servo angle is then sent to the motors connected to the wheels that control the movement of the robot. The four-wheel steering logic block shows an intuitive way of representing the different states of the robot. This chart highlights the current state of the robot during simulation, which is a handy debugging capability. Hereís a snapshot of the state transition diagram:

As with the Pi model, you can test this model with signals from Simulink or with hardware in the loop.(Source: Simulink)

All the blocks in these two models are built-in Simulink blocks except the serial communication to the Arduino block from the Raspberry Pi model. The demo developers wrote a small amount of C-code to develop this block. The user community has come up with a way to create your own hardware interface blocks that are not provided in the Simulink library. For example, hereís a guide that describes how to develop Simulink driver blocks for Adafruit motor shield.

MathWorks is offering the same tools that are bundled in the Student Version for home-use, at the same price: $99. You can find the application/survey here. Of course as always, students can access the Student Version on our web store.

I'm a big believer in Graphic Programming and I think that it's the next logical step for high-level programming. I use it whenever I can because it documents your work and helps you to easily write, and manipulate complex logic concepts. I'm really surprised that Graphic Programming is taking so long to gain traction.

Virtual Reality (VR) headsets are getting ready to explode onto the market and it appears all the heavy tech companies are trying to out-develop one another with better features than their competition. Fledgling start-up Vrvana has joined the fray.

A Tokyo company, Miraisens Inc., has unveiled a device that allows users to move virtual 3D objects around and "feel" them via a vibration sensor. The device has many applications within the gaming, medical, and 3D-printing industries.

While every company might have their own solution for PLM, Aras Innovator 10 intends to make PLM easier for all company sizes through its customization. The program is also not resource intensive, which allows it to be appropriated for any use. Some have even linked it to the Raspberry Pi.

solidThinking updated its Inspire program with a multitude of features to expedite the conception and prototype process. The latest version lets users blend design with engineering and manufacturing constraints to produce the cheapest, most efficient design before production.

Focus on Fundamentals consists of 45-minute on-line classes that cover a host of technologies. You learn without leaving the comfort of your desk. All classes are taught by subject-matter experts and all are archived. So if you can't attend live, attend at your convenience.