Skip to main content

Introduction to robotics .............. Part-4 (Automation)

Voice Controlled Lights using Raspberry Pi



Voice controlled home application

Today we are building a very useful project in which we can control the LED lights using our voice through Smart Phone. In this project, we will send voice commands from Smart Phone to Raspberry Pi using Bluetooth Module and Raspberry Pi will receive that transmitted signal wirelessly and will perform respective task over the hardware. We can replace the LEDs with the AC home appliances using relays and can build a Voice Controlled Home Automation Project.

Components Used:
  • ·         Raspberry Pi 3 (any model shall work)
  • ·         Bluetooth Module HC-06
  • ·         Bread board
  • ·         100 ohm Resistors (3)
  • ·         LED’s (blue, red, green)
  • ·         Connecting wire
  • ·         Power Supply
  • ·         Ethernet cable
  • ·         Android Phone




Bluetooth Module:

Bluetooth module consists two things one is Bluetooth serial interface module and a Bluetooth adaptor. Bluetooth serial module is used for converting serial port to Bluetooth.


Bluetooth Module HC06 and Raspberry Pi 3

How to operate Bluetooth module:

You can directly use the Bluetooth module after purchasing from market, because there is no need to change any setting of Bluetooth module. Default baud rate of new Bluetooth module is 9600 bps. You just need to connect rx and tx to controller or serial converter and give 5 volt dc regulated power supply to module.
Bluetooth module has two modes one is master mode and second one is slave mode. User can set either mode by using some AT commands. Even user can set module’s setting by using AT command. Here is some commands uses are given:
First of all user need to enter AT mode with 38400 bps baud rate by pressing EN button at Bluetooth module or by giving HIGH level at EN pin. Note: all commands should ends with \r\n (0x0d and 0x0a) or ENTER KEY from keyboard.
After it if you send AT to module then module will respond with OK
AT à Test Command
AT+ROLE=0 à Slave Mode select
AT+ROLE=1 à Master Mode select
AT+NAME=xyz  à Set Bluetooth Name
AT+PSWD=xyz à Set Password
AT+UART=<value1>,<value2>,<value3>  à set Baud rate
Eg. AT+UART=9600,0,0

Pin Description of HC-06 Bluetooth Module:

1. STATE  à Open
2. Rx  à Serial receiving pin
3. Tx  à Serial transmitting pin
4. GND   à ground
5. Vcc      à +5volt dc
6. KEY    à to enter in AT mode

Working Explanation:

Working of this Voice Controlled LEDs project is very easy. In this project we have used three LEDs of different colors (Blue, Red and Green). A HC-06 Bluetooth Module is used for receiving voice commands output in string format. Raspberry Pi receives that incoming string from Bluetooth Module and compares with predefined string and performs respective task.
In this project, to provide the voice commands to Raspberry Pi from our Smart Phone, we have used AMR Voice App in Android Phone (Android Meets Robots : Voice Recognition).

AMR Voice App installation and configuration:

AMR Voice App can be downloaded and installed from the Google Play Store. You also need to install Google Voice App for this project. AMR Voice app takes the voice as input and converts it into text string using Android mobiles internal voice recognition (Google Voice App) and sends this converted text serially over Bluetooth.



Now open the AMR voice app, go in option menu and connect it to Bluetooth module by clicking over ‘Connect Robot’:



Now user can tap over the Mic symbol on mobile screen and speak predefined Voice commands to operate the LEDs:
1. “blue light on”   (only blue LED turned on)
2. “blue light off”  (only blue LED turned off)
3. “red light on”     (only red LED turned on)
4. “red light off”    (only red LED turned off)
5. “green light on”  (only green LED turned on)
6. “green light off” (only green LED turned off)
7. “all lights on”     (blue, red and green LEDs turned on)
8. “all lights off”    (blue, red and green LEDs turned off)
9. “blink”                (all LEDs start blinking with a 100 millisecond time period)

Then AMR voice app records this voice and sends it to Google Voice app to convert it into the text string format. Now this converted string is sent to Raspberry Pi via Bluetooth module and Raspberry Pi reads this string from UART port and store in a string in the code. And then compare it with predefined strings, if any match occurs then Raspberry Pi takes a respective action or performs a task.
                                  
Circuit Explanation:

Circuit of this project is very simple, which contains Raspberry Pi 3 Board, LEDs and Bluetooth Module (HC-06). Raspberry Pi reads the Bluetooth Module and control the LEDs accordingly. LEDs Blue, Red and Green are connected at GPIO 17, 27 and 22. Rx and Tx of Bluetooth Module are directly connected to Tx and Rx pins of Raspberry Pi. Remaining conn ections are shown in circuit diagram.


Raspberry Pi Configuration and Python Program:

We are using Python language here for the Program. Before coding, user needs to configure Raspberry Pi. You can check our previous tutorials for Getting Started with Raspberry Pi and Installing & Configuring Raspbian Jessie OS in Pi.
After that you need to run following commands to run latest updates on Raspbian Jessie:
sudo apt-get update
sudo apt-get upgrade
After it we need to install Raspberry Pi GPIO development tool, it can be installed by following commands:
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio


