Skip navigation

STEM Academy

3 Posts authored by: deepankarmaithani

Rakshak-1: An attempt to create an open source system for data gathering in situations hazardous for directly accessing by humans.

I thought of creating an open source system for  data gathering in a hazardous situation not fit for directly accessing by a human . I named my robot RAKSHAK-1 which means the saviour


Below is a video  demonstration of all its features



Suppose there is a major fire outbreak and after the fire outbreak the building is not safe to be entered coz the  iron bars melt and walls become weak so  it has to be checked by the experts so that they can certify it to be safe. Now getting inside the building is not safe for the experts too, why not send a robot that could be controlled from outside,go in and send the video and images so that the team has the idea of the kind of damage and cracks and can further make a decision. Moreover the rover can also sense fumes and other toxic gas levels.As the weight of the rover will be lesser than the human weight it will further reduce the chances of collapsing the building.

Can also be tweaked to gather data from radioactive ,industrial gas leakage situation or for any other situation where there are no sensors already installed.There is a thought process behind creating any new thing a journey and a story of how you face hurdles and how you tackle them. In this post i will share about how i created the rakshak-1 system

A simplistic Block diagram and illustration






The board numbered 1 is the first board on which i tested  various motors . The IC used is L298 by STmicroelectronics. The board is a paper epoxy board designed on eagle and completely fabricated at home using the laser printer and hot iron method.





Once i found it good i went for a more compact design that is numbered as 2 this is a glass epoxy board ,i ran two of my robots using this board.


I wanted to make a shield(A shield is an arduino compatible pin configuration) so that the hardware can be neatly stacked on the arduino uno .I came across a motor driver on an online shop and i found the design to be very compact. After running the motors of  Rakshak-1 on it i understood that it is a overuse of resources and space to  go with big power diodes IN5408  for blocking the spikes produced by motors rather a IN4007 would suffice and would make the design compact.

To make the system up and running i needed to have a hardware which can provide different voltages and can give enough power to drive the motors and power the sensors, micro-controller  and other peripherals. Initially the GUI software is tested with the hardware arrangement numbered as 3. The shield was handwired and  i have  used a 11.1 v 1500mAh lithium ion battery to power the system. If you would look closely there are 4 resistors of quarter watt attached in parallel to drop the voltage from 11.1 to 9v This 9v is fed to the motors and 5v regulator provides power to arduino ,IC operations and LM35. Since i couldnot find a single resistor of high wattage adding 4 in parallel solved the wattage problem  but still using resistors to drop voltage when current drawn is high  is an inefficient method. Hence i decided to use a buck configuration in the next design of shield.

A coil is an integral part of a buck circuitry,but soon i realised that finding a coil  of particular value is a uphill task ,i searched on element14 and a few other places but  an exact coil was very hard to find ,moreover the price of coil was almost of the same price as that of a  buck convertor module that include an IC ,some capacitors LED. So i initially though i will buy a module will desolder the coil and use it on the board i will design but there was another thing that was going to put me in a tight spot and that was the board house. The board house that i had easy access to still follows manual processes so i couldn't route the wires too close,too thin, moreover  i have to use the locally available through hole components because the SMD components are harder to find locally and the vender wouldn't make something available to you until you order in bulk. So finally the most practical solution was to buy the buck converter module and use it as a component. So i designed the pads where i can fix the module. The only SMD component that i used are the LM1117 regulators which were not only small in size but can also provide current upto 800mA.

After all this came the design number 4 , i had to add a component externally and it worked but i missed a few design consideration as i designed it in a hurry. In the next design no 5 i fixed those things and finally got something good .




In the picture aboveThe shield inbetween  is an xbee shiel that holds the Xbee and connects it to the arduino board




The software on the onboard micro-controller turns on and turns off the geared DC motors ,headlights and set the position of servo motors depending upon the data received by the GUI. It also samples the temperature sensor and gas sensor data using its 10 bit successive approximation type ADC. It also measures the number of revolutions of motor by using a hardware setup which includes a hall effect sensor by allegro and a magnetic ring, the ring has 8 poles north and south places alternatively the ring is mounted on the output shaft of the motor when one of the two pole passes the output of the sensor turns high and when other one passes the output becomes low. These state changes are counted by the micro controller over a period of time using the interrupts and then are sent to the GUI to use this data to find out the RPM and distance by taking into account the Circumference of wheel. I have tried to keep the manipulation on the GUI side as the microcontroller is a low end  8 bit microcontroller working at just 16Mhz.

The GUI software is written using open source processing development environment. This GUI software can run on  MAC, Windows or Linux.


