How to set-up Wireless on your Raspberry Pi

Step 1: Configuring WLAN Connection

Connect you USB Wifi adapter to your Raspberry Pi. Also, ensure that you are already connected to Ethernet cable. Boot your Pi int GUI and open the terminal window. Either directly on the Pi or through SSH.

Next, check that the USB dongle is detected by your Raspberry Pi – enter the command lsusb and check the results. The Wi-Fi device should be listed as shown below:

On the desktop, double-click WiFi Config and select wlan0 as the adapter. On the Current Status tab click Scan and wait for the results. All nearby wireless networks will be listed in a new window.

Select the network you wish to connect to, enter the password in the PSK field and then click Connect. Within seconds, your Raspberry Pi should be connected relentlessly, and you can remove the Ethernet cable.

Step 2: Ensuring Wireless Adapter Connects At Start-up

When you re-boot or shut down and start your Pi again, wireless adapter will not automatically connect. Therefore, if you try to connect via SSH or VNC you will not be able to do so.

To resolve this problem, we will modify network interface file. follow the following steps in your terminal window.

sudo cp /etc/network/interfaces /etc/network/interfaces.old

This will copy the existing interfaces file, renaming it to interfaces.old. If any problem occur with the edits you make, the original can be renamed and restored.

Next, open the interfaces file in a text editor such as vi:

sudo vi /etc/network/interfaces

Update the section dedicated to your wireless device, replacing as mentioned below:

auto wlan0

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

sudo shutdown -r now

After the change restart the Pi. Refer the screenshot below:

When the device reboots, the USB wireless dongle will automatically connect to the previously configured network!

How to get equalizer settings in Windows 10?

You are running windows media player 12 are trying to find out the equalizer settings. To get equalizer settings in Windows 10

Step 1 : Start windows media player

Step 2: Select skin as Revert.

On the menu  click on view -> Skin Chooser and select Revert as shown below

Now you have an equalizer as show below.

 

windows_media_player
Windows media player with Revert skin.

 

 

 

 

 

 

 

Time delay relay circuit

What is a time delay relay circuit?

In a time delay relay circuit, relay contacts are closed or open after the preset time interval. Whereas in a normal relay contacts are open/closed immediately when coil is energized. It prevents the damaging effect of voltage spikes or input surge current by delaying the relay on/off.

Schematic diagram

Time_delay_relay_circuit
Time delay relay circuit

Components list

  • 12v Relay
  • Transistor TIP122
  • D1 – IN4007
  • D2 – Zener diode 3.3v
  • VR1 – 100K
  • R1,R2,R3 –  1K
  • R4 – 330 Ohm
  • C1 – 1000 μF 25 v
  • C2 – 100 μF 25 v
  • LED – 2 nos

How it works ?

The circuit is based on RC time delay and zener controlled switch. When the power to the circuit is switch on, the 1000 μF capacitor charges through 100 k VR. Once the charge through the capacitor reaches 3.3 v zener diode starts conducting. As the zener is connected to the base of transistor, it triggers the transistor and it is turned on. The relay connected to the transistor is energized. The delay in the relay can be controlled by the VR 100K.

1 Watt audio amplifier for Mobile device

About LM4890

1 Watt audio amplifier for mobile device has been designed using LM4890 power amplifier. LM4890 is primarily designed for mobile phones and other portable devices. It is capable of delivering 1 watt of continuous average power to an 8 ohm load from 5v power supply. It has a distortion of less than 1%.

LM4890 does not require output coupling capacitors and therefore ideally suited for mobile phones and other low voltage applications where minimal power consumption is primary requirement. Power output at 5v is 1 watt and at 3.3 v it is approximately 0.4 watt.

Circuit diagram

LM 4890 - 1 watt audio power amplifier

Parts required.

  • C1= 1 μf 16v
  • C2=0.39 μF 50v
  • C3=1 μf 16 v
  • C4=25 pf
  • R1, R2, R3 = 20 k
  • J1 an dJ2 = Jumper head vertical mount
  • Speaker – 8 Ω

For more circuits on audio amplifier click here

Real time clock with DS1302

Real time clock with DS1302 is designed using Arduino Uno.

About DS1302

The DS1302 is a trickle-charge timekeeping chip containing a real-time clock/calendar and 31 bytes of static RAM. It communicates with a microprocessor via a simple serial interface. The real-time clock/calendar provides seconds, minutes, hours, day, date, month, and year information. DS1302 requires only three wires to communicate with the clock/RAM: CE, I/O (data line), and SCLK (serial clock). It has dual power pins, one for primary and another for backup.  In this example the Primary power will be provided by the Arduino, and the back up by a CR2032 battery.

During reading, the clock could rollover. That would result in bad clock data. To prevent that, the DS1302 has a buffer to store the clock data. That buffer can be read in a single communication session, called a “burst” mode.

