This year i was fortunate to find myself at the INTEL's Internet Of Things Roadshow in Pune at VITS hotel. It was on of the most amazing moments this year and i got to learn alot. Got to see many projects, prototype and products. For the roadshow I'd made a telepresence robotic platform using an intel Edison board. So this instructable is about building your very own telepresence robot using Intel's Edison board.
Intel's Edison Board :
Edison board comes in with lot of features packed into one small chip, with built-in wifi and bluetooth and much more. It is a compact computing platform that's small by design so you can easily integrate it into projects. It's primarily designed for "Internet of Things" projects and is pretty powerful for its small size. The Edison has a bunch of features that makes it appealing for makers of all skill levels. It uses a 22 nm Intel SoC that includes a dual core, dual threaded Intel Atom CPU at 500MHz and a 32-bit Intel® Quark microctroller which runs at 100 MHz.The board supports 40 GPIOs and includes 1 GB LPDDR3, 4 GB EMMC, and has dual-band WiFI and BTLE - which makes it essentially wireless.
Before we begin lets understand, what telepresence robots are ??
Telepresence refers to a set of technologies which allow a person to feel as if they were present, to give the appearance of being present, or to have an effect, via telerobotics, at a place other than their true location.The motive behind building opensource telepresence robot's was to make this technology to general public as the existing systems are expensive. In the case of basic video conference scenario, people communicate with each other being stationary i.e. they cannot move and in case when they want to monitor the surroundings or something has to be shown, the view point of the camera being fixed makes it difficult for the users on the both sides to effectively interact with each other. If the person moves, the camera and the display does not move in traditional systems, which causes disengagement in the conversation. General solution to this problem is addressed by using robotic platform that can be controlled remotely with cameras and microphones for videoconferencing. This solution is altogether called as telepresence system. The system I've made here is a robot which can be controlled remotely over internet using the web browsers. It can be connected with a smart phone or a tablet using wifi. It is a drive-by-wire system which enables a user to log into the robot and control it via the world wide web. A user can simultaneously video conference and drive the bot thus increasing the field of view. In the next few steps we'll be learning how to make this robot and use the telepresence system at your home. I've uploaded the code and the board schematics. Feel free to ping me back, ask a query and suggestions are also welcomed...
Twitter : @scifiswapnil
Facebook : www.facebook.com/swapnil.kalhapure
Step 1: Things You'll Be Requiring
List of materials :
- Intel Edison Board (you can buy it here.)
- Intel's Edison Expansion Board (you can buy it here.)
- Grove Base board (you can buy it here.)
- Grove buzzer
- L293D motor drivers IC's (you can buy it here.) or L293d driver module (you can buy it here.)
- BO motor (you can buy it here.)
- Phone holder (you can buy it here.)
- Foam board for mounting everything in place about 20 cm x 20 cm
List of tools :
- Soldering iron
- Soldering wire
- Wire stripper
- De-soldering pump (if needed)
- PCB hand drill (if needed)
Step 2: The Shield for Telepresence Robot
For the purpose of making it simple to assemble robot, I've made a ardunio shield that can be stacked over the Edison board. The stack-able nature makes it easy to use and deploy. Fig-1. is circuit stencil of the shield. The shield has two l293d driver IC's and 3 motor junctions for connecting the motors. L293d drivers is a dual H-bridge motor driver integrated circuit (IC). In this shield we'll be using 3 of the H-bridges (2 for motor control + 1 for future purpose.). In the fig.2 you'll seeing junction(1,2,3) which are connections for the motors.
The connections for the l293d driver with the ardunio shield are as follows:
Junction 1 :
enable pin : pin 9
input 1 : pin 10
input 2 : pin 8
Junction 2 :
enable pin : pin 7
input 1 : pin 5
input 2 : pin 6
Junction 3 :
enable pin : pin 3
input 1 : pin 2
input 2 : pin 4
Along with this you'll find that pin 0,1 are used for connecting the grove buzzer to the shield. The shield requires a power supply of its own, which has to be connected to junction 4 as shown in fig 2.
I've attached the shield's top, bottom and silk layout below.Get a print of the above layouts, get the PCB printed and you have a shield for telepresence robot.fig 3. shows the shield after manufacturing it.Now you can go ahead and connect motors to junction 1 and 3. as shown in fig 4. finally stack the shield on the Edison board either directly or via the expansion shield provided in the groove kit.Fig 5 shows the final setup.
Step 3: Robot Chasis
Its the most simple step in this complete tutorial, where in you just have to assemble the robot. You can come up with your own design if you want. We'll be using something called differential mechanism, where two motors will be place opposite to each other as shown in fig .1 . this allows the robot to move in forward, backward ,left and right direction. this is the simplest mechanism to drive a robot . You can arrange the robot as shown in the picture, where the edison board goes in the center with the stack-able shield.
i've added a glass plate above the edison board to attach the phone holder later on it, where the phone will be holded.
Step 4: Software Implementation
The whole software here is built around Node-Js and easyRTC. EasyRTC is an open source implementation of WebRTC.
I've upload the source code to github repository "https://github.com/scifiswapnil/edisonpresence"
Before we begin "Intel.software.com" has a good tutorial to flash Linux on your Edison board in case you haven't done it before. you'll find it on this link:
then continue with the following steps
1) First install the below modules : ejs,Express,galileo-io,johnny-five,socket-io,easyrtc, use "npm install module_name"
2) Clone the above repository on your edison board or download the repository and copy the content in the root directory.(So your root directory has folders: views, node_modules and files: rtc.js and cont.js)
3) To run the code enter the command "node rtc.js & node cont.js"
4) open browser of the device you want to use as controller and enter the ipaddress of edison board with ":8020"
5) and on the smartphone on the robot enter the ipaddress of edison board with ":8010" and now you can use the key board arrow keys or the button on the screen to control the robot and videochat
place the robot's smartphone in the phone holder, connect power supplies to the Edison board and the shield. you can use 5v lipo batteries or 6v Lead acid batteries too.
and vola...you have a telepresence robot..!!
let me know if any part of the tut. was not clear . Also feel free to share your development, would like to help you in your projects.
- swapnil kalhapure
email : firstname.lastname@example.org