SP33
SP33
net/publication/309634807
CITATIONS READS
0 11,438
1 author:
Amit Sharma
Guru Jambheshwar University of Science & Technology
4 PUBLICATIONS 0 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Amit Sharma on 03 November 2016.
This project demonstrates a simple home automation system that allows the user to control it
with a wireless device such as a Wi-Fi or Bluetooth enabled mobile phone. A desktop PC is used
to run the server software. The system allows the user to control each of the lights and fans
individually. It can automatically turn off the main lights and turn on a night lamp at a specified
time. By measuring the signal strength, it can detect when the user enters a room and
automatically turn on the light and fans, and then automatically turn them off when the user
leaves the room.
1
TABLE OF CONTENTS
ABSTRACT .................................................................................................................................... 1
INTRODUCTION .......................................................................................................................... 5
1.1 OBJECTIVE.......................................................................................................................... 5
1.2 VISUAL STUDIO 2010........................................................................................................ 6
1.3 FEATURES OF VS 2010 ..................................................................................................... 6
1.3.1 Code Editor ..................................................................................................................... 6
1.3.2 Debugger ........................................................................................................................ 7
1.3.3 Designer .......................................................................................................................... 7
1.3.4 Other Tools ..................................................................................................................... 7
1.4 SUPPORTED PRODUCTS .................................................................................................. 7
SYSTEM ANALYSIS .................................................................................................................... 9
2.1 EXISTING SYSTEMS ......................................................................................................... 9
2.2 PROPOSED SYSTEM.......................................................................................................... 9
SYSTEM REQUIREMENTS ....................................................................................................... 10
3.1 SOFTWARE REQUIREMENTS ....................................................................................... 10
3.2 HARDWARE REQUIREMENTS ...................................................................................... 10
3.3 DEVELOPMENT TOOLS ............................................................................................ 10
3.3.1 Microsoft Visual Studio 2010....................................................................................... 10
3.3.2 Arduino IDE For Microcontroller .................................................................................... 10
3.3.3 PIC PGM Programmer1.0.1.4 .......................................................................................... 10
SYSTEM DESIGN SPECIFICATION ........................................................................................ 11
4.1 DESIGN SPECIFICATION ................................................................................................ 11
4.2 DESIGN DIAGRAM .......................................................................................................... 11
IMPLEMENTATION ................................................................................................................... 13
5.1 SERVER MODULE ........................................................................................................... 13
5.1.1 COM-PORT.................................................................................................................. 13
2
5.1.2 AUTOMATIC TIMING CONTROLS ......................................................................... 13
5.2 MICROCONTROLLER AND HARDWARE MODULE ................................................. 14
5.2.1 ARDUINO UNO R3 ATMEGA320P .......................................................................... 14
5.2.2 RELAY BOARD .......................................................................................................... 14
5.3 CLIENT ............................................................................................................................... 15
TESTING ...................................................................................................................................... 16
6.1 SERVER MODULE ........................................................................................................... 16
6.1.1 ACTIVATION OF TIME-BASED PROFILE ............................................................. 16
6.1.2 UPDATING GUI ON RECEIVING COMMANDS .................................................... 16
6.1.3 PORT SELECTION ..................................................................................................... 16
6.2 MICROCONTROLLER AND HARDWARE MODULE ................................................. 17
6.2.1 QUALITY OF MAINS SUPPLY................................................................................. 17
6.2.2 ELECTRICAL GROUNDING PROBLEM ................................................................. 17
6.3 RECOGNIZING VOICE .................................................................................................... 17
CODING ....................................................................................................................................... 18
1. SERVER MODULE .......................................................................................................... 18
2. MICROCONTROLLER AND HARDWARE MODULE ................................................ 34
SCREENSHOTS........................................................................................................................... 35
8.1 Arduino Controller Front .................................................................................................... 35
8.2 IC Diagram .......................................................................................................................... 35
8.3 Hardware Arrangement ....................................................................................................... 36
8.6 Default Commands .............................................................................................................. 37
8.7 Temp and Weather Data ...................................................................................................... 37
CONCLUSION ............................................................................................................................. 38
FUTURE ENHANCEMENTS .................................................................................................. 38
REFERENCES ............................................................................................................................. 39
3
HOME AUTOMATION SYSTEM
4
CHAPTER 1
INTRODUCTION
A typical home automation system allows one to control house hold appliances from a
centralized control unit. These appliances include lights, fans, air conditioners, television sets,
security cameras, electronic doors, computer systems, audio/visual equipment, etc. These
appliances usually have to be specially designed to be compatible with each other and with the
control unit for most commercially available home automation systems. The project
“Implementation of a Low-Cost Home Automation System”, demonstrates a system that can be
integrated into a building’s electrical system and allows one to wirelessly control lights, fans, and
turn on or off any appliance that is plugged into a wall outlet. The system can be controlled from
a Laptop acts as the server. Thus the installation cost and hardware cost is kept to a minimum as
most users already own the requisite hardware such as a mobile phone and desktop PC.
A wire is sed to provide connectivity between the server and the controller. The power supply for
each appliance is wired through an electromechanical relay. A number of relays are used
depending on the number of appliances to be used.
All the relays are controlled by a microcontroller. The microcontroller is connected to the server
via a USB interface. This makes it plug-and-play and compatible with virtually any PC. The
system can be configured with time-based profiles. For example, one could have it automatically
turn on the lights at 6:00 in the evening. At 10:00P.M. it could automatically turn off the main
lights and turn on a night lamp. It could then turn off the night lamp the next morning. The server
can also connect from the internet to receive various data.
1.1 OBJECTIVE
Home automation or smart home is the residential extension of building automation and involves
the control and automation of lighting, heating (such as smart thermostats), ventilation, air
conditioning (HVAC), and security, as well as home appliances such as washer/dryers, ovens or
refrigerators/freezers which means Stimulating smart, understandable and accessible solutions
and services for the personal environment.
This project comprises of two sub-parts. The front end involves designing a C# application to
communicate with microcontroller through USB. The back end involves building a network of
microcontroller based prototypes to emulate devices used at residential locations for the purpose
of home automation such as temperate sensors, motors, lighting control etc. Micro-controllers
communicate with each other via Relay. It also provides a platform for experiments and research.
5
1.2 VISUAL STUDIO 2010
6
1.3.2 Debugger
Visual Studio includes a debugger that works both as a source-level debugger and as a
machine-level debugger. It works with both managed code as well as native code and can
be used for debugging applications written in any language supported by Visual Studio.
In addition, it can also attach to running processes and monitor and debug those
processes. If source code for the running process is available, it displays the code as it is
being run. If source code is not available, it can show the disassembly. The Visual Studio
debugger can also create memory dumps as well as load them later for debugging. Multi-
threaded programs are also supported. The debugger can be configured to be launched
when an application running outside the Visual Studio environment crashes.
1.3.3 Designer
Visual Studio includes a host of visual designers to aid in the development of
applications. These tools include:
Visual Basic basically supported various products. There are five main products that are
supported by VS-2010.
7
IV. Microsoft Visual Web Developer
8
CHAPTER 2
SYSTEM ANALYSIS
Most commercially available home automation systems are all-in-one solutions which require
that all controllable appliances are from the same company, or must be approved as compatible
with said company’s system. Moreover these systems normally come with a proprietary,
dedicated device which acts as the control center. To control the system from multiple locations,
additional control devices must be purchased. These complex systems usually need to be
integrated when the building is constructed and must be planned in advance. They are also
difficult to upgrade or replace once installed. The overall investment adds up considerably and is
financially infeasible in most cases. These drawbacks hinder the popularity of such systems.
The objective of the proposed system is to offer a low-cost solution for a home automation
system that overcomes the above drawbacks. The
system provides basic control of appliances at a fraction of the cost of commerciallyavailable
systems. The concept of a proprietary control device is done away with as the system can be
controlled from a Bluetooth or Wi-Fi enabled mobile device, such as a mobile phone or laptop.
There is no need for a specialized server system as a typical desktop PC can act as the server.
Nowadays most users already own the requisites such as a mobile phone and a desktop PC;
hence the cost of the system is considerably reduced. The system can be easily integrated into an
existing electrical system of a building thanks to its simplified design. It can also be easily
installed for just a single room if one so desires. Modifications to the existing electrical system
are minimal, thereby reducing installations costs.
9
CHAPTER 3
SYSTEM REQUIREMENTS
Two different programming languages are used for the development of different
software components of the HAS (Home Automation System).
PIC PGM Programmer is the software used to flash the compiled program to the
microcontroller’s EEPROM and verify that it has been successfully written.
10
CHAPTER 4
After initiating the program, user needs to send voice commands to the server. The
microcontroller is connected to the server via USB. On receiving speech commands, server
sends commands to the microcontroller over the USB connection. The microcontroller is
directly connected to the relays and it can enable or disable them. The relays are connected
to the electrical system of the building so that they can control the plug points.
11
START
USER VOICE
INPUT
SERVER
USB-to-SERIAL
BRIDGE
CONTROLLER
RELAY- SYSTEM
Electrical Appliances
12
Figure 4.1 Data Flow Diagram
CAHPTER 5
IMPLEMENTATION
The system is comprised of three different modules, which are described below:
The server module is executed on a desktop PC running Windows. It sends commands to the
microcontroller to control the relays, and accepts commands from clients connected to it.
The manual control on the bottom-right can be used to directly control the relays from the server
side without using a client. There are few checkboxes which are checked and unchecked on the
bases of the hardware status. If checkbox is checked i.e. the appliance is turned on, otherwise it
is turned off.
5.1.1 COM-PORT
The USB-to-Serial Bridge presents itself as a virtual COM port to the server. The port
number that corresponds to the USB-to-Serial Bridge is chosen so that the server
can communicate with the microcontroller.
For Example, at 6:00 PM, Relay 1 (Light 1) and Relay2 (Light 2) will be switched on and
Relay 3 (Night Lamp) will be switched off. The remaining relays will be left unchanged
at whatever state they previously were.
13
5.2 MICROCONTROLLER AND HARDWARE MODULE
Microcontroller are powered with +5V through the USB connection to the laptop.
The output port on the microcontroller is 8 bits wide. When logical one (+5V) is output
on one of the bits, the corresponding relay is activated. The live terminal input of each
appliance is wired across the Common and Normally Open terminals of the relays, thus
the power to the appliance is switched on or off depending on whether the relay is active
or not. For the purpose of demonstrating a working model, three 220V outlets have been
attached the relay board. The maximum load switching capacity of each of the relays is
given below:
14
5.3 CLIENT
Basically a client is nothing but a human component which will give command to the server via
speech signal, this form is also known as speech recognition. After recognizing the speech signal
it first will convert it in the form of string. Since strings are easy to manipulate. it will then go to
its command dir. Where all the possible commands are stored by the admin It start reading each
command linearly until it finds the exact same match of the command which is spoked. If it finds
the match then it checks the cross ponding response and executes the same one. If it does not
find any command which is spoked, it will give no response.
So here the main role of the client is to confer the required commands to the server. It should be
in the form of speech signal, means one must have to pronunciate the commands which are
defined in the default commands dir. If, somehow client’s speech couldn’t be recognized the
software has an alternative. It has two different control modes to control the relay. One is
through voice and another is manually. It has three checkbox namely ‘Light on/off’, ‘Fan on/off’,
‘Door open/close’. So software has the option to switch the client to manual control if voice is
not recognized.
15
CHAPTER 6
TESTING
Each of the modules was tested using both black box and white box testing techniques. Black
box testing ensures the correctness of the system’s output, given various possible inputs. White
box testing involves providing calculated inputs so that the internal structure of the system can
be verified to be error free. For example, white box testing of a software module
involves providing different inputs that test all possible code paths within the program. The
modules were designed keeping in mind all possible inputs and any erroneous inputs as well.
Any exceptions that occur are handled appropriately without compromising the stability of the
system. Different issues, both foreseen and unforeseen, were encountered during the design
process. These issues and the measures that were adopted to overcome them are described in this
chapter.
16
6.2 MICROCONTROLLER AND HARDWARE MODULE
The Power plug was changed to a three pin top and a direct connection to the wall
outlet’s ground pin was provided to absorb the stray currents.
It was observed that the voice signals speak by the end user was not accurately recognized by
the server. It was found that 60% signals were observed accurately and 40% were not. The
enhancement in the system was bringing in the form of training the speech API. There was
also an option to use the GOOGLE VOICE API which will work fine, but this system uses MS
Speech API.
17
CHAPTER 7
CODING
1. SERVER MODULE
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.AudioFormat;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Globalization;
using System.Threading;
using System.Diagnostics;
using System.Xml;
using System.IO;
using System.Net.NetworkInformation;
using System.IO.Ports;
namespace Test1ProInit
{
public partial class Form1 : Form
{
//DO I LIKE _something_??? iTS A LITTLE BIT BUGGY...WORKING ON THAT
//ADD 'SEARCH FOR' FUNCTIONALITY??? CAN'T BE ADDED
'SEARCH FOR' FUNCTIONALITY. WAIT FOR THE NEXT VERSION :-)
18
Choices commands = new Choices();
Choices commomEng = new Choices();
Grammar _grammar;
SerialPort port = new SerialPort("COM4",9600, Parity.None, 8, StopBits.One);
19
//FORM1 CONSTRUCTOR
public Form1()
{
_hasShown = false;
_isConnected = NetworkInterface.GetIsNetworkAvailable();
// _synthesizer.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult);
try
{
recogEngine.RequestRecognizerUpdate();
recogEngine.LoadGrammar(_grammar);
recogEngine.SpeechRecognized += rec_SpeachRecognized;
recogEngine.SetInputToDefaultAudioDevice();
recogEngine.RecognizeAsync(RecognizeMode.Multiple);
}
catch (Exception _e)
{
_synthesizer.SpeakAsync("Sir, I'm facing some trouble while initating Speech Engine.
"
+ "Error Code: ERR\\CONSTR\\T-C\\12" +
" Problem is as fallows. :- " + _e.Message);
}
20
//LOAD WHAT U SAY TO RSPONS AREA
txtAreaResponse.AppendText("YOU: " + e.Result.Text + " with " + _confidance_level +
"% Confidance" + "\n\n");
if (_speechRecognizedEvt.Contains("shut up"))
{
_wake = false;
txtAreaResponse.AppendText(AIName.ToUpper() + ": speech recognition " +
DISABLE + "D\n\n");
}
if (_speechRecognizedEvt.Contains("default commands"))
{
_hasCommandRecognized = true;
_hasShown = true;
if (_hasShown == true) //OPEN NEW FORM BORDER RESPONSE
{
s.Show();
_hasShown = false;
say(demand_response_action());
}
if ((s.Focused) && (_hasShown == false))
{
say("Form is already shown.");
}
}
21
if (_speechRecognizedEvt == "close window")
{
_hasCommandRecognized = true;
s.Close();
say(demand_response_action());
}
if (_speechRecognizedEvt.Contains(AIName))
{
_hasCommandRecognized = true;
this.TopMost = true;
this.Focus();
this.BringToFront();
say("Yes!");
}
22
say("reminder has been set.");
}
if (_speechRecognizedEvt.Contains("open chrome"))
{
_hasCommandRecognized = true;
Process.Start("http://www.google.in");
say(demand_response_action());
}
23
if (_speechRecognizedEvt.Contains("restart"))
{
_hasCommandRecognized = true;
restart();
say(demand_response_action());
}
_pBuilder.AppendBreak(new TimeSpan(0,0,3));
_pBuilder.StartSentence();
_pBuilder.AppendText("shutdown sequence completed, good bye "+MasterName);
//GET THE CURRENT TIME(AM OR PM) AND WISH ME ACCORDINGLY(Eg: HAVE A
GOOD NIGHT, SIR)
_pBuilder.EndSentence();
_synthesizer.SpeakAsync(_pBuilder);
this.Close();
}
24
if (_speechRecognizedEvt == ("whats the weather like"))
{
_hasCommandRecognized = true;
if (_isConnected)
{
say("The sky is " + GetWeather("cond") + ".");
}
else say("I'm not connected with the server! Please connect it to get the weather
data.");
}
if (_isConnected)
{
int _inCelsius = 0;
int.TryParse(GetWeather("temp"), out _inCelsius);
_inCelsius = (_inCelsius - 32) * 5 / 9;
say("It is " + _inCelsius + " degrees Celsius.");
}
else say("I'm not connected with the server! Please connect to get the tempreature
data."); //CURRENTLY GETTING TEMP DATA FROM SERVER
} //SWITCH IT TO
SENSORS AFTER INSTALLATION
if (_speechRecognizedEvt == ("minimize"))
{
_hasCommandRecognized = true;
this.WindowState = FormWindowState.Minimized;
say("ok"); //LOW RESPONSE CMD
//LOW, MEDIUM AND HIGH LEVEL CMDS CAN BE GENERATED FOR:
} //RESPONSES LIKE
(GREETING, DEMAND AND THANK YOU)
if (_speechRecognizedEvt == ("maximize"))
{
_hasCommandRecognized = true;
this.WindowState = FormWindowState.Normal;
this.Focus();
say("alright"); //LOW RESPONSE CMD
}
25
if (_speechRecognizedEvt.Contains(LIGHT.ToLower() + " " + ON.ToLower()) ||
_speechRecognizedEvt.Contains("turn " + ON.ToLower() + " the " + LIGHT.ToLower()))
{
//THIS IS A TEST, ACTUALLY WE HAVE TO SAND A CHAR CODE TO
CONTROLLER
_isLight = true;
_hasCommandRecognized = true;
if (_isLightOn)
{
say(LIGHT + " is already turned " + ON);
}
else if (!_isLightOn)
{
_isLightOn = true;
try
{
port.Open();
port.WriteLine("A");
port.Close();
}catch(IOException)
{
say("IO Exception ");
}
say(demand_response_action());
lblHALightStatus.Text = ON;
chkBoxLight.Text = LIGHT + " " + OFF;
btnTurnOnOff.Text = "TURN " + OFF;
say(LIGHT + " turned " + ON);
}
else { say(hardwreNotFunc()+"214\\"+LIGHT+"-"+ON+"\\232"); _isLight = false; }
}
if (!_isLightOn)
{
say(LIGHT + " is already turned " + OFF);
}
26
else if (_isLightOn)
{
_isLightOn = false;
try
{
port.Open();
port.WriteLine("B");
port.Close();
}
catch (IOException)
{
say("IO Exception ");
}
lblHALightStatus.Text = OFF;
chkBoxLight.Text = LIGHT + " " + ON;
btnTurnOnOff.Text = "TURN " + ON;
say(LIGHT + " turned " + OFF);
}
else { say(hardwreNotFunc()+"235\\"+LIGHT+"-"+OFF+"\\253"); _isLight = false;
}
}
if (_isFanOn)
{
say(FAN + " is already turned " + ON); //SHOW THE
TIME WHEN FAN IS TURNED ON
}
else if (!_isFanOn)
{
_isFanOn = true;
try
{
port.Open();
port.WriteLine("C");
port.Close();
}
catch (IOException)
27
{
say("IO Exception ");
}
lblHAFanStatus.Text = ON;
chkBoxFan.Text = FAN + " " + OFF;
btnTurnOnOff.Text = "TURN " + OFF;
say("ok");
}
else { say(hardwreNotFunc()+"256\\"+FAN+"-"+ON+"\\273"); _isFan = false; }
}
if (!_isFanOn)
{
say(FAN + " is already turned " + OFF);
}
else if (_isFanOn)
{
_isFanOn = false;
try
{
port.Open();
port.WriteLine("D");
port.Close();
}
catch (IOException)
{
say("IO Exception ");
}
lblHAFanStatus.Text = OFF;
chkBoxFan.Text = FAN + " " + ON;
btnTurnOnOff.Text = "TURN " + ON;
say(FAN + " turned " + OFF);
}
else { say(hardwreNotFunc()+"276\\"+FAN+"-"+OFF+"\\294"); _isFan = false; }
}
28
if (_speechRecognizedEvt.Contains(OPEN.ToLower() + " the " + DOOR.ToLower()))
{
_isDoorStatus = true;
_hasCommandRecognized = true;
if (_isDoorOpen)
{
say(DOOR + " is already " + OPEN + "ED");
}
else if (!_isDoorOpen)
{
_isDoorOpen = true;
try
{
port.Open();
port.WriteLine("E");
port.Close();
}
catch (IOException)
{
say("IO Exception ");
}
lblHADoorStatus.Text = OPEN;
chkBoxDoor.Text = CLOSE + " " + DOOR;
btnTurnOnOff.Text = CLOSE + " " + DOOR;
lblDoorStatus.Text = DOOR + " IS " + OPEN + "ED";
say(DOOR + " is " + OPEN + "ED");
}
else { say(hardwreNotFunc()+"297\\"+DOOR+"-"+OPEN+"\\314"); _isDoorStatus
= false; }
}
if (!_isDoorOpen)
{
say(DOOR + " is already " + CLOSE + "D");
}
else if (_isDoorOpen)
{
_isDoorOpen = false;
29
try
{
port.Open();
port.WriteLine("F");
port.Close();
}
catch (IOException)
{
say("IO Exception ");
}
if (_isLightOn)
{
say(LIGHT + " is turned " + ON);
}
else if (!_isLightOn)
{
say(LIGHT + " is turned " + OFF);
}
else { say(hardwreNotFunc()+"338\\"+LIGHT_Status); _isLightStatus = false; }
}
if (_isFanOn)
{
30
say(FAN + " is turned " + ON);
}
else if (!_isFanOn)
{
say(FAN + " is turned " + OFF);
}
else { say(hardwreNotFunc()+"354\\"+FAN_Status); _isFanStatus = false; }
}
if (_isDoorOpen)
{
say(DOOR + " is " + OPEN + "D");
}
else if (!_isDoorOpen)
{
say(DOOR + " is " + CLOSE + "D");
}
else { say(hardwreNotFunc()+"370\\"+DOOR_Status); _isDoorStatus = false; }
}
if (_isManualControlEnabled)
{
say("manual control is already " + ENABLE + "D");
}
else if (!_isManualControlEnabled)
{
_isManualControlEnabled = true;
manualControlArea.Show();
say("manual control " + ENABLE + "D");
}
else say("could not " + ENABLE + " the manual control. Please review settings. "
+"\nError code: ERR\\FUN-386\\MC-EN");
31
if (_speechRecognizedEvt.Contains(DISABLE.ToLower() + " manual control") ||
_speechRecognizedEvt.Contains("switch me to the automatic control"))
{
_hasCommandRecognized = true;
if (!_isManualControlEnabled)
{
say("manual control is already " + DISABLE + "D");
}
else if (_isManualControlEnabled)
{
_isManualControlEnabled = false;
manualControlArea.Hide();
say("manual control " + DISABLE + "D");
}
else say("could not " + DISABLE + " the manual control. Please review settings. "
+"\nError code: ERR\\FUN-404\\MC-DS");
}
if (_hasCommandRecognized)
say("I think you are not " + MasterName.ToUpper() + " ain't you?,, Any way,
Would u like to check my default commands?");
{
if (_speechRecognizedEvt == "yes")
{
//DO SOMETHING FOR THE INSTR
}
}
}
}
}
32
33
2. MICROCONTROLLER AND HARDWARE MODULE
void setup()
Serial.begin(9600);
pinMode(13, OUTPUT);
void loop()
char id = Serial.read();
if(id == 'A')
digitalWrite(13, HIGH);
if (id == 'B')
34
CHAPTER 8
SCREENSHOTS
8.2 IC Diagram
35
8.3 Hardware Arrangement
36
8.6 Default Commands
37
CONCLUSION
The home automation system has been experimentally proven to work satisfactorily by
connecting sample appliances to it and the appliances were successfully controlled from
speech recognition.
Thus a low-cost home automation system was successfully designed, implemented and tested.
FUTURE ENHANCEMENTS
A useful feature would be to add a wireless system which can send the encrypted char code to
controller, hence enhance the security of the system. More advanced features will be installed or
implemented through which user will be able to control the appliance effectively such as
temperature, control, fan speed, etc. I’ll also put my efforts to make this program more human
oriented, means not only it’ll be able to control the appliances effectively but also will be able to
response the user based on their inputs. It will be connected to the internet and will be able to
take queries from the user, search them over the internet, find the precise answer and return that
to the user again. After all, it’ll work like an assistance not real world but virtual world.
38
REFERENCES
https://en.wikipedia.org/wiki/.NET_Framework
http://research.ijcaonline.org/volume116/number11/pxc3902601.pdf
https://en.wikipedia.org/wiki/Arduino
https://www.arduino.cc/
[7]Arduino Programming
https://www.youtube.com/watch?v=09zfRaLEasY
39