Build Robots Create Science (BRiCS): A hands-on learning initiative from IIT Kanpur

PrISM: Programmable Interface for Sensors and Motors

Product design

This is a small interface with which kids can learn to program real robots.

In most Indian schools, computers are a scarce resource. The idea behind PRiSM is to provide an interface that can be programmed without really needing a computer.

The objective is that the students should build their own robot (they can start with our Wall following robot kit), connect the sensors and motors to the PRiSM, and then program in different behaviours.

Design

PRiSM consists of two parts:
  1. The main controller box with a power supply (batteries), a small display, and a set of buttons for programming.
  2. Touch sensors and Light sensors that can be interfaced.

The controller is the heart of the PrISM system. It incorporates a 8051 microcontroller and a set of keys through which you input a program. (a sample program is shown below). You can read more on the design of the controller in this design document by Sarala Verma, Rituraj Singh and Amit Mukerjee.

Video of prototype run (8MB MOV)

Sample Program


Keypad layout for PrISM

The 16 keys in the keypad either record a command or value for the program, or help in storing / running programs. So pressing the MOTOR_SELECT button repeatedly will go through the selections MOTOR_A, MOTOR_B, MOTOR_AB, MOTOR_A-OPP-B (If there is only one motor connected, it will have only one choice). The curved arrows determine direction of motor rotation. Pressing the IF-WHILE key (it cycles through IF/WHILE/FOR) and then SENSOR_SELECT is a decision step, which needs to be followed by two statements; if the SENSOR is true the first will execute, else the second.

Motors and sensors are selected by repeatedly pressing the Motor-select or Sensor-select. The parentheses keys define blocks of commands. Numbers are obtained using an increment and decrement key. The cursor and erase keys help editing; the Prog_start, and Run keys are for storing and running the program.

For example, the following program will move a car forward. It has two motors, A and B, and only one sensor, a touch sensor on the front bumper. It will keep going forward while the touch sensor is not active (both motors A and B rotate CW for 5 seconds at a time). When the sensor is pressed, both A and B will reverse for 5 seconds, thus moving away from the obstacle, and then it will turn away to a new heading (only motor A for 1 second)

	PROG_START
	WHILE NOT SENSOR (MOTOR_AB CW 5)
	      (MOTOR_AB CCW 3  MOTOR_A CW   1 )  
	PROG_END
After punching in this program, pressing RUN will cause it to execute.

A prototype has been programmed and tested with this interface (see video above), and we have also completed a product design, but the product is still under development.

Product Design

We asked industrial designers Ameya Khandekar, Abhijit Bairagi, and Girish Lone to create a product design for us. They came up with several ideas.

The concept we finally converged on is based on the metaphor of the LED "digit". Here's what it looks like:

We are currently in the process of prototyping the shells and migrating the electronics to the new design.


[BRiCS page at iitk/robotics/] [BRiCS page at iitk.cse/]