The Year data of the DS1302 is only two digits (0-99). The Year ‘0’ is 2000, and not 1970. It has a Leap-Year compensation from 2000 up to 2099 (for a value of 0-99).The data in this ram will get lost if the Arduino is off, and the battery gets empty.

What is required to build the real time clock?

You will need following parts/components

  • Arduino Uno
  • DS1302 Module
  • Button cell

How to connect to Arduino?

The DS1302 can be easily connected to the Arduino. Three pins are needed for the interface (CE, I/O, SCLK), and Vcc2 should be connected to +5V (or +3.3V). The Vcc1 is for a battery .

A crystal of 32.768kHz should be connected to X1 and X2.

The DS1302 can run with a voltage from 2.0V to 5.5V.

Sample Code

// Example sketch for interfacing with the DS1302 timekeeping chip.
#include <stdio.h>
#include <DS1302.h>
namespace {
// Set the appropriate digital I/O pin connections. These are the pin
// assignments for the Arduino as well for as the DS1302 chip.
//
const int CePin   = 5;  // Chip Enable
const int IoPin   = 6;  // Input/Output
const int SclkPin = 7;  // Serial Clock

// Create a DS1302 object.
DS1302 rtc(CePin, IoPin, SclkPin);
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}
void printTime() {
  // Get the current time and date from the chip.
  Time t = rtc.time();
  // Name the day of the week.
  const String day = dayAsString(t.day);
  // Format the time and date and insert into the temporary buffer.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);
 // Print the formatted string to serial so we can see the time.
  Serial.println(buf);

}
}  // namespace
void setup() {
  Serial.begin(9600);
 // Initialize a new chip by turning off write protection and clearing the
  // clock halt flag. These methods needn't always be called. See the DS1302
  // datasheet for details.

 //  rtc.writeProtect(false);

  // rtc.halt(false);
  // Make a new time object to set the date and time.
 // This need to be done first time to set the Date and time.
  // Thursday, July 6, 2017 at 22:58:50.
  // Time t(2017, 07, 6, 22, 58, 50, Time::kThursday);
  // Set the time and date on the chip.
  // rtc.time(t);
}
// Loop and print the time every second.
void loop() {
  printTime();
  delay(1000);
}

Note: Download the library from https://github.com/msparks/arduino-ds1302

DS1302 Datasheet: http://datasheets.maximintegrated.com/en/ds/DS1302.pdf

 

In the next Post I will modify this to make Alarm clock using LCD display.

How to Install Linux Bash shell on Windows 10

Latest windows update allows you to have a full Ubuntu-based Bash shell. This allows you to run the Bash shell and the exact same binaries that you would normally run on Ubuntu Linux.

To get started with bash make sure you are using correct version of Windows.

We would need Windows 10 creators update and a 64 bit version of the Windows 10.

Install Linux bash shell

To install Linix bash shell on windows follow the following steps.

Step 1 – Activate the developer mode

Update & Security > For Developers. Activate the “Developer Mode” as shown below:

enable developer mode

Step2: Enable the Windows Subsystem for Linux (Beta)

Next, open the Control Panel, click “Programs,” and click “Turn Windows Features on or Off” under Programs and Features. Enable the “Windows Subsystem for Linux (Beta)” option in the list here and click “OK.” After this it will ask you to reboot.

Step 3:

After your computer restarts, open windows command prompt and type bash as shown below. The first time you run the bash.exe file, it will prompt to accept the terms of service. The command will then download the “Bash on Ubuntu on Windows” application from the Windows Store. It will ask you to create a user account and password for use in the Bash environment.

What can you do with bash shell on windows?

  • You would be able to use standard Linux SSH utility and discard third party tool like putty.
  • You will be able to edit text with VIM from the command line, and manipulate text using Sed and Awk.
  • You can also, apt-get to manage their packages, and to install tens of thousands of Ubuntu binaries.
  • Basically its good utility for developer/administrators. These may not be very useful to general users. But if you are interested in learning Linux you can start it from here without going into the complexity to install LINUX.

Seven segment display counter

A seven segment display is typically used to display numbers from 0-9. It consists of 7 bar segments and a dot( 8 Segments). They are numbered A to F and DP for the dot or decimal place. There are 2 types of 7 Segment display

  • Common anode
  • Common cathode

 

Seven Segments are labelled as below.

For more detail on 7 segment display refer my blog post on it here.

To display number we need to turn on the correct segments as shown below:

0- ABCDEF
1- BC
2- ABGED
3- ABCDG
4- BCFG
5- ACDFG
6- ACDEFG
7- ABC
8- ABCDEFG
9- ABCFG

List of Parts needed

  1. Common cathode seven segment LED display
  2. 470 Ohm resistors – 7 nos
  3. Arduino UNO

Schematic diagram:

Seven Segment counter

 

Below is the code for the one digit counter

//Pins for seven segment
int sega = 1;
int segb = 2;
int segc = 3;
int segd = 4;
int sege = 5;
int segf = 6;
int segg = 7;
int dispa = 8;
int dispb = 9;

