Tuesday, 23 June 2015

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
Method-1
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
Method-2
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.

Method-3
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 .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 https://www.realvnc.com/download/viewer/


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.





Sunday, 21 June 2015

Are you buying  a new phone? You should read this

Mobile Radiations

what do you look at a phone when you buy?Compare phones for Great spec and low price,but one thing that we all forget is to compare the SAR ratings (Specific absorption rate).  It gives the measure of energy absorbed by the human body when exposed to a radio frequency electromagnetic field. In U.S. it is set at 1.6W/kg over 1 gram of tissue while in the EU it is  2.0W/kg over 10g of tissue.
The galaxy series phone by samsung are known to be the best as they have the lowest SAR ratings (galaxy S4 has SAR value of 0.30W/kg) . The iphones are the mid rangers in this category..90 percent of the time the phone works on low frequency signals but as the signal strength reduces specially in the areas like lifts and where the signal level drops if you are on a call you may be exposing yourself to the high radiation levels. However it is also true that there are no sold evidences of this having a bad effect on our health some reports say it is bad some says it is not. but it is good to be on a safer side.

There is also an android app that alerts you when your mobile is emitting a high frequency signals so that you take appropriate precautions.Give it a try.
Here is a video.

Hope this information proves to be helpful to you.

Monday, 15 June 2015


Experience with the new PI-2 

In this post i will share about my initial experience about PI-2,the latest model of Pi-family. Pi is really evolving and getting better with the time. Here are my experiences and observations.
1.BOOT TIME
The first difference you will find when you will make the Pi2 boot is there are 4 raspberries on the top of screen instead of 1 raspberry on B+ representing the quardcore nature of the processor. The time taken by Pi 2 to boot is significantly lesser than the B+.

2. NOOBS
If you have an older version of NOOBS you need to update it to run it on Pi2 since the ARM architecture is different on the two boards.The new version of NOOBS is compatible with the B+ model and the Pi2. However the new Noobs have very few operating systems to select from. Future releases will definitely and should definitely have more options.
However i had a queer observation i ran the new noobs on B+ and on Pi2 using the same SD card. When i run it on Pi2 and boot into the desktop i get the following message on screen.
GDBus.Error.org.feedesktop.Policykit1.Error.Failed: Cannot determine user of subject. Apart from this the operating system works fine.

3. RESOLUTION
since there is no bios on the Pi there is pain in getting the resolution right.The GPU reads the config.txt file everytime it boots up. I connected my Pi on a LG LED TV.And when i swap the Pi2 and B+ keeping the same SD card resolutions get disturbed. Had to fix it time and again if you also have such problem it can be fixed by firing Sudo nano/boot/config.txt. in the LX terminal . Paste the config.txt in your SD card if it is not there ,the file can be found on the raspberry pi official website. You will need to change a few values.
4. GAMES AND APPLICATIONS
I ran minecraft and the game play is much smoother on the Pi 2. Also the game loads faster. Similarly mathematica loads much earlier on Pi2. I also found the webpages load much better on PI

5. VIDEOS
Ran the sample video by using omxplayer /opt/vc/scr/hello_pi/hello_video/test.h264. The video runs great on both. Also ran a movie "book_of _life". To put the movie on pi i first put the file on the pendrive connected it to pi ,from the pendrive i copied it to the desktop.Changed the directory using cd/home/pi/Desktop. Then used omxplayer -o local book_of _life.mp3 to play it and have the audio through the 3.5 mm jack.I couldn't see any difference in the video playback on both the pi.

I have also done a video about the Pi ecosystem and comparison of the two Pi boards i used. I have made the video with the view that anybody who is not familiar with the Pi is able to have a understanding of what it is and for those who are already familiar with it i have info about the new things we are likely to see in the Pi ecosystem. Hope you will enjoy the video.





WHAT I DON'T LIKE ABOUT PI :


1. while booting the pi. The pi asks for username and password. After you enter the user name as Pi and then when you will try to enter the password you will see nothing appearing on the screen when you will press the keys on you keyboard.But actually if you have faith in yourself and you type raspberry and then if you will press enter you will find that you have successfully logged in. There should be stars****** on key press.


2. Pi doesn't have a power on /off button. Usually most of us connect our pi's adapter to a multisocket board but it is annoying to turn it off from there. It would be great if there is a button on pi to do this. Till it gets there on the board there is another solution for the people like me ,there comes a used cable that has a on/off button which can be used to as an alternate.


ABOUT THE PERIPHERALS I USED:

  • I used a wireless keyboard and mouse for the first time,earlier i use to go with a wired one. For those who want to buy one ,Logitech MK220 works flawless on the pi,no hassel just plug and play. Moreover this is the cheapest one available right now.
  • For wireless connectivity i used EDUP Mini Wireless N 11n Wi-Fi Nano USB Adapter. This is also just plug and play.
  • One last thing, do use a good quality power adapter otherwise it might deter the quality of your experience,the B+ and pi2 has good brown out detection and the power LED blinks if there is not enough power available.

Saturday, 6 June 2015

Processing:

What is there in the Processing software? 