Then user needs to configure serial port of Raspberry Pi. Here we have used Raspberry Pi 3 for this project. So user needs to configure serial port according to their Raspberry Pi version. For Raspberry Pi 3, first user needs to disable console login via serial port, through RPi Software Configuration Tool. Open it by using below command:
sudo raspi-config
Then go to ‘Advance Options’, select ‘Serial’ and ‘Disable’ it.


After this we need to disable inbuilt Bluetooth of Raspberry Pi 3 by adding dtoverlay=pi3-miniuart-bt at the end of  /boot/config.txt file:
sudo nano /boot/config.txt


After adding the line reboot RaspberryPi by issuing sudo reboot command.

Finally login in Raspberry Pi again and configure /boot/comline.txt file:
sudo nano /boot/comline.txt
And edit the file as below:
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


Now you can run the Python program given below in Raspberry Pi and you are done! Program is easy and can be easily understandable.
So here we have completed building our Voice Controlled Devices using Raspberry Pi. You can further enhance it and modify it for controlling AC home appliances by adding relays.


Code:

import serial
import RPi.GPIO as GPIO     
import os, time
led1=17
led2=27
led3=22
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(led1, GPIO.OUT)
GPIO.setup(led2, GPIO.OUT)
GPIO.setup(led3, GPIO.OUT)
GPIO.output(led1 , 0)
GPIO.output(led2 , 0)
GPIO.output(led3 , 0)
Serial = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=2)
data1=""
data=''
while 1:
  while data != '#':
    data = Serial.read(1)
    data1+=data
  print data1
  if data1.find("blue light on")>0:
      GPIO.output(led1 , 1)
      print "Blue Light on"
  if data1.find("blue light off")>0:
      GPIO.output(led1 , 0)
      print "Blue Light Off"
  if data1.find("red light on")>0:
      GPIO.output(led2 , 1)
      print "Red Light on"
  if data1.find("red light off")>0:
      GPIO.output(led2 , 0)
      print "red Light Off"
  if data1.find("green light on")>0:
      GPIO.output(led3 , 1)
      print "Green Light on"
  if data1.find("green light off")>0:
      GPIO.output(led3 , 0)
      print "Green Light Off"
  if data1.find("all lights on")>0:
      GPIO.output(led1 , 1)
      GPIO.output(led2 , 1)
      GPIO.output(led3 , 1)
      print "All Lights on"
  if data1.find("all lights off")>0:
      GPIO.output(led1 , 0)
      GPIO.output(led2 , 0)
      GPIO.output(led3 , 0)
      print "All Light Off"
  if data1.find("blink")>0:
      for k in range (100):
        GPIO.output(led1 , 1)
        GPIO.output(led2 , 1)
        GPIO.output(led3 , 1)
        time.sleep(0.1)
        GPIO.output(led1 , 0)
        GPIO.output(led2 , 0)
        GPIO.output(led3 , 0)
        time.sleep(0.1)
 
  Serial.flush();
  data="";

  data1="";

So guys do those works practically and enjoy. For any help contact us on facebook:


Comments

Popular posts from this blog

Practical Projects for Engineering Students-8

Soldier Health & Position Tracking System The soldier Health and Position Tracking System allows military to track the current GPS position of soldier and also checks the health status including body temperature and heartbeats of soldier. The System also consists extra feature with the help of that soldier can ask for help manually or send a distress signal to military if he is in need. The GPS modem sends the latitude and longitude position with link pattern with the help of that military can track the current position of the soldier. The system is very helpful for getting health status information of soldier and providing them instant help. The nation’s security is monitored and kept by army, navy and air-force. The important and vital role is of soldiers who sacrifice their life for their country. There are many concerns regarding the safety of the soldier. Soldiers entering the enemy lines often lose their lives due to lack of connectivity, it is very vital fo

Introduction to robotics .............. Part-3 (Automation)

Automated Portable Hammering Machine Hammering is the most widely used industrial as well as construction activity. Hammering or screws, metal sheets, parts etc requires a lot of time and effort. So here we propose an automated hammering system that allows for fully automatic hammering process. This allows for accurate, fast and automated hammering wherever and whenever needed using a 12V battery. The person just needs to insert workpeice and start the hammering machine. This machine can be used for automatic hammering work as and when needed. We here use a dc motor in order to move the hammer. The DC motor consists of a pulley attached to it which is connected to a larger pulley for efficient power transfer and to increase torque. This large pulley is connected to a shaft that has a connecting rod attached to it. This rod is used to achieve lateral motion from the spinning shaft. We now connect the other end of hammer to this connecting rod through a mid swinging arrangement i

Introduction to robotics .............. Part-2

Line Follower Robot Our Line Follower Robot Line followers are one of the most prominent kinds of robots. They have existed for a very long time, however, the technologies used for building them have changed rapidly. Earlier, controller boards the size of bricks were used, but now they have shrunk and become tremendously powerful. Now, technology allows you to build a line follower in just under 10 minutes if you have the parts for it. So enjoy building this quick and easy line follower. Have fun with this DIY hacking tutorial! Required Materials Hardware : 1.       Arduino  / Arduino Clone or make your own  custom Arduino board . 2.       Two continuous rotation servo motors like this:  Continuous rotation servo . 3.       A ball caster:  Ball caster . 4.       An infrared sensor array like this:  Pololu QTR-8A IR sensor array  OR a set of six  IR Leds  and  Detectors . 5.       Resistors:  1K  and  10K . 6.       Two  robot wheels , select wheels after chec