void setup() {
 // Setup code to run once
   pinMode(sega,OUTPUT);
   pinMode(segb,OUTPUT);
   pinMode(segc,OUTPUT);
   pinMode(segd,OUTPUT);
   pinMode(sege,OUTPUT);
   pinMode(segf,OUTPUT);
   pinMode(segg,OUTPUT);
   pinMode(dispa,OUTPUT);
   pinMode(dispb,OUTPUT);
}

void loop() {
 // put your main code here, to run repeatedly:
  for(int count=0;count<10;count++)
  {
    digitalWrite(sega,LOW);
    digitalWrite(segb,LOW);
    digitalWrite(segc,LOW);
    digitalWrite(segd,LOW);
    digitalWrite(sege,LOW);
    digitalWrite(segf,LOW);
    digitalWrite(segg,LOW);
    if(count==0){
     digitalWrite(sega,HIGH);
     digitalWrite(segb,HIGH);
     digitalWrite(segc,HIGH);
     digitalWrite(segd,HIGH);
     digitalWrite(sege,HIGH);
     digitalWrite(segf,HIGH);
  }
  if(count==1){
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
  }
  if(count==2){
    digitalWrite(sega,HIGH);
    digitalWrite(segb,HIGH);
    digitalWrite(segg,HIGH);
    digitalWrite(sege,HIGH);
    digitalWrite(segd,HIGH);
  }
  if(count==3){
    digitalWrite(sega,HIGH);
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segd,HIGH);
    digitalWrite(segg,HIGH);
  }
  if(count==4){
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segf,HIGH);
    digitalWrite(segg,HIGH);
  }
  if(count==5){
    digitalWrite(sega,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segd,HIGH);
    digitalWrite(segf,HIGH);
    digitalWrite(segg,HIGH);
  }
  if(count==6){
    digitalWrite(sega,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segd,HIGH);
    digitalWrite(sege,HIGH);
    digitalWrite(segf,HIGH);
    digitalWrite(segg,HIGH);
  }
  if(count==7){
    digitalWrite(sega,HIGH);
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
  }
  if(count==8){
    digitalWrite(sega,HIGH);
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segd,HIGH);
    digitalWrite(sege,HIGH);
    digitalWrite(segf,HIGH);
    digitalWrite(segg,HIGH);
  }
  if(count==9){
    digitalWrite(sega,HIGH);
    digitalWrite(segb,HIGH);
    digitalWrite(segc,HIGH);
    digitalWrite(segf,HIGH);
    digitalWrite(segg,HIGH);
  } 
  delay(1000);
 }
}

 

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.

Plus/minus supply using LMC7660

LM 7660 is a CMOS voltage convertor capable of converting a positive voltage in the range of +1.5 v – 10 v to the corresponding negative voltage of -1.5v to -10v using very few external components. Below is the schematic diagram for the same.

We can use this get +/-5v from different sources like from 9v battery. Adding LM7805 converter to a 9v battery or 9v power supply will reduce it to 5v as shown below.

Components

  • IC1 – LMC7660
  • IC2 – LM7805
  • C1,C2 – 10μF 16V
  • C3 – 470 μF 25V
  • C4 – 2.2μF 16V
  • Battery – 9v

 

Bicycle USB Charger

This circuit has been developed to add a USB charging port to a bicycle for charging a mobile phone. The input supply for the circuit is produced by a dynamo (6V, 3W dynamo) in the bicycle.

The circuit is based on LM2596-5.0. It is a 3A step down voltage regulator. LM 2596 are available in fixed output voltage of 3.3, 5, 12v and an adjustable output version. The LM2596 series operates at a switching frequency of 150 kHz, thus allowing smaller-sized filter components than what would be needed with traditional lower-frequency switching regulators. The IC provides all active functions for a step-down (buck) switching regulator, capable of driving a 3A load with excellent line and load regulation.

Circuit & Part list

  • C1        1000uf
  • C2        470 uf
  • D1-D2        1N5818
  • D5        1N5818
  • J        Dynamo 6v 3W
  • L        33 u
  • LED
  • R          1k
  • SW        1 on/off switch
  • IC        LM2596
  • USB-A Connector

How it Works?

The alternating voltage generated by the dynamo is converted to DC by a full-wave bridge rectifier comprising Schottky barrier rectifier diodes D1 through D4 and a filtering electrolytic capacitor (C1). The output of the bridge rectifier, which is charged to peak value of AC voltage (nearly 10V), is input to switching regulator LM2596-5.0 to provide a regulated 5V (DC) output, which is suitable for charging mobile devices using the USB connector.

The 5mm LED (LED1) in the circuit indicates output status. Feedback connection FB (pin 4 on IC1) is connected directly to output voltage at electrolytic capacitor C2. The 33μH inductor (L1) should be rated for a DC current of at least 1A. The dynamo output is connected to the circuit by switch S1.