Processing is a language and a development environment which came into existance in 2001.It is created by Ben fry and  Casey Reas at MIT media labs It is open and free to download development environment that can run on windows,linux and Mac.It is used by artists,designers,researchers and hobbists to create amazing visual arts and softwares.  
It has something for everyone no matter which domain of programming you fall into,if you are a android developer you can develop apps on it,if you work with core java you will find that in this too,similarly if you work in python there is also a python mode which has been added recently.Similarly if you want to work with OpenCV or want to create web servers or want to play with audio files or create GUI and interect with hardware like arduino or kinect,it has it all. whats brillient about this language is it has its own syntax and style but also gives you ability to make use of methods of some other specific domains like javascript,java,scala,actionscript, python,android, etc
Many people don't know but  Arduino IDE has come out from processing. Thats why there is a striking similarity between the two IDE.



This is one of the most versatile software environment that i have seen so far. It also gives you the ability to export your source code as an application that can run on  Linux,Windows and Mac. This is a great feature for creating applications for an end user.

Downloading and installing  Processing:
Processing is free to download. You can download it for your operating system from the following link download processing

After you download the zip file you will need to extract it. After you extact it you will find a folder that that will have the following content


You need not wait for any installation process to occur just double click on the processing icon and you are ready to write your first program.
When you will run it for the firsttime. It will create a procesing folder in your Libraries/Documents on a windows machine. 

Your source codes are called sketches in processing and all your source codes will be saved in a folder within  this folder . The name of the subfolder will be same as that of your source code.
Now you are all set  to write your first code.

Example: Replicating a graphics in processing

I have a picture that i will replicate with a processing code. The picture is as below and is taken from  http://www.clker.com/clipart-25665.html






// This code is written by Deepankar Maithani
//IMPORTANT
//The top left corner of the processing window is considered as (0,0) coordinate all the coordinate values are set with respect to that.

void setup()
{
size(600,600); // size of processing window  
background(255);// set color of background to white
noFill();// upcoming figures will only have boundries
strokeWeight(10); // width of boundries
  
  ellipse(150,300,150,150);//back tyre
  ellipse(150,300,30,30);// back smaller inner circle
  ellipse(390,300,150,150);//Front tyre
  ellipse(390,300,20,20);//front smaller inner circle
  ellipse(260,320,50,50);// paddle axle
  
  arc(150, 300, 180, 180, 4.1015, 5.8468, OPEN);// back mudguard
  arc(390, 300, 185, 185, 4.1887, 5.8468, OPEN);// front mudguard
  line(235,262,340,220);// connecting line back to front mudguard
strokeWeight(10.0);width graphics
strokeJoin(ROUND);// the characteristic  of join 
beginShape();
vertex(150, 285);// chain upper part. 
vertex(260,295);// 
endShape();

line(260,345,150,315);//chain lower part. done without  the vertex
strokeWeight(10);
  beginShape();
vertex(390, 290);// draws handle bar
vertex(320,150);
vertex(300,165);
vertex(280,160);
endShape();
line(250,250,220,200);
beginShape();// draws rider's seat
vertex(195,200);
vertex(240,200);
vertex(190,180);
vertex(195,198);
endShape();

}

void draw()
{
  
  // empty cause it is just a static graphics
  
}
NOTE: use ellipse command to draw the back tyre if you want exactly the same picture i like it this way

OUTPUT

Example 2 Displaying Sensor Value from arduino in Processing Window


Arduino Code: Upload this code to Arduino board
//This code written by Deepankar Maithani
const int  pot=A0;// Connect the middle pin of pot to this pin
int reading;// variable for storing the pot values
void setup() 
{
//initialize serial communications at a 9600 baud rate
Serial.begin(9600);
}
void loop()
{
reading=analogRead(pot);// reading the analog value
Serial.println(reading);// printing it on serial this line sends the data to processing
delay(1000);// stop for 1s
}

Processing Code:
// This software is written by Deepankar Maithani

import processing.serial.*; // this library handles the serial talk 

Serial myPort;  // Create object from Serial class
String data="" ; // empty string to gather the pot values
PFont  myFont;  // object from the font class
void setup()// this runs just once
{
size(500,500); // size of processing window
background(0);// setting background color to black
myPort = new Serial(this, "COM12", 9600);// giving parameters to object of serial class,put the com to which your arduino is connected and the baud rate
myPort.bufferUntil('\n');// gathers data till new line character
myFont=loadFont("Arial-Black-48.vlw");// font type see the data folder of your sketch
textFont(myFont,70);// font size


}
void draw()
{
  background(0);//refreshing background everytime the draw runs
  textAlign(CENTER);// alighn text to the centre of coordinates
  fill(255);// fill white color to text
  text(data,350,155);// display the data at 350,155 coordinate
  textSize(40);// size of text
  fill(#4B5DCE);// fillinf blue color on the text 
  text("Pot. Reading",155,150);
   noFill();the upcoming rect will not have anything inside
   stroke(#4B5DCE);// color of boader of rectangle
   rect(5,100,400,80); rectangle
  
}
void serialEvent(Serial myPort)// whenever serial event happens it runs
{
  
  data=myPort.readStringUntil('\n'); gathering data from pot in a variable
}

Demo of above softwares in action



For more info about the methods and API you can visit processing website orProcessing forum




Creative Commons Licence
Arduino to Processing by Deepankar Maithani is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.