The current position of various elements on the GUI have come up after a number of iterations and after looking at the ease of user experience i found this placement to be most suitable.One challenge in creating the software was to manage the sending of commands and receiving of data. Xbee series 2 modules are used for transmitting and receiving the data and xbee are half duplex .Receiving the data and  transmitting the commands in real time would require a full duplex  system. So an approach is used where just for the short time while command is sent the channel is occupied ,rest of the time the time the channel is free to receive the incoming data. The microcontroller is set to send the sensor data once every second . This way while we have slight delay of 1  sec while receiving the data the rover can be controlled instantaneously,so it is not that you will have to stop the rover to receive the sensor value ,the usercan keep on moving it and make it go wherever he wants  and he will keep on receiving the data too. It is kind of parallel approach,may be in  future versions things can be improved even more.




3D printing is a great technology for makers In order to make place for my electronics i needed a housing and  below is a video where i have described my thought process.





Free hand sketch and pictures of 3D printed parts






I made this project because i feel that there is so much of technology available but still there are many parts of the world here there is either not an awareness or lack of resources to make use of technology that can be helpful to people. And disasters cab happen anywhere. The application for this robot that i shared above is something that i have seen happening in front of me. So i thought of creating a solution. A cheap solution for everyone.


This  system is inspired by the robots by bostan dynamics ,particularly  the videos of their robots named Rhex and sandflea inspires me to own one such system . Some other robots that i find inspiring to me are shrimp rover by Auckland massey university .I have also been inspired by the great talks and community centric,innovative and futuristic ideas of many people that deliver a talk at TED. I have also been benefited  by reading people like  Rob faludi, and  Jeremy.

Futher Upgrades


  • Using a more powerful on board computing platform like arduino zero.
  • Using raspberrypi 2 to make a handheld control and data gathering station
  • Precise motor control for better performance in different terrains.
  • A good  range Wireless camera and GPS( The only thing wired in ths project is the Camera, working on ways to make wireless)
  • More hardware integration.

3D parts Parts can be found at My parts Stay tuned for more detailed info like the schematics,source codes. Finally i leave you with a fun video with this rover


Will update more soon. stay connected.

Access Raspberry pi GUI and command line from your windows machine using SSH and VNC

At times you might face a situation when you cannot connect your Raspberry pi to a monitor ,like in a situation when you actually don't have a monitor or when you have your pi working in a project like say a weather monitor and it is not possible to physically access. There is a possible solution to this using SSH  and VNC(Virtual network computing) and you only need to satisfy one condition for this and that is you should have your pi connected to the network using LAN or wifi. Here in this post i will show you how to do this.


Step1: know the IP address of your pi,

for getting the IP address there are several methods you can follow any of them


If you know the admin password of your wifi router open your browser and enter the adddress of your router it is generally if you enter 192.168.l.l in your browser on a computer connected to your router you will be prompted or admin password and username once you enter it you can get the IP addres of your connected devices


If you donot have admin details of your routerConnect your android phone to your home network .install an app like wifi inspector from the google store and run it it will give you the ip address and mac address of al the connected device. This is the simplest method.



This method require good understanding of commands and network.

In the command prompt

you can use ping raspberrypi and it will give you the IP address it may or may not work for you.

you can also use netstat -r in the command prompt this will give you IP address of all your network routes and one of the ip address in the list will be of your pi but for this you need to be sure that the pi has successfully connected to the network.Or else you can use a software like nmap.




Step2: Download putty. It is a small softwae that lets you establish an SSH connection.Run putty and type this IP address of your pi in the host name under the sessions. and click open



Then login using login ID and password. Default is pi and raspberry respectively.



Step3: install VNC server using the command sudo apt-get install tightvncserver


Step4: type tightvncserver to start the server socket.It will prompt you for password enter the password. this password that you will set will be required to be fed into the VNC client.It would also ask you if you would like to set another readonly password press N to dismiss

Step5: Setup a socket by using the command vncserver :1 -geometry 800X600 -depth 24
(The part after the 1 is optional)
Step6: Install a VNC client like the real VNC view


Step7: open putty enter the host IP(the ip of raspberrypi) in the host field under sessions. Then go to tunnels under the SSH tab.add source to be 5901 and destination to be hostIP:5901. then click add.Finally  click open.



Step 8: log in into the pi using putty
step9: Open real VNC  view. Under the VNC server name add localhost:5901. click connect. then click continue on the next popup.






After this you will be prompted for password. Enter password that you have setup while setting up the vnc server and you will get the screen of your Pi.


Python has really entered the embbedded domain very strongly,with products like pyboard,Raspberrypi,Edision. Learning python is now becoming a necessasity if somebody want to create something innovative. Its easy learning curve and  good density of code has made it a favorate choice of many developers. Here is my video about how to take first step towards learning python.