Web server on raspberry pi – how to setup?

Introduction

In this post I will let you know how to set up web server on raspberry pi. There are many web servers for raspberry pi. In out example we will be setting up apache web server. Apache is a popular web server application and we will install it on raspberry pi to server web pages

 Step 1 -Install APACHE

First install apache 2 package by using the following command in to the terminal

sudo apt-get install apache2 -y

 Step 2 – Test the Web Server

By default, Apache puts a test HTML file in the web folder. This default web page is served when you browse to http://localhost/ on the Pi itself, or http://192.168.1.9 ( IP address of Pi) from another computer on the network.

Browse to the default web page either on the Pi or from another computer on the network and you should see the following:

default_html_page

This means you have Apache working!

Step 3 – Changing the default Page

This default web page is just a HTML file on the filesystem. It is located at /var/www/index.html.

Navigate to this directory in the Terminal and have a look at what’s inside:

cd /var/www/html

ls -al

This will show you:

step3_htme_page_location

Step 4- Install Php

To allow your Apache server to process PHP files, you’ll need to install PHP5 and the PHP5 module for Apache. Type the following command to install these:

 sudo apt-get install php5 libapache2-mod-php5 -y

Now remove index.html file and add index.php with following content

<?php echo "hello world"; ?>
<?php echo date('Y-m-d H:i:s'); ?>
<?php phpinfo(); ?>

Now open the index.php page. You will get following:

dynamic_php_page

You are now done setting up web server on raspberry pi which can server dynamic pages.

In the next post we will use this web server to post real time data from arduino/raspberry pi and also control different appliances from the web page.

How to install Linux on Windows 10 machine?

Introduction

This blog will show you how to install Linux on Windows 10 machine without dual boot option and partitioning your hard drive. In this method we will be using a software called Virtualbox from Oracle. It will allow you to run other operating systems on top of your current OS.  You can use any version of Linux. I will be using Ubuntu 16.04.2.

Following are the high level steps required to install Linux on Windows 10.

Steps Required To Install Linux On Windows 10

Step 1 - Downloads

  • Download Oracle Virtualbox and virtual box extension pack and install from here.
  • Download Linux from here

Step 2 - Creating Ubuntu virtual machine within Oracle Virtual box. 

Install Virtualbox and create a Ubuntu virtual machine

  • Click on the "New" option on the toolbar
  • Enter a descriptive name into the "Name" box
    • Select Linux as the "Type"
    • Choose Ubuntu as the "Version".
    • Click "Next" to continue.

Note:
Choose a correct version of UBUNTU i.e 32 or 64 bit.
If VirtualBox is only showing 32 bit versions in the Version list make sure:
▪ Your Host OS is 64-bits
▪ Intel Virtualization Technology and VT-d are both enabled in the BIOS
▪ The Hyper-V platform is disabled in your Windows Feature list.

  • Allocate Memory to the virtual machine. For Ubuntu16.04.2 2 GB is sufficient but you can allocate more if you have sufficient memory.
  • Create a virtual hard drive. Select default VDI as the hard drive type. Also while selecting physical disk, you can select fixed size or dynamically allocated size. Note that there is no partitioning on your actual hard disk. All that happens is that a file is created on your computer which acts as the hard drive.

Step 3 - Install Ubuntu within Virtual box

Start the Virtual Machine. The first boot requires you to select a start-up disk. You can mount the iso file downloaded earlier. Follow step by step process of installing. I will not cover the details of installing here.

Step 4 - Install Vbox Guest edition(optional)
Download and install Virtualbox Guest Additions
Installing guest editions will help you scale Ubuntu properly in full screen mode.

How to connect 16*2 LCD display Arduino UNO

To Connect 16*2 LCD Display Arduino Uno we will use the previous project to capture temperature and display on console.

Parts required for the project:

  1. Arduino IDE to program the code and upload
  2. OneWire and DallasTemperatre library for the Arduino and DS18B20
  3. One DS18B20 digital temperature sensor
  4. Arduino UNO R3
  5. 16*2 LCD display
  6. Jumper wires
  7. Breadboard/PC/General purpose board
  8. Arduino UNO cable
  9. wires

Steps 1: Wiring Arduino and DS18B20

  • The wiring, of a 1-wire interface, is super simple.
  • The GND pin of the DS18B20 goes to GND on the Arduino. [black]
  • The Vdd pin of the DS18B20 goes to +5V on the Arduino. [red]
  • The Data pin of the DS18B20 goes to a (digital) pin of your choice on the Arduino, in this example I used Pin 7
  • Add a pull-up resistor of 4.7 KΩ. as shown in the schematic diagram. One end of resistor connecting Vdd and another end connecting data pin.

Step 2: Connecting the LCD display

  • VSS –> GND Arduino
  • VDP –> 5V Arduino
  • VO –> output potentiometer (potentiometer VCC -> 5V Arduino, potentiometer GND -> Arduino GND).
  • RS –> pin 12 Arduino
  • RW –> GND Arduino
  • E –> pin 11 Arduino
  • D4 –> pin 5 Arduino
  • D5 –> pin 4 Arduino
  • D6 –> pin 3 Arduino
  • D7 –> pin 2 Arduino
  • A –> 5V Arduino with 1.2 k resistor
  • K –> GND Arduino

 LCD display Arduino UNO breadboard diagram

Step 3: WRITING CODE AND UPLOADING

Machine generated alternative text: fritzing

#include<OneWire.h>
#include<DallasTemperature.h>
#include<LiquidCrystal.h>

// Data wire is plugged into digital pin2
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//LCD display pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
double temperature;
void setup(void)
{
 Serial.begin(9600);
 //Serial.println("Temperature Demo");
 sensors.begin();
 lcd.begin(16, 2);
 lcd.print("hello, WORLD");

}
void loop()
{
 sensors.requestTemperatures(); // send command to get temperatures
 delay(500);
 temperature= sensors.getTempCByIndex(0);
 delay(1000);
 lcd.display();
 lcd.setCursor(0, 1);
 lcd.print("Temp: ");
 lcd.setCursor(7, 1);
 lcd.print(temperature);
 lcd.print(" C");
 
}

LCD display Arduino UNO Schematic

Screenshot of the Project output

LCD display Arduino UNO project screenshot

How to Measure temperature with Arduino and DS18B20 sensor?

In this example project we will be combining an Arduino and DS18B20 sensor. The DS18B20 is also called 1-wire digital temperature sensor

Arduino and DS18B20 Temperature Sensor The DS18B20 comes in different forms and shapes, so you have plenty of choice when deciding which one works best for you. There are 3 variations available: 8-Pin SO (150 mils), 8-Pin µSOP, and 3-Pin TO-92.

I have used waterproof version as shown below.

ds18b20-waterproof

Note: DS18B20 is quite versatile. It can be powered through the data line (so called “parasite” mode, which requires only 2 wires versus 3 in normal mode), it operates in a 3.0V to 5.5V range, measures Temperatures from -55°C to +125°C (-67°F to +257°F) with and ±0.5°C Accuracy (from -10°C to +85°C). It converts a temperature in 750ms or less to a up to 12 bits value. Another cool feature is that you can connect up to 127 of these sensors in parallel, and read each individual temperature.

Things you need to get Arduino and DS18B20 sensor work:

  1. Arduino IDE to program the code and upload
  2. OneWire and DallasTemperatre library for the Arduino and DS18B20
  3. One DS18B20 digital temperature sensor
  4. Arduino UNO R3
  5. Jumper wires
  6. Breadboard/PC/General purpose board
  7. Arduino UNO cable

Below is the schematic diagram for the same.

Schemaic_arduino_ds18b20_temperature_sensor

 

 

Step 2: Installing and loading OneWire and DallasTemperature Library

Unzip the downloaded zip file. Make sure that folder name is OneWire, which contains the library. Drag it into the Library folder of Arduino IDE. Alternatively you can use Sketch-> Import Library -> Add Library option of Arduino IDE and select the Zip file.

Step3: Writing code and uploading

#include<OneWire.h>
#include<DallasTemperature.h>

// Data wire is plugged into digital pin2
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);
void setup(void)
{
 Serial.begin(9600);
 Serial.println("Temperature Demo");
 sensors.begin();
}

void loop()
{
 Serial.print(" Fetching temperature...");
 sensors.requestTemperatures(); // send command to get temperatures
 Serial.println("Done..");
 Serial.println("Temperature is ");
 Serial.println(sensors.getTempCByIndex(0));
 delay(1000);
}


Output will be shown as follows:

Arduino DS18b20 - Output

Screenshot of the above example:

Arduino and a DS18B20 sensor 1

We can modify this to display it in LCD display. For details on how to display the temperature on LCD display visit my post How to connect 16*2 LCD display Arduino UNO

How to test Arduino UNO

C:\Users\Pintu\OneDrive\Blogs\Electronics\Adrino_UNO_image.png

You have received your Arduino UNO and want to quickly verify and test arduino uno that it is in good condition or you want to write your first Arduino UNO program. To do so you need to follow the following steps:

  • Launch the Arduino IDE. If you have not installed, you can download from following site and install it.

https://www.arduino.cc/en/Main/Software

  • Connect the Arduino to USB port.
  • Write the following code to blink the on board LEDtest arduino uno 1
  • Compile and upload the code.
  • The on board LED should start blinking every second.

 

How to transfer domain hosting and domain

There may be situation when you may require to transfer domain hosting from one hosting provider to other. Doing so there are many challenges like making sure that there is minimum downtime such that end user does not get to know that there is any change. To do so follow the following steps in order.

Steps to transfer domain hosting are detailed below:

Step 1 – Backup

Yes, backup everything: Files, database, email settings and all other things that you think is required later to restore in case anything goes wrong.

To backup database, you can use any WordPress plugin( if you are using WordPress) or you can directly go to CPannel to backup everything. Download all your backups on to your local system.

Step 2 – Copy all files to your new host

If you have downloaded all your files in step one, use same to upload it on the new host server.

Note: If you have a dynamic site, you may need to restrict some behaviour for some time or set a read only mode to prevent data being lost during the transfer.

If you are using WordPress then you first install WordPress in your new host. After that Restore database. Then copy all your contents: Plugin, themes and upload folders.

Step 3 – Testing

Test the the copy worked correctly.

Step 4 – Update old DNS system to point to new server

Change the old DNS system to point to the new web server and check the site is loading. At this point if everything goes fine you can re-enable full dynamic behaviour.

If you find any issue revert the DNS settings and fix all issues.

Note: Perform this step during the time when it is least used.

Step 5 – Update/Copy DNS settings in new server

Copy the DNS settings from the old server to the new hosts DNS server

Step 6 – Check the site works

Test the new site for all links working, images are loading fine and so on. Wait a few days for everything everywhere to propagate to the new settings, and then turn off the old nameserver.

Step 7 – Transferring Registrar ( This should be last step)

Making a big LED Lamp

This project uses 12 v dc  power supply with 18 LEDs. Also, instead of having series resistor for each LED, the LEDs are grouped in series of 3 LEDs.

 

 

Raspberry Pi XBMC Media Center

In this project I will let you know steps to make your own Raspberry Pi XBMC Media Center.

Parts Required
The parts you will you need for this project are listed below. You will probably only need a USB keyboard and mouse for the setup after this you can remotely control XBMC (Kodi) via a tablet and/or web browser.

  • Raspberry PI
  • 4 GB SD Card (8 GB+ Recommended) or Micro SD Card if you’re using a Raspberry Pi B+ or 2
  • USB Keyboard
  • USB Mouse
  • HDMI Cord

Optional Item: Ethernet Cord or Wifi dongle

Step1:

Choose an operating system to install onto the Pi. Note: If you have a Raspberry Pi 2 please use OpenElec instead of Raspbmc. (You can follow the same steps but download the OpenELEC image instead of Raspbmc)

Raspbmc

 

Raspbmc

Raspbmc runs a full version of linux underneath XBMC but because of this it is slightly slower to boot up and the interface is somewhat slower when compared to a lighter weight version such as Xbian and OpenElec.

I found this the easiest to install and doesn’t require much work to have it working perfectly. You will need to tweak it a little to get the best out of it though. This is the most popular out of the three versions.

Find out more over at the Raspbmc website. Note: Raspbmc has now been discontinued please use OpenELEC instead.

OpenELEC

OpenELEC is a very light weight simple media center for the Raspberry Pi. The pro and con for this one is that the Linux OS underneath is virtually nonexistent. This allows for much faster boot times and just faster performance overall.

The biggest drawback on this is there is little to no room to move in terms of adding new drivers etc. If you do need to this then it will require an entire rebuild of your Pi.

This is great if you have technical skills and don’t require anything else but the standard drivers for XBMC (Kodi)

Xbian

xbian

Xbian much like OpenELEC is very light weight and fast but is much easier to install and configure than OpenELEC. This has everything Raspbmc has and is virtually identical. Xbian tends to get a lot of updates which means you get some minor features before the other two variations of XBMC.

This is perfect for anyone who wants faster updates but apart from that it is basically the same as Raspbmc.

Step 2

Installing Kodi (XBMC) Onto the SD Card

There are two ways to install Raspbian unto the SD Card the first two methods require a network connection to the Raspberry Pi. If you don’t have this luxury then simply follow my guide using the offline image.

Install via NOOBS (Network Connection Required)

Follow my earlier post How to install NOBS for Raspberry Pi for this.

 Install via OpenELEC Image

  1. Download the OpenELEC Project SD Card Image from the Raspberry Pi website.
  2. You will need a formatting tool. Download SD Formatter 4.0 for either Windows or Mac.
  3. Follow the instructions to install the formatting software.
  4. Insert your SD card into the computer or laptop’s SD card reader and check the drive letter allocated to it, e.g. G:/
  5. In SD Formatter, select the drive letter for your SD card (eg. G:/) and format

Install the OpenElec Image onto the SD Card

  1. Download and install the Win32DiskImager.
  2. Unzip the OpenElec image file so it will be .img and not img.gz (7zip is useful for this)
  3. Launch the Win32DiskImager and select the OpenElec ISO file and also the drive letter your SD card is assigned (Eg. G:/)
  4. Confirm you have the correct details and click on Write.

win32diskimager1

The Boot up

  1. Plug in all your necessary equipment into the Pi. (Keyboard, mouse,power supply and WiFi adapter(optional))
  2. Turn the Pi on by plugging in the micro USB cord from the power supply. It will now boot and spend about 5-10 minutes getting everything set up.
  3. Now it is all done and ready to go but if you would like to setup network and access files then go onto the next the section.